基于 ROS 2 + MuJoCo 的轮腿机器人控制与仿真工程,包含:
- MuJoCo 物理仿真节点
- 主控制器节点(平衡/力矩控制)
- 键盘遥控节点
- 自定义电机与 IMU 消息定义
- 数据记录与可视化脚本
当前仓库中的包名为
wheeled_bipedal_control,建议在 ROS 2 工作区src/下使用。
wheel-legged-control/
├── src/ # C++ 节点实现
├── msg/ # 自定义消息(电机状态/指令、IMU)
├── launch/ # 启动文件(仿真/硬件)
├── meshes/ # MuJoCo 模型网格
├── wheelleg_robot.xml # MuJoCo 机器人模型
├── scripts/ # 数据记录与分析脚本
├── quick_plot_en.py # 快速绘图工具
├── DATA_ANALYSIS_README.md # 数据分析说明
├── CMakeLists.txt
└── package.xml
mujoco_sim_node- 加载
wheelleg_robot.xml,运行 MuJoCo 仿真 - 发布 IMU 和电机状态
- 订阅电机力矩命令
- 加载
main_controller_node- 订阅电机状态、IMU、
cmd_vel - 执行控制逻辑并发布电机命令
- 订阅电机状态、IMU、
remote_control_node- 键盘模式下发布
cmd_vel(w/s/a/d/q)
- 键盘模式下发布
- 发布:
imu/datamotor_statesmotor_commandscmd_veldebug/*(控制调试信息)
- 订阅:
motor_commands(仿真节点)motor_states/imu/data/cmd_vel(主控节点)
- Ubuntu(建议 22.04)
- ROS 2(建议 Humble)
ament_cmake
Eigen3glfw3- OpenGL(
GL)
- MuJoCo(仓库当前 CMake 中为本地绝对路径配置)
pandasmatplotlibnumpy
可执行:
./install_requirements.sh# 以 ~/ros2_ws 为例
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
# 克隆仓库(按你的远程地址替换)
git clone <your-repo-url> wheel-legged-control
cd ~/ros2_ws
colcon build --packages-select wheeled_bipedal_control
source install/setup.bashros2 launch wheeled_bipedal_control simulation.launch.py默认会启动:
mujoco_sim_nodemain_controller_noderemote_control_node
在运行 remote_control_node 的终端中使用:
w:前进s:后退a:左转d:右转q:停止
项目包含多种绘图/分析脚本,建议参考:
DATA_ANALYSIS_README.mdscripts/目录下工具quick_plot_en.py
典型流程:
- 运行仿真并产生日志/CSV
- 使用快速绘图脚本查看关键状态
- 使用详细分析脚本做离线诊断
CMakeLists.txt 中当前使用了本机绝对路径(例如 /home/ldq/...)。如果你在其他机器编译,请先修改:
MUJOCO_INCLUDE_DIRSMUJOCO_LIBRARY_DIR
以及 launch/simulation.launch.py 中 model_file 的绝对路径。
hardware.launch.py / wheeled_bipedal_control.launch.py 中包含的部分节点(如 can_interface_node、imu_node、observe_node)在当前 CMakeLists.txt 里处于注释或未安装状态。若需使用:
- 在
CMakeLists.txt中恢复对应add_executable与install(TARGETS ...) - 确保相关源文件与依赖可正常编译
键盘控制依赖终端原始模式读取,请确保焦点在运行 remote_control_node 的终端窗口。
- 将 MuJoCo、模型路径改为可配置环境变量或 launch 参数(避免硬编码)
- 补全
package.xml中描述、许可证等元信息 - 对启动文件进行统一整理(仿真/实机可执行项一致性)
- 增加
README中参数表与话题表的自动化同步文档
本仓库根目录包含 LICENSE 文件;若你计划发布或商用,请结合依赖组件(ROS 2 / MuJoCo / 第三方库)许可证一并核查。