首页天道酬勤机械臂运动学逆解,机械臂正逆运动学总结

机械臂运动学逆解,机械臂正逆运动学总结

admin 06-14 03:57 244次浏览

[四]机械臂逆运动学运动学运动学分析在已知每个关节姿态的前提下求解末端执行器姿态。 反向运动学研究的问题是控制末端执行器到达某个位置时,每个关节应该处于什么样的姿势。

反向运动学的基本思想是,与正向运动学相反,对我们的机械臂来说,知道末端执行器的位置和方向,求出每个关节的角度。 我们机械臂的三维运动很复杂,这里为了简化模型便于理解,可以简化模型,去除下面云台的旋转关节,在二维平面上进行运动学分析。

其中,0、1、2是各关节的角度、未知量。 p(x,y,)是末端执行器的姿势指示,x和y是OXY平面上的坐标,并且末端执行器的方向。 一般来说,在我们阅读的文章中,计算运动学分析是一个很多矩阵变换,实际上用单片机运行这些算法很费时间,也可以说不能满足实时控制。 适用于matlab中的运算。 所以,为了满足实时控制的需要,需要寻找高效的方案。 在这里,我们使用几何法进行分析。

根据上图,可以很容易地列举以下方程。

其实,这也是运动学正解的一种表达方式,既然这么容易表达,为什么还要学习DH模型呢? 主要是我们需要通过这样的机构掌握共同的方法,在以后解决更复杂的模型分析时有余地。 毕竟几何法没有通用性,每个模型都需要单独分析,超出我们感性认识的复杂模型更是无能为力。

简化上述方程式,将式(3)代入式(2)和式(1),结果如下。

用同样的方法可以求出2,反运动学的计算就此完成。 很明显,最终有两个正确的解,这可以从图1的虚线部分看出。 一般来说,选择虚线部分的解,使各关节上的力稍小。

c代码:

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */u8 kinematic _ AAAA m=L2*cos (阿尔法)-x; //中间变量n=L2 * sin (alpha )-y; //中间变量k=(L1*L1-L0*L0-M*M-N*N )/2/l0; //中间变量a=m*m n*n; //求解一元二次方程b=-2*n*k; c=k*k-m*m; if(B*B-4*A*C0 )返回0; //非实数解theta1=(-bsqrt ) b*B-4*a*c ) ) )/2/a;//得到一阶二次方程的解,只取一个,另一个解是(-Bsqrt ) b ) B-4*A*C ) )/2/Atheta1=Asin(Theta1) ) *180/PI; //将弧度改为角度if(theta190 ) theta1=90; //舵机最大角度90if(theta1-90 ) theta1=-90; k=(L0*L0-L1*L1-M*M-N*N )/2/l1; //过程系数a=m*m n*n; //求解一元二次方程b=-2*n*k; c=k*k-m*m; if(B*B-4*A*C0 )返回0; //非实数解S1PS2=(-B-sqrt ) B*B-4*A*C ) ) )/2/a; //得到一阶二次方程的解,只取一个,另一个解为(-Bsqrt ) b ) B-4*A*C ) )/2/AS1PS2=Asin(S1PS2 ) *180/PI; //弧度为角度if(s1PS290 ) theta2=90; if(S1PS2-90 ) theta2=-90; theta2=S1 PS2-theta 1; if(theta290 ) theta2=90; //舵机最大角度90if(theta2-90 ) theta2=-90; //控制舵机最大角度90theta3=alph a* 180/pi-theta1- theta 2; //求关节3角度if(theta390 ) theta3=90; if(theta3-90 ) theta3=-90; //舵机最大角度90target1=750-(beta (* ratio; //作用于输出target2=789(theta1-90 ) *Ratio; target3=717-(theta2) *Ratio; target4=702-(Theta3) *Ratio; 返回0; }

Github: Support for password authentication was rephp.ini错误日志路径如何配置
be replaced with,be finished in stringbuilder删除,c中string是什么意思
相关内容