Inhaltsverzeichnis:

Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+ - Gunook
Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+ - Gunook

Video: Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+ - Gunook

Video: Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+ - Gunook
Video: Raspberry Pi Roomba Robot C++ 2024, Dezember
Anonim
Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+
Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+
Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+
Browsergesteuerter Roomba-Roboter mit dem Raspberry Pi Model 3 A+

Überblick

Dieses Instructable konzentriert sich darauf, wie man einem toten Roomba ein neues Gehirn (Raspberry Pi), Augen (Webcam) und eine Möglichkeit gibt, alles von einem Webbrowser aus zu steuern.

Es gibt viele Roomba-Hacks, die eine Steuerung über die serielle Schnittstelle ermöglichen. Ich hatte nicht das Glück, auf einen Roomba zu stoßen, der über eine aktuelle Firmware oder ein funktionierendes Motherboard verfügt. Entweder ist der Roomba zu alt oder der Roomba ist tot. Ich fand den Roomba, den ich für dieses Projekt verwendet habe, in einem lokalen Secondhand-Laden für 5 US-Dollar. Es hatte immer noch einen anständigen Akku, aber ein totes Motherboard. (Ich habe auch die Webcam im selben Secondhand-Laden für etwa 5 US-Dollar gefunden). Alles, was ich vom ursprünglichen Roomba verwende, sind die Motoren, das Chassis und der Akku. Sie müssen für dieses Projekt keinen Roomba verwenden. Sie können verschiedene Motoren, Räder und Chassis verwenden, wenn Sie möchten. Ich habe einfach Lust, ein Stück Müll in etwas Brauchbares zu verwandeln.

Für diesen Build habe ich das Raspberry Pi Model 3 A+ und einen Riorand-Motorcontroller verwendet. Ich verwende Code vom Browser-gesteuerten Roboter von Dexter Industries, den ich geändert habe. Die Dexter Industries-Version richtet den Pi als Websocket-Server ein, mit dem Sie ihren Roboter (Brick-Pi-Plattform) von einer Client-HTML-Datei aus steuern können, auf der ein anderer Computer läuft.

Ich habe den Code mit den GPIO-Pins geändert und eine Möglichkeit hinzugefügt, dass der Pi heruntergefahren wird, wenn auf eine Schaltfläche geklickt wird / wenn die Escape-Taste im Browser gedrückt wird. Ich habe auch einige Änderungen an der Steuerungswebseite vorgenommen, um die Anzeige eines Bewegungsstreams durch einen iframe zu ermöglichen, während der Roboter auf einer einzigen Seite gesteuert wird. Ich habe den Pi mit einer statischen IP eingerichtet, um die Client-Datei zu hosten, damit ich mit jedem Computer oder Gerät in meinem Netzwerk eine Verbindung herstellen kann.

Ich dokumentiere den Prozess hier in der Hoffnung, zu zeigen, wie man einen einfachen, kostengünstigen Basisroboter baut.

Verwendete Teile

Raspberry Pi 3 A+ (Adafruit Link) $30

Riorand Dual Motor Driver Controller H-Brücke (Amazon Link) $ 22

12V Batterie für Motoren (Amazon Link) $19

5V Batterie für den Raspberry Pi (Amazon Link) $10

8 GB Micro-SD-Karte (Amazon Link) $ 5

Überbrückungsdrähte (Amazon Link) $7

Roomba 500-Serie

. Alles zusammen knapp 100 Dollar.

Schritt 1: Raspbian installieren und eine statische IP-Adresse einrichten

Raspbian installieren und eine statische IP-Adresse einrichten
Raspbian installieren und eine statische IP-Adresse einrichten

Ich habe Raspbian Stretch Lite verwendet. Ich habe keine Notwendigkeit für den Desktop gesehen, aber Sie können die Desktop-Version installieren, wenn Sie es vorziehen.

Ich gehe davon aus, dass Sie bereits wissen, wie man Raspbian installiert. Wenn Sie Hilfe benötigen, finden Sie hier den Leitfaden der Raspberry Pi Foundation.

Sobald Raspbian läuft, melden Sie sich an und führen Sie das Programm raspi-config aus.

