PiMowBot Geo-Position
-  PiMowBot-Logo YouTube-Logo Twitter-Logo

  -  EN  |  DE  -

PiMowBot Workshop - ein Mähroboter im Eigenbau

Teil 3: Diese Schritte helfen ihrem PiMowBot auf die Beine.

In diesem Teil des Workshop erfahren Sie, wie zusätzliche Features des Systems/der PiMowBot-Software aktiviert und genutzt werden können.

Der erste Teil des Workshops beschäftigt sich mit dem Zusammenbau der Hardware, der zweite Teil beschreibt die Installation und Konfiguration der Software, der dritte Teil zeigt ihnen die Aktivierung zusätzlicher Feature des PiMowBots.

Schnelle, latenzarme Datenübertragung via WebSocket

WebSocket ist eine Entwicklung der Internet Engineering Task Force und ermöglicht eine bidirektionale Verbindung zwischen dem Browser und dem WebSocket kompatiblen Server des PiMowBot. Nur beim aktuellen Release der PiMowBot-It! Management Software ist der WebSocket Server enthalten.

Es werden je zwei WebSocket-Server Instanzen (Module) benötigt. Ein Modul zur Übertragung der Telemetriedaten sowie der Steuerungsbefehle (CTRL) im RC-Betrieb und das zweite zur Übermittlung des Bildes (IMG) vom PiCAM-Modul.

01 Einrichten des WebsocketCRTL-Moduls als SystemD-Service
Das WebSocketCRTL-Modul von PiMowBot-It! wird als Respawn-Prozess ins System eingebunden. Dafür wird ein entsprechender systemd-Service per sudo nano /etc/systemd/system/WebSocketCTRL.service eingetragen:

[Unit]
Description=PiMowBot Websocket Server Control
After=ssh.service
Wants=network-online.target

[Service]
WorkingDirectory=/home/pi/pimowbot
ExecStart=/home/pi/pimowbot/bin/r3 Websocket.r 8008
User=pi
Restart=always
RestartSec=1
StandardOutput=append:/home/pi/pimowbot/Websocket-ctrl.log
StandardError=append:/home/pi/pimowbot/Websocket-ctrl.log
SyslogIdentifier=PiMowBot_WS

[Install]
WantedBy=WebserverPiMowBot.service

Anschließend wird der Service per

sudo systemctl enable WebSocketCTRL.service

aktiviert. Ab jetzt wird beim Hochfahren des Raspberry Pi das PiMowBot-It! WebSocketCTRL-Modul automatisch als Respawn-Prozess gestartet.

02 Einrichten des WebsocketIMG-Moduls als SystemD-Service
Das WebSocketIMG-Modul von PiMowBot-It! wird als Respawn-Prozess ins System eingebunden. Dafür wird ein entsprechender systemd-Service per sudo nano /etc/systemd/system/WebSocketIMG.service eingetragen:

[Unit]
Description=PiMowBot Websocket Server Image
After=WebSocketCTRL.service
Wants=network-online.target

[Service]
WorkingDirectory=/home/pi/pimowbot
ExecStart=/home/pi/pimowbot/bin/r3 Websocket.r 8009
User=pi
Restart=always
RestartSec=1
StandardOutput=append:/home/pi/pimowbot/Websocket-img.log
StandardError=append:/home/pi/pimowbot/Websocket-img.log
SyslogIdentifier=PiMowBot_WS

[Install]
WantedBy=WebserverPiMowBot.service

Anschließend wird der Service per

sudo systemctl enable WebSocketIMG.service

aktiviert. Ab jetzt wird beim Hochfahren des Raspberry Pi das PiMowBot-It! WebSocketIMG-Modul automatisch als Respawn-Prozess gestartet.

03 Verwenden der WebSocket-Server im Betrieb
Wenn Sie alle vorherigen Schritte vollständig und ordnungsgemäß durchgeführt haben, können Sie dann die WebSocket-Server der PiMowBot-It! Management Software nach einen Reboot des Raspberry Pi verwenden.

sudo reboot

Den PiMowBot mit eigenem WiFi-HotSpot einrichten

