Technische Ausstattung des pädagogischen Robotikkurses. Was ist Robotik für Schulkinder? Bildungsrobotik ist ein Werkzeug, das eine solide Grundlage für Systemdenken und die Integration von Informatik, Mathematik, Physik, Zeichnen und Technologie legt

Es gibt noch viel zu tun, bevor wir zu diesem Bild kommen:

Ich überspringe die Geschichten darüber, wie genau ich auf die Idee gekommen bin, einen Hexapod zu bauen (es gab jede Menge Videos auf YouTube), und gehe direkt zur Auswahl der Teile über. Es war Januar 2012. Ich wusste sofort, was ich von meinem Roboter wollte und was nicht. Ich wollte:

Jedes Bein muss 3 Freiheitsgrade haben – 3dof (3 Freiheitsdimensionen). Da die einfachere Version 2dof nicht das Gefühl eines Insekts vermittelt und 4dof unnötig ist, ermöglicht Ihnen 3dof bereits, die Beinspitze frei im 3D-Raum zu bewegen;
- 6 Beine; Auch dies ist nicht mehr 4 (dann springt der Roboter unbeholfen), sondern auch nicht 8, wie bei Spinnen und schon übertrieben;
- klein;
- billig;
- Mindestanzahl an Platinen und Anschlüssen;

Guter Eintrag.

Als Erstes musste natürlich ein Motherboard für das Baby ausgewählt werden. Zu diesem Zeitpunkt hatte ich viel Gutes und Schlechtes über Arduino gelesen. Aber ich betrachtete ihn als die wichtigste Option. Es blieb keine Zeit, die Controller selbst zu löten, aber es war teuer, beispielsweise fortschrittlichere Boards mit ARM-CPU zu kaufen und herauszufinden, wie man sie programmiert, wie man mit PWM-Ausgängen arbeitet usw. Und Arduino: IDE gestartet, Code gedrückt, Hochladen gedrückt – und hallo, es blinkt bereits für Sie. Schönheit! ;)

Zuerst fing ich an, mir Arduino Mega und Clones anzuschauen, weil... Sie verfügten über zahlreiche PWM-Ausgänge zur Steuerung der Servos. Ich möchte Sie daran erinnern, dass Sie für einen 3dof-Hexapod 3*6 = 18 Servos und separate Kanäle für deren Steuerung benötigen. Aber dann habe ich unter den Arduino-Mega einen echten Yazz gefunden, das ist ein Board von Dagu, dessen Name Red Back Spider Controller ist. Hier ist es bei eBay.

Es bietet alle seine Ausgänge in Form von vorgefertigten 3-Pins (Masse, Strom, Signal) und Stromentkopplung. Die Stromversorgung des Controllers selbst ist stabilisiert und geht so wie sie ist an die Motoranschlüsse (UPD: nicht so wie sie ist, sondern auch stabilisierte 5 Volt). Und offenbar von der Stromversorgung des Controllers entkoppelt, da 18 gleichzeitig arbeitende Servos den nicht stören Bedienung des Reglers). Auf diese Weise können Sie einfach 7–30 Volt ausreichend Strom an den Stromanschluss liefern (die Stromversorgung vom Eee PC 901 mit 12 V und 3 A – es stellte sich heraus, dass es ausreichte, um alle 18 Servos zum Brummen zu bringen) und sich nicht den Kopf darüber täuschen müssen separate Stromversorgung Logik und Motoren. Dadurch wird es in Zukunft auch möglich sein, dieses ganze Monster problemlos auf einem Paket mit 7,4-Volt-Li-Po-Akkus zu installieren. Und trotz alledem ist dies aus Software-Sicht ein gewöhnlicher Arduino-Mega, der mit Software, Bibliotheken und Hardware kompatibel ist (mit Ausnahme der direkt auf dem Original-Mega installierten Schilde – sie funktionieren nicht). Zwar ist der Preis sogar höher als beim Original-Mega, aber alle anderen Vorteile überwogen.

