Pixhawk之学习杂谈

2023-05-16

一、开篇

        距离上一篇博文已经很久了,最近主要就是参加了几家公司的电话面试,思考了一些问题,本身就是半路杀进无人机领域的门外汉。对整个飞行控制部分理解的也是皮毛的皮毛,经过几家面试之后,稍微有了一些着重点,本篇博文就主要介绍一下几个相关的问题的思考以为拓展。肯定有理解的不好之处,烦劳各位看客帮忙完善一下每一部分的答案。

        如果问题只是问题,那它便失去了背后的意义。--------写在前面


三、实验平台

Software Version:PX4Firmware(Ver_3.3)

Hardware Version:pixhawk

IDE:eclipse Juno (Windows)

四、正文

        欧拉角是一种广为使用的姿态描述方式,最终控制时的控制量就需要它,直观明了,但是在有限资源下的MCU中进行姿态解算运算时万万不可使用它。在最常用的欧拉角表达方式中,把机体的旋转看成按照三个坐标轴转动的量:滚转角-俯仰角-偏航角(roll-pitch-yaw)。它的好处是十分的直观,且只有三个参数描述。缺点是会碰到著名的万向锁问题(gambleock):在俯仰为±90∘时,表达某个姿态的形式不唯一,也不易于插值和迭代。

思考1:关于姿态解算中使用的传感器数据的真实性如何判断?即最优选择算法

        这个到现在还是不清楚,get_best函数里面的具体实现算法是什么什么意思呢,who knows?tell me ~~~

        PX4代码中的互补滤波算法(DCM):算法中有一个滤波器的confidence函数(信任度函数,貌似模糊控制理论有个隶属函数,应该是类似的功能):返回值是对上N次测量的验证的信任程度,其值在0到1之间,越大越好。返回值是返回上N次测量的误差诊断,用于get_best函数选择最优值,选择的方法如下:

Switch if:

        1)the confidence is higher and priority is equal or higher

        2)the confidence is no less than 1% different and the priority is higher

思考2:如何补偿传感器的bias?(应该从两个方面考虑比较好)

        第一方面:对bias这个词的理解太不到位了,bias顾名思义,指的是的偏差,需要考虑到上电初始时由于gyro本身的特性产生的bias,gyro零点偏移(静态时)的随机部分一般是指陀螺漂移,是反应陀螺仪性能的主要指标,对于常用的MEMS陀螺,较大的陀螺漂移正式影响其应用的主要障碍。关于零点偏移需要通过传感器标定修正误差。

        关于传感器标定:是仪器就会有误差,像很多仪器一样mpu6050也要在使用前校正,传感器的标定类似于天平使用前的调零,所以每次使用前进行传感器的标定工作是必要的,标定是计算修正偏移量的过程,得到偏移量后,在使用传感器时需要将传感器输出数据减去偏移量,这样才能得到修正后的数据。标定有很多方法,比较简单的一种方法,当然也是最不精确的一种方法是在静止时取多次测得数据的平均值,标定后要将偏移量减去,标定的具体步骤不在赘述。

        第二方面:随着时间的积累,gyro会出现drift的积累,需要考虑如何把这部分误差修正掉。首先在姿态解算时是以gyro为主要控制量,用Acc和Mag修正补偿gyro的roll、pitch和yaw,通过PID Feedback修正以后就是对DCM的归一化处理和正交化处理,其中比较重要的步骤之一应该就是DCM正交化吧(通过交叉耦合的方式把误差量error耦合到两维向量上,再通过外积求取第三个维度的向量),该步骤是为了修正在进行数值计算时引入的不必要的误差量。

思考3:四元数的微分方式是什么样的?

        这个。。。。。移步思考8