Falls der WiFi-Empfang ihres eigenen Heimnetzewerkes/LANs nicht den kompletten Mähbereich ihres PiMowBot abdeckt, kann es zu Verbindungsproblemen zwischen Browser und PiMowBot kommen. Eine manuelle Steuerung im RC-Betrieb oder die Unterbrechung des AutoMow-Betriebes ihres PiMowBots ist dann nicht immer und überall auf dem Rasen möglich.

Aus diesem Grund ist hier beschrieben, wie Sie einen eigenen WiFi-AP/-HotSpot bei ihrem PiMowBot einrichten.

01 Einrichten des Network-Managers
Mit Hilfe des Network-Managers ist die Nutzung eines eigenen WiFi-AP/-HotSpot bei ihrem PiMowBot ein Kinderspiel. Sie sollten allerdings an ihrem Raspberry Pi temporär einen Monitor und Tastatur anschließen oder die SD-Karte vom PiMowBot in einen RasPi stecken der über beides verfügt. Während des Einrichtens des Network-Managers bricht nämlich die bestehende Netzwerkverbindung ab und ein Weiterarbeiten ist dann nur an der Konsole möglich.

Wenn Sie bereits das aktuelle Bullseye Lite Image (32bit) beim PiMowBot verwenden, dann wird der Network-Manager für den Raspberry Pi per   sudo raspi-config   , wie abgebildet:

Abbildung 1 

sudo raspi-config -> 6 Advanced Options -> AA Network-Config -> Enable NM
 
enable-NM

aktiviert. Bei einem älteren Buster Image müssen dagegen diese Befehle im Terminal ausgeführt werden:

sudo apt update
sudo apt upgrade

sudo apt install network-manager

sudo reboot

Achtung: Nach der Aktivierung des Network-Manager Services bricht die bestehende Kommunikationsverbindung zum PiMowBot ab und alle nachfolgenden Schritte müssen an der Konsole durchgeführt werden (s.o.).

02 Reintegration ins Heimnetzwerk
Nachdem der Network-Manager installiert und aktiviert wurde sowie der Raspberry Pi einmal neu gebootet ist, können Sie zunächst den PiMowBot wieder in ihr LAN per WLAN einbinden. Eine Liste der in Reichweite vorhanden WiFi-AP erhält man über diesen Befehl:

nmcli dev wifi

Die entsprechende Connection richten Sie beim Network-Manager wie folgt ein:

nmcli device wifi connect <SSID> password <Your Secret>

Wählen Sie die ihnen bekannte <SSID> und das Passwort entsprechend, damit der PiMowBot sich wieder mit ihrem Heimnetzwerk einbinden kann.

03 Aufsetzen des WiFi AccessPoints
Ermitteln Sie den Devicenamen ihres USB-WiFi-Dongles (für gewöhnlich wlan0 oder wlan1) mit dem Befehl ip a und erstellen parallel zum wlan0 Device ein neues virtuelles Device (hier im Beispiel: wlan2) für den AccessPoint:

sudo iw dev wlan0 interface add wlan2 type __ap

Mit Hilfe von

ip a

überprüfen Sie, ob das virtuelle wlan2 Interface erstellt wurde.

Anschließend wird mit diesen Befehl der neue Hotspot eingerichtet:

sudo nmcli dev wifi hotspot ifname wlan2 ssid PiMowBot password MowsLawn

Die SSID (hier: PiMowBot) und das Kennwort (hier: MowsLawn) sind bei Bedarf anzupassen. Der AccessPoint verwendet den gleichen Channel wie das originäre WiFi-Device.

Nun wird der Hotspot per

sudo nmcli connection up Hotspot

aktiviert. Ggf. können ein paar Sekunden vergehen bis der Network-Manager eine abgespeckte Version von dnsmasq gestartet hat.

Nun überprüfen Sie zunächst per   sudo nmtui   , ob bei der Connection für den Hotspot die
Option "[X] Automatically connect", wie abgebildet:

Abbildung 2 

sudo nmtui -> Edit a connection -> Wi-Fi Hotspot <Edit...>
 
automatically-connect

gesetzt ist, damit der Hotspot beim Starten des Systems automatisch mit hochgefahren wird und zur Verfügung steht.
Anschließend überprüfen und merken Sie sich die IP-Adresse des AccessPoints auf dem virtuellem Device:

ip a

Verwenden Sie diese IP-Adresse (hier: IP 10.42.0.1) für die Kommunikation mit ihrem PiMowBot, nachdem Sie ihren PC, SmartPhone oder Touchpad mit dessen neuem WiFi-AP verbunden haben.

