KDL运动学动力学库简介

前言

仅整理了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。

Segments

末端到关节坐标系的转换由Ttip描述。在一个运动链或树中,子部件会被添加到父部件的末端,因此上一个部件的Ftip就是下一个部件的参考坐标系Freference (tip frame of parent = reference frame of the child)。通常Fjoint和Freference是重合的,但是也可以存在偏移。

Chain

Tree

运动学算法框架

以下均为Chain相关运动学算法类

基类

  • SolverI:solver interface用来存储和描述最近一次错误

正运动学

  • ChainFkSolverPos继承自SolverI:Chain的正运动学接口
  • ChainFkSolverPos_recursive继承自ChainFkSolverPos:递归fk
  • ChainFkSolverVel_recursive继承自ChainFkSolverPos:递归fk-vel

逆运动学

  • ChainIkSolverPos继承自SolverI:Chain的逆运动学接口
  • ChainIkSolverPos_LMA继承自ChainIkSolverPos:逆运动学——莱文贝格-马夸特,Levenberg-Marquardt
  • ChainIkSolverPos_NR:逆运动学——牛顿-拉夫森,Newton-Raphson
  • ChainIkSolverPos_NR_JL:逆运动学——牛顿-拉夫森带关节限位,Newton-Raphson with joint limits
  • ChainIkSolverVel_pinv继承自ChainIkSolverPos:ik-vel——广义伪逆,generalize pseudo inverse
  • ChainIkSolverVel_pinv_nso:ik-vel——广义伪逆(冗余机器人优化)
  • ChainIkSolverVel_pinv_givens:ik-vel——广义伪逆(Givens)
  • ChainIkSolverVel_wdls:ik-vel——加权伪逆(阻尼最小二乘)

参考