玩转PiPER|MuJoCo仿真环境搭建,ROS2控制一步到位
1.前言
本项目是松灵 PiPER 机械臂系列的MuJoCo仿真基座项目,旨在提供松灵PiPER机械臂系列的通用Mujoco仿真环境。目前项目完成c++版本的仿真环境启动,并基于测试版ros2控制插件完成ros2对仿真机械臂的控制测试。下面将逐步指导完成但前版本的Agilex机械臂Mujoco仿真环境构建,并利用测试版ros2插件完成ros2对仿真机械臂的控制。
2.项目结构
项目结构如下:
agilex@agilex-Bellator-N176B:~/project/agilex_arm_mujoco$ tree -L 3
├── 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项目
mkdir agilex_arm && cd agilex_arm
git clone 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)
完成文件编辑后,进行编译
cd agilex_arm_mujoco/simulate
mkdir build && cd build
cmake ..
make -j4
2. 开启ros2插件模式
默认情况下是开启ros2插件模式,无需进行任何文件编辑操作。但需完成ros2插件的依赖构建。
获取agilex_ws,完成依赖的获取
cd agilex_arm
git clone https://github.com/yanyuze1/agilex_ws.git
获取到依赖仓库后,进行依赖构建
cd agilex_ws
colcon build --symlink-install --packages-up-to mujoco_ros2_control agilex_piper_mujoco
source install/setup.bash
完成依赖构建后,进行仿真基座的编译
cd agilex_mujoco/simulate
mkdir build && cd build
cmake ..
make -j4
3.2 运行agilex_arm_mujoco项目
运行agilex_arm_mujoco当前提供两种方式:一种是仅启动仿真基座,一种是启动仿真基座并开启ros2插件模式。
3.2.1. 仅启动仿真基座
在仅启动仿真基座时,请使用如下命令:
./agilex_mujoco -h
./agilex_mujoco -r piper -s scene.xml
./agilex_mujoco -r piper -s scene.xml -p ros2_control
运行成功,会启动一个MuJoCo仿真环境,并显示Piper机械臂在mujoco仿真环境当中。

3.2.2. 启动仿真基座并开启ros2插件模式
在启动仿真基座并开启ros2插件模式时,请使用如下命令:
cd agilex_ws
source install/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 topic echo /agilex_piper_cartesian_motion_controller/current_pose

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



所有评论(0)