12.29-ros-gazebo高级
Posted lizhensheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12.29-ros-gazebo高级相关的知识,希望对你有一定的参考价值。
高级教程
前言
- 不是基础,需要深入理解且实践
参考
学习记录
在Gazebo中使用URDF
- 在所有之前需要说明,我们往往都是编写的Xacro文件,而Xacro文件仅仅是使用了常量(Constants),数学公式(Maths)和宏(Macros)来简化URDF文件的编写和维护,实际上还是URDF文件。
- 第二个需要说明的是,数据的单位是米和千克
- 关于
对于模型的各种选项见在ros中创建gazebo插件
背景
- URDF(Universal Robotics Descrption Format)本是ROS中定义的机器人XML模式文件,为了在Gazebo中使用这种文件,一些与仿真相关的元素(tags)需要添加进去,这样已经开始使用ROS的人并不需要再定义SDF文件,gazebo会自动进行转换
- 原生的,在ROS系统中的URDF文件,只能定义某一个机器人的运动学和动力学特性,却不能确定一个机器人在整个环境(World)中的姿态(pose)。它并不是一个万能的描述格式,因为它还不能描述循环的关节(Joint Loops)又称平行杆件(parallel linkages),还缺乏对摩擦等属性的定义。还有,它不能定义其它不是机器人的东西,如灯光,高度地图等。
- 另外,URDF的向后兼容性也不太好
- 基于上述问题,gazebo的SDF(Simulation Description Format)应运而生,SDF能够定义上至整个环境,下至某个机器人,它也是XML格式的,所以也是自描述的。
概述
- 必须要添加的东西是:每一个都必须添加
- 可选的:
- 对于每一个,添加一个
来:将可见颜色转换为gazebo格式;将stl文件转换为dae文件;添加传感器插件 - 对于每一个
,添加 来:设置阻尼系数;添加执行器(Actuator)插件 - 对于
添加 元素 - 如果某一个机器人需要作为刚体嵌入到环境中,添加一个
- 对于每一个,添加一个
元素
- 这是urdf文件的扩展,有三种类别的
,分别对应于
URDF文件头
<robot name="rrbot" xmlns:xacro="http://www.ros.org/wiki/xacro">
元素
- If a
element is used without a reference="" property, it is assumed the element is for the whole robot model. - Elements within a
tag that are not in the above table are directly inserted into the SDF tag for the generated SDF.
模型与环境的刚性连接
<!-- Used for fixing robot to Gazebo ‘base_link‘ -->
<link name="world"/>
<joint name="fixed" type="fixed">
<parent link="world"/>
<child link="link1"/>
</joint>
元素
- 建议同时显式定义好,因为gazebo不会把
当作 ,而是 ,所以这个模型将不会被激光传感器所捕获
STL还是dae文件
- 推荐dae文件,因为dae自带颜色和纹理,stl不带
元素
- 必须要大于0才行,可以先在CAD软件中建模来获取一些值。
<!-- Base Link -->
<link name="link1">
<collision>
<origin xyz="0 0 $height1/2" rpy="0 0 0"/>
<geometry>
<box size="$width $width $height1"/>
</geometry>
</collision>
<visual>
<origin xyz="0 0 $height1/2" rpy="0 0 0"/>
<geometry>
<box size="$width $width $height1"/>
</geometry>
<material name="orange"/>
</visual>
<inertial>
<origin xyz="0 0 1" 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>
</link>
关节Joints
- 并不是所有的元素都能够被Gazebo用上:
- The
, and are required and are ignored - In the
tag, only the damping property is used for gazebo4 and earlier. Gazebo5 and up also uses the friction property. - All of properties in the
tag are optional
- The
插件详解
- gazebo中已经有很多类型插件,包括相机,kinect等传感器和motor等控制器
- 你要做的只是在xacro中添加相应的可视化元素和在gazebo属性文件中添加plugin的定义
- 关于如何写程序使用这些插件,看最后一节的内容
ROS-Control
- 讲述如何使用gazebo中的控制器,使得某joint关节能够动起来,见另一篇文章
以上是关于12.29-ros-gazebo高级的主要内容,如果未能解决你的问题,请参考以下文章