栗子

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(关节空间)









总结