Als nächstes kommen die Servos. Es gibt viele verschiedene bei eBay, indem Sie nach Micro-Servo suchen. Ich habe das leistungsstärkste der kleinsten und billigsten mit einem Gewicht von 9 Gramm und einem Kunststoffgetriebe genommen. Wenn Sie Lose dorthin nehmen, wo sie in Paketen verschickt werden, ist es günstiger. Anscheinend habe ich 3 Packungen mit je 6 Stück genommen, und es hat weniger als 2 Dollar pro Stück gekostet. Mit Blick auf die Zukunft muss ich sagen, dass ich es bedauere, dass ich nicht mehr ausgegeben und keine Servos mit Metallgetriebe und Kugellagern genommen habe. Es stellte sich heraus, dass diese Kunststoffräder ein deutlich spürbares Spiel und ein charakteristisches Knirschen hatten, wenn die Zahnräder mit übermäßiger Kraft durchrutschten. Aufgrund des Spiels ist es ziemlich schwierig, die Kinematik genau einzustellen (und das stellte sich tatsächlich als das Schwierigste heraus).

Das ist eigentlich alles, was ich bestellt habe, mit Lieferung kostete es etwa 100 US-Dollar. Ich habe Batterien und Sender/Empfänger zur Steuerung und Funksteuerung für später zurückgelassen. Denn ich habe ein ferngesteuertes Auto und es ist nicht interessant, aber was mich wirklich interessierte, waren die Beine! Video von reibungslos laufenden Hexapoden auf YouTube - fasziniert Ich schaute es mir immer wieder an und jedes Mal liefen mir Tränen über die Wangen und ich würgte: „Ich will!“ Ich möchte so etwas nicht fertig bestellen, sondern ich möchte so etwas selbst machen!

Während ich auf die Bestellung wartete, las ich, wie aufgeklärte Menschen ihre Kreationen zum Leben erwecken. Natürlich tauchte sofort die inverse Kinematik auf (Übersetzung). Wenn wir einfach und unmittelbar von gelenkigen „Gliedmaßen“ sprechen, dann liegt direkte Kinematik vor, wenn die Winkel der Scharniere als Eingabe geliefert werden und wir am Ausgang ein Modell der Gliedmaßen im Raum und Koordinaten haben Extrempunkt Glieder. Die inverse Kinematik funktioniert offensichtlich umgekehrt: Die Eingabe sind die Koordinaten des Extrempunkts des Glieds, den wir erreichen müssen, und als Ausgabe erhalten wir die Winkel, um die die Scharniere gedreht werden müssen, um dies zu erreichen. Die Servos erhalten lediglich die Eingangswinkelposition, in die sie drehen müssen (über eine Signalleitung, codiert PWM/PWM).

Ich begann zu schreiben. Ich begann mit dem, worüber ich gelesen hatte: Nachdenken über die Implementierung von IC anhand der dort beschriebenen Methode. Aber ich hatte schnell das Gefühl, dass es für meinen Fall zu kompliziert war. Darüber hinaus ist die Implementierung umständlich und der Rechenaufwand sehr hoch – die Berechnung erfolgt iterativ. Und ich habe 6 Beine, für die ich jeweils IR zählen muss, und nur 16 MHz nicht die schnellste AVR-Architektur. Aber es gibt nur 3 Freiheitsgrade. Und das kann man schon vorher leicht erraten beliebiger Punkt Im „Reaching-Bereich“ gibt es nur eine Möglichkeit zu erreichen. Die Entscheidung ist in meinem Kopf bereits gereift.

Doch dann kam der Februar und Pakete – eines aus China, das andere aus Großbritannien. Zuerst habe ich natürlich einfach nur mit dem Arduino-Board herumgespielt – die LED blinkte und der dort angeschlossene Lautsprecher piepte. Dann begann ich mit der Implementierung des IC selbst, bereits in Hardware. Zu diesem Zweck habe ich einen Prototyp eines Beins aus Abfallmaterialien gebaut (ziemlich weicher Kunststoff, der sich leicht mit einer Schere, Schrauben und Aufsätzen schneiden lässt – alles aus Servosätzen). Ich habe dieses Abschlussbein direkt an der Arduino-Platine befestigt. Sie können überlegen, wie die Verbindungen mit einem Budget hergestellt werden.

