px4 EKF中Q、R阵设置的思考

2023-05-16

关于Q R的讨论

Q阵

状态转移误差矩阵,代表从Xt-1到Xt过程中,状态转移和真实过程之间的误差,具体其中变量可能是对状态转移有影响的变量,比如在有一些场景下,可能为速度,位移,加速度等。加速度对状态扰动最大,所以用加速度对速度和位移的协方差来初始化Q矩阵,是运动模型和物体真实运动之间的差别噪声,预测噪声、系统噪声在这里插入图片描述
图片来着公众号MultiMCU EDU,侵删
ekf matlib中Q的输入元素
daxVar =(dt*param.prediction.angRateNoise)^2
dvx= deltaVelocity(1)
指定IMU角和速度上的噪声方差

在这里插入图片描述
设置加速度计和陀螺仪噪声

在这里插入图片描述
constrain函数对噪声大小进行限制,随后噪声用于计算daxVar(ekf matlib中Q阵的输入元素)

在这里插入图片描述
px4中EKF Q阵就由加速度计、陀螺仪噪声获取,与下面过程噪声processNoise不一样

在这里插入图片描述
constrain函数
**

R阵

**,测量误差矩阵,代表用Xt得到Zt的时候的测量误差。R矩阵会影响卡尔曼增益,R越小,卡尔曼增益就越大,收敛就越快。具体其中参数可能是对观测有影响的变量,比如,IMU输入,GPS输入,里程计运动模型输入等。但是这个矩阵过大和过小都会影响滤波的效果。所以在实际调参的过程中要注意,是传感器本身的误差性能情况,量测过程噪声。如GPS不确定度(标准差等),px4中是观测值方差,是提前设置好的传感器误差以及根据测量值样本获取的误差。
在这里插入图片描述
px4中过程噪声processNoise的设置
在这里插入图片描述
添加过程噪声(非R阵)

在这里插入图片描述
px4 ekf gps 气压计等观测值噪声的设置(如上)
在这里插入图片描述
在这里插入图片描述
上面是默认设置参数表
上图中gps_sample_delayed由下图获取
上图中

// Set observation noise variance and innovation consistency check gate size for the NE position observations
		R[0] = _velObsVarNE(0);
		R[1] = _velObsVarNE(1);
		gate_size[1] = gate_size[0] = _hvelInnovGate;
--------------------------------------------------------------------------------
Vector2f _velObsVarNE;		///< 1-STD observation noise variance used for the fusion of NE velocity data (m/sec)**2
--------------------------------------------------------------------------------
_velObsVarNE(1) = _velObsVarNE(0) = sq(fmaxf(_gps_sample_delayed.sacc, _params.gps_vel_noise));
/// _gps_sample_delayed.sacc是时间范围内的测量值样本 速度误差的1个标准差;gps_vel_noise=0.5m/sgps速度融合的最小允许观测噪声
if (_fuse_vert_vel) {
		fuse_map[2] = true;
		// observation variance - use receiver reported accuracy with parameter setting the minimum value
		R[2] = fmaxf(_params.gps_vel_noise, 0.01f);
		// use scaled horizontal speed accuracy assuming typical ratio of VDOP/HDOP
		R[2] = 1.5f * fmaxf(R[2], _gps_sample_delayed.sacc);
		R[2] = R[2] * R[2];
		// innovation gate size
		gate_size[2] = fmaxf(_params.vel_innov_gate, 1.0f);
	}

	if (_fuse_pos) {
		// enable fusion for the NE position axes
		fuse_map[3] = fuse_map[4] = true;

		// Set observation noise variance and innovation consistency check gate size for the NE position observations
		R[4] = R[3] = sq(_posObsNoiseNE);
		gate_size[4] = gate_size[3] = _posInnovGateNE;

	}