pi@raspberrypi:~ $ sudo raspi-config

Richten Sie Ihre WLAN-Verbindung in raspi-config ein

Auswählen

2 Netzwerkoptionen

Auswählen

N2 WLAN

Wählen Sie ein Land aus, geben Sie Ihre SSID ein und geben Sie Ihre Passphrase ein

SSH in raspi-config einrichten

Nachdem ich die anfängliche Konfiguration vorgenommen hatte, habe ich SSH verwendet, um alles kopflos einzurichten. (Sie könnten dies überspringen, wenn Sie einen Monitor verwenden. Es war für mich einfacher, Änderungen am Code vorzunehmen, ohne den Roboter anhalten und an einen Monitor anschließen zu müssen.)

Zurück zum raspi-config Hauptmenü

Auswählen

5 Schnittstellenoptionen

Auswählen

P2 SSH

Auswählen

Jawohl

Zurück im raspi-config Hauptmenü auswählen

Stellen Sie sicher, dass Sie mit Ihrem Netzwerk verbunden sind

pi@raspberrypi:~ $ ifconfig

Sie sollten eine ähnliche Ausgabe erhalten. (Notieren Sie sich die IP-Adresse; Sie benötigen sie möglicherweise später. z. B. 192.168.1.18)

wlan0: flags=4163 mtu 1500

inet 192.168.1.18 Netzmaske 255.255.255.0 Broadcast 192.168.1.255 inet6 fe80::c74f:42ec:8cd3:2fda prefixlen 64 scopeid 0x20 Ether b8:27:eb:6a:a4:95 txqueuelen 1000 (Ethernet) RX-Pakete 44396 (Bytes 5847726 5,5 MiB) RX-Fehler 0 fallengelassen 0 Überläufe 0 Frame 0 TX-Pakete 30530 Bytes 39740576 (37,8 MiB) TX-Fehler 0 fallengelassen 0 Überläufe 0 Träger 0 Kollisionen 0

Stellen Sie sicher, dass Sie das Internet erreichen können.

pi@raspberrypi:~ $ ping google.com

Sie sollten eine ähnliche Ausgabe erhalten.

PING google.com (216.58.194.110) 56(84) Datenbytes.

64 Bytes von dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=1 ttl=54 time=18.2 ms 64 Bytes von dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=2 ttl =54 Zeit = 19,4 ms 64 Byte von dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq=3 ttl=54 Zeit = 23,6 ms 64 Byte von dfw06s48-in-f14.1e100.net (216.58.194.110.)): icmp_seq=4 ttl=54 time=30,2 ms ^C --- google.com Ping-Statistik --- 4 Pakete übertragen, 4 empfangen, 0% Paketverlust, Zeit 3004ms rtt min/avg/max/mdev = 18.209/ 22,901/30,267/4,715 ms

Einrichten einer statischen IP

Um eine konsistente Verbindung zu Ihrem Roboter mit derselben Adresse in Ihrem Netzwerk herstellen zu können, sollten Sie eine statische IP einrichten.

Rufen Sie Ihre aktuelle Netzwerkadresse ab, z. B. 192.168.1.18

Ich verwende die Adresse, die automatisch von DHCP zugewiesen wurde, als der Pi mit meinem Netzwerk verbunden war. Sie können dies beliebig ändern, solange es mit Ihrem Netzwerk übereinstimmt und nicht mit anderen zugewiesenen Adressen in Konflikt steht.

Öffnen Sie dhcp.conf in einem Texteditor. (Ich benutze Nano)

pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf

Scrollen Sie nach unten zu #Beispiel für statische IP-Konfiguration und ändern Sie die folgenden Zeilen.

#schnittstelle eth0

#statische IP-Adresse=192.168.11.13 #statische Router=192.168.11.1 #statische Domänenname_Server=192.168.11.1 8.8.8.8

Ändern Sie es entsprechend Ihrem Netzwerk und entfernen Sie das # am Anfang jeder Zeile.

Beispiel:

Schnittstelle wlan0

