悬停油门的参数估计方法

2023-05-16

悬停油门的参数估计方法

估计悬停油门,实际上就是完成油门值与飞机加速度之间的映射关系,准确的估计值可以让飞行控制更为准确。在PX4中,对悬停油门的估计方法采用的是扩展卡尔曼滤波,Fast_drone_250 的px4_ctrl中采用的是衰减记忆迭代递推最小二乘法。这两种方法都对悬停油门参数可以进行很好的估计。这里,我对两种方法都展开分析与记录。

扩展卡尔曼滤波

首先我们要建立起模型方程:

u = t h r u s t , x = h o v e r _ t h r , y = a _ z , z = a _ z _ m e a s u r e u=thrust, \quad x=hover\_thr, \quad y = a\_z ,\quad z = a\_z\_measure u=thrust,x=hover_thr,y=a_z,z=a_z_measure 加速度是在ENU下状态估计出来的运动加速度与重力加速度无关,不是imu的原始值。

_hover_thrust_ekf.fuseAccZ(-local_pos.az, -local_pos_sp.thrust[2], status);
//a_z本来是NED下的来着,这里他又转换了一下。变成了我们更习惯的z轴向上!

估计的油门值是在world-fixed NED下的z轴分量这样一来就对了,估计出来的悬停油门就是飞机一动不动的油门值,其作用就是把油门与加速度建立准确的映射关系,与px4ctrl里的结果是一致!之前一直弄错了果然坐标系的确定非常重要也非常让人容易晕头!

# Local position setpoint in NED frame
# setting something to NaN means the state should not be controlled

uint64 timestamp	# time since system start (microseconds)

float32 x		# in meters NED
float32 y		# in meters NED
float32 z		# in meters NED
float32 yaw		# in radians NED -PI..+PI
float32 yawspeed	# in radians/sec
float32 vx		# in meters/sec
float32 vy		# in meters/sec
float32 vz		# in meters/sec
float32[3] acceleration # in meters/sec^2
float32[3] jerk # in meters/sec^3
float32[3] thrust	# normalized thrust vector in NED

x k = x k − 1 + w k − 1 y k = g   u k x k − g z k = y k + v k \begin{equation} \begin{aligned} x_k=x_{k-1}+w_{k-1} \\ y_k =\frac {g \ u_k}{x_k}-g \\ z_k = y_k+v_k \end{aligned} \end{equation} xk=xk1+wk1yk=xkg ukgzk=yk+vk

其中噪声分布为, 过程噪声: E ( w k ) = 0 , E ( w k w k T ) = Q k E(w_k)=0, E(w_k w_k^T)=Q_k E(wk)=0,E(wkwkT)=Qk , 量测噪声: E ( v k ) = 0 , E ( v k v k T ) = R k E(v_k)=0, E(v_k v_k^T)=R_k E(vk)=0,E(vkvkT)=Rk

在非线性处做一阶线性展开,可得:
C k = − g u k x k 2 Φ k − 1 = 1 C_k=- \frac {gu_k }{x_k^2}\\ \Phi_{k-1}=1 Ck=xk2gukΦk1=1
根据上式可得:
x k ∣ k − 1 = x k − 1 z k ∣ k − 1 = g   u k − 1 x k − 1 − g P k ∣ k − 1 = P k − 1 + Q k − 1 K k = P k ∣ k − 1 C k ( C k P k ∣ k − 1 C k + R k ) − 1 x k = x k ∣ k − 1 + K k ( z k − z k ∣ k − 1 ) P k = ( 1 − K k C k ) P k ∣ k − 1 x_{k|k-1}=x_{k-1} \\ z_{k|k-1}=\frac {g \ u_{k-1}}{x_{k-1}}-g \\ P_{k|k-1}=P_{k-1}+Q_{k-1} \\ K_{k}=P_{k|k-1}C_k(C_kP_{k|k-1}C_k+R_k)^{-1} \\ x_k=x_{k|k-1}+K_k(z_k-z_{k|k-1}) \\ P_k=(1-K_kC_k)P_{k|k-1} xkk1=xk1zkk1=xk1g uk1gPkk1=Pk1+Qk1Kk=Pkk1Ck(CkPkk1Ck+Rk)1xk=xkk1+Kk(zkzkk1)Pk=(1KkCk)Pkk1
这些式子也就是估计器代码种的公式, 不过PX4里面还有一部分是一个低通滤波和更新传感器量测噪声的,这个我不太清楚怎么来的。总的来说,通过这个扩展卡尔曼滤波,我们就可以估计出无人机的实时的悬停油门

