D-H参数表与URDF的关系

本文仅描述连杆机构的D-H模型转URDF文件方法(纯手打,不依赖SolidWorks),其它机构请自行修改

1.D-H参数表中各参数的意义

D-H参数表与URDF的关系_第1张图片

2.URDF文件的构成



	
	...
	
	
        
        
        ...	
	
	
	...
	

标签代表机器人主体
标签代表一个连杆
标签代表一个关节

1. 连杆

代表一个连杆,其中有关于连杆所有三维和物理信息的描述:形状,颜色,质量,转动惯量,碰撞体积,详细的描述请移步ROS wiki,在这里我们只介绍我们需要的一些属性:


	
    	 
    	 
    	 
   
   
        
            
        
        
        
   
   
  		
		
			
		
	

标签包含了惯性参数
标签包含了碰撞体积参数
标签中包含了连杆机构的外观参数
这个我们先只需要用 标签:
   :形状,可以使自己定义的形状,也可以是从stl文件导入的3d模型,这里我们定义一个0.10.15的长方体。
  
  需要重点关注的:
  :相对于上一个轴坐标系中,这个连杆的位置,方向的变化。
   例如:
   其中 xyz代表在上一个坐标系中,这个连杆距离坐标系原点的位移;
  
   rpy代表当前连杆在上一个坐标系中的旋转
  
   注意,每次都是先旋转,后平移。
  
   需要强调的是:这只代表连杆机构在视觉上进行旋转平移,同理,连杆机构的惯性属性坐标系和碰撞检测坐标系也可以进行旋转平移,但这都不会引起连杆末端关节坐标系的旋转平移。

此处省略了连杆的惯性属性 和碰撞体积,这部分对于目前来说比较复杂,先不用。

2. 关节

关节元素描述关节的运动学和动力学,还指定关节的安全限制。


    
    
    
    

确定了关节处于那两个连杆之间,type制定关节类型,有固定,有限制旋转,无限制旋转等,具体请移步ROS wiki 。

我们重点关注关节坐标系相对于上一个关节坐标系的旋转平移是如何做到的
标签,与上文中讲到的一致,是描述关节坐标系旋转平移的,请注意,仍然是先旋转,后平移。
origin标签中的 x,y,z代表当前关节在上一个关节坐标系中沿着x,y,z轴平移量,单位是米;r,p,y带便当前坐标系在上一个坐标系中绕x,y,z轴的旋转弧度,单位是rad,由此通过连杆的树型结构便可以确定整个机器人主题上所有关节的位置和欧拉角。

3.由D-H参数表手打URDF文件:

首先,确认自己的机械臂 D-H参数,我们从网上找一个做实验

D-H参数表与URDF的关系_第2张图片
先创建机器人的base_link,这个连杆是整个机器人和外界链接的第一个连杆,默认初始方向为竖直向上。根据连杆1的D-H参数,base_link表示为:


       
            
                
            
            
            
       

然后创建关节1,关节1是连接base_link和link1(我们马上要创建个的下一个连杆),根据连杆2的D-H参数,joint1表示如下:


    
    
    
    

注意这里的origin参数
xyz = “0 0 0”;表示关节1在上一个坐标系中(即初始坐标系)没有位移;
rpy = “1.5708 0 1.5708”,表示关节1的坐标系在上一个坐标系中绕x轴旋转90°,绕z轴旋转90°;

注:绕y轴的旋转在D-H参数表中使用绕x 绕z组合表示,例如绕y轴90° = 绕z轴90° + 绕x轴90°

依据连杆1数据确定连杆2的位置和方向,依据连杆2数据创建新的link1:


       
            
                
            
            
            
       

同理,根据后边的连杆D-H参数可以依次建立连杆和关节element。

续:
再按照此过程编写完URDF文件后,joint的坐标和方向已经不存在问题了,link的方向可能需要调整,时间原因,过几天优化后把全自动生成URDF文件的python脚本放上来

你可能感兴趣的:(ROS,D-H,URDF,D-H建模,D-H与URDF的关系)