statische IP-Adresse=192.168.1.18 statische Router=192.168.1.1 statische Domänenname_Server=192.168.1.1 8.8.8.8

Speichern und schließen.

Neustart und Verbindung zum Pi über SSH

pi@raspberrypi:~ $ sudo reboot

Verbinden Sie sich von einem anderen Computer mit SSH. Windows-Benutzer können PuTTY oder das Windows-Subsystem für Linux (Windows10) verwenden.

ian@computer:~$ ssh [email protected]

Geben Sie Ihr Passwort ein (die Standardeinstellung ist Himbeere).

[email protected] Passwort:

Sie sollten sich jetzt an der Eingabeaufforderung Ihres Pi befinden.

pi@raspberrypi:~$

Schritt 2: Motion installieren und konfigurieren

Motion installieren und konfigurieren
Motion installieren und konfigurieren

Motion ist ein Programm, das in vielen Überwachungskamera- / Webcam-Projekten verwendet wird. Motion hat viele Funktionen. Wir richten es jedoch so ein, dass Videos einfach von der Webcam an Port 8081 gestreamt werden.

Testen Sie Ihre Webcam

Schließen Sie Ihre Webcam an und listen Sie die angeschlossenen USB-Geräte auf (Sie müssen möglicherweise nach dem Anschließen neu starten).

pi@raspberrypi:~ $ lsusb

Sie sollten eine ähnliche Ausgabe erhalten. Beachten Sie den Logitech C210.

Bus 001 Gerät 002: ID 046d:0819 Logitech, Inc. Webcam C210

Bus 001 Gerät 001: ID 1d6b:0002 Linux Foundation 2.0 Root Hub

Wenn Ihre Kamera nicht angezeigt wird, ist sie möglicherweise nicht kompatibel oder Sie müssen möglicherweise zusätzliche Treiber installieren.

Motion installieren

Pakete aktualisieren.

pi@raspberrypi:~ $ sudo apt-get update

Motion installieren.

pi@raspberrypi:~ $ sudo apt-get install motion -y

Sobald Motion installiert ist, bearbeiten Sie die Konfigurationsdatei.

pi@raspberrypi:~ $ sudo nano /etc/motion/motion.conf

Ändern Sie die folgenden Zeilen so, dass sie unten übereinstimmen.

Dämon an

width 640 height 480 Framerate 100 output_pictures off ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost off webcontrol_localhost off

Starten Sie den Motion Daemon beim Booten

Öffnen Sie die Datei /etc/default/motion.

pi@raspberrypi:~ $ sudo nano /etc/default/motion

Ändern

start_motion_daemon=ja

Datei speichern und beenden

Neustart

pi@raspberrypi:~ $ sudo reboot

Nachdem der Pi neu gestartet wurde, öffnen Sie den Browser und überprüfen Sie, ob Sie Videostreaming in den Browser auf Port 8081. haben

Beispiel:

192.168.1.18:8081

Fehlerbehebung beim Motion Daemon

Ich hatte Probleme, den Motion-Daemon beim Booten zu starten, während ich verschiedene Optionen in der Datei motion.conf ausprobierte.

Wenn Sie Motion vor dem Motion-Daemon in Raspian Stretch starten, werden Sie wahrscheinlich Probleme haben, ihn später beim Booten zu starten. Wenn Sie "sudo motion" ausführen, ohne den Daemon dafür zu konfigurieren, wird zuerst das Verzeichnis /var/log/motion erstellt, ohne dem Benutzer Schreibrechte zu erteilen.

Schritt 3: Apache installieren und Web Control-Seite einrichten

Apache installieren und Web Control-Seite einrichten
Apache installieren und Web Control-Seite einrichten

Apache ist der Webserver für die Steuerungswebseite des Roboters. Wir werden die standardmäßige Apache-Datei index.html durch eine von github heruntergeladene Datei ersetzen. Sie ändern auch einige Codezeilen, um den Bewegungsvideostream anzuzeigen und zuzuweisen, wohin die Befehle zur Steuerung des Roboters gesendet werden sollen.

Apache und Git. installieren

pi@raspberrypi:~ $ sudo apt-get install apache2 git -y

