在ROS机器人系统中,想要制造一个机器人,就需要编写机器人描述文件。也就是URDF(Unified Robot Description Format, 统一机器人描述格式)。其使XML文件格式来描述机器人,ROS里面提供了URDF文件的C++解释器,可以解析这种格式。
1.创建功能包catkin_creage_pkg robot1_description
2.在功能包下新建urdf文件夹,新建robot1.urdf
1 | <?xml version="1.0"?> |
这是一个最简单的机器人,由一个底盘+四个轮子组成 (这里有5个link, 对应的就有4个joint)
3.在功能包下新建launch文件夹以及display.launch
1 | <?xml version="1.0"?> |
其中:
是设置GUI参数,显示关节控制插件 这个好像也是必须的 type="joint_state_publisher" > 运行joint_state_publisher节点,发布机器人关节状态运行robot_state_publisher节点,发布TF将机器人各个link,joint之间的关系通过TF的形式整理成三维姿态信息发布出去 运行rviz可视化界面
注意:这里最后这个一开始需要注释掉,因为找不到urdf_tutorial
更正: 查询发现,这个urdf_tutorial是一个功能包,需要额外安装。这里我们没有安装,使用:rospack list 查询发现:没有这个东西
安装方式: sudo apt-get install ros-kinetic-urdf-tutorial
安装完成后再次查询,就可以找到这个包了,这样添加进去就不会报错了。
会安装到/opt/ros/kinetic/share/urdf_tutorial
在本教程中的,后面添加机械臂那里,
这里也是,pr2_description也是一个ros包,需要额外安装,安装命令:
sudo apt-get install-pr2-description 这样就不会报错了
但是打开,终端会一直出现:
但是,出现的界面是对的:
4.编译catkin_make
5.启动roslaunch$ roslaunch robot1_description display.launch model:='
这里改成自己的路路径/urdf/robot1.urdf’
把文件拖到终端里面就可以显示文件位置信息了
或者可以在launch 文件下: roslaunch display.launch model:='
这里改成自己的路径/urdf/robot1.urdf’ 也就是说,不加功能包的名字,也是可以进行启动的。
- 在rviz中进行显示,启动rviz
rosrun rviz rviz
7.打开了rviz后,里面什么都没有的
点击左下角add,选择RobotMode
这里发现,小车的颜色不对,这里一定要注意,这里的map一定要改成baselink才会显示出小车真正的样子与颜色!!!!不然后续在里面改了,结果没看到效果!!!


补充:
连接(link)标签 官方详细说明
标签 | 功能 |
---|---|
link | 连接的可视化、碰撞和惯性属性设置 |
visual | 设置连接的可视化属性 |
collision | 设置连接的碰撞计算属性 |
inertial | 设置连接的惯性属性 |
geometry | 输入模型的形状。参数有:box、cylinder、sphere、radius等等 |
origin | link相对于世界坐标系的移动和旋转 |
material | 设置连接的颜色和纹理 如:color rgba颜色 由red/green/blue/alpha 组成,每一个数字在 [0,1] 内。 |
mass | 连接重量(单位:kg)的设置 |
关节(joint)标签 官方教程
标签 | 功能 |
---|---|
joint | 与连接的关系和关节类型的设置 |
parent | 关节的父连接 |
child | 关节的子连接 |
origin | 将父连接坐标系转换为子连接坐标系 |
axis | 设置旋转轴 |
limit | 设置关节的速度、力和半径 |
注意:link 和joint里面都有origin这两者的区别?
1.link可以看成是一个真实的物体
2.joint可以看成是坐标系
3.一个物体在空间中,需要知道其位置,以及其坐标系
4.link中的origin就是在parent link中的joint坐标系,也就是parent的中心坐标系下进行的平移旋转后画出的图形
但是其自身坐标系不变,还是在原来的位置
joint的origin是说相对于parent坐标系,自己的坐标系的位置
1 | <link name="wheel_1"> |
初始状态:
只更改:link 中的为:

发现link的位置变了,但是其自身坐标系没有变
再更改joint为<origin xyz="0.5 0 0 ">
link的位置还是上一步的位置,自身坐标系变了

关节类型
fixed:固定关节,不允许运动
continuous: 转动关节,可以绕单轴无限旋转
revolute: 旋转关节,类似于continuous 但是旋转角度有限
prismatic:滑动关节,沿某一轴线移动的关节,带有位置极限
floating: 浮动关节,允许进行平移、旋转运动
planar: 平面关节,允许在平面正交方向上平移或者旋转
参考链接:
- 本文作者: 蓉城蒲菊
- 本文链接: https://github.com/liangpu597/2020/07/16/URDF文件的编写/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!