持续更新|从零到玩转Moveit机械臂控制(二)
随着机器人技术的快速发展,机械臂的仿真与控制成为机器人研究和应用中的重要环节。Moveit作为ROS生态中功能强大的运动规划框架,结合Gazebo仿真环境,可以实现机械臂的高效仿真与调试。
本文将详细介绍如何在Ubuntu 20.04和ROS Noetic环境下,完成Moveit与Gazebo的联合仿真配置,包括环境搭建、URDF模型修改、Moveit配置更新以及相机插件的集成,帮助读者快速掌握机械臂仿真控制的关键步骤。
摘要
Moveit与Gazebo联合仿真
标签
ROS1、moveit、机械臂
仓库
-
导航仓库: https://github.com/agilexrobotics/Agilex-College
-
项目仓库: https://github.com/agilexrobotics/piper/piper_moveit.git
使用环境
系统:ubuntu 20.04
ROS版本:noetic
一、Moveit与Gazebo联合仿真
1.环境安装
这些是使用到Gazebo时使用到的一些库
sudo apt-get install ros-noetic-gazebo-ros ros-noetic-gazebo-ros-control ros-noetic-gazebo-ros-pkgs ros-noetic-control-* ros-noetic-velodyne* ros-noetic-roboticsgroup-upatras-gazebo-plugins ros-noetic-robotis-manipulator ros-noetic-effort-controllers ros-noetic-joint-trajectory-action ros-noetic-joint-state-controller ros-noetic-position-controllers ros-noetic-effort-controllers ros-noetic-gripper-action-controller ros-noetic-joint-trajectory-controller
2.增加底座
上一篇我们导出了Moveit的功能包,接下来我们需要根据Gazebo修改一下URDF;给机械臂增加一个底座,以免模型在仿真时出现高频的震动
打开piper_x_description.xacro;在base_link前增加以下代码
piper_x_description.xacro所在路径为/home/zsq/piper_sim_ws/src/piper_urdf/robot_description/piper_x_description/urdf/piper_x_description.xacro;根据实际路径打开
<link name="base_footprint">
<inertial>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
<mass value="100.0"/>
<inertia ixx="0.0016667" ixy="0.0" ixz="0.0"
iyy="0.0016667" iyz="0.0"
izz="0.0016667"/>
</inertial>
<visual name="cube_visual">
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
<geometry>
<box size="0.1 0.1 0.1"/>
</geometry>
<material name="red_material">
<color rgba="1.0 0.0 0.0 1.0"/>
</material>
</visual>
<collision>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
<geometry>
<box size="0.1 0.1 0.1"/>
</geometry>
</collision>
</link>
<joint name="base_joint" type="fixed">
<origin xyz="0.0 0.0 0.05" rpy="0.0 0.0 0.0"/>
<parent link="base_footprint"/>
<child link="base_link"/>
<axis xyz="0.0 0.0 0.0"/>
<limit lower="0.0" upper="0.0" effort="0.0" velocity="0.0"/>
</joint>

3.更新Moveit包
增加代码之后我们需要更新以下Moveit包,使用以下命令启动
roslaunch piper_x_moveit_config setup_assistant.launch
点击Load Files

重新计算以下碰撞模型即可

然后输出Moveit功能包

因为Moveit已经帮我们配置完关于contrllers的部分,可以直接使用
roslaunch piper_x_moveit_config demo_gazebo.launch
如果运行失败,可能是缺少某些库,可以根据报错自行下载安装即可

4.增加相机插件
机械臂是有携带相机模型的,想在gazebo中查看图像,需要在URDF中添加相机的相关插件;demo_gazebo.launch中使用的是piper_x_moveit_config/config/gazebo_piper_x_camera.urdf;
打开gazebo_piper_x_camera.urdf,在末尾增加以下代码
<gazebo reference="camera_link">
<sensor name="sensor_camera" type="depth">
<pose>0.0 0.0 0.0 0.0 0.0 0.0</pose>
<always_on>true</always_on>
<visualize>true</visualize>
<update_rate>10.0</update_rate>
<camera name="head">
<horizontal_fov>1.3962634</horizontal_fov>
<image>
<width>1280</width>
<height>720</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.02</near>
<far>300</far>
</clip>
</camera>
<plugin name="gazebo_ros_depth_camera_sensor" filename="libgazebo_ros_openni_kinect.so">
<baseline>0.2</baseline>
<alwaysOn>true</alwaysOn>
<updateRate>0.0</updateRate>
<cameraName>camera_link/camera_ir</cameraName>
<imageTopicName>/camera_link/color/image_raw</imageTopicName>
<cameraInfoTopicName>/camera_link/color/camera_info</cameraInfoTopicName>
<depthImageTopicName>/camera_link/depth/image_raw</depthImageTopicName>
<depthImageCameraInfoTopicName>/camera_link/depth/camera_info</depthImageCameraInfoTopicName>
<pointCloudTopicName>/camera_link/depth/points</pointCloudTopicName>
<frameName>camera_depth</frameName>
<cameraname>camera_link</cameraname>
<pointCloudCutoff>0.5</pointCloudCutoff>
<pointCloudCutoffMax>3.0</pointCloudCutoffMax>
<distortionK1>0</distortionK1>
<distortionK2>0</distortionK2>
<distortionK3>0</distortionK3>
<distortionT1>0</distortionT1>
<distortionT2>0</distortionT2>
<CxPrime>0</CxPrime>
<Cx>0</Cx>
<Cy>0</Cy>
<focalLength>0</focalLength>
<hackBaseline>0</hackBaseline>
</plugin>
</sensor>
</gazebo>

成功添加之后,再次启动Gazebo仿真,然后在Rviz中添加图像
roslaunch piper_x_moveit_config demo_gazebo.launch


通过本文的讲解,读者可以掌握如何搭建基于Moveit和Gazebo的机械臂仿真环境,解决模型震动问题,更新运动规划配置,并成功集成机械臂上的相机传感器,实现图像数据的仿真采集。
该流程不仅提升了机械臂仿真的真实感和稳定性,也为后续的运动规划和视觉感知应用奠定了坚实基础。希望本文能帮助大家更好地理解和应用Moveit与Gazebo联合仿真技术,加速机械臂开发与调试效率。
二、往期推荐
第一弹:机械臂固定点位录制与播放功能实现
第二弹:机械臂连续轨迹录制与播放功能实现
第三弹:用颜色说话,机械臂如何“看懂”方块与曲线并自动执行?
第四弹:如何用一部手机就能做到!不用遥控器也能控机械臂
第五弹:松灵PIPER机械臂手势识别与位置映射
第六弹:PiPER移植lerobot运动控制优化
第七弹:松灵PIPER机械臂实现Eigen线代库解算正逆运动学
第八弹:松灵Pika数采夹爪遥操任意机械臂的方法
第九弹:从零入门遥操作(UR篇)
第十弹:手柄遥操机械臂直观的机械臂控制新体验
第十一弹:松灵LIMO PRO的实例分割与点云提取实现
第十二弹:基于yolo算法识别的物体抓取
第十三弹:教你使用PiPER RL训练一个简单的任务
第十四弹:手把手教你完成 PiPER 机械臂的手眼标定(附完整命令)
第十五弹:在genesis上完成松灵PIPER单臂仿真与控制
第十六弹:Isaac_Sim 导入松灵PiPER URDF
更多推荐



所有评论(0)