Project · Nov 2024
RoboOmni
RoboOmni is a ROS 2 (Jazzy) mobile robotics platform built on a mecanum-wheeled chassis for collecting synchronized multimodal datasets (RGB-D, LiDAR, IMU, wheel odometry). The system is engineered end-to-end: a custom ros2_control hardware interface talks to an ESP32 via micro-ROS, custom mecanum Jacobian controller plugins handle the inverse kinematics, and a single launch file brings up sensors, control, and visualization.
Key features include mecanum omnidirectional drive with 4 independently driven wheels for holonomic motion, a custom control stack with ros2_control hardware interface and Jacobian/inverse-Jacobian controller plugins, embedded integration via ESP32 firmware bridged over micro-ROS (serial agent), and perception sensors including Kinect RGB-D camera, RPLIDAR, and MPU9250 IMU. The design is dataset-oriented with synchronized wheel odometry, IMU, RGB-D, and 2D LiDAR streams for SLAM and perception research.
The workspace uses a modular repository ecosystem with external repositories managed via vcs:
mecanum_jacobian_controller:ros2_controlcontroller plugins for mecanum Jacobian + inverse-Jacobian kinematicsmecanum_hardware_interface: Customros2_controlsystem interface with micro-ROS and UDP hardware implementationsmecanum_microros_firmware: ESP32 firmware for motor control, encoders, MPU9250, FreeRTOS tasks over micro-ROSmecanum_udp_firmware: Alternate ESP32 firmware and UDP bridge variant
The architecture flows from cmd_vel → Jacobian controller → per-wheel voltage → hardware interface → firmware, while odometry and IMU data flow bottom-up back to controllers. A single-command bringup (ros2 launch mecanum_bringup system_bringup.launch.py) with conditional launch arguments enables/disables each subsystem (Kinect, LiDAR, micro-ROS, ros2_control, RViz visualization).