前言
经过ROS的保姆级教程之后,相信大家对ROS应该有一个基本的认识了!关于各种工具的使用其实等到真正有所需求之后再去查找即可,roswiki始终是最好的最一手的信息来源。本系列的博客主要用来记录如何让在ROS的环境下进行机器人的建模与仿真,学完之后,就可以称得上是入了ROS的坑了~
什么是urdf
在如今的开发中我们通常使用xacro来进行建模,之后在进行gazebo仿真时将其转换成相应的urdf格式即可,另一种方式是使用专门的三维建模软件诸如solidworks、catia、ug来建模,然后导出urdf文件。虽说早已不再直接使用urdf的格式,但是学习一下还是很有必要的。
首先要了解的什么是urdf?定义如下图所示:
整个组织的描述形式是xml格式的,在ros中的很多配置文件(比如launch文件等)都是使用的这种格式,可以很方便的使用标签属性来描述各个相关信息,组织起来方便,看上去也比较直观。
link刚体属性
用于描述机器人某个刚体部分的外观和物理属性,包括- 尺寸(size)
- 颜色(color)
- 形状(shap)
- 惯性矩阵(inertial matrix)
- 碰撞参数(collision properties)
<visual>
标签用于描述机器人link部分的外观参数
<inertial>
标签用于描述link的惯性参数,
<collision>
标签用于描述link的碰撞属性
由图中可以看出collision的区域要大于visual的区域,这就意味着只要有其它物体与collision区域相交,就认为link发生碰撞
joint关节属性
(关节)
- 描述机器人关节的运动学与动力学属性
- 包括关节运动的位置和速度限制
- 根据关节运动形式,可以将其分为六种类型
完整的robot属性
- 完整机器人模型的最顶层标签
- 和标签都必须包含在标签内
- 一个完整的机器人模型由一系列的link和joint组成
实际操作
创建功能包
有关功能包的知识可以参考这篇博客。
依旧在我们的catkin_ws中的src文件夹下创建功能包:
catkin_create_pkg mbot_description urdf xacro
在功能包中创建几个文件夹
- urdf:存放机器人模型的URDF或xacro文件
- meshes:放置URDF中引用的模型渲染文件
- launch:保存相关启动文件
- config:用来保存相关功能包的配置文件,这里用来保存rviz的配置文件
在launch文件夹下创建文件display_mbot_base_urdf.launch,并写入代码
<launch>
<param name="robot_description" textfile="$(find mbot_description)/urdf/urdf/mbot_base.urdf" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<!-- 运行robot_state_publisher节点,发布tf -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_urdf.rviz" required="true" />
</launch>
joint_state_publisher
:发布每个joint(除fixed类型)的状态,而且可以通过UI界面对joint进行控制
robot_state_publisher
:将机器人各个links、joints之间的关系,通过TF的形式,整理成三维姿态信息发布
在urdf文件夹下创建mbot文件夹,并在mbot文件夹下创建文件mbot_base.urdf,并写入代码,创建我们的小车:
<?xml version="1.0" ?>
<robot name="mbot">
<link name="base_link">
<visual>
<origin