衰减记忆迭代递推最小二乘法

px4ctrl里的模型如下。

这里不一样的是,这里的 a z a_z az 是体轴系(body-fixed ENU)下的加速度计测量值(不是加速度值!),thr是实际的油门值(即机体系下)
a z = t h r 2 a c c ∗ t h r a_z = thr2acc* thr az=thr2accthr
这样的局部线化模型就油门值与机体z轴加速度映射关系完成里建立!eg : 当 t h r = t h r _ h o v e r thr=thr\_hover thr=thr_hover时, a z = g a_z = g az=g

该模型参数估计采用了衰减记忆迭代递推最小二乘,其公式和该方法的标准形式一模一样,拿着相关资料一对便知,这里不再展开。

这里顺便一提,我觉得PX4和px4ctrl里面的油门值都不对

PX4里那个body_z,我觉得应该是(-ax_sp, -ay_sp, -az_sp+g) 而不是(-ax_sp, -ay_sp, g)

Fast_drone_250中px4ctrl里那个acc_sp(2)/thr2acc,我觉得应该是 acc_sp.norm()/thr2acc

这样的理解来源于我觉得自己对悬停油门的理解是没有问题的。对于这两个地方,我也都做了修改和仿真测试,控制效果和精度并看不出来有明显提升,可能是机动动作比较小,但是至少是没有变坏的。

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

悬停油门的参数估计方法 的相关文章

