上一篇主要讲述了机器人学中用到的几何基础知识,以及在KDL中的实现和使用。本篇将更加深入的涉及到机器人学中的内容,主要是如何表示一个串联型机械臂,以及KDL中的实现方式。
KDL中使用了两个使用广泛且技术成熟的机器人作为例子:puma560(六自由度)和kukaLWR(七自由度)。本篇主要使用六自由度的puma560作为例子。阅读本篇需要有一定的机器人学常识,至少要读过《机器人学导论》的前三章。
在KDL中创建puma560机器人很简单,只需要调用一个函数就可以了。
Chain p560=Puma560();
要想知道这个函数里面做了什么,首先有三个KDL里的概念要清楚:Joint,Segment,Chain。
1. KDL::Joint
A Joint allows translation or rotation in one degree of freedom between two Segments
Joint(关节)可以使两个Segments之间有一个自由度的旋转或平移。
1.1 创建一个Joint
首先,Joint类里面定义了一个Joint的类型(平移、旋转、None):
typedef enum { RotAxis,RotX,RotY,RotZ,TransAxis,TransX,TransY,TransZ,None} JointType;
创建Joint的函数有几个