Ich bewunderte diese Arbeit und träumte davon, dass, wenn ich in Zukunft auf Basis dieses Roboters einen Terminator löte, der der Menschheit den Krieg erklären würde, John Connor und Schwarzenegger zu mir hierher in der Vergangenheit zurückkehren würden, diesen Prototyp nehmen und ihn einschmelzen würden Orodruin. Aber niemand kam zurück oder nahm etwas weg, und ich fuhr ruhig fort.

Es stellte sich heraus, dass man vor IR überhaupt keine Angst haben muss; in meinem Fall lief alles auf banale Geometrie-Trigonometrie hinaus. Um die Bezugnahme auf Gelenke zu erleichtern, habe ich mich bei Wikipedia umgesehen und etwas über Insekten gelesen. Sie haben spezielle Namen für die Gliedmaßenelemente:

Russisch hat auch seine eigene und sehr interessante Namen dafür, aber „Coxa“, „Trochanter“, „Tibia“ usw., die im Code stehen, würden mir nicht erlauben, einzuschlafen. Deshalb habe ich den 3 Gliedmaßen und den dazugehörigen Servos die Namen Coxa, Femur, Tibia gegeben. Anhand des Beinprototyps oben können Sie erkennen, dass ich nicht einmal ein separates Teil für die Coxa habe. Es sind nur zwei Servos, die mit Gummibändern zusammengehalten werden. Femur – realisiert mit einem Kunststoffstreifen, an dem beidseitig Servohebel befestigt sind. Somit ist das letzte verbleibende Servo der Anfang des Schienbeins, an dessen Verlängerung ein weiteres Stück Kunststoff angeschraubt wird.

Ich habe den Editor gestartet, kurzerhand die Datei Leg.h erstellt und darin die Klasse Leg. Nun ja, ein Haufen Hilfsmüll.) Angenommen, es gäbe einen Punkt A(ax, ay, az) im Raum, den Sie erreichen müssen. Dann sieht die Draufsicht so aus:

In der Abbildung habe ich sofort gezeigt, wie man den ersten Winkel berechnet – das ist der Drehwinkel des Servos, der Coxa steuert und das gesamte Glied nach innen dreht horizontale Ebene. Das Diagramm zeigt sofort in Rot die im Code verwendeten Variablen (nicht alle). Nicht sehr mathematisch, aber praktisch. Es ist ersichtlich, dass der Winkel, der uns interessiert, leicht gefunden werden kann. Erstens befindet sich „primaryCoxaAngle“ einfach im Winkel (0;A) zur X-Achse (was dem Winkel von Punkt A in entspricht). Polar Koordinaten). Das Diagramm zeigt jedoch, dass sich das Bein selbst nicht in diesem Winkel befindet. Der Grund dafür ist, dass die Coxa-Rotationsachse nicht auf der „Beinlinie“ liegt – ich weiß nicht, wie ich das richtig sagen soll. Liegt hier nicht in der Ebene, in der sich die beiden anderen Gelenke drehen und die Beinspitze liegt. Dies lässt sich leicht durch die Berechnung von „additionalCoxaAngle“ ausgleichen (wie berechnet man das? Ich mache mir gar nicht erst die Mühe, damit aufzuhören, schließlich waren wir doch in der Schule, oder?).

Wir haben also den ersten Teil des Codes, dies sind die Innenseiten der Methode „reach(Point& dest)“:

Float hDist = sqrt(sqr(dest.x - _cStart.x) + sqr(dest.y - _cStart.y)); float AdditionalCoxaAngle = hDist == 0.0 ? DONT_MOVE: asin(_cFemurOffset / hDist); float PrimaryCoxaAngle = polarAngle(dest.x - _cStart.x, dest.y - _cStart.y, _thirdQuarterFix); float cAngle = hDist == 0.0 ? DONT_MOVE: primärerCoxaAngle – zusätzlicherCoxaAngle – _cStartAngle;

