Fügen Sie Ihrem HTML-Code das folgende Snippet hinzu:Dieser selbstbalancierende mobile Roboter mit Schwenk- und Neigekamera kann vom Host-PC aus ferngesteuert werden, ohne dass eine Sichtlinie erforderlich ist.Informieren Sie sich über dieses Projekt aufDieser selbstbalancierende mobile Roboter mit Schwenk- und Neigekamera kann vom Host-PC aus ferngesteuert werden, ohne dass eine Sichtlinie erforderlich ist.Selbstbalancierende mobile Roboter (SBMRs) sind unter anderem einzigartig, allein schon wegen ihrer Fähigkeit, auf einer bestimmten festen Position zu balancieren.Ein typisches SBMR misst den Neigungswinkel mit der Kombination aus Beschleunigungsmesser- und Gyroskopmessungen und korrigiert sich selbst, indem es sich vorwärts oder rückwärts bewegt, um den Winkel auf Null zu bringen.Der Proportional-Integral-Differential (PID)-Regler wird verwendet, um zu entscheiden, wie viel Bewegung erforderlich ist und mit welcher Geschwindigkeit, um die Winkeldrift schnell zu korrigieren und den Roboter zu stabilisieren.Die Dinge werden herausfordernd, wenn ein solcher Roboter manuell von einem entfernten Standort aus navigiert (bewegt oder gedreht) werden soll.Dieses Projekt demonstriert, wie man ein einfaches WiFi-ferngesteuertes SBMR mit zwei Rädern baut, das eine integrierte WiFi-Kamera hat, die auf einer servobetriebenen Schwenk- und Neigebaugruppe montiert ist.Es wird manuell vom Benutzer vom Host-PC über WLAN gesteuert.Aufgrund des Live-Video-Feeds, der von der Bordkamera verfügbar ist, muss das SBMR für den Benutzer nicht sichtbar sein.Schritt 1: Erstellen Sie die Hardware wie im Abschnitt „Hardware-Entwicklung“ beschrieben.Schritt 2: Installieren Sie die neueste Version von CASP von diesem Link: https://aadhuniklabs.com/?page_id=550.Bitte gehen Sie über diesen Link: https://aadhuniklabs.com/?page_id=554 für Video-Tutorials zu CASP.Bitte beachten Sie, dass für dieses Projekt die CASP-Version 0.9.5.3 vom 19.09.2022 und höher erforderlich ist.Schritt 3: Laden Sie das Beispielprojekt „Self Balancing Remote Controlled Mobile Robot with On-Board Camera“ unter diesem Link herunter: https://aadhuniklabs.com/casp-examples/#robotics und befolgen Sie die Schritte im Abschnitt „Softwareentwicklung“. .Schritt 4: Einige Anpassungen, wie im Abschnitt „Anpassungen“ beschrieben, sind erforderlich, um die Software an Ihre entwickelte Hardware anzupassen.Sie können die Leistung des Roboters auch weiter verbessern, indem Sie den Quellcode der benutzerdefinierten Blöcke ändern.Schritt 5: Abschließend werden Tastatur- und Maussteuerungen zur Steuerung des SBMR im Abschnitt „Steuerungsmethodik“ beschrieben.Zwei Gleichstrommotoren sind zusammen mit den Rädern auf einem geeigneten Grundrahmen montiert.Pan & Tilt-Baugruppe (ausgestattet mit zwei Mikroservos) wird an geeigneter Stelle des Rahmens montiert.Am Grundrahmen ist eine 12V-Batterie montiert.Erforderliche Elektronikmodule werden geeignet auf dem Grundrahmen platziert und gemäß dem Anschlussplan im Abschnitt „Schematisch“ angeschlossen. Die typische Anordnung ist in der folgenden Abbildung dargestelltDieses Projekt wird separat auf zwei Mikrocontrollern, Arduino RP2040 Connect und Raspberry Pi Pico, erstellt und getestet.Diese Mikrocontroller-Boards werden als Hauptcontroller für den Roboter verwendet.Sie werden im Dual-Core-Modus verwendet und für Arduino RP2040 und Raspberry Pi Pico auf 200 MHz bzw. 250 MHz übertaktet, um die Reaktionszeiten zu erreichen, die für das Ausbalancieren des Roboters und die gleichzeitige Kommunikation mit dem Host-PC über WLAN erforderlich sind.Arduino RP2040 verfügt über integrierte IMU und WLAN, da diese erforderlichen externen Komponenten minimal sind.Core-0 wird für die WiFi-Kommunikation und alle PWM-Blöcke zum Antreiben von Rädern und Schwenk- und Neigeservos für Kameras verwendet.Core-1 wird ausgiebig für IMU und Blöcke verwendet, die zum Ausbalancieren des Roboters erforderlich sind.Für Raspberry Pi Pico wird Core-0 für die Blöcke verwendet, die zum Ausbalancieren des Roboters erforderlich sind, und Core-1 wird für Blöcke verwendet, die an der Fernkommunikation und manuellen Steuerung der Roboter- und Kamerabaugruppe beteiligt sind.Die Trägheitsmesseinheit (IMU) MPU-6050 (oder MPU-9250) wird zum Erfassen des Neigungswinkels (hier Rollwinkel aufgrund der Montagerichtung der IMU) des Roboters verwendet.Es kommuniziert mit dem integrierten Mikrocontroller über die I2C-Schnittstelle.Das ESP8266 WiFi-Modul wird für die Kommunikation mit dem Remote-Host-PC über WiFi verwendet.Es kommuniziert mit dem integrierten Mikrocontroller über eine serielle Schnittstelle.Das ESP32-Kameramodul ist auf der Schwenk- und Neigebaugruppe montiert, um Live-Videos aufzunehmen und auf den Host-PC zu streamen.Die auf dem ESP32-CAM-Modul vorhandene Taschenlampe wird bei schlechten Lichtverhältnissen manuell vom Host-PC gesteuert.Eine 9-V- bis 12-V-Batterie wird verwendet, um die gesamte Schaltung des Roboters mit Strom zu versorgen.Ein 9 V/12 V bis 5 V DC-Abwärtswandler wird verwendet, um die erforderliche 5-V-Versorgung bereitzustellen, um den Mikrocontroller, die Servos und das ESP32-Kameramodul mit Strom zu versorgen.Die ESP32-Kamera muss ordnungsgemäß mit einer gültigen IP-Adresse programmiert werden, bevor sie im Projekt verwendet wird.Einzelheiten zur Programmierung des Moduls entnehmen Sie bitte unserem ESP32-CAM-Beispiel.Der Benutzer kann sich auch auf umfangreiches Material beziehen, das zu diesem Thema im Internet verfügbar ist.B) Software für Mikrocontroller und native ZieleDie CASP-Software wird verwendet, um schnell Modelle zu erstellen und Binärcode für das integrierte Mikrocontroller-Ziel und den nativen PC zu generieren.Diese Software ermöglicht es Benutzern, das Signal an jedem Punkt des Modells in Echtzeit grafisch darzustellen.Diese Funktion wird häufig beim Einstellen des PID-Reglers verwendet.Neben normalen CASP-Blöcken werden zwei benutzerdefinierte Blöcke (einer im Zielmodell und der andere im nativen Modell) in den Modellen verwendet, um Logiken zu entwickeln, die durch normale CASP-Blöcke nicht möglich sind, und um die Gesamtblockanzahl zu reduzieren.Der Quellcode für die benutzerdefinierten Blöcke steht dem Benutzer zur Verfügung.Der benutzerdefinierte Block, der im nativen Modell auf dem Host-PC verwendet wird, erzeugt die erforderlichen Steuersignale, wenn der Benutzer bestimmte Tasten zur Steuerung der Bewegungen des Roboters drückt.Der im Zielmodell verwendete benutzerdefinierte Block modifiziert den Neigungswinkelsollwert (der dem Fehlerblock zugeführt wird) zum Navigieren des Roboters basierend auf den Benutzerbefehlen vom Host-PC und bereitet auch die Ausgangssignale der PID-Controller vor dem Antreiben der Motoren auf.Benutzer können sich die Konfiguration und den Quellcode dieser benutzerdefinierten Blöcke ansehen und lernen, wie die Blöcke zusammen mit anderen Blöcken in CASP-Modelle integriert werden.Benutzer können unser Video-Tutorial zum Erstellen eines benutzerdefinierten Blocks unter https://aadhuniklabs.com/casp_res_videos#custom_block durchgehen.Zwei Modelle werden entwickelt, um das gewünschte Ziel zu erreichen.B.1) Zielmodell, das auf Arduino RP2040 Connect und Raspberry Pi Pico läuft, besteht aus1) Blinklogik, die anzeigt, dass das System läuft und ob die IMU ordnungsgemäß funktioniert oder nicht.2) IMU, benutzerdefinierter PID-Controller-Block und andere unterstützende Blöcke, die das Gleichgewicht des Roboters aufrechterhalten.3) WiFi und unterstützende Blöcke, die die erforderlichen Steuersignale vom Host-PC empfangen.4) PWM- und Servoblöcke, die den Pins des Mikrocontrollers zugeordnet sind.Im Folgenden sind die Schritte zum richtigen Programmieren der Zieltafel aufgeführt.1) Verbinden Sie das Target über ein USB-Kabel mit dem Host-PC.2) Notieren Sie sich die Nummer des seriellen Anschlusses, an den die Platine, die mit dem Host-PC verbunden ist, vom Host-Betriebssystem.3) Führen Sie CASP aus und laden Sie das Projekt „rc_target_arduino“ für das Ziel Arduino RP2040 oder das Projekt „rc_target_rpi“ für das Ziel Raspberry Pi.Öffnen Sie die Workspace-Datei und passen Sie verschiedene Blockparameter an, wie im Abschnitt „Anpassungen“ beschrieben.4) Der WiFi-Kommunikationsblock ist auf den Stationsmodus eingestellt.Der Benutzer muss möglicherweise die SSID und das Passwort des Netzwerks eingeben, mit dem das Gerät verbunden werden soll.Der Parameter Lokale IP-Adresse muss so konfiguriert werden, wie er vom Netzwerk-DHCP-Client des Netzwerks zugewiesen wird.5) Öffnen Sie den Menüpunkt Home->Simulation->Setup Simulation Parameters.Stellen Sie unter TargetHW->General tabs den Parameter 'Target Hardware Programmer Port' auf den seriellen Port ein, an dem die Karte angeschlossen ist.6) Erstellen Sie das Modell und programmieren Sie das Board, indem Sie auf die Schaltfläche Run klicken.B.2) Natives Modell, das auf dem Host-PC läuft, besteht aus1) Kamerablock, der Live-Videos von der ESP32-Kamera empfängt.Die IP-Adresse der ESP32-Kamera muss in die Blockparameter dieses Blocks eingegeben werden.2) Bildanzeigeblock zum Anzeigen des von der Kamera empfangenen Live-Videos.Es ist auch für die Ausgabe von Tastatur- und Maussignalen konfiguriert.3) RC-Steuerblock: Dies ist ein benutzerdefinierter Block, der Tastatur- und Maussignale vom Bildanzeigeblock empfängt und geeignete Steuersignale zur Steuerung der Roboterbewegung und seiner Kopfbewegungen (Schwenken und Neigen) erzeugt.4) GPIO-Blöcke, die über den WiFi-Kommunikationskanal auf das Zielmodell abgebildet werden.Im Folgenden sind die Schritte zum Ausführen des nativen Modells auf dem Host-PC aufgeführt1) Bevor Sie fortfahren, muss der Host-PC mit demselben Netzwerk wie das Gerät verbunden sein.Der Roboter sollte betriebsbereit sein.2) Laden Sie das Projekt ‚rc_native‘.3) Klicken Sie auf den Menüpunkt Home->Simulation->Configure Simulation IO.4) Das Fenster „Simulationshardware konfigurieren“ wird geöffnet.Ändern Sie unter Native Nodes und GPIO Device Nodes die in der folgenden Abbildung markierten IP-Adressen (durch Doppelklick auf das Element) in die entsprechenden lokalen und Geräte-IP-Adressen.5) Klicken Sie auf die Schaltfläche „Gerät verbinden“ und aktivieren Sie das Kontrollkästchen „Online-Daten“.Das Programm sollte nun mit einer Zykluszeit von etwa 30 ms mit dem Ziel kommunizieren.Die Zielplatine ist jetzt als Endpunkt „EP0“ für das native Modell verfügbar.Das native Modell kann diesen Endpunkt verwenden, um eine Verbindung zu den entsprechenden IOs auf dem Ziel herzustellen.6) Klicken Sie auf die Schaltfläche „Speichern“, um die Konfiguration zu speichern und das Fenster zu schließen.7) Führen Sie das Modell aus, indem Sie auf die Schaltfläche Ausführen klicken.Ein Simulationsfenster sollte sich öffnen und mit dem Board kommunizieren.8) Screenshot des Ausgangssimulationspanels, das auf dem Host-PC läuft, ist unten gezeigt.1) Der IMU-Sensor-Offsetwert (sen_offset-Block) muss angepasst werden, wenn der Schwerpunkt des Roboters zu einer Seite hin verschoben ist und/oder der Boden etwas geneigt ist.2) Proportional-, Integral- und Differentialparameter der PID-Regler müssen basierend auf Roboterraddurchmesser, Radspiel, Getriebeübersetzung des Antriebsmotors, Position des IMU-Sensors, Robotergewicht, -höhe und -schwerpunkt abgestimmt werden.3) Der Parameter „PWM Minimum Offset“ des benutzerdefinierten Blocks muss so angepasst werden, dass er mit dem Mindestwert übereinstimmt, der erforderlich ist, um die Motoren unter Last gerade zu drehen.4) Alle anderen erforderlichen Logiken zur Verbesserung der Leistung des Roboters können im Quellcode des benutzerdefinierten Blocks ausgeführt werden.5) Die Radmotoranschlüsse können umgekehrt werden, um eine Vorwärts- oder Rückwärtsbewegung zu erhalten, wenn W und S gedrückt werden.1) Logiken zum Erzeugen von Vorwärts- und Rückwärtsdrehung des Motors werden entwickelt, um mit dem im Projekt verwendeten Motortreiber-IC, dh TA6586, übereinzustimmen.Der Benutzer kann die Logik geeignet modifizieren, wenn ein anderer Treiber-IC verwendet wird.2) Servomotoren erfordern möglicherweise einige Ausrichtungen, um für den in den rc_control-Blockparametern angegebenen Standardwinkel in Vorwärtsrichtung des Roboters zu zeigen.3) Grundgeschwindigkeit, Geschwindigkeitsbegrenzungen und andere Parameter in Bezug auf die Navigation sind über die Parameter des rc_control-Blocks einstellbar.1) Das oben gezeigte Simulationsfenster akzeptiert Tastatur- und Mauseingaben, wenn es aktiv ist.2) Der Benutzer kann die Tasten W – zum Vorwärtsbewegen, S – zum Rückwärtsbewegen, A – zum Linksdrehen in der Mitte und D – zum Rechtsdrehen in der Mitte verwenden.3) Die Kombination der Tasten W/S & A/D kann verwendet werden, um beim Vorwärts- oder Rückwärtsfahren nach links und rechts abzubiegen.4) Die Geschwindigkeit kann vorübergehend erhöht werden, indem Sie die Umschalttaste zusammen mit den oben genannten Tasten verwenden.Die Grundgeschwindigkeit kann mit den Bild-auf- und Bild-ab-Tasten eingestellt werden.5) Die Tasten K und M können verwendet werden, um den Offset-Neigungswinkel einzustellen, bei dem sich der Roboter an einer bestimmten Position stabilisiert.Dieser Wert wird benötigt, wenn der Schwerpunkt des Roboters zu einer Seite verschoben ist und/oder der Boden etwas geneigt ist.6) Vertikale und horizontale Servowinkel (von -90 bis +90 Grad) für die Kopfpositionssteuerung können durch Mausbewegungen gesteuert werden.7) Taste 'G' wird verwendet, um beide Servos im Standardwinkel zu positionieren.8) Taste 'L' wird verwendet, um das Blitz-LED-Licht der ESP32-Kamera ein- und auszuschalten.Bitte schreiben Sie uns unter https://aadhuniklabs.com/contact für Fragen und Vorschläge zu diesem Projekt.Sehen Sie sich unsere neuesten und spannenden Projekte unter https://create.arduino.cc/projecthub/aadhuniklabs an.Hackster.io, eine Avnet-Community © 2022