古月居《四足机器人控制与仿真入门》学习笔记,视频链接: link

视角分解

静止状态

古月居
上图描述了一个四足机器人右前腿静止状态下的的后视图和右视图。O点为该腿的坐标系原点,P点为腿的末端点。共有3个自由度即3个旋转关节,3个关节连杆第一段关节长度为h,第二段关节长度为hu,第三段关节长度为hl。三个旋转角从上到下分别定义为gamma,alpha,beta

运动状态

古月居

上图描述了一个四足机器人右前腿运动状态下的的后视图和右视图。规定关节顺时针旋转为正方向。

运动学逆解

单腿运动学逆解的目标是给定足末端点的坐标(x,y,z),求解能够达到这一目标的各关节角度,即:
( x , y , z ) → ( g a m m a , a l p h a , b e t a ) s . t .     h , h u , h l 已知 (x,y,z)\to(gamma,alpha,beta) \\ s.t. \ \ \ h,hu,hl已知 (x,y,z)(gamma,alpha,beta)s.t.   h,hu,hl已知

求解gamma角

古月居
dyz为从O点到P点的线段在yz平面上的投影,则dyz长度为:
d y z = y 2 + z 2 dyz = \sqrt{y^2+z^2} dyz=y2+z2
lyz为顶点距足端点在yz平面上投影的距离,长度为:
l y z = d y z 2 − h 2 lyz = \sqrt{dyz^2-h^2} lyz=dyz2h2

gamma_yz = -arctan(y/z)
gamma_h_offset = -arctan(h/lyz)
最终可得:
gamma = gamma_yz - gamma_h_offset

求解beta角

古月居
将上述关节投影在yz平面上可得如下几何关系:
古月居
其中
l x z ′ = l y z 2 + x 2 lxz' = \sqrt{lyz^2+x^2} lxz=lyz2+x2
于是可得如下方程组:
{ ( h u + n ) 2 + m 2 = l x z ′ 2 n 2 + m 2 = h l 2 \left\{ \begin{array}{c} (hu+n)^2+m^2=lxz'^2 \\ n^2+m^2=hl^2 \end{array} \right. {(hu+n)2+m2=lxz′2n2+m2=hl2
联立解得: n = ( l x z ′ 2 − h l 2 − h u 2 ) 2 ∗ h u n=\frac{(lxz'^2-hl^2-hu^2)}{2*hu} n=2hu(lxz′2hl2hu2)
于是可得beta=-arccos(n/hl)

求解alpha角

古月居

同样几何关系描述如下:
古月居

易得
alpha_xz’ = -arctan(x/lyz)
alpha_off = arccos( (hu+n) / lxz’ )
则:
alpha = alpha_xz’+alpha_off

matlab代码实现

输入为足末端点坐标(x,y,z),输出为三个关节的角度
函数如下:

function [gamma,alfa,beta] = xyz(x,y,z)
h=0.15;
hu=0.35;
hl=0.382;
dyz=sqrt(y.^2+z.^2);
lyz=sqrt(dyz.^2-h.^2);
gamma_yz=-atan(y/z);
gamma_h_offset=-atan(h./lyz);
gamma=gamma_yz-gamma_h_offset;
%
lxzp=sqrt(lyz.^2+x.^2);
n=(lxzp.^2-hl.^2-hu.^2)/(2*hu);
beta=-acos(n/hl);

%
alfa_xzp=-atan(x/lyz);
alfa_off=acos((hu+n)/lxzp);
alfa=alfa_xzp+alfa_off;

%输出角度为弧度
end

课程链接:四足机器人控制与仿真入门

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