Hier ist dest der Punkt, den Sie erreichen müssen, _cStart sind die Koordinaten des Befestigungspunkts (und des Rotationszentrums) coxa, in hDist berechnen wir den Abstand von _cStart zum Ziel in der horizontalen Ebene. DONT_MOVE ist nur ein Flag, was bedeutet, dass Coxa nirgendwo gedreht, sondern drin gelassen werden muss momentane Situation(weil dest irgendwo direkt auf der Coxa-Rotationsachse liegt – selten, aber es kommt vor). Dabei ist cAngle der Winkel, um den das Servo von seinem Anfangswinkel (der in der Mitte seines Betriebsbereichs liegt) abweichen muss. Es ist ersichtlich, dass auch _cStartAngle verwendet wird – dies ist der Winkel im Raum, auf den das Servo während der Installation verschoben wird. Ich erzähle Ihnen später von _thirdQuarterFix, wenn ich es nicht vergesse.

In diesem Fall reduziert sich die Aufgabe plötzlich darauf, den Schnittpunkt zweier Kreise zu finden. Einer ist der Punkt, von dem aus unser Oberschenkelknochen „wächst“, der zweite ist der Punkt, den wir erreichen müssen (mit bereits lokalen 2D-Koordinaten). Die Radien der Kreise entsprechen den Längen von Femur bzw. Tibia. Wenn sich die Kreise schneiden, kann an einem der beiden Punkte ein Gelenk platziert werden. Wir wählen immer die obere, damit die „Knie“ des Monsters nach oben und nicht nach unten gebogen sind. Wenn sie sich nicht schneiden, werden wir den Zielpunkt nicht erreichen. Etwas mehr Code, der Übergang zum Flugzeug erfolgt auf elementare Weise, nur ein paar Fallstricke werden noch berücksichtigt und in den Kommentaren dokumentiert, damit ich mir später beim Parsen des Codes nicht den Kopf zerbreche. Der Einfachheit halber habe ich in dieser lokalen Koordinaten-„Beinebene“ den Punkt gewählt, von dem aus der Femur wächst, als Ursprung:

// Wechsel zum lokalen Coxa-Femur-Zielkoordinatensystem // Beachten Sie den Fall, wenn hDist<= _cFemurOffset. This is for the blind zone. // We never can"t reach the point that is nearer to the _cStart then // femur offset (_fStartFarOffset) float localDestX = hDist <= _cFemurOffset ? - _fStartFarOffset: sqrt(sqr(hDist) - sqr(_cFemurOffset)) - _fStartFarOffset; float localDestY = dest.z - _fStartZOffset; // Check reachability float localDistSqr = sqr(localDestX) + sqr(localDestY); if (localDistSqr >sqr(_fLength + _tLenght)) ( log("Kann nicht erreicht werden!"); return false; )

Jetzt sind localDestX und localDestY die Koordinaten des Zielpunkts. Es bleibt nur noch, den Schnittpunkt der Kreise mit Mittelpunkten bei (0,0) und (localDestX, localDestY) sowie den Radien _fLength und _tLength (die Länge des Femurs bzw. der Länge des Schienbeins) zu finden. Damit kommt auch ein Schulkind zurecht, aber hier habe ich ziemlich viele Fehler gemacht, deshalb habe ich zu Testzwecken und allgemein, damit jeder nachschauen kann, was das für dumme Formeln sind, Links zu Quellen hinterlassen, in denen dieses elementare geometrische Problem klar und deutlich gelöst ist verständlich erklärt:

