机缘巧合之下开始接触机械臂相关知识。出于兴趣,在有限的时间内初步完成Denso机械臂的驱动控制及简单的运动规划。
主要解决和实现内容分为3部分。
1是驱动器的通信,可以使用CAN的方式,也可以使用Ethercat的方式。CAN最大速率可达1Mb/s、线长可达40米,一个CAN网络最多可支持127个节点。EtherCAT是全双工通讯,最多支持65535个节点,线长可达100米。本博客使用线长10米。
2是D-H参数测量和计算,以及坐标系的建立,因为D-H本身并没有对坐标系的建立进行严格限制,所以相同的D-H参数表也会得到不同的坐标系,从而决定了机械臂末端对于基底的位置的不同。这里的基底其实指的是底座的坐标系。
3是机械臂或者说是机械臂运动学正解和逆解的学习和计算。正解是已知各个驱动电机转动的角度进而求解末端位置相对于基底的坐标,电机顺序一定的情况下得到的末端位置是已知且唯一的。逆解是已知机械臂末端对于基底的位置和姿态,求出各个驱动器电机需要转动的角度。由于多种原因解析解可能不是唯一的,而且难解,大家会采用数值解。
驱动器的通信作为最基础的部分,现在由于对于同步速率的要求,广泛使用的是Ethercat的通信。EtherCAT开发的目的就是让以太网可以运用在自动化应用中。如果要了解Ethercat那么也就必须了解一下其发明者Beckhoff公司,使用一下其公司的软件TwinCAT。这个软件是Ethercat的主站软件,能够识别并且操作几乎所有的Ethercat驱动器。
除了Beckhoff公司的TwinCAT这个强大软件之外,目前常见开源的主站代码为2种。
1是RT-LAB开发的SOEM,也就是Simple OpenSource EtherCAT Master。
2是EtherLab的the IgH EtherCAT Master。
使用起来SOEM的简单一些,而the IgH EtherCAT Master更复杂一些,但对EtherCAT的实现更为完整。使用Ethercat通信需要注意的就是不是所有的网卡都支持,需要买特定的intel网卡。
主要参考网址
https://blog.csdn.net/zhandl100
---------------------------------------------------------------------------------------------------------------------------------------------------
D-H参数表的建立网上有很多,可以参考的书籍也有很多,有一本叫机器人学看着来做的,还是可以做的。
主要参考网址
https://blog.csdn.net/yazhouren/article/details/78918448
https://blog.csdn.net/HopefulLight/article/details/78194393
https://blog.csdn.net/pengjc2001/article/details/70156333 这个puma560的DH参数及坐标系的建立是十分详细而可信的。
针对Denso机械臂建立的D-H表格如下。
theta_i | d_i | alpha_i | a_i | |
0 | 0 | 0.15 | -90 | 0.075 |
1 | -90 | 0 | 0 | 0.27 |
2 | 0 | 0 | -90 | 0.09 |
3 | 0 | 0.295 | 90 | 0 |
4 | 90 | 0 | -90 | 0 |
5 | 0 | 0 | 0 | 0 |
机械臂的正解逆解是关于几何及线性代数的结合体,可以看相关解算过程,自己来写。也可以采用ROS所采用的开源库,也可以用很多其他优秀的IK(Inverse Kinematic)库。
运动规划则需要考虑形构空间和工作空间,也需要考虑障碍物的避碰,也需要考虑插值方式,得到最有的规划路径。
经过上述一系列的学习最终驱动Denso机械臂在某高度平面位置画出普通四边形如下,当然了也可以到达工作空间的任意位置。该控制器同时也能够驱动Elmo驱动器和清能德创的驱动器来控制相应的电机转动。
从精度上看还是在可接受范围之内的,而且程序的重复性能比较好,基本不会出现太大偏差,利用粗线笔和细线笔分别做了测试。目前耗费时间有点长,主要是因为插值点过于密集和电机幅度限制所导致的。后期可以继续处理。