MuJoCo simulation environment for the 25th National College Student Robot Competition ROBOCON "Martial Arts Quest".
- Python >= 3.7
- MuJoCo Physics Engine
pip install mujoco# Check your mujoco version
pip list | grep mujoco
# If mujoco>=3.3.0, use the following command
python -m mujoco.viewer --mjcf models/mjcf/robocon2026.xml
# If version is before 3.3.0, use
python -m mujoco.viewer --mjcf models/mjcf/robocon2026_old.xml- Please follow the LiDAR Installation Tutorial to set up the lidar simulation environment (GPU backend recommended)
cd ROBOCON2026_Scene
python src/lidar_sim_native.py- For ROS2 integration, please install ROS2 environment first
cd ROBOCON2026_Scene
python src/lidar_sim_ros2.pyBased on reinforcement learning trained ONNX policy models, we provide motion control simulations for multiple mainstream robots, supporting real-time joystick interaction control and ROS2 interface integration. Currently supported robots include:
- Unitree Robotics: Go1 Quadruped Robot, G1 Humanoid Robot
- Booster Robotics: T1 Bipedal Humanoid Robot
- Zjupower: Tron A1 Bipedal Robot
Before running any robot control program, please install the necessary dependencies:
# Install ONNX runtime and joystick support
pip install onnxruntime pygame etils
# (Optional) Install ROS2 support for topic publishing
# Please refer to ROS2 official documentation to install the corresponding version# Joystick control mode (Xbox controller recommended)
python3 src/robots/play_go2_joystick.py
# ROS2 topic mode (requires ROS2 installation)
python3 src/robots/play_go2_ros2.py
# Specify LiDAR type, we provide airy96 and mid360 LiDARs (default is airy96)
python3 src/robots/play_go2_ros2.py --lidar mid360Control Instructions:
Left Stick: Move forward/backward/left/rightRight Stick: Rotate in placeBackspace: Reset environment
# Joystick control mode
python3 src/robots/play_go1_joystick.py
# ROS2 topic mode
python3 src/robots/play_go1_ros2.py# Joystick control mode
python3 src/robots/play_g1_joystick.py
# ROS2 topic mode
python3 src/robots/play_g1_ros2.py# Joystick control mode
python3 src/robots/play_t1_joystick.py# Joystick control mode
python3 src/robots/play_tron_joystick.pyHave fun!
-
The default setting uses ROS2 humble. If your version is different, please refer to the settings in
build_fastlio2.shfor modification. -
Grant execute permission
chmod +x build_fastlio2.sh
-
run build script
./build_fastlio2.sh
-
source env
cd ros2_ws source install/setup.bash
-
run Go2 scence ( in another terminal )
python src/robots/play_go2_ros2.py
-
run keyboard control node ( in another terminal )
ros2 run teleop_twist_keyboard teleop_twist_keyboard
-
finally launch FastLIO2 ( in current terminal )
ros2 launch fast_lio mapping.launch.py config_file:=go2_fastlio2.yaml
Note
If you need to adapt to other robots, simply modify the extrinsic parameters between imu and lidar ( in the config yaml under ros2_ws/src/FAST_LIO/config ) according to the model file.
extrinsic_T: [0.32057, 0.0, -0.11732]
extrinsic_R: [-0.9802, 0., 0.1980,
0., 1., 0.,
-0.1980, 0., -0.9802]Additionally, if you need to modify the code to support keyboard remote control, refer to src/robots/play_go2_ros2.py for the corresponding code.
Q: Joystick not recognized?
A: Please ensure the joystick is connected and pygame is installed. Run python -m pygame.examples.joystick to test joystick connection.
Q: How to customize robot models?
A: Modify the corresponding XML files in the models/mjcf/ directory and retrain the policy model.
ROBOCON2026_Scene/
├── README.md # Project documentation
├── assets/ # Resource files
├── models/
│ ├── meshes/ # 3D model files
│ │ ├── kfs/ # Martial arts manual models
│ │ ├── robocon2026.obj # Main scene model
│ │ ├── robocon2026.mtl # Material file
│ │ ├── parts/ # Scene component models
│ │ └── visual/ # Visualization resources
│ └── mjcf/ # MuJoCo XML scene files
│ ├── robocon2026.xml # Main scene (MuJoCo >= 3.3.0)
│ ├── robocon2026_old.xml # Compatible with older MuJoCo versions
│ ├── mocap_env.xml # LiDAR simulation scene
│ ├── kfs.xml # Martial arts manual scene
│ ├── kfs_dep.xml # Martial arts manual asset dependencies
│ ├── scene_go1.xml # Go1 robot scene
│ ├── scene_g1.xml # G1 robot scene
│ ├── scene_t1.xml # T1 robot scene
│ └── scene_a1.xml # A1 robot scene
├── src/
│ ├── lidar_sim.py # LiDAR simulation script
│ ├── robots/ # Robot control scripts
│ │ ├── play_go1_joystick.py # Go1 joystick control
│ │ ├── play_go1_ros2.py # Go1 ROS2 interface
│ │ ├── play_g1_joystick.py # G1 joystick control
│ │ ├── play_g1_ros2.py # G1 ROS2 interface
│ │ ├── play_t1_joystick.py # T1 joystick control
│ │ ├── play_a1_joystick.py # A1 joystick control
│ │ ├── gamepad_reader.py # Joystick reading module
│ │ ├── camera_utils.py # Camera utility module
│ │ └── onnx/ # ONNX policy model files
│ └── rviz_config/ # RViz configuration files
│ ├── g1.rviz
│ ├── go1.rviz
│ └── lidar.rviz
└── 第二十五届全国大学生机器人大赛ROBOCON_u201C武林探秘_u201D竞技赛规则V.1.pdf
The technology stack used in this repository is based on our simulator DISCOVERSE. If this work is helpful to your research, please consider citing our paper:
@article{jia2025discoverse,
title={DISCOVERSE: Efficient Robot Simulation in Complex High-Fidelity Environments},
author={Yufei Jia and Guangyu Wang and Yuhang Dong and Junzhe Wu and Yupei Zeng and Haonan Lin and Zifan Wang and Haizhou Ge and Weibin Gu and Chuxuan Li and Ziming Wang and Yunjie Cheng and Wei Sui and Ruqi Huang and Guyue Zhou},
journal={arXiv preprint arXiv:2507.21981},
year={2025},
url={https://arxiv.org/abs/2507.21981}
}Thanks to the following projects and contributors:
- Thanks to Chongqing University of Posts and Telecommunications for the open-source scene Blender model
- Thanks to DeepMind MuJoCo Playground for providing robot motion control strategies and implementation references
- Thanks to the HKU MARS Lab for open-sourcing FAST_LIO
- Thanks to Livox for maintaining Livox-SDK2 and livox_ros_driver2