思考4:如何使用四元数旋转一个向量?即四元数如何表示旋转的?

        我知道的就是使用四元数构建的旋转矩阵,通过左乘这个旋转矩阵来旋转某一个向量。

        四元数可以表示三维空间中任意一个旋转。按照四元数的本质来理解四元数如何旋转一个向量,其实就相当于正常旋转时需要用三个欧拉角按顺序进行三次旋转,现在使用四元数只需要一次旋转就可以达到相同的效果了,但是需要引入一个瞬时旋转轴。

        好吧,又开始上图了~~~


        四元数的详细介绍可以参考知乎链接:

http://www.zhihu.com/question/23005815/answer/33971127?from=groupmessage&isappinstalled=0

思考5:如何使用四元数更新姿态?即如何使用gyro数据更新姿态

        首先就是四元数的微分方程,然后就是四元数随时间的地推公式和DCM矩阵随时间的地推公式。在考虑四元数随时间的地推时,使用了离散数学的理论。

思考6:关于uORB是否可以从源代码中移植出去?即是否依赖于现有的OS NuttX?

        uORB仅仅就是为了IPC的实现而产生的,是一种高效的设计模式,可以进行移植。感觉这个可以深入的研究一下,可惜心有余而力不足啊。

思考7:。。。。。。。。看到这,应该有很多感悟吧,所以赶紧总结一下帮我纠正或完善答案啊。。。。别只顾着看啊。。。。。

思考8:左乘和右乘?在姿态解算过程中使用哪个?(请结合上面的思考4理解该部分)

        当三维向量发生旋转时,如果采用矩阵运算需要考虑“左乘”和“右乘”。若绕静坐标系(地理坐标系)旋转,则左乘,即旋转矩阵*向量;若是绕移动坐标系旋转(机体坐标系),则右乘,也就是向量*旋转矩阵。关于左乘和右乘的问题,需要考虑以哪个坐标系为基准的,我们在做姿态解算的过程和控制的过程都是以地理坐标系为基准的,所以用到了左乘。


思考9为什么用NuttX操作系统呢?

        从OS的优点方面介绍:有OS更适合多任务系统,增加飞控的易用性,维护起来也方便,各个功能之间能保持相对的独立性,另外可以让编程人员完全脱离硬件,嵌入式工程师其实应该是计算机专业,如果脱离不了硬件,就得找电子方向的工程师了。移植性也好,这点很重要 。

思考10源代码为什么用C++不用C?

   C++面向对象(OOP),扩展性和可维护性好;C++更强大,矩阵运算啥的方便,C++有很多有关数学的库函数,方便调用,都是优化过的。其实我也不太懂

