环境搭建
整体框架
可以看到roscontroller既可以与我们真实的机器人进行交互也可以与gazebo下仿真的机器人进行交互
如何使得urdf文件在gazebo中能使用
- required
必须要为每一个<link>合理配置一个<inertial>元素
- optional
为每一个<link>添加<gazebo>元素
将视觉颜色转换为gazebo格式
将stl文件转换为dae文件以获得更好的纹理
添加传感器插件
为每一个<joint>添加<gazebo>元素
设置适当的阻尼动力学
添加执行器控制插件
为<robot>添加<gazebo>元素
前提
urdf 文件格式正确,可以在rviz下进行显示
解析gazebo
<gazebo>标签有一个元素“reference” 如果在没有reference的情况下使用<gazebo>元素,则假定<gazebo>元素用于整个机器人模型
link
<collision>,<visual>要同时指定(urdf文件有)
但注意urdf中定义的<material>在gazebo中不管用,那么重新在<gazebo>下定义一下
<gazebo reference="link1">
<material>Gazebo/Orange</material>
</gazebo>
<inertial>
为了使gazebo物理引擎正常工作,必须按照URDF链接元素页上的记录提供<inertial>元素。在gazebo上不可忽略的连接,其mass(质量)必须大于零。此外,在任何有限扭矩作用下,主转动惯量为零的连杆(ixx、iyy、izz)都可能导致无限加速度。这些值都要设置准确
<inertial>
<origin xyz="0 0 ${height1/2}" rpy="0 0 0"/>
<mass value="1"/>
<inertia
ixx="1.0" ixy="0.0" ixz="0.0"
iyy="1.0" iyz="0.0"
izz="1.0"/>
</inertial>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e7EuVFTI-1590025856966)(/home/zhongsy/Desktop/cotek_rb/gazebo _to_link.png)]
joint
首先原有urdf文件中joint设置ok。但是不是所有的element都可以用在gazebo中
- <origin> <parent> <child> 这是必须的
- <calibration> <safety_controller> 是无效的
- <limit>标签的属性都可以用
验证
# gazebo2 and below
gzsdf print MODEL.urdf
# gazebo3 and above
gz sdf -p MODEL.urdf
launch文件启动gazebo
这里之后会专门写一篇博客
参考
http://gazebosim.org/tutorials/?tut=ros_urdf