运动学

kinematics,包括正向与逆向。用于joint-space和end-effector Cartesian-space的转换

正向运动学

逆向运动学

在机器人的逆运动学的数值解法中,有两种常用的方法: - differential inverse kinematics (微分逆运动学,differential ik) - inverse kinematics (为了与微分逆运动学区分开来,我们叫direct inverse kinematics,direct ik) 为了比较二者差别,用末端位姿ik问题举例 1. direct ik就是直接求出一组关节角度,使得末端位姿精确达到目标。先算好终点,然后慢慢插值“搬过去”。如果目标和当前姿态差距大,中间轨迹可能不平滑甚至奇怪。 2. differential ik:求每时刻的关节速度​,让末端位姿残差指数衰减,边执行边优化 Differential IK 可以看作 用 Gauss-Newton 方法迭代求解 Direct IK 的一种在线实现

quaternion四元数

四元数定义:q=w+xi+yj+zk

w,x,y,z是实数,ijk是虚数

当用一个四元数乘以一个向量时,实际上就是让该向量围绕着这个四元数所描述的旋转轴,转动这个四元数所描述的角度而得到的向量。

w表示旋转角度 w=cos(theta/2),其中theta是旋转角,(xyz)是旋转轴:(x,y,z)=sin(theta/2)*(x,y,z)旋转轴

比如绕y轴逆时针旋转90度,quat=(0.7,0,0.7,0),绕x轴旋转90度,quat=(0.7,0.7,0,0),复合起来的结果可以看错是(w+xi+yj+zk)的矢量计算

算法

  1. lerobot用的是placo
  2. issac用的是Differential inverse kinematics (lk) controller,算是一个比较通用的吧?