// Gelenk als Kreisschnittpunkt finden (Gleichungen von http://e-maxx.ru/algo/circles_intersection & http://e-maxx.ru/algo/circle_line_intersection) float A = -2 * localDestX; float B = -2 * localDestY; float C = sqr(localDestX) + sqr(localDestY) + sqr(_fLength) - sqr(_tLenght); float X0 = -A * C / (sqr(A) + sqr(B)); float Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(_fLength) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt (sqr(D) / (sqr(A) + sqr(B))); float ax, ay, bx, by; ax = X0 + B * mult; bx = X0 - B * mult; ay = Y0 - A * mult; by = Y0 + A * mult; // Lösung oben als Joint Float auswählen jointLocalX = (ax > bx) ? ax:bx; float jointLocalY = (ax > bx) ? ay:by;

Das ist alles, es bleibt noch ein wenig zu tun – berechnen Sie anhand der erhaltenen Koordinaten die tatsächlichen Winkel für die Femur- und Tibia-Servos:

Float PrimaryFemurAngle = polarAngle(jointLocalX, jointLocalY, false); float fAngle = PrimaryFemurAngle - _fStartAngle; float PrimaryTibiaAngle = polarAngle(localDestX - jointLocalX, localDestY - jointLocalY, false); float tAngle = (primaryTibiaAngle - fAngle) - _tStartAngle;

Nochmals elementares Zeug – Winkelkoordinaten und das war’s. Ich hoffe, die Benennung der Variablen sollte bereits klar sein, zum Beispiel ist _fStartAngle der Femur-Startwinkel, der Winkel, auf den der Femur standardmäßig ausgerichtet ist. Und die letzte Zeile der Methode „reach()“ (er sagte „Lass uns gehen“ und winkte mit der Hand):

Move(cAngle, fAngle, tAngle);

Die Move-Methode gibt bereits Befehle direkt an die Server aus. Tatsächlich war es später notwendig, alle möglichen Dinge zum Schutz vor schlechten Winkeln (die das Servo nicht drehen kann, aber versuchen wird) sowie für andere Beine, die seitlich und/oder in andere Richtungen gerichtet sind, hinzuzufügen. Aber im Moment arbeiten wir nur mit einer Pfote.
Diese Teile stellen den endgültigen Code dar, der alles andere als perfekt ist und sicherlich erheblich verbessert werden kann. Aber es funktioniert! Ich gehe nie raus Schulkurs Geometrie-Trigonometrie, wir haben eine voll funktionsfähige inverse Kinematik für 3dof-Beine implementiert! Darüber hinaus erhalten wir die Lösung sofort, in einer Iteration. Damit dies funktionierte, musste das Bein sorgfältig vermessen und die Klasse mit den gewonnenen Daten konfiguriert werden. einschließlich eckiger, die am fertigen Produkt am schwierigsten zu messen sind. Wenn Sie in AutoCAD entwerfen und schöne Renderings erstellen, wäre es vielleicht einfacher, die Winkel zu messen, aber ich hatte weder die Zeit noch die Lust, mich mit diesem Pathos auseinanderzusetzen.

Der Februar hatte gerade erst begonnen, aber das Video mit dem Bein war schon fertig. Um die IR zu testen, habe ich das Bein gezwungen, alle möglichen Figuren im Raum zu beschreiben (dafür war es notwendig, die Reichweite nacheinander aufzurufen und dabei Punkte auf einem Rechteck oder Kreis zu umgehen, der Code ist langweilig und langweilig, deshalb zeige ich ihn nicht (und nachdem ich die Experimente mit der Verfolgung von Grundelementen abgeschlossen hatte, habe ich es ganz herausgeschnitten) ):

Dann mussten wir aufhören, mit diesem Handwerk zu spielen; man kann nicht sehr weit auf einem Bein springen (obwohl so ein Roboter wirklich interessant wäre). Aber ich brauche einen Hexapod. Ich ging zum nächsten Flohmarkt, um nach Plexiglas zu suchen. Ich habe zwei hervorragende Teile gefunden – eines 3 mm dick (genau richtig für den Rumpf, dachte ich), das andere 2 mm und blau (hervorragende Gliedmaßen, passend zu den Servos). Nach ein paar weiteren Wochen fand ich einen Abend, an dem ich etwas daraus machen konnte. Ich habe Skizzen auf Papier gemacht. Ich habe es anprobiert – alles schien in Ordnung zu sein, dann ging es an die Bügelsäge.