04 Dienst für den Systemstart vorbereiten
Damit der neue WiFi-AP auch automatisch nach dem Systemstart des PiMowBots zur Verfügung steht, wird ein entsprechender systemd-Service per sudo nano /etc/systemd/system/virt-WifiAP.service erstellt:

[Unit]
Description=Raise virtual wifi interface and AP
DefaultDependencies=no
Requires=NetworkManager.service
Wants=network-online.target
After=NetworkManager.service multi-user.target
Conflicts=shutdown.target

[Install]
WantedBy=multi-user.target

[Service]
Type=oneshot
EnvironmentFile=-/etc/default/networking
ExecStartPre=/usr/sbin/iw dev wlan0 interface add wlan2 type __ap
ExecStart=/usr/bin/sleep 5
ExecStartPost=/usr/bin/nmcli connection up Hotspot
RemainAfterExit=true
TimeoutStartSec=5min

Anschließend wird der Service per

sudo systemctl enable virt-WifiAP.service

aktiviert. Ab jetzt wird beim Hochfahren des Raspberry Pi automatisch der Hotspot des PiMowBots gestartet und Sie können sich nun überall in ihrem Garten mit dem PiMowBot verbinden.

Den Antrieb des PiMowBot optimieren

Seit Frühjahr 2024 verfügen alle Releases der PiMowBot-It! Management Software über ein erweitertes Drive-Skript für den Antrieb, das eine PID-Regelung enthält. So können individuelle Anpassungen des Setups der verwendeten Motoren durchgeführt werden.

01 Check Drive Speed-Limits (get-SpeedLimits)
Mit Hilfe dieser Funktion der Software können die Leistungsparameter der angeschlossenen Motoren bestimmt werden. Der Drive Speed Limit Test ist Bestandteil des PiControl.r Modul und ermittelt die schnellste (langsamste) Geschwindigkeit bei der sich beide Antriebsmotoren (noch) zuverlässig drehen. Der Drive Speed Limit Test sollte unter realen Bedingungen auf dem Rasen durchgeführt werden. Ihr PiMowBot führt während des Tests eine Rotationsbewegung um die eigene Achse durch und benötigt daher nur eine minimale Rasenfläche von ca. 1m².

Ein Drive Speed Limit Test wird manuell über das Terminal/Shell ausgeführt. Mit Hilfe von

cd /home/pi/pimowbot

bin/r3 PiControl.r

gelangt man in den Dialog-Modus des PiControl.r Moduls. Dort wird die zweite Frage zum "Check Drive Speed-Limits" mit Ja beantwortet und der Test wird entsprechend ausgeführt. Der PiMowBot beginnt sich zu drehen.
Sowohl CCW- (CounterClockWise=GegenUhrzeigersinn) als auch CW-Drehungen werden durchgeführt, um auch Unterschiede bei der Drehrichtung der Motoren ermitteln zu können. Zum Ende des Tests sieht man die Werte zur minimalen Ansteuerung in %-PWM (solid Speed Limit) und die zwei Reisegeschwindigkeiten (Slow/Normal) des PiMowBot in RPM. Diese Parameter werden in der zentralen Optionsdatei PiMowBotIt.options des PiMowBots bei der DRIVE-Konfiguration gespeichert. Die Einträge zu rpm_speeds und min_speed sollten auf Plausibilität geprüft werden. Die normale Reisegeschwindigkeit liegt in etwa bei 22RPM und resultiert beim Model D zu einer Fortbewegungsgeschwindigkeit des PiMowBots von ungefähr 0.2m/s.

02 Optimize Drive PID-Control (set-PID)
Der Drive PID-Control Funktionstest wird ebenfalls über den Dialog-Modus des PiControl.r Moduls ausgeführt und dient der Optimierung des Regelverhalten der PID-Regler für beide Antriebsmotoren. Ein Drive PID-Control Test sollte auf einem festen und ebenen Untergrund durchgeführt werden.