随机推荐

  • 如何将dockerhub与github关联

    本文目录 如何将dockerhub账户与github相关联如何在dockerhub中利用github上的Dockfile进行auto build dockerhub具有Create Automated Build xff0c 也就是说 xf
  • UML中的关系

    UML中的关系 UML中的关系 xff08 Relationships xff09 主要包括5种 xff1a 关联关系 聚合关系 依赖关系 泛化关系和实现关系 关联 xff08 Association xff09 关系 关联关系是一种结构化
  • [授权发表]基于 VNCServer + noVNC 构建 Docker 桌面系统

    by Falcon of TinyLab org 2015 05 02 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a 基于 VNCServer 43 n
  • Debian 源(source.list)

    在debian下 xff0c 用apt方式安装软件除了可以以网络上的资源为源之外 xff0c 还可以使用本地的资源 下面我就以安装GCC的过程为例 xff0c 说一下整个过程 平台 xff1a debian 4 0 图形界面 资源 xff1
  • boa 编译步骤&&常见错误

    第一步 xff1a 源码包 xff1a boa 0 94 13 tar gz 解压 tar xvf 第二步 xff1a 你会看到10个文件 xff0c 其中有一个是src xff0c 直接进入 src文件目录下 第三步 xff1a 配置 x
  • 推荐几款SSH工具

    SSH 是建立在应用层基础上的安全协议 xff0c 专为远程登录会话和其他网络服务提供安全性的协议 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题 SSH最初是UNIX系统上的一个程序 xff0c 后来又迅速扩展到其他操作平台
  • WinForm应用实战开发指南 - 如何设计展示应用程序主界面

    WinForm应用程序的开发 xff0c 主窗口的界面设计一般都要求做的更好一些 xff0c 可以根据不同的系统功能模块进行归类整合 xff0c 能使客户迅速寻找到相关功能的同时 xff0c 也能感觉到整体性的美观大方 xff0c 因此主窗
  • PX4+光流模块MTF01的一点使用心得

    1 不知道怎么样把这个给接到飞控的串口4上 应该是因为没找到地方设置串口4的波特率啥的 xff0c 最后还是接到了TELEM2接口上 xff0c 又设置了一下波特率才好用 2 定高效果很好 xff0c 定位效果也还行 3 在出现位置模式下y
  • [论文] Feature Squeezing:Detecting Adversarial Examples in Deep Neural Networks

    思路 xff1a 对抗样本经过feature squeeze处理后大部分增加的干扰会被消除或者减小 xff0c 致使feature squeeze前后的分类结果向量 xff08 distributed vector xff09 L1距离很大
  • 手把手教用matlab做无人驾驶(三)-路径规划A*算法

    这里 xff0c 我们更新主程序如下 xff1a editor Robert Cao 2018 9 1 clc clear all close all disp 39 A Star Path Planing start 39 p start
  • eve-ng导入华为路由器镜像

    iol位置 opt unetlab addons iol bin qemu位置 xff1a opt unetlab addons qemu 设备图标位置 opt unetlab html images icons 设备脚本位置 opt un
  • ROS入门保姆级教程:7-ROS话题通信实现2:自定义消息类型(msg)

    ROS入门往期 xff1a ROS入门保姆级教程 xff1a 1 hello world初体验 ROS入门保姆级教程 xff1a 2 VScode中使用ROS ROS入门保姆级教程 xff1a 3 ROS文件系统 ROS入门保姆级教程 xf
  • 设计模式---订阅发布模式(Subscribe/Publish)

    订阅发布模式定义了一种一对多的依赖关系 xff0c 让多个订阅者对象同时监听某一个主题对象 这个主题对象在自身状态变化时 xff0c 会通知所有订阅者对象 xff0c 使它们能够自动更新自己的状态 将一个系统分割成一系列相互协作的类有一个很
  • 能ping通虚拟机,但ssh连接不上,访问虚拟机服务也不行NAT

    自己的windows ip 跟虚拟机的ip一样 xff0c 产生错觉 xff0c 其实ping的是自己的window主机 xff0c 修改windows 地址后就可以了
  • html5是什么?五大浏览器、网页基本骨架结构与含义、常用标签——学习HTML5第一天的心得总结,若有错误望指正,我将持续更新与大家共同进步。

    注意 xff1a 上方P标签所说的块元素不可嵌套块元素是指在p元素中不建议嵌套块元素 xff0c 如不建议 lt P gt lt div gt lt div gt lt P gt 这种嵌套 xff0c 其他块元素则根据需求嵌套即可 1 ht
  • 新手入门 - 详解 frp 内网穿透 frpc.ini 配置

    本文为 Stille 原创文章 经实践 测试 整理发布 如需转载请联系作者获得授权 并注明转载地址 转载地址 xff1a 新手入门 详解 frp 内网穿透 frpc ini 配置 思有云 IOIOX 前言 本站关于 frp 内网穿透的相关教
  • pixhawk硬件设计粗略解析

    文章目录 前言一 pixhawk是什么 xff1f 二 pixhawk硬件解析总结 前言 本片是个人对NFCYv5飞控的硬件设计的个人分析与笔记 为什么要这么做呢 xff1f 原因很简单 xff0c 一是对pixhawk硬件组成有更加深入的
  • Android IPC机制

    本文首发于个人博客 胖蔡叨叨叨 xff0c 更多相关信息可点击查看 Android IPC机制 IPC IPC Inter Process Communication 进程间通信 xff0c 是指系统中运行的不同进程间的信息交互过程 And
  • PX4的控制与输出

    文章目录 前言控制器部分输出部分控制组混控器混控器的启动信号输出 前言 这篇记录一下自己分析PX4从位置控制 gt 速度控制 gt 姿态控制 gt 角速度控制 gt 电机输出的源码框架的阅读与理解 xff0c 便于之后自己修改控制器 在这个
  • 悬停油门的参数估计方法

    悬停油门的参数估计方法 估计悬停油门 xff0c 实际上就是完成油门值与飞机加速度之间的映射关系 xff0c 准确的估计值可以让飞行控制更为准确 在PX4中 xff0c 对悬停油门的估计方法采用的是扩展卡尔曼滤波 xff0c Fast dr