前言
仅整理了KDL里Chain运动学相关内容
基本数据类型
- Vector:double[3],3维向量
- Rotation:double[9],3*3矩阵
- Frame:Vector+Rotation,变换矩阵
- Twist:Vector(平移速度)+Vector(旋转速度)
- Wrench:Vector(力)+Vector(转矩)
- Vecto2r:double[2],2维向量
- Rotation2: $cos\theta$,$sin\theta$,旋转矩阵
- Frame2:Vector2+Rotation2,变换矩阵
Kinematic Trees运动学结构数据类型
- Tree:开链机构,树
- Chain:无分支的运动链
Chain和Tree都由最基本的Segments元素串接而成,Segment可以理解为机构运动链上的一个运动部件。如下图所示Segment包含关节Joint以及部件的质量/惯性属性RigidBodyInertia,并且定义了一个参考坐标系Freference和末端坐标系Ftip。
末端到关节坐标系的转换由Ttip描述。在一个运动链或树中,子部件会被添加到父部件的末端,因此上一个部件的Ftip就是下一个部件的参考坐标系Freference (tip frame of parent = reference frame of the child)。通常Fjoint和Freference是重合的,但是也可以存在偏移。
运动学算法框架
以下均为Chain相关运动学算法类
基类
SolverI
:solver interface用来存储和描述最近一次错误
正运动学
ChainFkSolverPos
继承自SolverI
:Chain的正运动学接口ChainFkSolverPos_recursive
继承自ChainFkSolverPos
:递归fkChainFkSolverVel_recursive
继承自ChainFkSolverPos
:递归fk-vel
逆运动学
ChainIkSolverPos
继承自SolverI
:Chain的逆运动学接口ChainIkSolverPos_LMA
继承自ChainIkSolverPos
:逆运动学——莱文贝格-马夸特,Levenberg-MarquardtChainIkSolverPos_NR
:逆运动学——牛顿-拉夫森,Newton-RaphsonChainIkSolverPos_NR_JL
:逆运动学——牛顿-拉夫森带关节限位,Newton-Raphson with joint limitsChainIkSolverVel_pinv
继承自ChainIkSolverPos
:ik-vel——广义伪逆,generalize pseudo inverseChainIkSolverVel_pinv_nso
:ik-vel——广义伪逆(冗余机器人优化)ChainIkSolverVel_pinv_givens
:ik-vel——广义伪逆(Givens)ChainIkSolverVel_wdls
:ik-vel——加权伪逆(阻尼最小二乘)