上图中gps_sample_delayed由下图获取
在这里插入图片描述
在这里插入图片描述
获取gps_sample数据
在这里插入图片描述
然后对GPS数据进行处理,之后更新buffer
在这里插入图片描述
数据缓冲区,buffer给gps sample
在这里插入图片描述
所以R中的数据,是取 参数param 还是 测量sample,看fmaxf判断。
在这里插入图片描述
在这里插入图片描述
如果P0、Q、R无法精确获得,只知道可能的取值范围,则采用可能的较大值(保守)。如果不确切知道Q、R、P0的准确先验信息,应适当增大Q的取值,以增大对实时量测值的利用权重,俗称调谐。但是调谐存在盲目性,无法知道Q要调到多大才行。
——《卡尔曼滤波与组合导航原理》秦永元
针对 q,根据经典教材Estimation with Applications to Tracking and Navigation一书所讲,通过最高阶状态量对其他量的扰动来初始化,比如位置,速度和加速度三个状态量,就用加速度变化对另外两个量的扰动来初始化,最后得到的是一个 3*3矩阵。
针对 r,根据Gaussian假设,取各个观测值最大偏差的三倍。尽管这在很多应用中并不合适(比如某些实验不可重复),但有一个准则还是好于任意取值。

P阵

在这里插入图片描述

所以整个过程,由IMU测量结果进行一步预测Xk/k-1 Pk/k-1
GPS等测量结果进行量测更新Zk Kk Pk Xk

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

px4 EKF中Q、R阵设置的思考 的相关文章

  • PX4通过I2C方式添加自定义传感器(2)

    PX4 I2C通信方式传感器驱动分析 xff08 以ets airspeed为例 xff09 1 说明 这篇文章我们就来看看I2C传感器的驱动过程 xff0c 当然里面也有很多东西我不是很理解 xff0c 所以仅谈我领悟的一些东西 我就以e
  • PX4通过I2C方式添加自定义传感器(3)

    添加自定义传感器并实现数据的发送和订阅 1 前期准备 1 1 建立文件夹和相关文件配置 我是在src drivers distance sensor文件夹下操作的 xff0c 当然其他文件夹下都类似 首先建立了两个文件夹angle sour
  • 【8-12】树莓派部署t265+px4飞控实现无人机视觉定位

    在之前的文章中 xff0c 我们已经成功在树莓派 xff08 ubuntu mate 18 04 xff09 上部署了T265的追踪摄像头 本文将利用MAVROS协议 xff0c 将T265测量的位姿信息发送给px4固件 xff0c 实现室
  • PX4/Pixhawk---uORB深入理解和应用

    The Instructions of uORB PX4 Pixhawk 软件体系结构 uORB 主题发布 主题订阅 1 简介 1 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c
  • Ubuntu20.04+MAVROS+PX4+Gazebo保姆级安装教程

    Ubuntu20 04 43 MAVROS 43 PX4 43 Gazebo 安装PX4步骤安装MAVROS安装QGCPX4仿真 安装PX4步骤 从github上clone源码 span class token function git s
  • 基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(1)-飞控

    前言 穿越机F4 F7 H7飞控是一系列采用stm32系列F4xx和F7xx处理器的飞控的统称 xff0c 是目前穿越机爱好者非常喜欢使用的飞控硬件 xff0c 其价格也非常便宜180 xff5e 410 而px4则是一款常见的开源飞控固件
  • PX4 ---- Indoor Flight

    文章目录 室内飞行ROS amp PX4Pose Data 飞机配置MAVROS 基于工训赛 VIO 飞行总结 室内飞行 ROS amp PX4 Pose Data 飞机配置 VIO 参考此处 xff0c 采用 T265 配置 相机与飞控机
  • PX4 -- EKF2

    文章目录 EKF2参数高度估计Range Finder滤波 单变量更新单变量更新对多变量的影响 EKF2 参数 EKF2 中有一类 GATE 参数 当测量值在 VAR GATE 范围内才会更新值 高度估计 四种高度控制方法 xff1a 气压
  • PX4模块设计之十七:ModuleBase模块

    PX4模块设计之十七 xff1a ModuleBase模块 1 ModuleBase模块介绍2 ModuleBase类介绍3 ModuleBase类功能介绍3 1 模块入口3 2 模块启动3 3 模块停止3 4 状态查询3 5 任务回调3
  • PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六 xff1a BatteryStatus模块 1 BatteryStatus模块简介2 模块入口函数2 1 主入口battery status main2 2 自定义子命令custom command 3 Batter
  • PX4模块设计之三十一:ManualControl模块

    PX4模块设计之三十一 xff1a ManualControl模块 1 ManualControl模块简介2 模块入口函数2 1 主入口manual control main2 2 自定义子命令custom command 3 Manual
  • mavros连接px4失败的usb-ttl原因

    问题描述 xff1a 最近在搞mavros xff0c 以方便协处理器和pixhawk通讯 xff0c 在按照官网教程安装mavros xff0c 设置px4 xff0c 连接硬件之后发现mavros卡在中间下不去 xff1a MAVROS
  • PX4-4-任务调度

    PX4所有的功能都封装在独立的模块中 xff0c uORB是任务间数据交互和同步的工具 xff0c 而管理和调度每个任务 xff0c PX4也提供了一套很好的机制 xff0c 这一篇我们分享PX4的任务调度机制 我们以PX4 1 11 3版
  • (1)robot_pose_ekf扩展卡尔曼滤波功能包的使用方法

    这里写自定义目录标题 robot pose ekf功能包的编译安装如何使用机器人姿势EKF 编译运行robot pose ekf订阅的话题发布的话题机器人姿态ekf如何工作参考文章 robot pose ekf功能包的编译安装 ros wi
  • px4无人机常识介绍(固件,px4等)

    专业名词解释 aircraft 任何可以飞或者可以携带物品还是搭载旅客的飞行器统称为飞机 航空器 uav 无人驾驶飞机 vehicle 飞行器 airplane plane aero plane 有机翼和一个或多个引擎的飞行器统称为飞机 D
  • robot_pose_ekf 使用说明

    协方差参数的设置 主要确定mpu6050和odom编码器协方差参数的设置 参考 xff1a turtlebot node协方差的设置 mpu605参数的设置 参考 xff1a https github com Arkapravo turtl
  • PX4项目学习::(七)飞控栈:commander

    PX4的飞行控制程序通过模块来实现 xff0c 与飞控相关的模块主要有commander xff0c navigator xff0c pos control xff0c att control这几个 xff0c 分别可以在src modul
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 四、无人机知识笔记(初级:基本运动原理)

    笔记来源于 沈阳无距科技 工业级无人机的中国名片 编程外星人 目录 一 多旋翼直升机 二 基本飞行姿态 三 多旋翼飞行原理 四 反扭力与偏航运动 五 螺旋桨 六 有刷电机和无刷电机 七 电调与PWM信号 八 动力电池 九 遥控器 十 机架设
  • 飞行姿态解算(三)

    继之前研究了一些飞行姿态理论方面的问题后 又找到了之前很流行的一段外国大神写的代码 来分析分析 第二篇文章的最后 讲到了文章中的算法在实际使用中有重大缺陷 大家都知道 分析算法理论的时候很多情况下我们没有考虑太多外界干扰的情况 原因是很多情