Und hier ist es, ein Monster aus Übersee, mit sechs Beinen. Als ich ein Bein getestet habe, habe ich dieses Ding mit einer Art linkem Feeder von einer externen Schraube versorgt. Genug. Aber 6 Beine von ihm zu füttern war schon ein bisschen gruselig. Daher habe ich eine Weile aufgegeben, weil ich dachte, dass ich noch einen geeigneten Futterspender besorgen müsste. Aber es stellte sich heraus, dass alles viel einfacher war, das habe ich oben bereits erwähnt - das Netzteil vom Eee PC 901 kam.

Das Debuggen der Arbeit von 6 Beinen erwies sich als noch schwieriger als das Schreiben einer Engine für ein Bein. Die Hälfte der Beine war relativ zur anderen gespiegelt. Darüber hinaus ist alles darauf ausgerichtet verschiedene Seiten. Generell habe ich sehr lange alles konfiguriert und eingerichtet, und es hat mich nicht sonderlich begeistert, weil... Es gab keine praktischen Debugging-Tools, ich konnte mich höchstens auf die Ausgabe des Protokolls auf Serial verlassen. Und in der Hauptdatei *.ino funktionierte es einwandfrei, aber in der verbundenen Leg.h war es nicht mehr sichtbar gewünschtes Objekt. Ich habe ein paar Krücken für den Baumstamm gemacht (Facepalm). Ich werde es im Laufe der Zeit umgestalten. Und dann kam der Frühling, die Radsaison wurde eröffnet volle Macht, und ich warf mein sechsbeiniges Haustier in den Schrank. So verging der ganze Sommer und warmer Teil Herbst.

Doch der Regen kam, es wurde kalt und der Hexapod wurde entfernt. Seine Beine wurden verfeinert, einschließlich der Einführung des gleichen _thirdQuarterFix für die PolarAngle-Berechnungsfunktion. Das Problem war, dass sich die beiden Beine (linke Mitte und linker Rücken) so bewegten, dass am meisten Zeit waren im dritten Viertel:

Und mein polarAngle war naiv – er gab Winkel von -pi zu pi relativ zur X-Achse zurück. Und wenn sich manchmal eines dieser beiden Beine zum zweiten Viertel drehen musste, dann sprang der Wert von polarAngle von -pi zu pi. was sich tatsächlich negativ auf die weiteren Berechnungen auswirkte. Ich habe es mit einer Krücke befestigt – für diese beiden Beine gilt PolarAngle als „anders“. Ich schäme mich, ich schäme mich für den Code, aber das gesamte Projekt ist ein Proof of Concept. alleiniger Zweck Daraus lässt sich leicht erkennen, ob ich einen realistisch beweglichen Hexapod zusammenbauen kann oder nicht. Daher sollte der Code sofort funktionieren. Und dann Refactoring – Refactoring.

Nachdem ich das 3. Viertel beendet hatte, begann ich mit dem Treten von Schrittmustern. Zu diesem Zweck habe ich einen Standardpunkt in die Leg-Klasse eingeführt, d. h. in der sich das Bein befindet, wenn der Roboter ruhig und gerade steht. Dieser Punkt kann angepasst werden. Die Hauptsache ist, dass sich alle Beine auf derselben Z-Koordinate befinden (damit sich die Beine tatsächlich physisch auf derselben Ebene befinden, verfügt Bein auch über tuneRestAngles() auf der niedrigsten Ebene). Und innerhalb einer Z-Koordinate können sie nahezu überall verschoben werden. Fast – weil der Bewegungsbereich nicht unendlich ist, und um diesen Bereich bei einem Schritt nicht zu überschreiten – habe ich versucht, die Standardposition der Beine irgendwo näher an der Mitte dieses Bereichs zu platzieren.

Ich werde den Code hier im Text nicht angeben, er ist zu einfach, und ich werde am Ende Links dazu bereitstellen. Vollversion alles Mögliche – gleichzeitig lerne ich den Umgang mit Github.