Sobald Apache und Git installiert sind, laden Sie die Dateien herunter.

pi@raspberrypi:~ $ git clone

Öffnen Sie das roombarobot-Verzeichnis.

pi@raspberrypi:~ $ cd roombarobot

Ersetzen Sie die Datei index.html im Ordner /var/www/html durch die Datei index.html im Ordner /home/pi/roombarobot

pi@raspberrypi:~/roombarobot $ sudo cp index.html /var/www/html

Bearbeiten Sie die Datei index.html

Öffnen Sie die Datei index.html mit einem Texteditor.

pi@raspberrypi:~/roombarobot $ sudo nano /var/www/html/index.html

Suchen Sie diese beiden Zeilen

var host = "ws://IHREIPADRESSE:9093/ws";

Ändern Sie "YOURIPADDRESS" in die statische IP-Adresse, die Sie in Schritt 1 eingerichtet haben, und speichern Sie die Datei.

Beispiel:

var host = "ws://192.168.1.18:9093/ws";

Öffnen Sie auf einem anderen Computer einen Browser und geben Sie die IP-Adresse Ihres Pi ein. Sie sollten die Kontrollwebseite mit einem Kästchen auf der linken Seite sehen, das Video von Ihrer Webcam streamt, und die Webkontrollschaltflächen auf der rechten Seite.

Schritt 4: Einrichten und Testen des Codes

Code einrichten und testen
Code einrichten und testen

Dieser Code ist in Python geschrieben und erfordert die Tornado-Bibliothek. Der Code verwendet die Bibliothek, um einen Server einzurichten, der über Websockets auf Port 9093 auf Befehle von der Steuerungswebseite lauscht.

Installieren Sie PIP und die Tornado-Bibliothek

pip installieren

pi@raspberrypi:~ $ sudo apt-get install python-pip

Tornado-Bibliothek installieren

pi@raspberrypi:~ $ sudo pip install tornado

Starten Sie das Roombabot-Programm und testen Sie die Verbindung

Starten Sie das roombabot.py-Programm

pi@raspberrypi:~$ sudo python /home/pi/roombarobot/roombabot.py

Nach dem Ausführen sollte im Terminal "Bereit" angezeigt werden. Öffnen Sie die Steuerungswebseite in einem Browser und klicken Sie auf Verbinden. Klicken Sie dann auf eine der Richtungsschaltflächen auf der Seite. Sie können auch die Pfeiltasten auf Ihrer Tastatur verwenden.

Sie sollten eine ähnliche Ausgabe im Terminal sehen.

Bereit

Verbindung geöffnet… Verbindung geöffnet… empfangen: u 8 Laufen Vorwärtsverbindung geöffnet… empfangen: l 6 Linksabbiegen Verbindung geöffnet… empfangen: d 2 Laufen Rückwärtsverbindung geöffnet… empfangen: r 4 Rechtsabbiegen

Drücken Sie Strg+C, um das Programm zu stoppen.

Sobald Sie mit dem Testen fertig sind, schalten Sie den Pi aus.

pi@raspberrypi:~$ sudo poweroff

Fehler

Ich habe ein Problem mit der Schaltfläche zum Herunterfahren auf der Steuerungswebseite festgestellt. Manchmal tut die Schaltfläche zum Herunterfahren nichts, wenn sie angeklickt oder angetippt wird. Ich konnte nicht herausfinden, woran das liegt, aber es gibt einen Workaround. Wenn Sie den Roboter ausschalten möchten und die Schaltfläche zum Herunterfahren nicht funktioniert, laden Sie die Seite neu, klicken / tippen Sie auf die Schaltfläche Verbinden und klicken / tippen Sie dann auf die Schaltfläche zum Herunterfahren. Es sollte sich ausschalten.

Schritt 5: Montage

Montage
Montage
Montage
Montage
Montage
Montage
Montage
Montage

Wie bereits erwähnt, müssen Sie für dieses Projekt keinen Roomba verwenden. Alles mit zwei Motoren, zwei Rädern und einem Rahmen würde funktionieren. Ich habe den Roomba auseinander genommen und alles außer den Radmodulen und dem Akku entfernt.

