URDF文件的编写

在ROS机器人系统中,想要制造一个机器人,就需要编写机器人描述文件。也就是URDF(Unified Robot Description Format, 统一机器人描述格式)。其使XML文件格式来描述机器人,ROS里面提供了URDF文件的C++解释器,可以解析这种格式。

1.创建功能包
catkin_creage_pkg robot1_description

2.在功能包下新建urdf文件夹,新建robot1.urdf


     
    
           
                 
                       
                 
            
            
                
            
                
     

     
           
                 
                       
                 
            
               
                
            
        
     

     
           
                 
                       
                 
            
               
           
     

     
           
                 
                       
                 
            
               
           
     

     
           
                 
                       
                 
            
               
           
     

     
           
           
           
     

     
           
           
           
     

     
           
           
           
     

     
           
           
           
     


这是一个最简单的机器人,由一个底盘+四个轮子组成 (这里有5个link, 对应的就有4个joint)

3.在功能包下新建launch文件夹以及display.launch



	
	
	
	
	
	
	      

注意:这里最后这个一开始需要注释掉,因为找不到urdf_tutorial

4.编译
catkin_make

5.启动roslaunch
$ roslaunch robot1_description display.launch model:='这里改成自己的路径/urdf/robot1.urdf’

或者可以在launch 文件下: roslaunch display.launch model:='这里改成自己的路径/urdf/robot1.urdf’ 也就是说,不加功能包的名字,也是可以进行启动的。

  1. 还需要启动rviz
    rosrun rviz rviz

7.打开了rviz后,里面什么都没有的

URDF文件的编写_第1张图片

点击左下角add,选择RobotMode

URDF文件的编写_第2张图片

URDF文件的编写_第3张图片

这里发现,小车的颜色不对,这里一定要注意,这里的map一定要改成baselink才会显示出小车真正的样子与颜色!!!!不然后续在里面改了,结果没看到效果!!!

URDF文件的编写_第4张图片
URDF文件的编写_第5张图片

补充:
连接(link)标签 官方详细说明

标签 功能
link 连接的可视化、碰撞和惯性属性设置
visual 设置连接的可视化属性
collision 设置连接的碰撞计算属性
inertial 设置连接的惯性属性
geometry 输入模型的形状。参数有:box、cylinder、sphere、radius等等
origin link相对于世界坐标系的移动和旋转
material 设置连接的颜色和纹理 如:color rgba颜色 由red/green/blue/alpha 组成,每一个数字在 [0,1] 内。
mass 连接重量(单位:kg)的设置

URDF文件的编写_第6张图片

关节(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坐标系,自己的坐标系的位置




     
           
           
           

初始状态:
URDF文件的编写_第7张图片

只更改:link 中的为:

URDF文件的编写_第8张图片

发现link的位置变了,但是其自身坐标系没有变

再更改joint为

link的位置还是上一步的位置,自身坐标系变了

URDF文件的编写_第9张图片
我的博客地址

参考链接:

  1. 创建urdf文件并在rviz中擦查看模型
    2.关于ufdf中link与joint的origin问题
    3.借鉴这个坐标转换图

你可能感兴趣的:(ros,URDF)