{"id":231,"date":"2019-10-07T15:53:13","date_gmt":"2019-10-07T15:53:13","guid":{"rendered":"http:\/\/gigers.com\/blog\/?p=231"},"modified":"2024-06-24T17:33:04","modified_gmt":"2024-06-24T17:33:04","slug":"snap-roboter","status":"publish","type":"post","link":"https:\/\/gigers.com\/blog\/snap-roboter\/","title":{"rendered":"Snap!-Roboter"},"content":{"rendered":"<p>Roboter k\u00f6nnen wesentliche Prinzipien der Informatik wie die Anwendung von Sensoren und Aktoren veranschaulichen. Allerdings kann die Verwendung von Robotern auch erhebliche Kosten bei deren Anschaffung verursachen, weshalb es zumindest f\u00fcr die Vermittlung von Grundprinzipien sinnvoll sein kann, das Verhalten von Robotern erst einmal zu simulieren, bevor man zur Hardware greift.<\/p>\n<p>Der folgende Roboter wurde in Snap! programmiert. Er verf\u00fcgt \u00fcber zwei einfache Sensoren, welche daf\u00fcr sorgen, dass sich der Roboter in eine neue Richtung dreht. (Bei einem richtigen Roboter w\u00fcrden diese Sensoren die Drehzahl von Motoren steuern.) Sobald der Sensor die Farbe Schwarz meldet, dreht sich der Roboter ab.<\/p>\n<figure id=\"attachment_232\" aria-describedby=\"caption-attachment-232\" style=\"width: 960px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-232\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_stage.png\" alt=\"\" width=\"960\" height=\"720\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_stage.png 960w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_stage-300x225.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_stage-768x576.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption id=\"caption-attachment-232\" class=\"wp-caption-text\">Pfad eines einfachen Roboters in seiner Umgebung.<\/figcaption><\/figure>\n<h2>Programmierung des Roboters<\/h2>\n<p>Die Programmierung des Roboters erfolgte \u00fcber drei Elemente:<\/p>\n<ul>\n<li>Umgebung,<\/li>\n<li>Roboter und<\/li>\n<li>Sensoren.<\/li>\n<\/ul>\n<p>Innerhalb der Umgebung wurde ein Zeitgeber programmiert, welcher f\u00fcr die Taktung der weiteren Elemente sorgt, indem jeweils ein Signal versendet wird:<\/p>\n<figure id=\"attachment_233\" aria-describedby=\"caption-attachment-233\" style=\"width: 308px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-233\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_background.png\" alt=\"\" width=\"308\" height=\"298\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_background.png 308w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_background-300x290.png 300w\" sizes=\"auto, (max-width: 308px) 100vw, 308px\" \/><figcaption id=\"caption-attachment-233\" class=\"wp-caption-text\">Der Roboter und seine Sensoren werden durch die Umgebung getaktet.<\/figcaption><\/figure>\n<p>Innerhalb der Umgebung wird auch die Variable f\u00fcr die Laufrichtung des Roboters festgelegt.<\/p>\n<p>Der Roboter selbst bewegt sich in jedem Zyklus um eine bestimmte Anzahl von Schritten in die berechnete Richtung.<\/p>\n<figure id=\"attachment_234\" aria-describedby=\"caption-attachment-234\" style=\"width: 696px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-234\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_robot.png\" alt=\"\" width=\"696\" height=\"842\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_robot.png 696w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_robot-248x300.png 248w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><figcaption id=\"caption-attachment-234\" class=\"wp-caption-text\">Da es vorkommen kann, dass der Roboter aus dem Bild l\u00e4uft, kann dieser mit der Leertaste auf den Nullpunkt zur\u00fcckgeholt werden.<\/figcaption><\/figure>\n<p>Der Zufallswert bei der Vorw\u00e4rtsbewegung soll Abweichungen bei der Fahrt durch ein &#8222;physikalisches&#8220; Gel\u00e4nde simulieren. Diese Ungenauigkeiten sorgen daf\u00fcr, dass der Roboter sich nicht perfekt verh\u00e4lt, sondern sein Verhalten durch kleine St\u00f6rungen beeinflusst werden. L\u00e4sst man hier einen gr\u00f6sseren Bereich zu, kann man damit Unzul\u00e4nglichkeiten in der mechanischen Konstruktion nachbilden.<\/p>\n<p>Ausserdem hinterl\u00e4sst der Roboter eine Spur, durch welche sich sein Bewegungsmuster auch \u00fcber eine l\u00e4ngere Zeit verfolgen l\u00e4sst.<\/p>\n<p>Die eigentliche Steuerung des Roboters erfolgt \u00fcber zwei seitlich angebrachte Sensoren:<\/p>\n<figure id=\"attachment_235\" aria-describedby=\"caption-attachment-235\" style=\"width: 742px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-235\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_sensor.png\" alt=\"\" width=\"742\" height=\"730\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_sensor.png 742w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2019\/10\/simple_robot_sensor-300x295.png 300w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><figcaption id=\"caption-attachment-235\" class=\"wp-caption-text\">Der Sensor reagiert auf die Farbe Schwarz. Dadurch zeigt der Roboter ein Vermeidungsverhalten gegen\u00fcber der Dunkelheit.<\/figcaption><\/figure>\n<p>In jeden Schritt werden die Sensoren zuerst relativ zum Roboterk\u00f6rper positioniert, was bei einem richtigen Roboter nicht notwendig ist. Wenn der Sensor ausl\u00f6st, wird dies durch einen Kost\u00fcmwechsel (gr\u00fcn) angezeigt und die Richtung, in welche sich der Roboter bewegt, wird angepasst. Auch hier werden Zufallswerte verwendet, um kleine Ungenauigkeiten einzuf\u00fchren.<\/p>\n<h2>Verwendung im Unterricht<\/h2>\n<p>Die Simulation dient der Veranschaulichung von grundlegenden Elementen der Robotik. Die Lernenden k\u00f6nnen in Snap! den Hintergrund gestalten, um die Grenzen der einfachen Steuerung auszuloten. M\u00f6gliche Fragestellungen sind:<\/p>\n<ul>\n<li>Welche Auswirkungen haben die Ver\u00e4nderungen von Steuerungswerten wie z.B. bei der Richtungs\u00e4nderung oder Vorw\u00e4rtsbewegung?<\/li>\n<li>Bei welcher Umgebungsgestaltung verh\u00e4lt sich der Roboter nicht so wie geplant?<\/li>\n<li>Kann die Anordnung der Sensoren f\u00fcr allgemeine oder spezielle Umgebungen optimiert werden?<\/li>\n<\/ul>\n<p>Im Vordergrund steht hier also nicht die eigentliche Programmierung des Roboters, sondern dessen Interaktionen mit der Umgebung. Damit wird f\u00fcr die Lernenden schnell ersichtlich, wo die Grenzen einer einfachen Steuerung liegen und sie k\u00f6nnen damit besser nachvollziehen, weshalb die Programmierung eines komplexeren Verhaltens seine T\u00fccken haben kann.<\/p>\n<h3>Quellen<\/h3>\n<p>Online-Kurs &#8222;Begin Robotics&#8220; auf FutureLearn: <a href=\"https:\/\/www.futurelearn.com\/courses\/begin-robotics\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.futurelearn.com\/courses\/begin-robotics<\/a><\/p>\n<p>Ben Ari und Mondada (2018). Elements of Robotics. SpringerOpen: <a href=\"https:\/\/link.springer.com\/book\/10.1007%2F978-3-319-62533-1\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/link.springer.com\/book\/10.1007%2F978-3-319-62533-1<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Roboter k\u00f6nnen wesentliche Prinzipien der Informatik wie die Anwendung von Sensoren und Aktoren veranschaulichen. Allerdings kann die Verwendung von Robotern auch erhebliche Kosten bei deren Anschaffung verursachen, weshalb es zumindest f\u00fcr die Vermittlung von Grundprinzipien sinnvoll sein kann, das Verhalten von Robotern erst einmal zu simulieren, bevor man zur Hardware greift. Der folgende Roboter wurde &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gigers.com\/blog\/snap-roboter\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eSnap!-Roboter\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-231","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/comments?post=231"}],"version-history":[{"count":2,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions"}],"predecessor-version":[{"id":237,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions\/237"}],"wp:attachment":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/media?parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/categories?post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/tags?post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}