五、总结

        不面试,不知重点所在~~~

        不沟通,不知自己有多low~~~

        不出门,不知世界有多大~~~~

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pixhawk之学习杂谈 的相关文章

  • Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍

    一 开篇 很久没更新blog了 xff0c 最近研究的东西比较杂乱 xff0c 也整理了很多东西 xff0c 没有来的及更新 xff0c 最近发现很多小伙伴都开始写blog了 xff0c 在不更新就要 被落后了 兄弟们 xff0c 等等我啊
  • Pixhawk之姿态解算篇(6)_Gradient Descent

    一 开篇 在多旋翼进行姿态估计的过程中 xff0c 最简单的就是直接使用gyro测量角速度进行积分求取欧拉角 xff08 RPY xff09 xff0c 但是由于gyro自身存在的bias和drift xff0c 导致直接测量过程随着时间的
  • pixhawk飞控接口含义

    官方文档 xff1a https docs px4 io v1 9 0 en flight controller pixhawk html 1 spektrum DSM receiver2 xff0c 3 远程通信口 xff0c 接数传4
  • pixhawk飞控板添加额外pwm输出通道控制开伞或舵机转动实现功能

    学习大佬的文章 xff0c 贴图来用 https blog csdn net dai93 article details 89852241 这是输出流的大致示意 如果在飞控需要控制单独的舵机 xff0c 可以自定义一个pwm通道输出 xff
  • pixhawk配置垂直起降无人机

    我使用的版本里面没有找到 43 型尾座式垂直起降无人机 就先用x型无人机了 查看代码 发现在init d目录下id号为13003 待续
  • PX4/Pixhawk---uORB深入理解和应用(最新版)

    1 简介 ps 第1章简介是参考 uORB深入理解和应用 1 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c 这可以让我们更好的理解PX4 Pixhawk的软件架构和运作 xff
  • 搜一下会发现CSDN上有不少树莓派连接Pixhawk的,或者ROS连接Pixhawk的

    搜一下会发现CSDN上有不少树莓派连接Pixhawk的 xff0c 或者ROS连接Pixhawk的 xff0c 来进行相对应的实验 看来大家基本都是用Pixhawk 有很多人已经做成了 xff0c 做出来了 xff0c 所以甚至感觉没必要去
  • 通过pixhawk飞行日志读取飞行路线以及对应地图

    px4飞行日志为 bin文件或者 log文件 xff0c 将文件数据导入到flightplot中 xff0c 输出轨迹 xff08 export track xff09 xff0c 下载一个Google地图 xff0c 将保存成的文件在Go
  • Pixhawk_bootloader简介

    Pixhawk Bootloader引导过程简介 自己结合网络上的资源总结的内容 有不对的地方请及时指出 有侵权的请指出 QQ 4862879 Pixhawk硬件使用STM32的芯片 Cortex M3的内核有三种启动方式 xff0c 其分
  • Pixhawk代码分析-源码框架

    源码框架 pixhawk代码框架 xff1a pixhawk代码框架基础分析 xff1a 阅读下面内容时请结合源码阅读 xff0c 便于理解 The basic structure of ArduPilot is broken up int
  • pixhawk 整体架构的认识

    此篇blog的目的是对px4工程有一个整体认识 xff0c 对各个信号的流向有个了解 xff0c 以及控制算法采用的控制框架 PX4自动驾驶仪软件 可分为三大部分 xff1a 实时操作系统 中间件和飞行控制栈 1 NuttX实时操作系统 提
  • 飞行控制器Pixhawk简介

    作者 xff1a 华清远见讲师 Pixhawk是一款由PX4开源项目设计并由3DR公司制造生产的高级自动驾驶仪系统 其前身是APM xff0c 由于APM的处理器已经接近满负荷 xff0c 没有办法满足更复杂的运算处理 xff0c 所以硬件
  • F450机架 Pixhawk飞控实现自动避障(2019.11.29)

    之前进行无人机项目 xff0c 实现避障 巡航 定点 航拍等功能 xff0c 项目结束 xff0c 在这里进行分享经验 xff0c 项目所用器件为自己使用的 xff0c 仅供参考 xff0c 实际实现须结合自己实际情况 1 传感器选择 权盛
  • PX4/Pixhawk---uORB深入理解和应用

    The Instructions of uORB PX4 Pixhawk 软件体系结构 uORB 主题发布 主题订阅 1 简介 1 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c
  • pixhawk源码下载与编译

    今天和同学在一起讨论发现自己还在看的pixhawk源码的版本好低啊 xff0c 就下个最新的吧 想起有些人还不会下载源码 xff0c 以及用什么工具查看 源码的下载我用的是git shell工具下的 xff0c px4的github网址是h
  • Pixhawk-串级pid介绍

    根深方能叶茂 在等待的日子里 xff0c 刻苦读书 xff0c 谦卑做人 xff0c 养得深根 xff0c 日后才能枝叶茂盛 Better 根爷 鉴于串级PID在pixhawk系统中的重要性 xff0c 无论是误差的补偿 xff0c 如姿态
  • DroneKit教程(三):连接Pixhawk飞控

    DroneKit教程 xff08 三 xff09 xff1a 连接Pixhawk飞控 DroneKit提供了非常简便的代码 xff0c 可通过多种方式与飞控连接 连接飞控 使用DroneKit中的connect函数 xff0c 可以方便地连
  • Pixhawk WIFI模块Station模式配置

    Pixhawk WIFI模块配置 最近在鼓捣Pixhawk的飞控 xff0c 用来控制双桨的无人船 xff0c 固件刷的最新的ArduRover4 0 0 xff0c 经过扒论坛 xff0c 现场调试 xff0c 终于能让一艘船按照航点前行
  • 步骤五:PIXHAWK遥控器的使用

    采用福斯i6s遥控 1 连接飞控 打开遥控器 xff0c 接收机插上飞控 xff0c 再插上送的短接线 xff0c 进行匹配对码RX 2 遥控器长按两秒锁 xff0c system output mode Output mode按照图片这样
  • pixhawk之NSH调试

    一 ardupilot固件 windows环境 前期准备 1 xff1a pix烧录程序 xff0c Arducopter或者library中的example都可以实现 2 xff1a 拔掉SD卡 xff08 脚本中提到的没有SD卡进入ns