随机推荐

  • 半小时内实现Esp32-Cam模型训练和图像识别

    Esp32 Cam图像识别 一 网页显示视频流1 Linux式例程2 MicroPython式例程步骤1 下载Thonny步骤2 烧录Esp32 Cam固件步骤3 运行相应代码 3 Arduino式例程步骤1 下载Arduino步骤2 安装
  • MANIFOLD 2-G开发 之 利用ROS话题编程实现UART1串口通讯

    目录 MANIFOLD 2 G开发笔记1 项目描述2 遇到的问题3 解决方案4 示例代码5 注意事项6 资源附件6 运行与调试 MANIFOLD 2 G开发笔记 本博客内容将记录MANIFOLD 2 G 开发过程中遇到的问题及解决方案 xf
  • ONOS源码笔记--机制

    app注册 private ApplicationId appId appId 61 coreService registerApplication 34 org onosproject fwd 34 注册应用 xff0c 一般在activ
  • git 本地分支与远程分支关联

    github上已经有master分支 和dev分支 在本地 git checkout b dev 新建并切换到本地dev分支 git pull origin dev 本地分支与远程分支相关联 github上没有dev分支 git check
  • 做设计师还是程序员?一张图你就明白!

    平时大家相安无事 xff0c 可一旦项目滑了水 栽了坑 二重奏就开始没完没了的唱起来了 请看下图 xff1a 你的桌子是有什么 小编反手一摸 xff0c 还好小编的头发还再 你头发呢 xff1f 相信这里有很多学习java的朋友 xff0c
  • 【ROS】动态链接库(.so文件)的生成和调用

    ROS 动态链接库 xff08 so文件 xff09 的生成和使用 引言 xff11 生成so文件 xff12 调用so文件 xff13 运行结果结语 引言 由于项目有涉及到源代码是否交付的选项 xff0c 想着如果不交付源代码 xff0c
  • 用TortoiseGit删除git仓库中的文件/文件夹

    用TortoiseGit删除git仓库中的文件 文件夹 点击删除后出现弹框 xff0c 点击删除 删除后会显示移除一个文件 xff1b 想要还原可以在当前文件夹中右键选择TortoiseGit gt 还原 xff08 revert xff0
  • 02-Jetson Xavier NX 训练自己的yolov4-tiny模型并利用TensorRT完成部署(Python API)

    记录原因 xff1a 因前面完成了yolov4 tiny源码的部署 xff0c 可以跑到50FPS 但那个跑的是别人的模型 xff0c 可以识别80类 xff0c 但是在特定的情况下比如识别螺丝螺帽 xff0c 只需要两种 xff0c 在训
  • RPLIDAR在ROS下快速上手教程

    本教程由 臭皮匠机器人 原创 转载请注明出处 收到一个RPLidar后 xff0c 干的第一件事应该是先让雷达跑起来 xff0c 边做边学是最高效的 之前写了一篇在windows底下的 RPLIDAR十分钟极速入门教程 xff0c 今天将教
  • RPLIDAR的坐标系问题

    本教程由 臭皮匠机器人 原创 转载请注明出处 RPLIDAR自身的坐标系 RPLIDAR给出来的数据是角度和距离 xff0c 也就是极坐标系 转换成直角坐标系的话应该照转换公式计算 xff0c 假设r是距离 xff0c theta是角度 x
  • Makefile模板(取自vscode)

    文章目录 Makefile模板vscode插件 xff1a 单一目标编译多个目标 Makefile模板 vscode插件 xff1a 单一目标 最近在学习Makefile写法 xff0c 但是总觉得自己写的太烂了 xff0c 找到了vsco
  • 使用docker-compose配置mysql数据库并且配置用户密码

    下面要求环境 xff1a 一定要安装docker ce和docker compose才能进行下面步骤 linux找到你要放mysql的目录 创建一个docker compose yml 以下配置了外部数据卷 外部配置文件 外部初始化文件 x
  • 使用ONOS的REST API来下发流表

    1 启动ONOS后 xff0c 浏览器进入doc http 10 109 247 211 8181 onos v1 docs 2 找到Flow xff0c 并打开POST 3 可以直接在这个上面编辑flow stream里面模拟GET获得的
  • 形态学处理

    原文链接 xff1a https blog csdn net qq 40732350 article details 116718329 spm 61 1001 2014 3001 5506 形态学处理 0 前言1 腐蚀与膨胀1 1 结构元
  • leetcode用到的函数汇总

    reverse isalnum tolower
  • Keil MDK-ARM软件官网最新版本的下载方法

    我之前的几篇博客讲的都是关于Keil MDK5 ARM软件的一些配置方法 xff0c 但是我居然忘了说一下如何去下载这个软件了 xffe3 xffe3 xff5c xff5c xff0c 今天这篇博客就把这个小知识点补上 第一步 xff0c
  • 给Word文档中的公式自动编号的方法

    最近在做毕业设计 xff0c 然后需要翻译一篇英文文献 xff0c 我在翻译英文文献的时候 xff0c 需要对公式进行编号 xff0c 而且需要使编号显示在最右侧 xff0c 而公式居中 xff0c 像下图这样 xff1a 如果一个个手动添
  • PHP如何使用strrev()函数反转字符串?(代码示例)

    反转字符串是最基本的字符串操作之一 xff0c 在PHP中可以使用内置函数strrev 来实现字符串的反转 下面本篇文章就来带大家了解一下PHP strrev 函数怎么用 xff0c 希望对大家有所帮助 PHP strrev 函数 strr
  • 离线安装Linux包的方法--以imblearn为例

    包的 whl文件直接在https pypi org 上搜索下载就好 xff0c 注意要搜索全名scikit learn xff01 你搜sklearn是找不到合适的包的 如图 xff0c 选择第一个就好 xff1a 接着要匹配你的系统架构和
  • px4 EKF中Q、R阵设置的思考

    关于Q R的讨论 Q阵 xff0c 状态转移误差矩阵 xff0c 代表从Xt 1到Xt过程中 xff0c 状态转移和真实过程之间的误差 xff0c 具体其中变量可能是对状态转移有影响的变量 xff0c 比如在有一些场景下 xff0c 可能为