Software
Software documentation.
Deployment
Ansible (recommended)
The ansible/ directory in this repository contains a playbook that provisions a clean Raspberry Pi OS image with everything needed to run the Genbu robot software stack.
Prerequisites (on your local machine)
pip install ansible
Steps
-
Flash Raspberry Pi OS Lite onto an SD card and boot the Pi.
-
Edit
ansible/inventory.ymland set the correct IP address for your Raspberry Pi:
all:
hosts:
genbu:
ansible_host: 192.168.1.100 # replace with your Raspberry Pi's IP address
ansible_user: robot
- Run the provisioning playbook from the repository root:
ansible-playbook -i ansible/inventory.yml ansible/provision.yml --ask-become-pass
The playbook will:
- Install Docker Engine
- Download and install the latest
genbu-robotDebian package from GitHub releases
Updating the Debian Package
To update the genbu-robot Debian package to the latest release without re-running the full provisioning playbook:
ansible-playbook -i ansible/inventory.yml ansible/update.yml --ask-become-pass
This will remove the currently installed package and install the latest version from GitHub releases.
Foxglove
Foxglove provides a web-based visualization and debugging interface for ROS systems.
Starting the Foxglove Bridge
The genbu_web package contains a launch file that starts the Foxglove bridge:
ros2 launch genbu_web web.launch.xml
This starts the bridge on port 8765.
Accessing Foxglove
- Open https://app.foxglove.dev in your browser (or use the desktop app).
- Click Open connection.
- Select Rosbridge / Foxglove WebSocket and enter the WebSocket URL:
ws://<robot-ip>:8765
Replace <robot-ip> with the IP address of your robot.
Medkit SOVD Web UI
ros2_medkit exposes a diagnostic REST API following the SOVD (Service-Oriented Vehicle Diagnostics) standard. The medkit web UI is a lightweight browser-based interface for browsing the SOVD entity tree.
Starting the Web UI
The web UI is started automatically as part of the Docker Compose stack:
docker compose -f /etc/genbu-robot/docker-compose.yml up
It runs as the ros2_medkit_web_ui container and is accessible on host port 3000 (mapped from container port 80).
Accessing the Web UI
- Open
http://<robot-ip>:3000in your browser. - In the connection dialog, enter the medkit gateway URL:
http://<robot-ip>:8080
- Click Connect to browse the entity tree.
Replace <robot-ip> with the IP address of your robot.
Local Development
As this is a docker based system updates to the source primarily occurs using docker pull. However there is always the need for local software development. Synchronizing source code between machines can be a pain. So one solution here is to use docker context to build remotely on the raspberry pi while keeping the source workspace local.
docker context create robot --docker "host=ssh://<user>@<ip>"
From genbu_robot package.
docker build -t genbu:dev -f .\docker\Dockerfile .
On the Raspberry Pi, update /etc/default/genbu-robot to point to the custom image:
nano /etc/default/genbu-robot
GENBU_IMAGE=genbu:dev
To bring the stack up or down manually using Docker Compose:
# Bring up
GENBU_IMAGE=genbu:dev docker compose -f /etc/genbu-robot/docker-compose.yml up
# Tear down
docker compose -f /etc/genbu-robot/docker-compose.yml down