玩转PiPER|MuJoCo仿真环境搭建,ROS2控制一步到位
2026/5/8 14:48:36 网站建设 项目流程

1.前言

本项目是松灵 PiPER 机械臂系列的MuJoCo仿真基座项目,旨在提供松灵PiPER机械臂系列的通用Mujoco仿真环境。目前项目完成c++版本的仿真环境启动,并基于测试版ros2控制插件完成ros2对仿真机械臂的控制测试。下面将逐步指导完成但前版本的Agilex机械臂Mujoco仿真环境构建,并利用测试版ros2插件完成ros2对仿真机械臂的控制。

2.项目结构

项目结构如下:

agilex@agilex-Bellator-N176B:~/project/agilex_arm_mujoco$ tree-L3├── agilex_arm │ └── agilex_piper │ ├── assets │ ├── piper_body.xml │ ├── piper.png │ ├── piper.xml │ └── scene.xml ├── images │ ├── mujoco_piper.png │ └── piper.png ├── README_EN.md ├── readme.md └── simulate ├── CMakeLists.txt ├── config.yaml ├── mujoco │ ├── bin │ ├── include │ ├── lib │ ├── model │ ├── sample │ ├── simulate │ └── THIRD_PARTY_NOTICES └── src ├── lodepng ├── main.cc ├── param.h ├── plugin_manager.cc ├── plugin_manager.h ├── ros2_control_plugin.cc ├── ros2_control_plugin.h └── sim_plugin.h

3.项目构建

3.1 agilex_arm_mujoco项目构建

agilex_arm_mujoco项目的构建过程与unitree_mujoco项目构建过程一致,下面我们给出详细的构建步骤:

3.1.1. 获取agilex_arm_mujoco项目

mkdiragilex_arm&&cdagilex_armgitclone https://github.com/yanyuze1/agilex_arm_mujoco.git

在agilex_arm_mujoco项目中默认配备了一个3.3.0版本的mujoco来完成ros2控制器测试,如果要使用其他版本的mujoco,请自行下载并替换。

3.1.2. 构建agilex_arm_mujoco项目

在进行编译前须知,agilex_arm_mujoco项目有两种编译方式:一种是不开启ros2插件模式;另一种是开启ros2插件模式。

1. 不开启ros2插件模式

编辑agilex_mujoco/simulate/CMakeLists.txt,将默认开启的ros2插件模式改为OFF

option(AGILEX_ENABLE_ROS2_CONTROL"Build ROS2 control plugin"ON)# 改为option(AGILEX_ENABLE_ROS2_CONTROL"Build ROS2 control plugin"OFF)

完成文件编辑后,进行编译

cdagilex_arm_mujoco/simulatemkdirbuild&&cdbuild cmake..make-j4
2. 开启ros2插件模式

默认情况下是开启ros2插件模式,无需进行任何文件编辑操作。但需完成ros2插件的依赖构建。

获取agilex_ws,完成依赖的获取

cdagilex_armgitclone https://github.com/yanyuze1/agilex_ws.git

获取到依赖仓库后,进行依赖构建

cdagilex_ws colcon build --symlink-install --packages-up-to mujoco_ros2_control agilex_piper_mujocosourceinstall/setup.bash

完成依赖构建后,进行仿真基座的编译

cdagilex_mujoco/simulatemkdirbuild&&cdbuild cmake..make-j4

3.2 运行agilex_arm_mujoco项目

运行agilex_arm_mujoco当前提供两种方式:一种是仅启动仿真基座,一种是启动仿真基座并开启ros2插件模式。

3.2.1. 仅启动仿真基座

在仅启动仿真基座时,请使用如下命令:

./agilex_mujoco-h./agilex_mujoco-rpiper-sscene.xml ./agilex_mujoco-rpiper-sscene.xml-pros2_control

运行成功,会启动一个MuJoCo仿真环境,并显示Piper机械臂在mujoco仿真环境当中。

3.2.2. 启动仿真基座并开启ros2插件模式

在启动仿真基座并开启ros2插件模式时,请使用如下命令:

cdagilex_wssourceinstall/setup.bash ros2 launch agilex_piper_mujoco bringup_agilex_mujoco_cartesian_motion_controller.launch.py agilex_mujoco_exec:=/home/agilex/project/piper/agilex_mujoco/simulate/build/agilex_mujoco#当前项目使用的是绝对路径,请根据自己的实际路径进行修改。

运行成功,会启动一个MuJoCo仿真环境,并显示Piper机械臂在mujoco仿真环境当中。在完成环境加载后就可以进行ros2控制了。

  • 发送末端位置
ros2 topic pub--once/agilex_piper_cartesian_motion_controller/target_frame\geometry_msgs/msg/PoseStamped"{ header: {frame_id: 'base_link'}, pose: { position: {x: 0.2, y: 0.0, z: 0.2}, orientation: {x: 0.0, y: 1.0, z: 0.0, w: 0.0} } }"

  • 进行夹爪控制
# 开夹爪ros2 topic pub--once/agilex_piper_gripper_position_controller/commands\std_msgs/msg/Float64MultiArray"{data: [0.035, -0.035]}"# 关闭夹爪ros2 topic pub--once/agilex_piper_gripper_position_controller/commands\std_msgs/msg/Float64MultiArray"{data: [0.0, 0.0]}"

  • 状态检测
ros2 topicecho/agilex_piper_cartesian_motion_controller/current_pose

4.后言

本项目基于多个优秀的开源项目进行学习、整合与实践,核心能力与技术成果均离不开原作者及开源社区的长期贡献。本文更多是在已有开源成果基础上的配置、适配与经验整理,希望能够为更多开发者提供一个更低门槛的学习与实践入口。也期待和大家在机械臂学习领域交流切磋、共同成长,有任何问题欢迎在评论区留言,一起探讨解惑、互助进步。

5.参考项目

  • https://github.com/unitreerobotics/unitree_mujoco

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询