Ich habe eine einfache Schrittfolge gewählt – 3 Beine auf dem Boden, 3 Beine neu angeordnet in der Luft. Somit können die Koordinaten der Beine relativ zu ihrer Standardposition in zwei Gruppen unterteilt werden. Für diese beiden Gruppen habe ich den Schritt in einer Schleife gedreht (siehe Funktion walk() in Buggy.ino). Und am Ende berechnete jedes Bein seine eigene individuelle Koordinate basierend auf seiner Standardkoordinate.

Und er ging! Aber jetzt machen wir einfach weiter. Damit er auf dem Linoleum nicht so sehr ausrutscht, habe ich Gummibänder an seinen Füßen befestigt. Und er beeilte sich, es zu filmen, um es seinen Freunden zu zeigen.

Von einem Pod ist das natürlich weit entfernt. Aber ich bin noch nicht fertig.) Ich bin einen weiteren Abend in die Pedale getreten – und habe die Möglichkeit hinzugefügt, mich in jede Richtung zu bewegen (jedoch ohne den Körper zu drehen.)). Außerdem habe ich zum Glätten zwischen den Bewegungen eine Funktion (smoothTo()) hinzugefügt, die die Beine vorsichtig bewegt (sie nach oben hebt), wieder in 2 Gruppen, von denen eine immer unten ist, die Kreatur steht darauf, während die andere sich erhebt und bewegt sich) an eine neue Position. Dies ist notwendig, damit die Kreatur nicht plötzlich mit den Beinen zuckt und die Bewegungsrichtung ändert (oh, wie vielen Spielcharakteren vergangener Jahre fehlt diese Funktion). Und er lief zügig in jede Richtung – seitwärts, diagonal:

Beide Grandsort-Dateien können angezeigt werden

Julian Horsey hat diesen niedlichen Spinnenroboter mit Arduino (Arduino Mega Controller) gebaut. Das Design verwendet nur zwei Elektromotoren, die von H-Brücken-Relaismodulen gesteuert werden, was es der Spinne ermöglicht, sich vorwärts, rückwärts oder langsam zu drehen, indem die Drehrichtung der Elektromotoren geändert wird. Steuerung – vom Smartphone über Bluetooth. Die Spinne bewegt sich ähnlich wie ein Panzer oder Roboter, dessen Manöver gesteuert werden können unterschiedliche Geschwindigkeiten Drehung seiner beiden Räder.

Für Detailinteressierte - Weitere Informationen darüber, wie es gemacht wird. Es ist nicht umfassender Leitfaden Von der Montage her wäre es zu sperrig geworden. Vielmehr handelt es sich um eine Reihe von Ideen und Tipps, die Raum für Kreativität lassen.

Schritt 4: Einrichten Ihres Smartphones

Die Steuerung über Bluetooth ist sehr einfach. Um Befehle an den Roboter zu senden, nutzte Julian Horsey das Bluetooth-Terminalprogramm. Dann bin ich auf den Arduino Bluetooth Controller umgestiegen. Mit dem zweiten Programm können Sie Befehle auf Tasten verteilen, wie bei einer Spielefernbedienung. Arduiono wandelt diese Klicks in entsprechende Ausgangssignale um. Wenn Sie mehr Steuerungsflexibilität benötigen, können Sie das MIT App Inventor-System ausprobieren, der Autor des Roboters hat dies jedoch nicht versucht.

Schritt 5: Sie sind fertig

Wenn einer der Leser beschließt, diese Entwicklung zu wiederholen und Erfolg hat, senden Sie uns ein Foto oder einen Link zu YouTube mit einer Aufzeichnung Ihrer Aktivitäten. Nun, wenn Ihnen die Selbstmontage eines Roboters immer noch zu viel erscheint komplizierte Angelegenheit Schauen Sie sich die Seite „“ an, suchen Sie vielleicht nach etwas, das Ihnen gefällt und machbar erscheint.