7.8 KiB
Grasmaaier Automatisering (OpenMower / Mowgli)
Documentatie van de autonome robotmaaier (mowerv2) binnen het homelab netwerk en de integratie met het centrale Kubernetes cluster en Home Assistant.
🧭 Inhoudsopgave
- Overzicht
- Hardware & Componenten
- Netwerk & Verbinding
- Software Architectuur (Docker & ROS)
- Cluster & Smart Home Integratie
- Onderhoud & Troubleshooting
📌 Overzicht
| Eigenschap | Waarde |
|---|---|
| Hostname | mowerv2 / mowerv2.lan |
| IP-adres | 10.2.1.10 (statisch IPv4 /16, gateway: 10.2.0.1) |
| Basis Robot | Yardforce 500 |
| Controller Mainboard | Mowgli (OpenMower drop-in STM32 PCB) |
| Boordcomputer | Raspberry Pi 4 Model B Rev 1.5 (4GB RAM) |
| Besturingssysteem | Ubuntu 24.04 LTS (Noble Numbat) aarch64 (Kernel 6.8.0-raspi) |
| MAC-adressen | Wi-Fi (wlan0): 2C:CF:67:64:8E:9FEthernet ( eth0): 2C:CF:67:64:8E:9A |
| SSID | brupjelan (vastgezet op 2.4 GHz) |
| Web UI & App | http://10.2.1.10:3000 (OpenMower App) / Poort 4005 (Nginx) |
🛠️ Hardware & Componenten
flowchart TD
subgraph MowerChassis ["Yardforce 500 Chassis"]
Motors["Wiel- & Maaimotoren (BLDC + ESCs)"]
Sensors["Bumpers, Lift- & Noodstopsensoren"]
Mowgli["Mowgli Mainboard (STM32 MCU)"]
STLink["STM32 STLink Programmer (SWD)"]
GPS["RTK GPS Ontvanger (CH341 UART)"]
Pi["Raspberry Pi 4B (4GB)"]
end
Motors <--> Mowgli
Sensors --> Mowgli
STLink -.->|SWD Flashen| Mowgli
STLink <-->|USB /dev/bus/usb/001/00x| Pi
Mowgli <-->|USB CDC ACM /dev/mowgli| Pi
GPS <-->|USB Serial /dev/serial/by-id/usb-1a86_USB_Serial...| Pi
Pi <-->|Wi-Fi 2.4 GHz| LAN["Thuisnetwerk (10.2.0.0/16)"]
- Yardforce 500 Chassis:
- Wielmotoren en maaimotoren aangedreven via borstelloze ESCs.
- Veiligheidssensoren (kantelsensor, optilsensor, bumper microswitches).
- Mowgli Mainboard:
- Open-source PCB ontworpen voor het OpenMower project ter vervanging van het originele Yardforce moederbord.
- Bevat een STM32-microcontroller die real-time motorbesturing en sensor-uitlezing uitvoert.
- Communiceert met de Raspberry Pi via USB CDC ACM (
/dev/mowgli->/dev/ttyACM0).
- STM32 STLink Programmer:
- Vaste onboard STLink-debugger aangesloten via USB.
- Maakt het mogelijk om de STM32 firmware direct vanaf de Pi te flashen met OpenOCD.
- RTK GPS Ontvanger:
- Biedt centimeter-nauwkeurige RTK-positionering voor de maaier.
- Aangesloten via CH341 USB-naar-serieel adapter (
ttyUSB0op baudrate 460800).
📶 Netwerk & Verbinding
1. Statische Netplan Configuratie
De netwerkconfiguratie bevindt zich in /etc/netplan/50-cloud-init.yaml:
network:
version: 2
wifis:
wlan0:
optional: true
dhcp4: false
dhcp6: false
link-local: [ ipv4 ]
addresses:
- 10.2.1.10/16
routes:
- to: default
via: 10.2.0.1
nameservers:
addresses:
- 192.168.2.11
- 1.1.1.1
- 8.8.8.8
access-points:
"brupjelan":
password: "..."
band: "2.4GHz"
2. 2.4 GHz Band Pinnen
Om verbindingsdrops door band-steering (switchen tussen 2.4 GHz en 5 GHz) tijdens het rijden in de tuin te voorkomen, is band: "2.4GHz" ingesteld. Hierdoor genereert Netplan een strikte frequentielijst in wpa_supplicant (freq_list 2412 t/m 2484 MHz).
3. Wi-Fi Power Management Permanente Fix
Standaard schakelt de brcmfmac Wi-Fi-driver van de Raspberry Pi energiebeheer in, wat leidt tot gemiste frames en deauthentications. Dit is permanent uitgeschakeld via de systemd-service:
- Unit:
/etc/systemd/system/wifi-powersave-off.service - Commando:
/sbin/iwconfig wlan0 power off
🐳 Software Architectuur (Docker & ROS)
De volledige OpenMower runtime draait in Docker Compose onder /root/mowgli-docker/docker-compose.yaml (repository github.com/brupje/mowgli-docker).
flowchart LR
subgraph DockerMower ["mowerv2 Docker Stack"]
RosCore["mowgli-roscore (ROS Noetic)"]
RosSerial["mowgli-rosserial (/dev/mowgli)"]
OpenMower["mowgli-openmower (open_mower.launch)"]
GUI["openmower-gui (v2)"]
App["app (Web UI :3000)"]
MQTT["mowgli-mqtt (Mosquitto :1883)"]
end
RosSerial <-->|Topic I/O| RosCore
OpenMower <-->|Navigation & Planner| RosCore
GUI <-->|Status & Map DB| RosCore
App <-->|REST / WS| GUI
OpenMower -->|Telemetry| MQTT
MQTT <-->|Bridge| K8sMosquitto["Centrale Mosquitto (K8s: 10.2.0.4)"]
Belangrijkste Containers
| Container | Image | Poorten / Netwerk | Functie |
|---|---|---|---|
mowgli-roscore |
ghcr.io/brupje/mowgli-docker:upstream |
host (:11311) |
Centrale ROS Noetic Master broker |
mowgli-rosserial |
ghcr.io/brupje/mowgli-docker:upstream |
host |
rosserial_server gekoppeld aan /dev/mowgli (115200 baud) |
mowgli-openmower |
ghcr.io/brupje/mowgli-docker:upstream |
host |
Hoofdproces voor navigatie, padplanning en RTK GPS integratie |
openmower-gui |
ghcr.io/brupje/openmower-gui:v2 |
host |
Backend service voor kaart- en taakbeheer |
app |
ghcr.io/xtech/openmower-app:edge |
3000:3000 |
Moderne webinterface voor status en live kaart |
mowgli-web |
nginx |
4005:80 |
Webserver voor statische data en web assets |
mowgli-mqtt |
eclipse-mosquitto:latest |
1883:1883, 9001:9001 |
Lokale MQTT broker voor status-uitwisseling |
watchtower |
containrrr/watchtower |
Geïsoleerd | Automatische updates voor OpenMower GUI images |
🔗 Cluster & Smart Home Integratie
1. DNS (Dnsmasq)
In cluster-infra/dnsmasq/dns-records op vmserver is de maaier geregistreerd:
10.2.1.10 mowerv2.lan mowerv2
fd00:2::1:10 mowerv2.lan mowerv2
2. MQTT Bridge (K8s Mosquitto -> Grasmaaier)
In de centrale Mosquitto broker in het Kubernetes cluster (cluster-infra/mosquitto/k8s/configmap.yaml) is een actieve bridge geconfigureerd:
connection mower
address grasmaaier.lan:1883
cleansession true
local_cleansession true
notifications true
try_private true
topic # both 0 grasmaaier/ ""
Alle telemetrie en commando's van de maaier worden gesynchroniseerd onder het MQTT-prefix grasmaaier/# (de maaier publiceert root-topics zoals robot_state/json, welke lokaal gemapt worden naar grasmaaier/robot_state/json).
3. Home Assistant
Binnen de smart-home submodule koppelt Home Assistant via de centrale MQTT-broker aan de grasmaaier/# topics om de actuele status (batterij, maaimodus, foutmeldingen, laadstatus) in te zien en automatiseringen te triggeren.
🔧 Onderhoud & Troubleshooting
1. Inloggen via SSH
Vanaf het werkstation of de vmserver:
ssh bart@10.2.1.10
# of
ssh bart@mowerv2.lan
2. STM32 Firmware Flashen
Wanneer er een nieuwe firmware gebouwd is (firmware.elf), kan deze direct geflashed worden naar het Mowgli board via de onboard STLink:
cd /home/bart
./upload.sh
Dit script stopt tijdelijk de communicatie, gebruikt OpenOCD om de STM32 te wissen en te herprogrammeren, en reset de USB-bus (1-1).
3. Docker Containers Beheren
cd /root/mowgli-docker
# Status controleren
sudo docker compose ps
# Herstarten van de stack
sudo docker compose restart
# Live logs van de maaier en planner bekijken
sudo docker logs -f mowgli-openmower
sudo docker logs -f mowgli-rosserial
4. Wi-Fi & Verbinding Controleren
# Linkkwaliteit en frequentie controleren (moet 2.4xx GHz zijn en Power Management: off)
iwconfig wlan0
# Controleren of powersave-off service actief is
sudo systemctl status wifi-powersave-off.service