当前位置: 首页 > article >正文

25/2/7 <机器人基础> 牛顿-欧拉递推公式,开闭环

        牛顿-欧拉递推公式是用于计算刚体动力学中,刚体的角速度和角加速度的递推关系。这个公式是牛顿第二定律和欧拉旋转定理的结合,适用于描述刚体在空间中的旋转运动。

        对于一个刚体,设其在某时刻的角速度为 ω,角加速度为 α,刚体的转动惯量张量为 I,则牛顿-欧拉递推公式可以表示为:

其中,τ 是作用在刚体上的外力矩。

这个公式可以用于递推计算刚体在每个时间步长内的角速度和角加速度。具体来说,如果我们知道了刚体在某个时刻的角速度 ωn​ 和外力矩 τn​,以及刚体的转动惯量张量 I,那么我们可以通过这个公式计算出下一个时间步长内的角加速度 αn+1​,进而更新角速度 ωn+1​。

例题

我们来举一个简单的例子来说明如何使用牛顿-欧拉递推公式计算刚体的角速度和角加速度。

假设我们有一个刚体,其转动惯量张量 I 为对角矩阵,即:

其中,Ix​, Iy​, Iz​ 分别是刚体关于 x, y, z 轴的转动惯量。

假设在某个时刻 tn​,刚体的角速度 ωn​ 为:

并且在该时刻,作用在刚体上的外力矩 τn​ 为:

我们希望计算下一个时刻 tn+1​=tn​+Δt 的角速度 ωn+1​。

首先,我们使用牛顿-欧拉递推公式计算角加速度 αn+1​:

由于 I 是对角矩阵,我们可以简化这个公式为:

计算叉乘项:

代入原公式,我们得到

解这个方程组,我们可以得到 αn+1​:

最后,我们使用欧拉方法更新角速度 ωn+1​:

这样,我们就完成了从时刻 tn​ 到 tn+1​ 的角速度和角加速度的递推计算。

路径规划三次多项式插值

三次多项式插值是一种通过给定的四个点来构造一个三次多项式的方法,使得这个多项式通过这四个点。假设我们有四个点 (x0​,y0​), (x1​,y1​), (x2​,y2​), (x3​,y3​),我们希望找到一个三次多项式 P(x)=ax3+bx2+cx+d,使得 P(xi​)=yi​ 对于 i=0,1,2,3 成立。

步骤

  1. 建立方程组:根据插值条件,我们可以得到以下四个方程:

  1. 这是一个关于 a,b,c,d 的线性方程组。

  2. 求解方程组:我们可以使用各种方法求解这个线性方程组,例如高斯消元法、矩阵求逆等。求解得到 a,b,c,d 的值。

  3. 写出插值多项式:将求得的 a,b,c,d 代入 P(x)=ax3+bx2+cx+d,即得到所求的三次插值多项式。

开闭环

定义

  • 开环控制:机器人按照预先设定的命令执行任务,但不会对执行过程中的状态进行反馈和调整。其输入不依赖于输出,即系统的输出对控制作用没有任何影响。

  • 闭环控制:机器人通过传感器或其他检测设备获取执行任务过程中的状态信息,将这些信息反馈给控制系统,从而实现对机器人执行任务过程中的实时控制和调整。其输出会反馈给输入端从而影响输入。

特点

  • 开环控制

    • 优点:结构简单、成本低,稳定性好,适用于模型已知且不变的情况。

    • 缺点:无法感知执行任务的实际情况,无法自动调整行动,导致执行任务的成功率低,可靠性差。对干扰引起的误差不能自行修正,控制精度不够高。

  • 闭环控制

    • 优点:能够根据实际情况进行实时调整,提高了机器人执行任务的成功率和可靠性。抗干扰能力强,动态性能得到改善,系统响应速度、超调量和稳态误差等均可以通过闭环控制增益来改善。

    • 缺点:结构相对复杂,成本较高,且可能存在一定的延迟,导致系统的输出有一定的滞后。

应用

  • 开环控制:适用于一些简单的任务,如基本的运动控制或简单的搬运,在速度很重要而精确操作并不重要的情况下也会使用,例如在加工步骤完成之后将工具收缩回来的操作。

  • 闭环控制:在机器人应用中更为普遍,尤其是在一些高精度和复杂的应用场景中,如精密加工、医疗手术、自动驾驶等。


http://www.kler.cn/a/538738.html

相关文章:

  • 利用NestJS构建高效的RESTful API接口
  • mysql 存储过程和自定义函数 详解
  • C# OpenCvSharp 部署MOWA:多合一图像扭曲模型
  • RabbitMQ 从入门到精通:从工作模式到集群部署实战(五)
  • Go 中的 7 个常见接口错误
  • Qt+海康虚拟相机的调试
  • 常用在线工具
  • 无人机方位感知器官磁力传感器!
  • 【数据结构】链表应用-链表重新排序
  • 【后端java】构建工具maven
  • 使用云效解决docker官方镜像拉取不到的问题
  • react 19 useOptimistic 竞争更新乐观值时阻塞
  • Qt的QTableWidget类的声明定义和使用
  • Android13-系统服务大管家-ServiceManager进程-启动篇
  • 具身智能学习规划
  • 【LeetCode: 525. 连续数组 + 前缀和 + 哈希表】
  • CodeGPT + IDEA + DeepSeek,在IDEA中引入DeepSeek实现AI智能开发
  • android动态设置是否允许应用卸载
  • ES管理器焕新升级:紫色银狼主题来袭!
  • 在 Navicat 17 中扩展 PostgreSQL 数据类型 | 复合类型
  • 教育机器人的智能驱动:揭秘舵机技术的无限可能
  • 使用Python和TensorFlow/Keras构建一个简单的CNN模型来识别手写数字
  • 系统URL整合系列视频五(后端技术实现)
  • Android Studio 配置 Gerrit Code Review
  • 深入Linux系列之环境变量
  • ZZNUOJ(C/C++)基础练习1081——1090(详解版)