A unified robot simulation platform built on top of MuJoCo, Genesis, and ManiSkill.
This project provides a common abstraction layer so that you can run your robot across different simulators with a consistent API.
It is designed as a research tool for users of Astribot.
- ๐ Multi-backend environments: switch between MuJoCo / Genesis / ManiSkill with one line of code.
- ๐ค Plug-and-play robot models: support for URDF and MJCF.
- ๐งฉ Config-driven setup: YAML configs for each simulator and robot variant.
- โก ROS Integration: optional ROS1 interface for bridging simulation and real robots.
- ๐ Research-friendly utilities: logging, common tools, environment factory.
- โก ROS2 Integration (Coming Soon)
- ๐ณ Dockerized deployment (Coming Soon)
- ๐ป NVIDIA Isaac Lab integration (Coming Soon)
astribot_simulation/
โโโ astribot_envs/ # Environment wrappers for each simulator
โ โโโ astribot_base_env.py
โ โโโ astribot_mujoco_env.py
โ โโโ astribot_genesis_env.py
โ โโโ astribot_maniskill_env.py
โ โโโ astribot_envs_factory.py
โ
โโโ config/ # YAML configs for different robots & simulators
โ โโโ astribot_s1/
โ โโโ simulation_genesis_param_chassis_fixed.yaml
โ โโโ simulation_maniskill_param_chassis_fixed.yaml
โ โโโ simulation_mujoco_param_with_hand.yaml
โ โโโ ...
โ
โโโ astribot_descriptions/ # Robot models
โ โโโ urdf/
โ โโโ mjcf/
โ
โโโ simu_utils/ # Utility functions
โ โโโ simu_common_tools.py
โ โโโ robot_ros_interface.py
โ
โโโ tools/ # Setup scripts
โ โโโ install.sh
โ โโโ build.sh
โ โโโ Miniconda3-py38_4.9.2-Linux-x86_64.sh
โ โโโ fix_GLIBCXX_3.4.30_bug.sh
โ โโโ fix_LIBFFI_BASE_7.0_bug.sh
โ
โโโ astribot_simulation.py # Main entry
โโโ env.sh # Environment setup
โโโ README.md
โโโ __init__.py
git clone https://github.com/Astribot-Dev/astribot_simulation
cd astribot_simulation
git submodule init
git submodule updatebash tools/Miniconda3-py38_4.9.2-Linux-x86_64.shbash tools/install.shroscoreconda activate astribot_simu
cd <your_path>/astribot_simulation
source env.sh && python3 astribot_simulation.pyIf you want to reset the robot state, press Backspace while the simulation is running.
You can switch to another simulator or robot by modifying the YAML file path in astribot_simulation.py:
from astribot_envs.astribot_envs_factory import AstribotEnvsFactory
def main():
# Load param from yaml, create a simulation env using the Factory Pattern
astribot_yaml_file='config/astribot_s1/simulation_genesis_param.yaml'
astribot_envs_factory = AstribotEnvsFactory()
astribot_data = AstribotEnvsFactory.load_yaml_file(astribot_yaml_file)
astribot_simulation_thread = astribot_envs_factory.create_simulation_env(astribot_data)
if __name__ == '__main__':
main()The config/astribot_s1/ folder contains several YAML files to customize your simulation environment. Each file defines a combination of simulator backend, robot variant, and Hardware configuration:
| YAML File | Description |
|---|---|
simulation_genesis_param_chassis_fixed.yaml |
Genesis backend with fixed chassis configuration. |
simulation_maniskill_param_chassis_fixed.yaml |
ManiSkill backend with fixed chassis configuration. |
simulation_mujoco_param_chassis_fixed.yaml |
MuJoCo backend with fixed chassis configuration. |
simulation_mujoco_param_with_camera.yaml |
MuJoCo backend with three-camera configuration. |
simulation_mujoco_param_with_hand.yaml |
MuJoCo backend with BrainCo hand configuration. |
simulation_mujoco_param.yaml |
MuJoCo backend with default configuration. |
๐ก Tip:
To switch simulators or robot setups, modify the astribot_yaml_file variable in astribot_simulation.py to point to the desired YAML file. No code change is needed beyond this.
- Operating System: Ubuntu 20.04 LTS / Ubuntu 22.04 LTS
- Middleware: ROS Noetic (for 20.04) / ROS2 Humble (for 22.04)
- Python Version: Python == 3.10 (use Conda environment)
| Hardware / Software | Recommended Specifications |
|---|---|
| CPU | Intel i5-14600F or higher |
| GPU | NVIDIA RTX 2080 Ti or higher |
| GPU Driver | NVIDIA driver โฅ 535 |
| CUDA | CUDA โฅ 12.0 |
| Python | Python == 3.10 (Conda recommended) |
๐ Note: For GPU-accelerated simulation, ensure the above hardware and driver requirements are met.
If you want to directly control the joints, note: The robot exposes joint-space command topic (e.g., /astribot_arm_left/joint_space_command) for controlling the arm. The interpretation of the command depends on the control mode:
| Control Mode | Command Dimension | Meaning | Notes |
|---|---|---|---|
| Position / Velocity Control | 7โ14 | Values 7โ14: First 7 values: target joint positions Last 7 values: target joint velocities |
Includes velocity compensation and gravity compensation for smoother motion |
| Force Control | 7 | Each value represents the torque/force applied to the corresponding joint |
๐ก Tip: If using Astribot SDK, you generally do not need to worry about these details โ refer to the Astribot SDK documentation for more information. When using joint-space commands, ensure the control mode matches the command dimension to avoid unexpected behavior.
The robot supports cameras on hands and head. After loading the correct YAML configuration, you can receive image data on the corresponding ROS topics:
- Raw color image:
/astribot_whole_body/camera/<camera_name>/image_raw - Depth image:
/astribot_whole_body/camera/<camera_name>/depth - Point cloud(in camera frame):
/astribot_whole_body/camera/<camera_name>/point_cloud
| Backend | Supported Sensors |
|---|---|
| MuJoCo | RGB-D cameras and point clouds for both hands and the head. |
| ManiSkill | RGB cameras for both hands and the head. |
| Genesis | Currently no sensor support. |
๐ก Tip
- To enable sensors in MuJoCo, use:
simulation_mujoco_param_with_camera.yaml - To enable sensors in ManiSkill, use:
simulation_maniskill_param_chassis_fixed.yaml - Currently, examples starting with
3xxin the SDK are not supported in the simulation.
tools/install.shโ environment setuptools/build.shโ build astribot_msgstools/Miniconda3-py38_4.9.2-Linux-x86_64.shโ install minicondatools/fix_GLIBCXX_3.4.30_bug.shโ patch for GLIBCXX bugtools/fix_LIBFFI_BASE_7.0_bug.shโ patch for libffi bug
- Environments:
astribot_envs/ - Config examples:
config/astribot_s1/ - Utilities:
simu_utils/
Contributions are welcome!
If youโd like to add support for new simulators or robots, please contact me at [[email protected]].
Built on top of:
- Error related to
GLIBCXX_3.4.30 not foundorcv_bridgewhen installing dependencies Solution:
Run the patch script to fix:
bash tools/fix_GLIBCXX_3.4.30_bug.sh- Error related to
libffi.so.7orcv_bridgewhen launching the simulation Solution:
Run the patch script to fix:
bash tools/fix_LIBFFI_BASE_7.0_bug.sh
