RS-ModCubes is a comprehensive simulation, control, and mission planning framework for self-reconfigurable, scalable modular underwater robots. This system enables the simulation and control of multiple cubic robotic modules that can autonomously reconfigure to form different morphologies for various underwater operations.
- Modular Self-Reconfiguration: Dynamic morphology adaptation during missions
- Underwater Physics Simulation: Comprehensive hydrodynamic modeling with Gazebo
- Mission Planning: Autonomous navigation and task execution
- Teleoperation Support: Real-time human-robot interaction
- Multi-Robot Coordination: Scalable swarm behavior implementation
- Extensible Framework: Modular ROS-based architecture
- Paper: RS-ModCubes: Self-Reconfigurable, Scalable Modular Cubic Robots for Underwater Operations
- Project Website: https://jiaxi-zheng.github.io/ModCube.github.io
- Base Framework: CMU TartanAUV Team (Kingfisher)
The RS-ModCubes framework is built on a modular ROS-based architecture designed for scalability and flexibility:
graph TB
A[Mission Planning Layer] --> B[Control Layer]
B --> C[Simulation Layer]
C --> D[Hardware Interface Layer]
A --> E[modcube_mission]
B --> F[modcube_common]
C --> G[modcube_sim]
D --> H[modcube_vehicle]
E --> I[Path Planning]
E --> J[Task Execution]
F --> K[Controllers]
F --> L[State Estimation]
G --> M[Gazebo Plugins]
G --> N[Physics Models]
H --> O[Sensor Drivers]
H --> P[Actuator Control]
| Package | Description | Key Components |
|---|---|---|
modcube_common |
Core utilities and shared libraries | Controllers, planners, state estimation, dynamics |
modcube_config |
Configuration files and robot descriptions | URDF models, parameter files, launch configurations |
modcube_mission |
Mission execution and teleoperation | Mission planning, teleop interface, system launch files |
modcube_msgs |
Custom ROS message definitions | Inter-module communication protocols |
| Package | Description | Key Components |
|---|---|---|
modcube_sim |
Gazebo simulation interface | Simulation launch files, environment setup |
modcube_sim_gazebo_plugins |
Custom Gazebo plugins | Thruster dynamics, navigation state, sensor models |
modcube_sim_worlds |
Simulation environments | Underwater worlds, obstacle courses, test scenarios |
| Package | Description | Key Components |
|---|---|---|
modcube_vehicle |
Vehicle-specific hardware drivers | IMU, thrusters, sensors, actuator control |
| Package | Description | Key Components |
|---|---|---|
uuv_simulator |
UUV simulation framework | Hydrodynamic models, sensor plugins, control algorithms |
# Required ROS distribution
ROS Melodic or Noetic
# Dependencies
sudo apt-get install ros-$ROS_DISTRO-gazebo-*
sudo apt-get install ros-$ROS_DISTRO-uuv-simulator# Clone the repository
git clone https://github.com/your-username/ModCube.git
cd ModCube
# Build the workspace
catkin build
# Source the workspace
source devel/setup.bash# Start the basic simulation
roslaunch modcube_sim kingfisher_umd_sim.launch
# For multi-robot simulation
roslaunch modcube_sim multi_robot_sim.launch num_robots:=4# Start teleoperation interface
roslaunch modcube_mission teleop_mission.launch
# Start autonomous mission
roslaunch modcube_mission autonomous_mission.launch mission_file:=sample_mission.yaml# Set navigation goal (position + orientation quaternion)
rostopic pub /modcube/goto geometry_msgs/PoseStamped "
header:
frame_id: 'world'
pose:
position: {x: 2.0, y: 2.0, z: 2.0}
orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}"
# Or use the simplified command interface
goto 2 2 2 1 1 1 1Create custom robot configurations by modifying URDF files:
# Edit robot description
roscd modcube_config/modcube_sim_description/urdf/
# Modify default.xacro for single robot
# Modify default_4_modcube.xacro for quad configurationDefine custom missions using YAML configuration:
# sample_mission.yaml
mission:
name: "exploration_mission"
waypoints:
- {x: 0, y: 0, z: 0}
- {x: 5, y: 0, z: -2}
- {x: 5, y: 5, z: -2}
tasks:
- type: "survey"
duration: 30
- type: "sample_collection"
target: "object_1"Tune control parameters via ROS parameters:
# View current parameters
rosparam list /modcube/
# Set PID gains
rosparam set /modcube/controller/pid_gains/kp 1.0
rosparam set /modcube/controller/pid_gains/ki 0.1
rosparam set /modcube/controller/pid_gains/kd 0.01# Run all tests
catkin run_tests
# Run specific package tests
catkin run_tests modcube_common# Test basic functionality
rostest modcube_sim basic_simulation.test
# Test multi-robot scenarios
rostest modcube_sim multi_robot.testThe framework has been validated with the following performance characteristics:
- Real-time Factor: 0.8-1.0 (depends on system configuration)
- Control Frequency: 50-100 Hz
- Simulation Accuracy: <5% error in hydrodynamic forces
- Multi-robot Scalability: Tested up to 8 robots simultaneously
- Follow ROS C++ Style Guide
- Use
clang-formatfor code formatting - Include comprehensive unit tests
- Document public APIs with Doxygen
If you use RS-ModCubes in your research, please cite our work:
@article{zheng2025rs,
title={Rs-modcubes: Self-reconfigurable, scalable, modular cubic robots for underwater operations},
author={Zheng, Jiaxi and Dai, Guangmin and He, Botao and Mu, Zhaoyang and Meng, Zhaochen and Zhang, Tianyi and Zhi, Weiming and Fan, Dixia},
journal={IEEE Robotics and Automation Letters},
year={2025},
publisher={IEEE}
}This project is licensed under the MIT License - see the LICENSE file for details.
- CMU TartanAUV Team for the foundational Kingfisher framework
- UUV Simulator community for the underwater simulation tools
- ROS community for the robotics middleware
If you find this project useful, please consider giving it a star!