四足机器人控制算法学习总结

轨迹控制
机器人足端曲线使用贝赛尔曲线等轨迹设定,控制方法简单,但是很难适应多变的地形。

分解式虚拟模型步态算法VMC
介绍

https://zhuanlan.zhihu.com/p/69869440

VMC 控制方法是利用假想的虚拟弹簧构件连接机器人内部作用点,或者连接作用点与外部环境,产生相应的虚拟力来“驱使”机器人实现期望的运动。这些虚拟力通过Jacobian 矩阵计算得到期望的关节力矩作为电机的控制输入。
其需要计算腿部Jacobian矩阵,但是忽略了腿部的质量,在腿高速运动时误差巨大。又因为它使用pd控制器将足端力矩反应到电机力矩,必须有位置误差才能驱动,效果不怎么样,说是有柔顺作用,也不怎么能体现出来。

阻尼导纳控制
介绍

https://blog.csdn.net/qq_43786066/article/details/105459346
https://zhuanlan.zhihu.com/p/65034861

阻尼控制直接控制力,需要末端有力传感器,导纳控制是通过控制位置来控制力,那它跟VMC就差不多了,也是通过位置误差驱动力。

弹簧倒立摆模型SLIP
这个介绍的有很多,实际用的时候感觉跟轨迹控制差别不大。
ghost将它应用到bound步态中,https://www.bilibili.com/video/BV1xx411S7M7?from=search&seid=10478755503798956682 ,看了它的论文,没懂它到底怎么应用进去的。

模型预测控制MPC
学习中

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
四足机器人的步态控制算法可以分为多种类型,其中比较常用的有三种:前进腿和后退腿交替移动的步态、交替三角步态和交替四角步态。 以下是一个简单的前进腿和后退腿交替移动的步态控制算法的示例代码: ``` #include <stdio.h> #include <math.h> int main() { double x, y, z; double a, b, c, d; double theta1, theta2, theta3, theta4; // 设置四足机器人的基本参数 x = 5.0; // 身体长度 y = 4.0; // 身体宽度 z = 3.0; // 身体高度 a = 2.0; // 腿长 b = 1.5; // 身体和腿之间的距离 c = sqrt(a * a - b * b); // 腿的水平长度 d = z - sqrt(a * a - b * b); // 腿的垂直高度 // 计算第一步的关节角度 theta1 = atan(y / x); theta2 = atan((y - c) / (x - d)); theta3 = atan((y + c) / (x - d)); theta4 = atan(-y / x); // 输出第一步的关节角度 printf("theta1 = %lf, theta2 = %lf, theta3 = %lf, theta4 = %lf\n", theta1, theta2, theta3, theta4); // 循环控制四足机器人的步态运动 int i; for (i = 1; i <= 10; i++) { // 计算下一步的关节角度 if (i % 2 == 1) { theta1 = atan(y / (x + i)); theta2 = atan((y - c) / (x - d + i)); theta3 = atan((y + c) / (x - d + i)); theta4 = atan(-y / (x + i)); } else { theta1 = atan(y / (x - i)); theta2 = atan((y - c) / (x + d - i)); theta3 = atan((y + c) / (x + d - i)); theta4 = atan(-y / (x - i)); } // 输出下一步的关节角度 printf("theta1 = %lf, theta2 = %lf, theta3 = %lf, theta4 = %lf\n", theta1, theta2, theta3, theta4); } return 0; } ``` 在这个示例代码中,我们先设置了四足机器人的基本参数,然后计算了第一步的关节角度。然后我们使用一个循环来控制四足机器人的步态运动,每次循环计算下一步的关节角度并输出。在这个算法中,我们使用了前进腿和后退腿交替移动的步态,即奇数步时前两条腿向前移动,偶数步时后两条腿向前移动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值