栗子
Cragi DH
标准DH
逆解
via points
条件设定
求末端的旋转矩阵
由z-y-x顺序构建的旋转矩阵反推欧拉角
http://t.csdnimg.cn/9tnke
由z-y-z顺序构建的旋转矩阵反推欧拉角
http://t.csdnimg.cn/GmsBH
c++代码
#include <iostream>
#include <cmath>
using namespace std;
int main(){//求z(α)y(β)z(γ)构建的旋转矩阵,求三个角度double x,y,pi=3.1415926,alpha=0,Beta=0,Gama=0;double r[4][4];for(int i=1;i<=3;++i){for(int j=1;j<=3;++j)cin >> r[i][j];}Beta = atan2(sqrt(pow(r[3][1],2)+pow(r[3][2],2)),r[3][3]) * 180/pi;//特殊情况if(Beta==0){alpha = 0;Gama = round(atan2(-r[1][2],r[1][1]));}else if(Beta == 180){alpha = 0;Gama = round(atan2(r[1][2],-r[1][1]));}else {alpha = round(atan2(r[2][3]/sin(Beta),r[1][3]/sin(Beta)) * 180/pi);Gama = round(atan2(r[3][2]/sin(Beta),-r[3][1]/sin(Beta)) * 180/pi);}cout << "alpha:" << alpha << endl;cout << "beta:" << round(Beta) << endl;cout << "gama:" << Gama << endl;return 0;
}
从末端旋转矩阵
笛卡尔空间下的欧拉角,需减去180°才与DH坐标系下的姿态相同
轨迹规划——方法1(笛卡尔空间)
欧拉角解法
DH定义法与欧拉角度的异同
逆解流程:建立坐标系——构建DH表——写出系列变换矩阵——利用变换矩阵之间的关系构建等式(代数法)——逐步求出各个关节角度(以P2轨迹点位姿求θ1举例)
左式 = 右式,372c1- 227s1 = 0 ,求出 θ1= 59°
左式: T01逆矩阵 * T06 * T56逆矩阵:
右式 = T12 连乘至 T45:
求得θ1=59°
参考:http://t.csdnimg.cn/zX5mY
轨迹规划——方法2(关节空间)
总结