四足机器人——3自由度机械臂正逆解(肘式+膝式)

四足机器人——3自由度机械臂正逆解(肘式+膝式)


项目介绍

最近在做一个12自由度四足机器人的项目,每条腿3个自由度。涉及到足端位姿关节逆解的问题,于是进行了简单的推导,并且编写了Matlab仿真程序,有需要的童鞋可以点击下载
四足机器人腿步有肘式和膝式之分,很好理解,顾名思义。因为想要探索一下前肘后膝四足机器人和双肘式、双膝式的不同,因此推导了两种腿部关节的逆解。为了简单起见,没有用到机器人学复杂的坐标转换,只需要基础的初高中几何知识就可以理解。

说明:以下推导x,y,z值取正方向为正值,反方向为负值;角度值逆时针为正值,顺时针为负值。
O、A、B、C 表示点,a、b、c、l 表示边长,q1、q2、q3表示角度。

肘式

 肘式
正解推导(已知关节角度求坐标)
A x = 0 Ax=0 Ax=0 A y = a ∗ s i n ( q 3 ) Ay = a*sin(q3) Ay=asin(q3) A z = − a ∗ c o s ( q 3 ) Az = -a*cos(q3) Az=acos(q3)
B x = − b ∗ s i n ( − q 2 ) Bx = -b*sin(-q2) Bx=bsin(q2) B y = [ b ∗ c o s ( − q 2 ) + a ] ∗ s i n ( q 3 ) By=[b*cos(-q2)+a]*sin(q3) By=[bcos(q2)+a]sin(q3) B z = − [ b ∗ c o s ( − q 2 ) + a ] ∗ c o s ( q 3 ) Bz=-[b*cos(-q2)+a]*cos(q3) Bz=[bcos(q2)+a]cos(q3)
C x = − b ∗ s i n ( − q 2 ) + c ∗ c o s ( − q 2 − q 1 ) Cx=-b*sin(-q2)+c*cos(-q2-q1) Cx=bsin(q2)+ccos(q2q1) C y = [ b ∗ c o s ( − q 2 ) + a + c ∗ s i n ( − q 2 − q 1 ) ] ∗ s i n ( q 3 ) Cy=[b*cos(-q2)+a+c*sin(-q2-q1)]*sin(q3) Cy=[bcos(q2)+a+csin(q2q1)]sin(q3) C z = − [ b ∗ c o s ( − q 2 ) + a + c ∗ s i n ( − q 2 − q 1 ) ] ∗ c o s ( q 3 ) Cz=-[b*cos(-q2)+a+c*sin(-q2-q1)]*cos(q3) Cz=[bcos(q2)+a+csin(q2q1)]cos(q3)
逆解推导(已知坐标求关节角度)
q 3 = a r c t a n ( − y / z ) q3=arctan(-y/z) q3=arctan(y/z) l = ( x 2 + ( y − a ∗ s i n ( q 3 ) ) 2 + ( z + a ∗ c o s ( q 3 ) ) 2 ) l=\sqrt{(x^2+(y-a*sin(q3))^2+(z+a*cos(q3))^2)} l=(x2+(yasin(q3))2+(z+acos(q3))2) q 2 = − a r c c o s ( ( b 2 + l 2 − c 2 ) / ( 2 ∗ b ∗ l ) ) + a r c s i n ( x / l ) q2=-arccos((b^2+l^2-c^2)/(2*b*l))+arcsin(x/l) q2=arccos((b2+l2c2)/(2bl))+arcsin(x/l) q 1 = p i / 2 − a r c c o s ( ( b 2 + c 2 − l 2 ) / ( 2 ∗ b ∗ c ) ) q1=pi/2-arccos((b^2+c^2-l^2)/(2*b*c)) q1=pi/2arccos((b2+c2l2)/(2bc))

膝式

膝式
正解推导(已知关节角度求坐标)
A x = 0 Ax=0 Ax=0 A y = a ∗ s i n ( q 3 ) Ay = a*sin(q3) Ay=asin(q3) A z = − a ∗ c o s ( q 3 ) Az = -a*cos(q3) Az=acos(q3)
B x = b ∗ s i n ( q 2 ) Bx = b*sin(q2) Bx=bsin(q2) B y = [ b ∗ c o s ( q 2 ) + a ] ∗ s i n ( q 3 ) By=[b*cos(q2)+a]*sin(q3) By=[bcos(q2)+a]sin(q3) B z = − [ b ∗ c o s ( q 2 ) + a ] ∗ c o s ( q 3 ) Bz=-[b*cos(q2)+a]*cos(q3) Bz=[bcos(q2)+a]cos(q3)
C x = b ∗ s i n ( q 2 ) − c ∗ c o s ( q 2 + q 1 ) Cx=b*sin(q2)-c*cos(q2+q1) Cx=bsin(q2)ccos(q2+q1) C y = [ b ∗ c o s ( q 2 ) + a + c ∗ s i n ( q 2 + q 1 ) ] ∗ s i n ( q 3 ) Cy=[b*cos(q2)+a+c*sin(q2+q1)]*sin(q3) Cy=[bcos(q2)+a+csin(q2+q1)]sin(q3) C z = − [ b ∗ c o s ( q 2 ) + a + c ∗ s i n ( q 2 + q 1 ) ] ∗ c o s ( q 3 ) Cz=-[b*cos(q2)+a+c*sin(q2+q1)]*cos(q3) Cz=[bcos(q2)+a+csin(q2+q1)]cos(q3)
逆解推导(已知坐标求关节角度)
q 3 = a r c t a n ( − y / z ) q3=arctan(-y/z) q3=arctan(y/z) l = ( x 2 + ( y − a ∗ s i n ( q 3 ) ) 2 + ( z + a ∗ c o s ( q 3 ) ) 2 ) l=\sqrt{(x^2+(y-a*sin(q3))^2+(z+a*cos(q3))^2)} l=(x2+(yasin(q3))2+(z+acos(q3))2) q 2 = a r c c o s ( ( b 2 + l 2 − c 2 ) / ( 2 ∗ b ∗ l ) ) − a r c s i n ( − x / l ) q2=arccos((b^2+l^2-c^2)/(2*b*l))-arcsin(-x/l) q2=arccos((b2+l2c2)/(2bl))arcsin(x/l) q 1 = a r c c o s ( ( b 2 + c 2 − l 2 ) / ( 2 ∗ b ∗ c ) ) − p i / 2 q1=arccos((b^2+c^2-l^2)/(2*b*c))-pi/2 q1=arccos((b2+c2l2)/(2bc))pi/2

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值