随机推荐

  • airsim 安装指导(无人机、无人车视觉导航仿真平台)

    说明 xff1a airsim是基于UE4开发的仿真平台 xff0c 听到UE4这个名字不是做游戏的同学 xff0c 可能会觉得陌生 xff0c 但是其实我们经常玩的一些游戏就是基于UE4开发的 xff0c 比如最近比较火的吃鸡游戏 借助于
  • FreeRTOS Heap_1、Heap_2、Heap_3、Heap_4、Heap_5的区别

    FreeRTOS提供了五种内存管理的方式 xff0c 下文将对以下五种内存分配进行说明 xff1a 1 Heap 1 Heap 1 堆大小通过FreeRTOSConfig h中的configTOTAL HEAP SIZE定义设置 xff0c
  • UE4数字人驱动(一)—坐标系转换

    好记性不如烂笔头 xff0c 之前通过研究VRPN实现了自定义的设备添加 xff0c 现在需要在UE4里利用采集的人体运动数据进行数字人驱动 整个功能实现包括 xff1a UE4端VRPN数据接收 数据坐标系转化 动捕骨骼与数字人骨骼匹配与
  • vscode下cmake工程环境配置以及调试配置(c++)

    1 准备工作 1 1MinGW的下载 MinGW将其托管到sourceforge上了 xff0c 也可以前往sourceforge下载 xff1a https sourceforge net projects mingw w64 files
  • 真香!腾讯竟然又偷偷开源了一套Android原生UI框架!

    今天在浏览技术新闻的时候 xff0c 发现腾讯就在今天开源了一套 Android 原生的 UI 框架 你们有没有发现 xff0c 腾讯特别喜欢干这种事 xff0c 哪一种事呢 xff1f 喜欢开源 UI 框架 xff0c 小程序也是这样的
  • STM32 Keil5报错-Target uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available-安装编译器解决

    现象 Keil MDK 5 3 6 编译代码报错 xff1a Target uses ARM Compiler Default Compiler Version 5 which is not available Rebuild starte
  • prometheus编译安装

    prometheus是搜集应用程序所使用的CPU 内存 以及磁盘使用大小的神器 xff0c 它可以根据用户所配置的性能阀值给出相应的处理 xff0c 比如 邮件告警等 xff0c 在这里就不啰嗦了 xff0c 由于本人也是刚刚学习 所以能说
  • 不同硬件传感器数据之间的时间同步问题

    主要分为硬同步和软同步 硬同步就是用一个硬件触发器 xff0c 直接通过物理信号 xff0c 触发相机和LIDAR记录一个data frame 软同步提供一个相同的时间源 xff08 一般都是主控电脑utc时间 xff09 给相机和LIDA
  • 多传感器融合定位开源工程与论文

    目录 1 LIC Fusion xff1a 基于激光雷达 惯性导航和相机结合的里程计 2 使用点线特征配合激光雷达辅助的单目视觉里程计 3 间歇的GPS辅助VIO xff1a 在线初始化和标定 4 强大的高精度视觉惯性激光SLAM系统 5
  • [BLE]CC2640之定时器(Clock)事件

    一 定时器 xff08 Clock xff09 所谓定时器本质上递减计数器 xff0c 当计数器减到零时可以触发某种动作的执行 这种动作可以通过回调函数来实现 xff0c 当定时器计时完成后 xff0c 自定义的回调函数会立即被调用 回调函
  • [BLE]低功耗蓝牙介绍

    一 BLE的协议栈框架 BLE协议栈包括两个部分 xff0c 主机 Host 和控制器 Controller 二者通过HCI Host Controller Interface 标准接口相互通信 常用的单芯片单模BLE芯片有TI的CC254
  • [BLE]低功耗蓝牙之GAP、GATT

    一 开篇 本篇主要介绍一下关于BLE开发过程中必须了解的两个协议 xff1a GAP xff08 通用访问协议 xff09 GATT xff08 通用属性协议 xff09 两个协议都隶属于Host层 xff0c 直接关系到应用层开发 xff
  • [memory]虚拟地址空间分布

    一 开篇 踏入嵌入式软件行业也接近2年了 xff0c 从研一开学起懵懵懂懂的开始学习C语言 xff0c 由于本科时对这方面了解的少之又少 xff0c 所以学起来比较困难 xff0c 但是有一群无私奉献的小伙伴 xff0c 慢慢的 xff0c
  • Pixhawk之UAV控制理论、ardupilot源码框架介绍

    一 开篇 您有无人机么 xff1f 没有 那赶紧去某宝买一套 昨天 开会开到接近下午一点钟 xff0c 收获相当大 xff0c 原本不太清楚的ardupilot框架现在也大致熟悉了 xff0c 接下来主要就是结合源码了解其控制过程了 xff
  • RT-Thread学习笔记(11):互斥量

    目录 互斥量的优先级继承机制互斥量和二值信号量的区别 互斥量的运作机制互斥量控制块 互斥量的优先级继承机制 在RT Thread操作系统中为了降低优先级翻转问题利用了优先级继承算法 优先级继承算法是指 xff0c 暂时提高某个占有某种资源的
  • [BLE]CC2640之ADC功能实现和供电电压的采集

    一 开篇 Write programs that do one thing and do it well 发现很多人关于使用CC2640 CC2650的过程中比较难以应对的问题就是实现ADC xff0c 为了方便大家 xff0c 所以有了本
  • [Index]博文索引

    为了方便查看需要的博文 xff0c 在此给出所有博文的索引链接地址 UAV Software Version xff1a ArduCopter xff08 Ver 3 3 xff09 Hardware Version xff1a pixha
  • Pixhawk之姿态解算篇(1)_入门篇(DCM Nomalize)

    一 开篇 慢慢的 慢慢的 慢慢的就快要到飞控的主要部分了 xff0c 飞控飞控就是所谓的飞行控制呗 xff0c 一个是姿态解算一个是姿态控制 xff0c 解算是解算 xff0c 控制是控制 xff0c 各自负责各自的任务 xff0c 我也不
  • Pixhawk之姿态解算篇(4)_补充篇

    一 开篇 大家期待已久的第四篇来了 xff0c 但是本篇可能比较水啊 见谅 首先 xff0c 上一周没有什么收获 xff0c 虽然看了不少的论文 xff0c 但是却没有什么质的飞越 看的论文都是关于姿态解算的 xff0c 用的算法大部分也都
  • Pixhawk之学习杂谈

    一 开篇 距离上一篇博文已经很久了 xff0c 最近主要就是参加了几家公司的电话面试 xff0c 思考了一些问题 xff0c 本身就是半路杀进无人机领域的门外汉 对整个飞行控制部分理解的也是皮毛的皮毛 xff0c 经过几家面试之后 xff0