Robonix deployment for the SysWonder Wheeltec R550 mini_tank: Jetson Orin,
LSLIDAR N10P, Orbbec Astra S, RTAB-Map, Scene, Nav2, and VLM pilot.
The deployment uses native ROS 2 packages on Jetson. Each package entry selects
its own package_manifest*.yaml, so architecture and native/container choices are
package properties rather than global environment variables.
Hardware
Component
Model
Deployment configuration
Mobile base
Wheeltec R550 mini_tank
Differential-drive tracked chassis; base_link footprint 0.55 m × 0.40 m; built-in 6-axis IMU
Compute
NVIDIA Jetson Orin
aarch64 Jetson-native packages, ROS 2 Humble, and rmw_fastrtps_cpp
2D lidar
LSLIDAR N10P
360° 2D laser scanner; publishes /scan with frame_id=laser
RGB-D camera
Orbbec Astra S
640×480 at 30 FPS for RGB and depth; USB 3.0; provides snapshot MCP tools for VLM perception
The exact provider IDs, device addresses, sensor profiles, and runtime options
are defined in robonix_manifest.yaml. The robot body,
component hierarchy, footprint, and provider-to-component mapping are defined
in soma.yaml.
Robot-specific algorithm configuration is also deployment-owned:
urdf/mini_tank_robot.urdf is the kinematic
model consumed by robot_description. The manifest references this
deployment asset through absolute path so a clone does not depend on a
cache path or another checkout.
The manifest references these files with paths relative to this repository.
The Mapping and Navigation provider repositories contain templates only; do
not move R550 dimensions, sensor limits, or controller policy upstream.
Package target selection and algorithm configuration are separate. A package’s
manifest: chooses a build/start implementation such as Jetson native or a
container. Robot-specific runtime values remain in this repository’s parameter
files (or documented config overrides) and do not create a new upstream profile.
Scene is pinned to the front Astra S provider astra_s_camera. That provider
supplies RGB, depth, and camera intrinsics for visual scene queries. Scene
obtains the robot’s globally corrected pose from the Mapping
robonix/service/map/pose contract and combines it with the complete URDF
camera transform published by robot_description.
Prepare
# 1. Install Robonix toolchain
cd ~/robonix
git switch dev
git pull --ff-only origin dev
make install
# 2. Install ROS 2 system dependencies
sudo apt install ros-humble-rtabmap-ros \
ros-humble-navigation2 ros-humble-nav2-bringup \
ros-humble-imu-filter-madgwick
# 3. Source the Wheeltec ROS 2 workspace
source ~/wheeltec_ros2/install/setup.bash
Set VLM credentials in your shell before boot (or edit boot.sh):
The checked-in full manifest includes the chassis, lidar, camera, mapping, and
Nav2; starting it exposes physical motion capabilities. Keep the hardware
emergency stop available and clear the workspace before full bring-up.
After the chassis is powered on:
Verify odometry is publishing: ros2 topic hz /odom_combined
Send zero Twist and confirm the watchdog holds the base stopped.
Use a low-speed, short-duration command in a clear area.
Verify Mapping pose and Nav2 costmaps before sending a nearby goal.
Robot description
soma.yaml and urdf/mini_tank_robot.urdf are served by Soma. The description
contains the body footprint and sensor tree used by Pilot and other consumers.
Mount transforms remain calibration-sensitive; update the body URDF after
physical measurement rather than compensating in Scene or Mapping.
The component tree in soma.yaml nests sensors under their physical mount:
Boot order follows this dependency chain: system caps first (atlas → soma →
executor → pilot → liaison → scene), then primitives in declaration order
(robot_description → chassis → lidar → camera), then services (mapping →
nav2). Services use the Atlas defer-queue: nav2 waits for mapping, which waits
for lidar + chassis.
Wheeltec R550 mini_tank
Robonix deployment for the SysWonder Wheeltec R550 mini_tank: Jetson Orin, LSLIDAR N10P, Orbbec Astra S, RTAB-Map, Scene, Nav2, and VLM pilot.
The deployment uses native ROS 2 packages on Jetson. Each package entry selects its own
package_manifest*.yaml, so architecture and native/container choices are package properties rather than global environment variables.Hardware
base_linkfootprint 0.55 m × 0.40 m; built-in 6-axis IMUrmw_fastrtps_cpp/scanwithframe_id=laserThe exact provider IDs, device addresses, sensor profiles, and runtime options are defined in
robonix_manifest.yaml. The robot body, component hierarchy, footprint, and provider-to-component mapping are defined insoma.yaml.Robot-specific algorithm configuration is also deployment-owned:
config/rtabmap_params.yamlcontains the full R550 RTAB-Map parameter set.config/param_mini_tank.yamlcontains the complete R550 Nav2 configuration.config/navigate.xmlcontains the R550 navigation BehaviorTree.urdf/mini_tank_robot.urdfis the kinematic model consumed byrobot_description. The manifest references this deployment asset through absolute path so a clone does not depend on a cache path or another checkout.The manifest references these files with paths relative to this repository. The Mapping and Navigation provider repositories contain templates only; do not move R550 dimensions, sensor limits, or controller policy upstream.
Package target selection and algorithm configuration are separate. A package’s
manifest:chooses a build/start implementation such as Jetson native or a container. Robot-specific runtime values remain in this repository’s parameter files (or documented config overrides) and do not create a new upstream profile.Scene is pinned to the front Astra S provider
astra_s_camera. That provider supplies RGB, depth, and camera intrinsics for visual scene queries. Scene obtains the robot’s globally corrected pose from the Mappingrobonix/service/map/posecontract and combines it with the complete URDF camera transform published byrobot_description.Prepare
Set VLM credentials in your shell before boot (or edit
boot.sh):Build and boot
The wrapper sources ROS Humble, runs pre-flight checks (
rbnxCLI, ROS 2,turn_on_wheeltec_robot,rtabmap_slam,imu_filter_madgwick), and then execsrbnx boot -f robonix_manifest.yaml.--no-buildskips the build step for repeated boots.--shutdowntears down a running stack.Operator pages:
http://<robot-host>:8091/<robot-host>:50081RViz
The deploy keeps a complete RViz configuration with laser scans, map, costmap, TF tree, and robot model displays.
Safety and bring-up order
The checked-in full manifest includes the chassis, lidar, camera, mapping, and Nav2; starting it exposes physical motion capabilities. Keep the hardware emergency stop available and clear the workspace before full bring-up.
After the chassis is powered on:
ros2 topic hz /odom_combinedRobot description
soma.yamlandurdf/mini_tank_robot.urdfare served by Soma. The description contains the body footprint and sensor tree used by Pilot and other consumers. Mount transforms remain calibration-sensitive; update the body URDF after physical measurement rather than compensating in Scene or Mapping.The component tree in
soma.yamlnests sensors under their physical mount:Capability contracts
robonix/primitive/robot_description/driverrobonix/primitive/chassis/driverrobonix/primitive/chassis/odom/odom_combinedrobonix/primitive/chassis/moverobonix/primitive/chassis/twist_in/cmd_velrobonix/primitive/imu/imu/imu_datarobonix/primitive/lidar/lidar/scanrobonix/primitive/camera/rgb/camera/color/image_rawrobonix/primitive/camera/depth/camera/depth/image_rawrobonix/primitive/camera/intrinsics/camera/color/camera_inforobonix/primitive/camera/snapshotrobonix/primitive/camera/depth_snapshotrobonix/service/map/occupancy_grid/maprobonix/service/map/pointcloud/rtabmap/cloud_maprobonix/service/map/pose/robonix/map/poserobonix/service/map/odom/rtabmap/odomrobonix/service/map/save_maprobonix/service/map/load_maprobonix/service/map/pose_estimaterobonix/service/navigation/navigaterobonix/service/navigation/navigate/statusrobonix/service/navigation/navigate/cancelProvider dependency graph
Boot order follows this dependency chain: system caps first (atlas → soma → executor → pilot → liaison → scene), then primitives in declaration order (robot_description → chassis → lidar → camera), then services (mapping → nav2). Services use the Atlas defer-queue: nav2 waits for mapping, which waits for lidar + chassis.
Verification