This is the primary ROS 2 (Humble) workspace governing the low-level nodes for the SBC (Single Board Computer) deployed on the robot (e.g., Radxa Zero).
It encapsulates robust sensor interfacing, footprint publication, inverse/forward kinematics (odometry), motor driving, and advanced reinforcement-learning driven stabilization policies.
Included submodules orchestrate various components of the robot:
ddsm115_driver: Interfaces with the DDSM115 direct-drive motors.imu_driver: Connects and publishes raw IMU readings.odometry_node: Fuses sensor logic into robust kinematics data.robot_tf_publisher: Coordinates standard static/dynamictf2transforms and URDF definitions.robot_launch: The central launch nexus encompassing logic to boot single or composed modular sets of nodes.stabilization_controller: Real-time balancing proxy utilizing ONNX-runtime evaluated AI models for stabilization.ydlidar_ros2_driver: Customized code tailored for the TMini Laser Scanner (replaces the standard YDLidar node).
You can natively compile the system on a matching aarch64 / x86_64 machine or utilize the supplied Docker configuration.
We provide a simple Dockerization technique to ensure compiling code always perfectly mirrors the robot's ecosystem environment.
- Ensure that all modules are downloaded and up to date
git submodule update --init --recursive
- Spin up the Docker Container:
We recommend using
docker composeto effortlessly mount this workspace and boot into it:docker compose run --rm robot-dev # Alternatively via run: docker run --rm -it -v $(pwd):/robot-ws -w /robot-ws ros:humble-ros-base bash - Compile the Workspace:
Inside the Docker container terminal (which automatically sources the base ROS distribution), simply invoke
colcon:colcon build --symlink-install
Always source your newly compiled workspace configurations before attempting a launch:
source install/setup.bashTo initialize the primary process grouping, utilize the core components residing in robot_launch:
ros2 launch robot_launch robot.launch.pyYou can easily pass CLI arguments to tailor behavior:
enable_motors(Default:true) — Boots up motor communications via DDSM115 Node and associated Odometry Node.enable_rl_balancer(Default:false) — Unlocks the AI balancing mechanics utilizing the ONNX runtime module.
Example:
ros2 launch robot_launch robot.launch.py enable_rl_balancer:=trueNow ou can visualize ROS2 data using the Foxglove UI. You need to log in with your Google account at the following link:
https://foxglove.devafter that select --> ROSS2, and paste the web socket adress from running foxglove_bridge instance that is lives inside the ross2 as package.
By default it's:
ws://127.0.0.1:8765when you connected succsesefully, import the foxglove panel file which is will be provided soon