robonix.robot.hantewin.benben
robot
v0.1.0
Robonix deploy manifest for the Hantewin Benben
Hantewin BenBen — Robonix Robot Deployment
Robonix deployment repository for the Hantewin BenBen mobile robot.
This repository provides a Robonix deployment configuration for the BenBen robot, integrating differential-drive chassis control (TBox SDK), Livox MID-360 3D LiDAR, RichBeam LakiBeam1 2D LiDAR, Intel RealSense D435i RGB-D camera, RTAB-Map SLAM mapping/localization, point-to-point navigation, speech interaction, scene understanding, and an AgileX Nero 7-DOF manipulator arm.
Overview
The deployment integrates the BenBen robot with the Robonix runtime and exposes robot hardware and application capabilities through Robonix primitives, services, and skills.
Main capabilities include:
- BenBen chassis motion and posture control via the TBox C++ SDK and remote ros1 node
- Livox MID-360 3D LiDAR (PointCloud2) and its built-in 6-axis IMU
- RichBeam LakiBeam1 2D planar LiDAR (LaserScan)
- Intel RealSense D435i RGB-D camera (RGB + aligned depth)
- RTAB-Map SLAM for 2D occupancy-grid / 3D point-cloud mapping and localization
- Point-to-point navigation on the vendor TBox onboard map
- Speech recognition and wake-word interaction (Tencent ASR/TTS)
- Vision-language-model (VLM) based scene understanding
- AgileX Nero 7-DOF arm with joint/Cartesian control, gripper, and VLM-guided grasp
- Robonix chassis control and navigation skills
Configure
Before booting, complete the following setup:
-
TBox SDK token — the
benben_chassisprimitive authenticates to the vendor TBox controller with a development token issued by the manufacturer. Provide it via the manifestconfig.tokenfield or theBENBEN_TBOX_TOKENenvironment variable (recommended in~/.robonix/secrets.env); the driver will not initialize without it. -
Network connectivity — the chassis sits at
192.168.10.1. Ensure the main control computer, the chassis, and the LiDAR are mutually reachable. The MID-360 LiDAR lives on a separate subnet, configured vialidar_ip/host_ipin robonix_manifest.yaml. -
Chassis-side ROS 1 bridge — compile and run primitives/chassis/chassis_driver/tbox_sdk/vel_cmd_udp_server.cpp on the chassis controller. This ROS 1 node listens for velocity commands on UDP port
11451and forwards them to the chassis/cmd_vel/input/manualtopic, switching/Modebetween manual and autonomous control.
Architecture
Robonix
│
┌───────────────────┼───────────────────┐
│ │ │
Primitives Services Skills
│ │ │
├─ benben_chassis ├─ speech ├─ p2pmov
├─ mid360_lidar │ (Tencent ASR/TTS) ├─ nero_grasp
├─ mid360_imu ├─ mapping ├─ nero_return_home
├─ lakibeam1_lidar │ (RTAB-Map SLAM) └─ nero_wave
├─ realsense_camera └─ scene
├─ robot_description (VLM)
├─ left_arm
├─ audio_driver
└─ audio_client_bridge
│
▼
┌──────────────────────────────────────────────────┐
│ Hantewin BenBen │
│ │
│ Chassis / TBox MID-360 LakiBeam1 D435i │
│ │ │ │ │ │
│ /cmd_vel PointCloud LaserScan RGB-D │
│ /odom /livox/imu │
└──────────────────────────────────────────────────┘
Repository Structure
.
├── robonix_manifest.yaml # main deployment manifest
├── soma.yaml # robot model, footprint, capability exports
├── robot.urdf # base / lidar / IMU link tree
│
├── config/
│ ├── nav2_params.yaml # Nav2 parameters
│ ├── navigate.xml # Nav2 behavior tree
│ ├── old_nav2_params.yaml # legacy Nav2 parameters
│ └── rtabmap_params.yaml # RTAB-Map parameters
│
├── primitives/
│ ├── chassis/ # benben_chassis (TBox SDK)
│ ├── lakiBeam1-lidar/ # LakiBeam1 2D LiDAR bridge
│ ├── nero_arm/ # AgileX Nero arm driver (local copy)
│ ├── primitive-livox-mid360-imu-rbnx/ # MID-360 IMU shim
│ └── primitive-livox-mid360-lidar-rbnx/ # MID-360 LiDAR driver
│
├── services/
│ └── service-map-rbnx/ # RTAB-Map SLAM mapping service
│
├── skills/
│ └── p2pmov/ # point-to-point navigation skill
│
├── scripts/
│ └── monitor_odom_drift.py
│
├── assets/
│ └── robot.jpg
└── rbnx-boot/ # runtime instances, cache, and logs
Robonix Components
Primitives
| Component | Description |
|---|---|
benben_chassis |
Converts velocity commands (/cmd_vel) to TBox SDK calls and bridges the controller's ROS 1 /odom stream into ROS 2 |
mid360_lidar |
Provides Livox MID-360 PointCloud2 on /scanner/cloud |
mid360_imu |
Atlas-registers the MID-360 built-in IMU stream on /livox/imu |
lakibeam1_lidar |
Provides the LakiBeam1 2D LaserScan on /scan via direct TCPROS bridge |
realsense_camera |
Provides RealSense D435i RGB and aligned depth streams |
robot_description |
Publishes /robot_description and the standard TF tree from the Soma-owned URDF |
left_arm |
AgileX Nero 7-DOF arm: joint / Cartesian / gripper control (referenced from the external agilex_nero repo) |
audio_driver |
Provides microphone and speaker interfaces |
audio_client_bridge |
Audio transport bridge for speech I/O |
Services
| Component | Description |
|---|---|
speech |
Speech recognition and wake-word service (Tencent ASR/TTS) |
mapping |
RTAB-Map SLAM: 2D occupancy grid, 3D point cloud, pose, and map save/load (see note below) |
scene |
VLM-based scene understanding, object memory, and scene graph |
Skills
| Component | Description |
|---|---|
p2pmov |
Point-to-point navigation to named points or raw coordinates on the vendor TBox map |
nero_grasp |
VLM-guided object grasp with the Nero arm |
nero_return_home |
Return the arm to its home pose |
nero_wave |
Scripted waving motion |
The
mapping,scene, andnav2service blocks are present in the deployment (environment variables,soma.yamlcapability exports, andconfig/files) but are currently commented out in robonix_manifest.yaml. Startup is driven by that manifest, so only the active blocks above are launched byrbnx boot.
Chassis Integration
The BenBen chassis is connected to Robonix through the benben_chassis primitive, which wraps the TBox C++ SDK (libtbox_sdk_cpp.so).
The control path is:
User / Robonix
│
▼
p2pmov / move / twist_in
│
▼
benben_chassis
│
▼
TBox SDK / /cmd_vel
│
▼
BenBen Robot Controller
The driver exposes three capability contracts:
robonix/primitive/chassis/move— discrete motion (forward_m,rotate_deg, or rawlinear_x/angular_zvelocity bursts)robonix/primitive/chassis/twist_in— continuousgeometry_msgs/Twiststream on/cmd_vel(used by the navigation stack)robonix/primitive/chassis/odom—nav_msgs/Odometryrepublished from the controller's ROS 1/odomstream at 50 Hz
The driver runs natively on the host (no Docker) and initializes the TBox SDK during the Driver(CMD_INIT) lifecycle call.
Navigation
The deployment uses two distinct navigation stacks, which operate in different coordinate frames and must not be mixed:
-
Vendor TBox onboard map — the
p2pmovskill dispatches goals through the TBox SDKtask_distribution(x, y, yaw, map_name, …). The chassis navigates autonomously on its onboard vendor map; obstacle avoidance is handled by vendor firmware, not Robonix Nav2. -
Robonix RTAB-Map SLAM — the
mappingservice builds and localizes against a 2D occupancy grid / 3D point cloud map. Navigation on this frame is provided by the (currently commented-out)nav2service.
config/
├── nav2_params.yaml
├── navigate.xml
└── rtabmap_params.yaml
Do not route a p2pmov point name through scene goal_near / goal_room: those resolve poses on the RTAB-Map frame, which does not match the vendor map. See skills/p2pmov/CAPABILITY.md for the intent-routing rules.
Configuration
The main deployment configuration is robonix_manifest.yaml. The deployment root should be provided through:
export ROBONIX_DEPLOY_DIR=/path/to/robot-hantewin-benben
VLM credentials must be provided through environment variables and must not be committed to the repository:
export VLM_BASE_URL="your-vlm-base-url"
export VLM_API_KEY="your-api-key"
export VLM_MODEL="your-model"
export TENCENT_ASR_APPID="your-tencent-appid"
The manifest references a secrets file for sourcing credentials:
set -a; source ~/.robonix/secrets.env; set +a
Additional platform settings (ROS 2 distro, build target, scene/mapping platform) are configured through the manifest's env: block. This deployment targets the Jetson AGX Thor (jetson_thor) with ROS 2 Jazzy and native (non-Docker) builds (RBNX_BUILD_TARGET: jetson-native).
Hardware
The current deployment is designed for:
- Hantewin BenBen mobile robot (differential-drive base, TBox controller)
- Livox MID-360 3D LiDAR (with built-in IMU)
- RichBeam LakiBeam1 2D LiDAR
- Intel RealSense D435i RGB-D camera
- AgileX Nero 7-DOF arm (with
agx_grippereffector, CANcan_piper) - USB microphone / USB speaker
- Jetson AGX Thor onboard computing platform
Hardware device names, network interfaces, ROS topics, LiDAR IPs, and audio devices may need to be adjusted for the target robot. In particular, the MID-360 LiDAR IP, host IP, and the robot controller's ROS 1 URI are config-driven and robot-specific.
Security
API keys and other credentials must not be committed to this repository.
Use environment variables or local ignored configuration files (e.g. ~/.robonix/secrets.env) for sensitive information.
The mapping Web UI is unauthenticated and binds 0.0.0.0 in this deployment (MAPPING_WEBUI_HOST) — only expose it on a trusted LAN.
Build outputs, logs, caches, and local environment files are excluded through .gitignore.
License
MulanPSL-2.0 (see each package's package_manifest.yaml). Vendored third-party sources retain their own licenses (e.g. livox_ros_driver2 is BSD).
Maintainer
Futaba19-c futaba19c@foxmail.com
Repository: https://github.com/syswonder/robot-hantewin-benben