Falls die dritte Frage im Dialog-Modus von PiControl.r mit Ja beantwortet wird, dann erfolgt ein Drive PID-Control Test mit den Default [<Proportional> <Integral> <Differential>]-Parametern der PID-Regler aus der zentralen Optionsdatei des PiMowBots. Der PiMowBot versetzt sich dabei für etwas mehr als 10 Sekunden in Rotation und regelt sich erst auf die normale Reisegeschwindigkeit und dann auf die langsamere. Zum Ende des Tests kopiert man die dargestellte URL in den Web-Browser, um den Kennlinien-Plot des Drive PID-Control Funktionstests begutachten zu können.

Abbildung 3 

Kennlinien Plot
 
RPM-Kennlinie

Die hellblaue Fläche im Plot verdeutlicht die Soll-RPM während des Tests. Die aktuellen RPM-Kennlinien der Antriebsmotoren sind farblich (links= grünlich, rechts= rötlich) dargestellt. Idealerweise wiederholt man den Drive PID-Control Test mehrmals mit leicht unterschiedlichen Parametern für PID bis man die "schönsten" RPM-Kennlinien erhält.

Die optimalen PID-Parameter zeichnen sich dadurch aus, dass die RPM-Kennlinie dem aperiodischen Grenzfall ähnelt, also keine große Überschwinger zeigt und sich dabei schnell der Soll-RPM angleicht. Hat man das Optimum der Parameter gefunden, dann kann man die Werte über den Dialog automatisch in der zentralen Optionsdatei des PiMowBots abspeichern.

Die Blackbox des PiMowBot richtig nutzen

Seit Frühjahr 2023 sind bei allen Releases der PiMowBot-It! Management Software die Funktionen der Blackbox des PiMowBots vollständig implementiert. Bei Bedarf können so mit Hilfe der Blackbox (Fahrtenschreiber des PiMowBots) einzelne RC-Fahrten mit der PiMowBot-RC/RCJoy aufgezeichnet und im Nachhinein auch wieder erneut abgefahren werden. Diese Fahrten werden in sogenannten Trip-Dateien gespeichert und können über das Replay Modul wieder abgefahren werden.

Ein Trip ist eine kurze Fahrt oder Bewegungsabfolge des PiMowBots. Es wird zwischen zeitbasierten und ticbasierten Trips unterschieden. Für ticbasierte Trips müssen die Räder mit Impulsgebern (Magnete) und Hall-Sensoren ausgestattet sein, um die Umdrehungen der Antriebsräder exakt über die Tics/Impulse erfassen zu können. Zum Abspielen rein zeitbasierter Trips, wie sie bei der Aufzeichnung von RC-Fahrten per Blackbox in einer Trip-Datei gespeichert werden, ist eine Impulserfassung der Antriebsräder nicht erforderlich.

01 Vordefinierte Trips
Neben der Wiedergabe von aufgezeichneten RC-Fahrten des PiMowBots können auch vordefinierte Trips (kurze Bewegungssequenzen des PiMowBots) über das Replay Modul wiedergegeben bzw. abgespielt werden.

Folgende vordefinierte Trips sind in der Optionsdatei PiMowBotIt.trips vorhanden:

[;     #################################################
;      ### Diese Datei enthält vordefinierte Trips.  ###
;      ###     ( Bewegungsabläufe zum PiMowBot )     ###
;      ### ! Die Reihenfolge der Trips ist wichtig ! ###
;      #################################################
;      ###  1. Rotation auf der Stelle CW            ###
;      ###  2. Spurwechsel CW (rechts)               ###
;      ###  3. Abbiegen CW (rechts)                  ###
;      ###  4. Drehen 90 Grad über ein Rad CW        ###
;      ###  5. Kreisbogen 90 Grad CW                 ###
;      ###  6. Vorwärts 2 Tics, Speed 100            ###
;      ###  7. Special Trip Kreis                    ###
;      ###  8. Special Trip 8                        ###
;      ###  9. Special Trip Euclid                   ###
;      #################################################

;                                                        Zeile
["1x1 M[0 0]" "0:00:00.5 M[100 -100]"]                 ;   1    [13.5x1] = 360 Grad Drehen auf der Stelle (CW)
["2x2 M[0 -80]" "0:00:00.5 M[-80 -80]" "0x16 M[0 0]" ] ;   2
["1x0 M[100 0]" "3x0 M[34 35]"]                        ;   3
;["0:00:00.5 M[80 0]" "0:00:00.9 M[50 51]"]            ;   3    Alternative zeitgesteuert
["1x1 M[0 0]" "0:00:00.5 M[100 -100]"]                 ;   4    Drehen rechts (Drehung 90 Grad CW)
["18x10 M[0 0]" "0:00:00.5 M[80 20]"]                  ;   5    Kreisbogen 90 Grad CW
["1x1 M[0 0]" "0:00:00.5 M[100 100]"]                  ;   6    Vorwärtsfahren und nach 2 Tics Stoppen
["53x83 M[0 0]" "0:00:00.5 M[20 100]"]                 ;   7    Special Trip Kreis
["50x80 M[50 50]" "0:00:00.5 M[20 100]" "3x3 M[100 20]" "81x52 M[0 0]"] ;   8    Special Trip 8
[]                                                     ;   9    Special Trip Euclid TBD
["0:00:00.5 engage"]                                   ;   10   Zündung (Relais-Antrieb)
]
;#EOF

