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

云台/稳定器/无人机姿态控制之欧拉角与四元数控制优缺点分析

基于欧拉角的姿态控制简述:

        通过陀螺仪数据解算出姿态:pitch,roll,yaw(相对航向),根据目标 姿态:dst_pitch,dst_roll,dst_yaw计算出误差姿态pitch_err,roll_err,yaw_err。将误差姿态转换为目标速度e_pitch_rate,e_roll_rate,e_yaw_rate。然后再做坐标转换,变成基于机体坐标系的目标转速b_pitch_rate,b_roll_rate,b_yaw_rate。此后可以利用陀螺仪的角速度传感器做反馈控制了。

基于四元数的姿态控制简述:

        通过陀螺仪数据解算出姿态四元数:q(q0,q1,q2,q3), 根据目标姿态(dst_pitch,dst_roll,dst_yaw 转换为四元数dst_q)四元数计算出误差四元数err_q。把误差四元数转换成目标速度e_rate_x,e_rate_y,e_rate_z。之后的做法和基于欧拉角的姿态控制一样了。

基于欧拉角的姿态控制的优点:

        1.欧拉角容易理解,不论是开发者还是用户都能较为容易的理解,它们具有明确的物理意义,有于业务的实现和调试。

        2. 欧拉角的每个角度都是独立解耦的,控制实现逻辑相对简单,如:云台/稳定器的跟随操作,俯仰角度只需要考虑跟随当前的俯仰电机运动即可。

        3. 计算简单,不用牵涉矩阵/坐标旋转(业务逻辑),对MCU负担小,容易采用定点算法移植到低端MCU。

基于欧拉角的姿态控制的缺点

        1.欧拉角有角度限制,俯仰角度在90°附近整个系统是不可靠的,虽然网上很多论文讨论全角度欧拉角算法,但这些算法的前提都是需要知道前一刻的角度再推算当前时刻的角度,实际应用不一定稳定。

        2. 对于旋转类型的业务,如:非正交姿态(roll 不是 0° ,90°, 180°)情况的旋转实现较为复杂,如果:云台/稳定器的全跟随业务,要计算出目标姿态角比较麻烦。

基于四元数的姿态控制的优点:

        1. 没有角度限制,可以表示机器的任意姿态。

        2. 可以任意旋转目标姿态,对于各种旋转类型的业务实现非常简单,如:云台/稳定器的全跟随业务,只需要沿3个轴方向对目标姿态四元数进行旋转即可,实现起来简单快捷。

        3. 几乎所有的业务运算都是四元数旋转和矩阵旋转,程序代码高效简洁,便于维护。

基于四元数的姿态控制的缺点:

        1. 所有运算都是四元数旋转和矩阵计算,依赖于浮点运算,如果移植定点的话工作量巨大。所以对MCU有要求。不适合做低端产品。

        2. 四元数姿态从数据上看没有物理意义,不利于业务调试。

        3. 误差四元数一般取的是球面最短弧路径,对于无人机控制来说比较完美,但对于云台/稳定器来说,由于受限于电机限位(不可能3个电机都是360°无限位电机),需要做路径规划,这个就太麻烦了。

      

总结:

        无人机姿态控制业务相对简单,而且可以处于任意姿态(暂态),所以无人机采用四元数控制是比较理想的。对于云台/稳定器来说,采用四元数控制需要仔细斟酌了,优点和缺点都很明显,且云台的业务逻辑比无人机要复杂很多,各种工作模式与姿态相互掺杂,如果采用四元数需要对四元数的旋转理解比较透彻才行。

http://www.lryc.cn/news/206184.html

相关文章:

  • Go 工具链详解(六):依赖管理神器
  • C语言解决约瑟夫环问题
  • 6.6 Elasticsearch(六)京淘项目改造
  • Socks5代理:数字化时代的技术支柱
  • 基本微信小程序的汽车租赁公司小程序
  • Leetcode刷题详解——搜索插入位置
  • centos升级openssh
  • 架构、框架、模式,极简文字介绍
  • Java实现Fisher‘s Exact Test 的置信区间的计算
  • YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022
  • linux中好玩的数据流定向和管道命令一
  • tesseract-ocr-w64-setup-5.3.3.20231005.exe 百度网盘下载
  • Linux环境下Redis 集群部署
  • html iframe 框架有哪些优缺点?
  • git 版本管理
  • hyperf框架接入pgsql扩展包
  • 【算法训练-动态规划 五】【二维DP问题】最大正方形
  • 20.Node-Express框架的用法
  • cuda卸载
  • 怎么选择好的游戏平台开发商?
  • OSATE 插件 Cheddar 的安装与简单使用
  • 解决:vscode和jupyter远程连接无法创建、删除文件的问题(permission denied)
  • Android Studio模拟器/虚拟设备连接互联网的方法
  • linux 内存检测工具 kfence 详解
  • 虚拟机VMware Workstation Pro安装配置使用服务器系统ubuntu-22.04.3-live-server-amd64.iso
  • 《C程序设计》笔记(ch1-2)
  • 【Overload游戏引擎细节分析】Lambert材质Shader分析
  • 二进制搭建 Kubernetes+部署网络组件+部署CornDNS+负载均衡部署+部署Dashboard
  • 【 OpenGauss源码学习 —— 列存储(update_pages_and_tuples_pgclass)】
  • 爬虫进阶-反爬破解7(逆向破解被加密数据:全方位了解字体渲染的全过程+字体文件的检查和数据查看+字体文件转换并实现网页内容还原+完美还原上百页的数据内容)