Regenald

Published:

Regenald

Regenald is a differential drive robot I built for Louisa County Public Schools using ROS2 and an Nvidia Jetson Xavier NX with the ability to perform Simultaneous Localization and Mapping (SLAM). The robot is based on James Bruton’s Really Useful Robot with some modifications to take lower cost parts that are also available in the United States. Most of the body’s contruction is 3D printed with a few aluminum extrusions and 8mm steel rods.

Regenald fully built
Regenald fully built

Build

The bot is built around an Nvidia Jetson Xavier NX running ROS2 Humble through podman. The motor controller used is an ODrive V3.6 connected to the Nvidia Jetson Xavier NX via USB and controlled using a python ROS2 node program. A Python node was used instead of a C++ control module due to ODrive not having an official C++ control library for their boards. The LiDAR used is a Slamtec RPLIDAR A2M8 which is connected via USB to the Jetson. There is dedicated Teensy 4.1 to control the DC 12v head pully motor over USB to control the optocoupled H-bridge motor controller since the Nvidia Jetson could not output enough voltage over GPIO to reliably control the H-bridge controller. The microcontroller communicates using a custom serial protocol to encode and send the PWM signals over USB and a Python ROS2 node running on the Jetson. The robot has two power rails on a common ground, a 12v one to power the Jetson and a 24v one to drive the ODrive and brushless motors.

Backside of Regenald with a view of the Jetson and ODrive
Backside of Regenald with a view of the Jetson and ODrive
The H-bridge motor controller and Teensy 4.1 controlling it
The H-bridge motor controller and Teensy 4.1 controlling it
Some internal wiring of Regenald
Some internal wiring of Regenald

Simultaneous Localization and Mapping

SLAM is achieved using ROS2’s SLAM Toolbox launched in online async mode. Navigation is handled via Navigation2 and both are displayed and controlled using RViz.

Regenald moving using SLAM and Nav2

Controller

If not running in SLAM mode, the controller can be used. The controller is based on James Bruton’s ROSremote. It’s using a raspberry Pi 4 with a Teensy 4.1 running Micro-ROS to read in the values of each joystick and button to publish them to the /joy topic. The /joy topic is subscribed to by the various adapter ROS2 nodes that either convert the /joy messages into a /twist message or map them into movement of the controller’s mouse and click actions in it’s UI.

ROS2 controller
ROS2 controller
Backside of controller showing battery
Backside of controller showing battery
Moving an early build of Regenald using controller and then promptly getting stuck on a crack in the floor