1. 你得有一个仿真机械臂
简单地说你首先的拥有一个能够在Gazebo当中使用的机械臂的URDF文件,必须要包含visual、collision和inertial三大标签。出于个人习惯,这里直接使用UR官方提供的UR5的URDF文件,具体怎么下载,请自行百度
这里建议新建一个功能包用于存放UR5的相关文件,因为官方功能包ur_description里面除了UR5的URDF文件之外,还有其它机械臂的文件,显得特别混乱。
你的功能包应该包含以下文件:
你的功能包:
meshes:
collision
visual
urdf:
common.gazebo.xacro
ur.gazebo.xacro
ur.transmission.xacro
ur5.urdf.xacro
ur5_robot.urdf.xacro
launch:
ur5_upload.launch
view_ur5.launch
config:
view_robot.rviz
这些文件你都可以在对应的官方文档中找到,将其直接拷贝即可。其中meshes文件夹下的collision和visual两个文件夹都是储存UR5的三维模型文件的,你可以在官方功能包ur_description/meshes/ur5下找到这两个文件夹。
(1)common.gazebo.xacro && ur.gazebo.xacro && ur.transmission.xacro:
通用文件,第一个导入Gazebo/roscontrol插件,后续给机械臂发送控制指令是通过roscontrol来完成。第二个配置了机械臂在Gazebo当中的一些仿真设置,设置了自碰撞为true。第三个配置了哪些关节需要传动,以及使用何种模拟的硬件接口,这里的模拟硬件接口就好比实际的机械臂是使用位置控制还是力矩控制,这个文件将硬件接口使用了参数${hw_interface}来表示,后续再传参进行设置。
(2)ur5.urdf.xacro:
ur5本体模型文件。
(3)ur5_robot.urdf.xacro:
将上述文件全部串起来的一个总文件,在该文件中设置了刚刚上述所说的${hw_interface}参数,如下代码:
<xacro:arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface"/>
<xacro:ur5_robot prefix="" joint_limited="false"
transmission_hw_interface="$(arg transmission_hw_interface)"
/>
建议将default="hardware_interface/PositionJointInterface"修改为default="PositionJointInterface",原因不知,但我不修改它就报错。
(4)ur5_upload.launch:
将ur5_robot.urdf.xacro模型文件作为参数robot_description上传至参数服务器,Gazebo和rviz都是通过参数服务器中的robot_description参数来识别机器人模型。注意把里面的hardware_interface/PositionJointInterface通通改成PositionJointInterface。
(5)view_ur5.launch:
在rviz中显示ur5。每次打开Gazebo比较耗时,如果仅仅只是查看装配关系以及坐标轴方向的话推荐使用rviz,后面需要自己在ur5末端装配一个力传感器,所以需要频繁使用这个文件来查看传感器的装配是否正确。
(6)view_robot.rviz:
rviz的设置文件&#x