【关于四足机器人那些事】运动学建模及其基于运动学的姿态调节(汇总)

本文详细探讨了四足机器人的平面及3D运动学建模,包括几何建模、正解与逆解公式推导,以及俯仰角、滚转角、偏航角的坐标变换和逆运动学求解。通过坐标变换和姿态调节矩阵,实现四足机器人的精准姿态控制。
摘要由CSDN通过智能技术生成

一、效果演示

〔四足机器人〕姿态调节

[四足机器人]动态调整仿真测试

二、平面运动学建模

本篇将会对四足机器人的腿部进行数学建模,求解器正逆运动学解,包含详细公式推导与计算

不考虑横向髋关节运动时,四足机器人的腿部可以简化成二连杆机构

1、几何建模

我们将位置点P摆到第一象限,以便符合我们的直觉:

2、运动学正解

如果已知 θ 1 , θ 2 \theta_1, \theta_2 θ1,θ2,可以通过下式求P[x,y]位置:

x = L 1 cos ⁡ θ 1 + L 2 c o s ( θ 1 + θ 2 ) x = L_1\cos\theta_1+ L_2cos(\theta_1 + \theta_2) x=L1cosθ1+L2cos(θ1+θ2)

y = L 1 sin ⁡ θ 1 + L 2 sin ⁡ ( θ 1 + θ 2 ) y = L_1\sin\theta_1 + L_2\sin(\theta_1 + \theta_2 ) y=L1sinθ1+L2sin(θ1+θ2)

如果不明白上面两条公式如何来的,画一条辅助线就能够明白了,如下图:

3、逆解

已知P[x,y]位置,求 θ 1 , θ 2 \theta_1, \theta_2 θ1,θ2, 我们用代数的方法求逆解

首先两边平方相加:

x 2 + y 2 = ( l 1 s i n ( θ 1 ) + l 2 s i n ( θ 1 + θ 2 ) ) 2 + ( l 1 c o s ( θ 1 ) + l 2 c o s ( θ 1 − θ 2 ) ) 2 x^2 + y^2 = (l_1sin(\theta_1) + l_2sin(\theta_1 + \theta_2))^2 + (l_1cos(\theta_1) + l_2cos(\theta_1 - \theta_2))^2 x2+y2=(l1sin(θ1)+l2sin(θ1+θ2))2+(l1cos(θ1)+l2cos(θ1θ2))2

将表达式展开,并写成更简洁的形式,其中 c o s θ 1 = c 1 , c o s θ 2 = c 2 cos\theta_1=c1, cos\theta_2=c2 cosθ1=c1,cosθ2=c2以此类推:

x 2 + y 2 = l 1 2 s 1 2 + 2 l 1 l 2 s 1 s 12 + l 1 2 c 1 + 2 l 1 l 2 c 1 c 12 + l 2 2 s 12 2 + l 2 2 c 12 2 x 2 + y 2 = l 1 2 + l 2 2 + 2 l 1 l 2 ( s 1 s 12 + c 1 c 12 ) \begin{aligned} &x^2 + y^2 = l_1^2s_1^2 + 2l_1l_2s_1s_{12} + l_1^2c_1 + 2l_1l_2c_1c_{12} + l_2^2s_{12}^2 + l_2^2c_{12}^2\\ \\ &x^2 + y^2 = l_1^2 + l_2^2 + 2l_1l_2(s_1s_{12} +c_1c_{12}) \end{aligned} x2+y2=l12s12+2l1l2s1s12+l12c1+2l1l2c1c12+l22s122+l22c122x2+y2=l12+l22+2l1l2(s1s12+c1c12)

根据和差公式:
s 1 s 12 = s 1 2 c 2 − s 1 c 1 s 2 s_1s_{12} = s_1^2 c_2 - s_1c_1 s_2 s1s12=s12c2s1c1s2

c 1 c 12 = c 1 2 c 2 + s 1 c 1 s 2 c_1c_{12} = c_1^2 c_2 + s_1c_1 s_2 c1c12=c12c2+s1c1s2

最终得到:

x 2 + y 2 = l 1 2 + l 2 2 + 2 l 1 l 2 c 2 x^2 + y^2=l_1^2 + l_2^2 + 2l_1l_2c_2 x2+y2=l12+l22+2l1l2c2

或者直接利用python对表达式进行化简

L1 = symbols('L1')
L2 = symbols('L2')
b = symbols('b')
a = symbols('a')

x = - L1 * sin(a) - L2 * sin(a - b)
y = - L1 * cos(a) - L2 * cos(a - b)

temp = x**2 + y ** 2
result = simplify(temp)
print('x**2 + y ** 2 = ', result)

我们能够得到同样结果

x**2 + y ** 2 = L1**2 + 2*L1*L2*cos(b) + L2**2

求得
cos ⁡ θ 2 = − l 1 2 − l 2 2 + x 2 + y 2 2 l 1 l 2 sin ⁡ θ 2 = ± 1 − cos ⁡ 2 θ 2 \begin{aligned} &\cos\theta_2 = \frac{- l_{1}^{2} - l_{2}^{2} + x^{2} + y^{2}}{2 l_{1} l_{2}}\\ \\ &\sin\theta_2 = \pm\sqrt{1-\cos^2\theta_2} \end{aligned} cosθ2=2l1l2l12l22+x2+y2sinθ2=±1cos2θ2

这里在求解时需要注意x,y值,验证其是否超过腿部动作空间。

sin ⁡ θ 2 \sin\theta_2 sinθ2有两个取值,会对 θ 1 \theta_1 θ1的值产生影响,在我们当前使用是关节配置方式, sin ⁡ θ 2 \sin\theta_2 sinθ2取正值, 即 sin ⁡ θ 2 = 1 − cos ⁡ 2 θ 2 \sin\theta_2 = \sqrt{1-\cos^2\theta_2} sinθ2=1cos2θ2

接下来我们通过正解来求 θ 1 \theta_1 θ1,先对公式进行以下变换:

x = k 1 s 1 + k 2 c 1 x = k_1s_1 + k_2c_1 x=k1s1+k2​</

  • 20
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值