博主提示:ROS部分写的并不是很详细,说到底也ROS和MATLAB一样也是一个开发工具,核心的是算法,逻辑以及整体框架等,不到之处,烦请指出。
ROS中一个非常重要的机器人模型描述格式文件,Unified Robot Description Format。
创建一个机器人建模功能包
用catkin_create_package + (机器人名称_description) + (功能包下面的文件夹名称)。
例如:
catkin_create_package robot_description urdf meshes launch config
其中,urdf文件夹中放机器人模型urdf或xacro文件,
meshes放置urdf中引用的模型渲染文件,
launch中保存相关的启动文件,
config中保存rviz的配置文件。
下面详细的介绍以下urdf的文件格式以及含义。
robot - 完整的机器人模型的最顶层标签,joint和link都必须在robot标签内
..............
..............
....
..............
..............
一个完整的机器人有一系列的link和joint组成。
link - 描述机器人某个刚体部分的外观和物理属性:尺寸、颜色、形状、惯性矩阵、碰撞参数等。
.........
.........
.........
joint - 描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限制。
....
calibration:关节的参考位置,用来校准关节的绝对位置,
dynamic:描述关节的物理属性,如阻尼、表面摩擦力等,
limit:描述一些运动的极限值,包括关节运动的上下极限值、速度限制、力矩限制等,
mimic:描述关节与已有关节的关系,
safety_controller:描述安全控制器的参数。
另外,六种关节的运动形式:
关节类型 | 描述 |
---|---|
continuous | 旋转关节,可以围绕单轴无限旋转 |
revolute | 旋转关节,类似continuous,但是有旋转的角度极限 |
prismatic | 滑动关节,沿着某一条直线移动,但是有位置极限 |
plannar | 平面关节,允许在平面正交方向上平移或者旋转 |
floating | 浮动关节,允许进行平移、旋转运动 |
fixed | 固定关节,不允许运动 |
下面举一个实际的移动机器人的mbot.urdf文件进行具体说明(单位默认是 米,弧度):
上面的代码是一个简单的urdf文件。
接下来,需要的就是使用launch文件来调出这个模型了
其中,joint_state_publisher发布每个joint(除fixed之外)的状态,而且可以通过UI界面对joint进行控制。robot_state_publisher将各个机器人的各个links、joint之间的关系,通过tf的方式,整理成为三维姿态信息发布。
但是URDF模型存在以下的问题:
1.模型冗长,重复的内容过多
2.没有参数修改,不便于二次开发
3.无法通过相应的公式进行参数计算相关的参数
还是直接上代码(mbot.xacro)吧,这样会比较直观点。
此外xacro文件的便捷之处在于,另一个xacro文件只需要在文件中包含相关宏定义的路径,既可以调用需要用到的宏。例如:
之后就可以在这个xacro文件中调用mbot_base.xacro中定义的宏了。
至于,xacro的模型显示可以有两种方式:
方法一,将xacro转化为urdf文件
$ rosrun xacro xacro.py mbot.xacro>mbot.urdf
方法二,直接在launch文件中调用xacro文件解析器
Gazebo仿真环境的搭建,就需要了解机器人的控制器,ROS为开发者提供了一系列的控制器接口传动装置接口等等,ros_control。
仿真步骤:1.配置机器人模型:为link添加惯性参数和碰撞属性,为link添加gazebo标签,为joint添加传动装置,添加gazebo控制器插件,这几项工作都是必要的工作,下面直接上代码进行说明:
为link添加gazebo标签
Gazebo/Gray
transmission_interface/SimpleTransmission
hardware_interface/VelocityJointInterface
hardware_interface/VelocityJointInterface
1
Debug
true
/
1
true
true
100.0
true
left_wheel_joint
right_wheel_joint
${wheel_joint_y*2}
${2*wheel_radius}
1
30
1.8
cmd_vel
odom
odom
base_footprint
2.创建仿真环境
3.开始仿真
打开Gazebo后,可以按照自己的需求,放置仿真物品等,详细的可以自行wiki。