Wichtig: Diese Optionsdatei kann nach Belieben um weitere individuelle Trips ergänzt werden. Es ist dann aber darauf zu achten, dass die bestehende Reihenfolge der vordefinierten Trips nicht verändert wird, da diese Trips zum Teil auch im AutoMow-Betrieb verwendet werden.
Fehlerhafte Trips, die nicht dem vorgesehenen Syntax entsprechen, können zu einem Abbruch der Software führen.

Welche Art der Bewegung die einzelnen vordefinierten Trips beim PiMowBot ausführen, steht als Kommentar in der Optionsdatei. Um Toleranzen der Aktoren (Getriebemotoren, Dual-H Bridge) bei ihrem PiMowBot ausgleichen zu können, sollten Sie die vordefinierten Trips zunächst validieren. Bei möglichen Abweichungen in der Bewegungsausführung der Trips ist eine manuelle Anpassung erforderlich. Dafür ist die Optionsdatei entsprechend zu editieren.

02 Abspielen von Trips
Ein manuelles Abspielen von Trips erfolgt über das Replay Modul der PiMowBot Management Software.

Um zum Beispiel eine zuvor aufgezeichnete Trip-Datei wieder erneut zu fahren, muss folgender Befehl ausgeführt werden:

cd /home/pi/pimowbot && bin/r3 PiReplay.r /path/to/yourTripFilename.trip

Idealer Weise befindet sich der PiMowBot zu Beginn des "Replays" an der gleichen Position, wo die Fahrt bei der Aufzeichnung begann.

Einzelne Trips aus der Optionsdatei PiMowBotIt.trips können wie folgt ausgeführt werden:

bin/r3 PiReplay.r "1"

Dabei entspricht die Zahl der Zeile des Trips innerhalb des Blocks der Optionsdatei.

Eine Tripfolge, also eine Aneinanderreihung einzelner Trips, kann über diesen Befehl abgespielt werden:

bin/r3 PiReplay.r "[5 6 -6 -5]"

Dadurch werden die Trips 5 und 6 der Trip-Optionsdatei automatisch ein mal vor- und rückwärts nacheinander ausgeführt.

03 Die Zündung
Falls das Relais für den Antrieb ihres PiMowBots bisher nicht geschaltet ist, muss zunächst die "Zündung" des PiMowBots aktiviert werden. Dadurch wird der Antrieb mit Strom versorgt und der PiMowBot kann fahren. Bei ihrem Raspberry Pi OS System erfolgt dies mit Hilfe des curl Shell-Befehls und des Abspielens von Trip 10, wie in diesem Beispiel:

pi@PiZero:~/pimowbot $ bin/r3 PiReplay.r "10"
"0:00:00.5 engage"
{curl -Is -o /dev/null 'http://127.0.0.1:8080/cgi-bin/control.html?Token=1234&name=engage&state=ON' &}

Die "Zündung" wird automatisch nach einiger Zeit wieder ausgeschaltet. Der PiMowBot wechselt dann in den Sleep-Mode und die Stromversorgung des Antriebs wird vom Relais unterbrochen.

04 Trip Operatoren
In der Optionsdatei der vordefinierten Trips sind nur die wesentlichen rudimentären Trips enthalten. Weitere, auch komplexere Trips lassen sich durch Variation oder Kombination von vorhandenen Trips erstellen. Dafür stehen vier Trip Operatoren zur Verfügung, die sich miteinander kombinieren lassen. Die Funktion der jeweiligen Operatoren ist hier beispielhaft erläutert.