Radmodule

Die Räder und Motoren des Roomba sind zusammen in einem abnehmbaren Modul untergebracht. Jedes Modul hat ein blaues Außengehäuse, das Motor, Getriebe, Rad, Aufhängungsfeder und Schnittstellenplatine enthält.

Schnittstellenkarte

Zu jeder Schnittstellenplatine laufen sechs Drähte. Es gibt zwei Drähte (Rot[+], Schwarz[-]), die den Motor drehen, ein Datendraht für einen Hall-Effekt-Sensor, ein Draht für den Radfallschalter, ein 5V-Draht und ein GND-Draht zur Stromversorgung des Sensors. Sie müssen das Modul zerlegen, um auf die Schnittstellenplatine zugreifen zu können. Ich habe alles wieder am Motor entfernt und neue [+] und [-] Drähte an den Motor gelötet (siehe Fotos). Es liegt an Ihnen, ob Sie die Sensoren erhalten möchten oder nicht.

Fahrwerksfedern

Sobald Sie den Vakuumteil entfernen, wird das Gewicht des Roomba abgeworfen. Wenn Sie die Federn nicht entfernen, sitzt der Roomba schräg. Ich habe diese ursprünglich entfernt, aber dann wieder hinzugefügt, als ich feststellte, dass es Schwierigkeiten hatte, über den Teppich zu rollen. Das Zurücksetzen der Feder hat das Problem behoben.

Verkabelung der Motoren mit der Motorsteuerung

Die Motoren sind voneinander weg. Das heißt, um den Roomba vorwärts zu fahren, muss sich ein Motor vorwärts drehen, während der andere rückwärts dreht. Ich habe nicht viel darüber nachgedacht, bis ich alles verkabelt habe. Am Ende habe ich nur den Code geschrieben, wie ich die Motoren ursprünglich verdrahtet habe. Dies war ein glücklicher Zufall, denn jedes Mal, wenn der Raspberry Pi ein- und ausgeschaltet wird, wird eine Spannung an die GPIO-Pins ausgegeben. So wie ich die Dinge verkabelt habe, dreht sich der Roomba, bis der Raspberry Pi hochgefahren ist (etwa dreißig Sekunden) und dreht sich beim Herunterfahren, bis die Stromversorgung unterbrochen wird. Bei einer anderen Verkabelung würde es möglicherweise vorwärts / rückwärts rollen, was irritierend wäre. Ich plane, dies schließlich mit einem einfachen Schalter für die Motorsteuerung zu beheben.

Anschließen der Motoren und des Akkus an die Motorsteuerung

Stromversorgung- - - - - - - - - - - - - - - - 12V [+]- - - - - - - - - - - - -Roomba Batterie [+]

Motor 2- - - - - - - - - - - - - - - Schwarz- - - - - - - - - - - - - -Linker Motor [-] Motor 2- - - - - - - - - - - - - - - Rot- - - - - - - - - - - - - - -Linker Motor [+] Motor 1- - - - - - - - - - - - - - - Schwarz- - - - - - - - - - - - - -Rechter Motor[-] Motor 1- - - - - - - - - - - - - - Rot- - - - - - - - - - - - - - -Rechter Motor[+] GND- - - - - - - - - - - - - - - - - 12V [-]- - - - - - - - - - - - -Roomba Batterie [-]

Verkabelung des Motorcontrollers mit dem Raspberry Pi

Motorcontroller Pins Drahtfarbe (siehe Fotos) Raspberry Pi Pins

GND- - - - - - - - - - - - - - - - - Schwarz- - - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - Blau - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - Grün- - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - Gelb - - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - Orange - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - Rot- - - - - - - - - - - - - - -5V

Montage der Elektronik

Es gibt nicht viel, um alles zusammenzustellen. Ich habe den Roomba vom Chassis abgenommen. Bei abgenommener Abdeckung können Sie die vorhandenen Kunststoff-Abstandshalter einfach abklipsen und Löcher bohren, um die Elektronik zu montieren. Es gibt vorhandene Anschlüsse zum Verlegen von Kabeln von den Motoren. Wenn Sie den serienmäßigen Roomba-Akku verwenden, ist bereits eine Aussparung für den Zugang zu den Akkupolen vorhanden.

