写在前面:我没有找到PUMA560的SDH过程,因此这是我自己写的,而且按照的是我的理解。要是有更权威的来源,欢迎留个评论(私信关了,毕竟不是用来做其他事,就是用来写工作报告的)。
教材上的MDH(朱大昌,《机器人机构学基础》,机械工业出版社):
按照给的参数表,写的matlab代码如下(代码的架构来源于PUMA560机器人D-H参数和改进DH参数_钱百万 Ě的博客-CSDN博客_puma560dh参数https://blog.csdn.net/qq_44926743/article/details/105777789?utm_source=app&app_version=4.21.0&code=app_1562916241&uLinkId=usr1mkqgl919blen),
但是他给出的结果(teach图片,还有部分常数在表格中的位置)有些与我不太一样,为了自己的连贯性,我稍作了些修改,如果侵权就再写一个。
%%改进D-H模型
% theta d a alpha offset
SL1=Link([0 0 0 0 0 ],'modified');
SL2=Link([0 0.149 0 -pi/2 0 ],'modified');
SL3=Link([0 0 0.432 0 0 ],'modified');
SL4=Link([0 0.433 0.02 -pi/2 0 ],'modified');
SL5=Link([0 0 0 pi/2 0 ],'modified');
SL6=Link([0 0 0 -pi/2 0 ],'modified');
p560=SerialLink([SL1 SL2 SL3 SL4 SL5 SL6],'name','puma560');
p560.teach([pi/2 0 -pi/2 0 0 0]);
得到的图片是这样的(稍微调整了一下观看角度,使其和课本上的角度差不多):
我自己写的SDH:
参数定义用这个(虽然我也不知道我用对了没有):机器人学回炉重造(1):正运动学、标准D-H法与改进D-H法的区别与应用(附ABB机械臂运动学建模matlab代码) - 灰信网(软件开发博客聚合) (freesion.com)https://www.freesion.com/article/66901321588/
matlab代码:
%%标准D-H模型
% theta d a alpha offset
SL1=Link([0 0 0 -pi/2 0 ],'standard');
SL2=Link([0 0.149 0.432 0 0 ],'standard');
SL3=Link([0 0 0.02 -pi/2 0 ],'standard');
SL4=Link([0 0.433 0 pi/2 0 ],'standard');
SL5=Link([0 0 0 -pi/2 0 ],'standard');
SL6=Link([0 0 0 0 0 ],'standard');
p560=SerialLink([SL1 SL2 SL3 SL4 SL5 SL6],'name','puma560');
p560.teach([pi/2 0 -pi/2 0 0 0]);
输出结果是这个:
总结和遗留问题:
我的建系方法在空间坐标和位姿上都与课本给的一致(见xyz坐标与RPY角),但是在关节上很容易看出不一致。第一、第二处关节结构看起来就很不一样。有兴趣的同学建议复制代码去拖动一下,还能发现一些说不出来的不一样。
总之我个人觉得,要是会了MDH,干脆就直接使用MDH法来建立,毕竟都说它比较适用,而且能有比较多权威的参考书做辅助。因此我没有去做SDH的逆解,即使我知道好像可以用ikine()函数来解决。
相关工具箱用他的:matlab rvctools工具使用说明_panjinliang066333的博客-CSDN博客_rvctools使用说明https://blog.csdn.net/panjinliang066333/article/details/121636324