Negieren eines Trips (mal -1)
Das Negieren eines Trips wird anhand des Trip 6 - Geradeausfahrt vorwärts - der Optionsdatei veranschaulicht. Durch Ausführung des folgenden Befehls:

bin/r3 PiReplay.r --args "-6"

wird der Trip 6 negiert, was zur Folge hat, dass die Werte für den Motorantrieb im Trip ebenfalls negiert werden (mal -1) und so der Antrieb rechts und links mit jeweils -100 angesteuert wird. Der PiMowBot fährt dadurch rückwärts.

Hinweis:: Falls beim Aufruf des Replay-Moduls keinerlei erkennbare Reaktion erfolgt, ist dem ans Modul übergebenen Parameter die Befehlsoption --args voranzustellen.

Multiplizieren eines Trips (n mal)
Möchte man, dass ein Trip n x länger ausgeführt wird oder n x soviele Tics zurückgelegt werden sollen, dann kann man den Trip mit dem Multiplikator-Operator x versehen. Zum Beispiel wird durch den Befehl:

bin/r3 PiReplay.r "10x6"

der Trip 6 insgesamt 10 mal bzw. 10 mal länger ausgeführt und so müssen insgesamt je 10 Tics rechts und links bei der Vorwärtsfahrt erfasst werden, bevor der PiMowBot wieder anhält.

Skalieren eines Trips (Drosseln der Motorgeschwindigkeit)
Beim Skalieren eines Trips werden die jeweiligen Antriebswerte für die Motoren gedrosselt. So bewirkt der Befehl

bin/r3 PiReplay.r "0.5x6"

das die Antriebswerte mit dem Faktor 0.5, also um 50% gedrosselt werden. Der PiMowBot bewegt sich dadurch mit reduzierter Geschwindigkeit vorwärts. Der Skalierungsfaktor wird immer aus dem Nachkommaanteil vor dem x Operator bestimmt. Ein Wert von 0.5x ist in der Ausführung des Trips identisch zu 1.5x, d.h. der Trip wird 1 mal mit 50% reduzierten Antriebswerten für beide Antriebsmotoren ausgeführt. Demnach führt folgendes Beispiel

bin/r3 PiReplay.r "10.5x6"

zu einer langsameren Geradeausfahrt über 10 Tics.

Spiegeln eines Trips (vertauscht Antriebswerte R<->L)
Das Spiegeln eines Trips ist dann sinnvoll, wenn der PiMowBot eine spiegelbildliche Fahrbewegung absolvieren soll. So kann eine Drehung im Uhrzeigersinn (CW) in eine Gegenuhrzeigersinndrehung (CCW) verwandelt werden. Bei diesem Beispiel für den Trip 1 der Optionsdatei etwa

bin/r3 PiReplay.r --args "-13.6x1"

vollführt der PiMowBot ungefähr eine Rotation um 360Grad im Gegenuhrzeigersinn (CCW). Das Spiegeln eines Trips wird durch das vorangestellte Minuszeichen aktiviert. Dadurch werden beim Trip jeweils die Motorwerte für den rechten und linken Antrieb vertauscht.

Nachdem Sie nun alle Details der Blackbox sowie der verschiedenen Möglichkeiten zum Abspielen von Trips erfahren haben, lassen Sie ihrer Kreativität freien Lauf und entwerfen ihre eigenen spektakulären Trips. Gerne können Sie diese der PiMowBot-Community über Social-Media oder im Forum präsentieren.


Ihr PiMowBot ist nun mit den erweiterten Features betriebsbereit. Bitte mähen Sie zunächst wieder im manuellen RC-Betriebsmodus ihren Rasen, um ihre Konfiguration und die Funktionweise der erweiterten Features des PiMowBots zu überprüfen.

Falls der PiMowBot wider Erwarten nicht richtig funktionieren sollte, überprüfen Sie die einzelnen Schritte des ersten und zweiten Teils des Workshops.

Bitte werfen Sie auch einen Blick in die FAQ. Dort erhalten Sie Antworten auf die häufigsten Fragen zum PiMowBot.


  -   Copyright 2014-2024, TGD-Consulting   -   FAQ   -   PiMowBot powered by Serve-It! TNG   -  

π