Batterien

Ich habe separate Batterien für den Raspberry Pi und den Motorcontroller verwendet. Der Akku des Pi ist nur ein 5-V-Akku, der zum Aufladen von Mobiltelefonen verwendet wird. Für die Motorsteuerung habe ich den mitgelieferten Original Roomba-Akku verwendet. Die Batteriepole sind nicht beschriftet, daher ist es am besten, die Spannung mit einem Voltmeter zu überprüfen, bevor Sie sie an die Motorsteuerung anschließen. Um die Drähte am Roomba-Akku zu befestigen, habe ich vier Neodym-Magnete verwendet (siehe Fotos). Ich lötete zwei der Magnete an die Drähte und die anderen beiden klebte ich an die Batteriepole. Durch Löten werden die Magnete entmagnetisiert. Die Beschichtung auf der Außenseite kann sich jedoch immer noch an den Magneten an den Anschlüssen festsetzen und Strom leiten. So wird das An- und Abklemmen der Batterie zum Kinderspiel.

Testen

Wenn Sie alles zusammen haben, überprüfen Sie, ob Sie alles richtig verkabelt haben, stützen Sie Ihren Roboter auf etwas (damit er nicht wegrollt) und schalten Sie ihn ein.

Melden Sie sich an und starten Sie das roombabot.py-Programm

pi@raspberrypi:~$ sudo python /home/pi/roombarobot/roombabot.py

Rufen Sie die Webkontrollseite auf und testen Sie sie. Wenn alles richtig verkabelt ist, sollten sich die Räder beim Anklicken der Buttons / der Pfeiltasten in die entsprechende Richtung drehen (Verbinden nicht vergessen).

Schritt 6: Starten des Python-Codes beim Booten / Fertigstellen

Starten des Python-Codes beim Booten / Beenden
Starten des Python-Codes beim Booten / Beenden
Starten des Python-Codes beim Booten / Beenden
Starten des Python-Codes beim Booten / Beenden

Als letztes müssen wir Raspbian anweisen, das Python-Programm beim Booten zu starten. Um dies zu tun, werden wir ein Skript erstellen und es so planen, dass es beim Neustart mit crontab ausgeführt wird.

Erstellen Sie das Skript

Erstellen Sie eine neue Skriptdatei namens startrobot.sh im pi-Benutzerverzeichnis

pi@raspberrypi:~ $ sudo nano startrobot.sh

Kopieren Sie die folgenden Zeilen in die Datei

#!/bin/sh

#startrobot.sh cd / cd /home/pi/roombarobot sudo python roombabot.py cd /

Datei speichern und beenden

Machen Sie die Datei startrobot.sh ausführbar

pi@raspberrypi:~$ sudo chmod 755 startrobot.sh

Testen Sie es (Drücken Sie Strg + c, um zu stoppen)

pi@raspberrypi:~$ sh startrobot.sh

Bearbeiten Sie die crontab-Datei

pi@raspberrypi:~$ sudo crontab -e

Fügen Sie die folgende Zeile am Ende der Datei hinzu

# m h dom mon dow Befehl

@reboot sh /home/pi/startrobot.sh

Speichern und schließen

Das Programm roombabot.py sollte jetzt starten, wenn der Pi neu gestartet oder aus- und wieder eingeschaltet wird.

Beenden

An dieser Stelle sollten Sie einen funktionsfähigen Roboter haben, den Sie mit dem Browser von jedem Gerät in Ihrem Netzwerk aus steuern können. Ich habe dies seit dem ursprünglichen Build ein wenig weitergeführt und ein VPN eingerichtet, um auf den Roboter zugreifen zu können, wenn ich nicht zu Hause bin. Ich beabsichtige, in Zukunft einige zusätzliche Änderungen vorzunehmen. Ich plane, es autonom zu machen und möglicherweise Bewegungen zu folgen, während ich immer noch die Kontrolle übernehmen kann, wenn ich möchte.