RPi5 + ROS 2 + RRC Lite

Raspberry Pi 5 · Ubuntu Server 24.04 LTS · ROS 2 Jazzy · Hiwonder RRC Lite controller

View on GitHub

RPi5 + ROS 2 + RRC Lite

Raspberry Pi 5 · Ubuntu Server 24.04 LTS · ROS 2 Jazzy · Hiwonder RRC Lite

> Computer:    Raspberry Pi 5 (4, 8 or 16 GB), headless
> OS:          Ubuntu Server 24.04 LTS (64-bit, arm64)
> ROS:         ROS 2 Jazzy Jalisco, ros-base
> Controller:  Hiwonder RRC Lite - STM32F407VET6, USB-C serial link to the Pi at 1 Mbaud

Labs

Lab Topic
Lab 01 — Raspberry Pi 5: Ubuntu Server & ROS 2 Flash Ubuntu Server 24.04, join the Wi-Fi router, connect over SSH, static Wi-Fi IP, update, swap, then install ros-jazzy-ros-base and the build tools and build a first workspace
Lab 02 — RRC Lite Firmware The controller’s serial protocol, find out which firmware it runs, back it up, and flash new firmware from Linux with stm32flash over the same USB-C cable; then run Hiwonder’s ros_robot_controller ROS 2 node
Lab 03 — Encoder Motors & Speed Control Pins, timers and encoder counts behind the speed control (3960 counts per turn for a JGB37-520), build the firmware on the Pi with GCC, add encoder read-back and a command watchdog, test both motors, and run this lab’s own speed controller

The hardware

Part What it does
Raspberry Pi 5 runs Ubuntu, ROS 2 and your robot code
Hiwonder RRC Lite an STM32F407VET6 microcontroller board: 4 encoder motors, PWM servos, serial bus servos, IMU (QMI8658), buzzer, LED, keys, battery voltage, SBUS and USB gamepad input
USB-A to USB-C data cable from the RRC Lite’s UART1 Type-C port to a Pi 5 USB port. A CH9102F chip on the board turns it into a serial port: /dev/ttyACM0 on the Pi
USB-C to USB-C power cable from the RRC Lite’s 5 V / 5 A PD output to the Pi 5’s power input: the battery powers the Pi

That one cable does two jobs:

Job Who listens on the STM32 side Speed
Normal running: ROS 2 ↔ controller Hiwonder’s firmware on USART1 1 000 000 baud, 0xAA 0x55 packets (Lab 02, Part 2)
Flashing new firmware the STM32’s built-in ROM bootloader, on the same USART1 pins (PA9/PA10) 115 200 baud, ST’s AN3155 protocol (Lab 02, Part 5)

The board’s auto-download circuit lets the Pi switch between the two by toggling the CH9102F’s DTR and RTS lines (RTS → BOOT0, RTS + DTR → RESET), so you don’t have to press the board’s BOOT and RST buttons. Lab 02 walks through the circuit on the schematic.


Why these versions?

The Raspberry Pi 5 is not supported by Ubuntu 22.04: its chips need a newer kernel than 22.04 ships, and Canonical has no plans to add it. Ubuntu’s first LTS certified for the Pi 5 is 24.04 “Noble”. The ROS 2 release built for 24.04 is Jazzy Jalisco, an LTS release supported until May 2029, with ready-made apt packages for arm64. So you don’t have to compile ROS 2 from source.

Hiwonder’s ROS 2 package (ros_robot_controller) is plain Python plus pyserial. It was written for Humble, but it runs on Jazzy unchanged.