机器人的两种D-H参数 std 与mdh

经常用matlab robotics toolbox by Peter Corke ,因此对这里用的D-H参数还是比较清晰的。

以这两种参数构造一个连杆,画图 如下: (图片上传不成功)

简而言之:std 用的变换是 trotz(theta)*transl(0,0,d)*trotx(alpha)*transl(a,0,0)=

[ cos(theta), -cos(alpha)*sin(theta),  sin(alpha)*sin(theta), a*cos(theta)]
[ sin(theta),  cos(alpha)*cos(theta), -sin(alpha)*cos(theta), a*sin(theta)]
[          0,             sin(alpha),             cos(alpha),            d]
[          0,                      0,                      0,            1]

此时 连杆坐标系后置(从 SerialLink.rne_dh() 函数中得出),有的书上定义为传动轴坐标系

               mdh 用的变换是trotx(alpha)*transl(a,0,0)*trotz(theta)*transl(0,0,d)=

[            cos(theta),           -sin(theta),           0,             a]
[ cos(alpha)*sin(theta), cos(alpha)*cos(theta), -sin(alpha), -d*sin(alpha)]
[ sin(alpha)*sin(theta), sin(alpha)*cos(theta),  cos(alpha),  d*cos(alpha)]
[                     0,                     0,           0,             1]

此时 连杆坐标系前置(从 SerialLink.rne_mdh() 函数中得出),有的书上定义为驱动轴坐标系

可能写的太简单了,添加点===============

 

坐标系的建立 其Z轴依赖连杆前后的两个 关节轴线,如果 一个连杆的坐标系采用 前面的Z轴 ,就是修改的坐标系了。说说修改的D-H法。

Z轴容易确定,根据关节的方向。 因为是 当前X轴是 后一个Z轴与当前Z轴叉乘确定的,夹角为  -alpha ,所以是 绕当前X轴旋转 alpha 角度 ,可以使两个Z轴平行,再沿着当前X轴移动 距离a ,可以使两个Z轴重合,(这里绕当前Z轴一个转动和一个旋转 可以互换顺序);前面的两次变换 还使两个X轴的原点都在这个重合的Z轴上了,并且两个X轴的方向没有改变;因为theta 是当前X轴与后一个X轴的夹角, 在Z轴重合后,绕当前Z轴(注意是转动和旋转变换后的)  旋转 theta 可以转动当前X轴的 和后一个X轴平行,再继续沿着Z轴移动距离d,可以使X轴重合(这里绕Z轴的旋转和移动的前后顺序可以互换) ,此时 两个连杆的坐标系就重合了,也就是说 这4个变换 的综合变换 就是 相邻两个坐标系之间的变换。

因为第1个d 和 最后1个d 其实 可以任意设置大小,这里的偏好就是都设置为0,使得前两个坐标系更紧凑 ,最后两个坐标系更紧凑。

 

其实完全不按照D-H法,可以自定义坐标系,但必须连带着也到定义好 坐标系之间的变换,不管哪种坐标系,脑海里清晰的知道相邻两个坐标系 是怎么通过什么变换重合的,就行!!! 这才是写正解的要求的。

如下图是 kuka iiwa 的mdh ,图片中每行的参数 最后4个参数依次是 alpha ,a,theta, d

每行的参数经过 trotx(alpha)*transl(a,0,0)*trotz(theta)*transl(0,0,d) 得到一个齐次矩阵T ,上一个连杆的坐标系右乘这个T 得到本行中的连杆坐标系,这个T也是 本行中的连杆坐标系在上一个连杆坐标系中的投影矩阵。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值