[源码解读]position_estimator_inav_main解读(如何启动光流)

2023-05-16

阅读工具:source insight
技术交流:zinghd@163.com ,757012902@qq.com
源码版本:Firmware(原生固件)

如有需求可以索要word版

这篇博客彻底解决了我无法切换模式的问题,但是还存在几个问题

  1. 目前还是没有看到定点效果,有可能是磁场干扰(我实验室有几个磁悬浮装置。。。)

也有可能是需要启动LPE

  1. 没有发现光流与GPS数据融合,据说光流在此函数中是辅助GPS的,可有可无,但是我看程序的光流和GSP数据是独立提供的(希望大神指点

分析问题的思路(我一直认为思路很重要)

目的:我希望实现光流定点效果

问题:无法切换posctl飞行状态(可能是程序问题,也可能是光流数据问题)

思路:位置估计函数最终一组数据给位置控制,已知GPS可以实现定点,可以认为位置控制部分是对的,也就是说控制算法不用管只需要检查光流部分是否正确。 那么我只需要找到哪些数据可以由光流传感器提供,并检查其数值是否正确。
这里写图片描述
这是位置估计最后产生的值,我们倒过来往前找,can_estimate_xy
这里写图片描述
bool can_estimate_xy = (eph < max_eph_epv) || use_gps_xy || use_flow || use_vision_xy || use_mocap;可以看到can_estimate_xy是与use_flow光流有关的
接下来两个与GPS有关跳过,看x_est, y_est,z_set
这里写图片描述
Lidar与flow提供了accel_bias_corr[3]数组的3个数
这里写图片描述
accel_bias_corr[3]数组的3个数传递给了acc_bias[3];
5
acc_bias[3]最终传递给 acc[3];
6

7

8
这写着惯性预测滤波,第一次给定了x_set[2], y_set[2], z_set[2]数组的值,Z轴的值是lidar提供,光流只提供水平值
9
预测结束,马上就进行了第二次滤波,当输入是0时z_set[0],z_set[1]都被赋值,lidar提供这两个数据
10

11

12
当输入时1时,这个函数只给x_est[1], y_est[1]赋值,所以光流第2次滤波只改修改了这两个值。
综上所述,光流加上雷达提供了x_est[2], y_est[2], z_est[2],所有数据,但是为什么有这么多滤波,暂时不知道。
att.yaw,其实就是vehicle_attitude_s.yaw
13

14
通过订阅来的,那么是谁发布的呢?
Attitude_estimator_q_main.cpp (firmware\src\modules\attitude_estimator_q):
orb_publish_auto
(ORB_ID(vehicle_attitude), &_att_pub, &att, &att_inst,ORB_PRIO_HIGH);
姿态估计发布的(找topic的发布者好难,有谁有简单的方法教我一下吧)
dist_bottom_valid, lidar提供
15
eph(水平定位精度),epv(垂直定位精度)常数
16
到这所有数据就分析完了 总结一下,光流能提供所有水平有关的值,lidar提供垂直方向的值,为什么要分析lidar?
17
看见没 想用光流 第一个条件就是lidar是否有效,在位置估计里雷达就是距离传感器,对应的实际就是超声波传感器,(实测lidar的数据都是超声波提供的)
18
所以启用光流的核心问题就是如何启动lidar_valid
19
20
21
可以看出lidar_valid与3个数据有关params.enable_lidar_alt_est,
lidar.current_distance > lidar.min_distance,lidar.current_distance < lidar.max_distance
其实我们已知光流是有读数,那么后两个判读肯定是能成立的(当前高度大于30cm,小于5m)
主要就是params.enable_lidar_alt_est(为了保险我在程序里加上标志位进行了判读,确实就是第一个条件一直不成立)
22
找到这个赋值函数,注意这个函数是把h的值给P,(不是把p给h)!!!!!!
23
24
25里把这个0改成1就启动了
在函数里找到了,想到这种设置应该在地面站也有,于是去QGC找果然
26

27
在这里改应该也是一样的,亲测现在可以自由切换到Posctl(定点模式了)虽然还是不能实现定点功能,但是解决了第一个问题还是很开心。
http://blog.csdn.net/czyv587/article/details/51922787 结合使用
最新的源码 这些参数好像不见了(2017/1/6)

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

[源码解读]position_estimator_inav_main解读(如何启动光流) 的相关文章

  • 找文心一言问了几个嵌入式软件开发的问题

    百度终于通知我可以试用文心一言了 xff0c 试验了一番 xff0c 总体满意 xff0c 记录几个文心一言回答的问题 我是一个嵌入式软件开发者 xff0c 你能帮我做什么工作以提高我的开发效率 作为一个嵌入式软件开发者 xff0c 以下是
  • JavaScript常用数组属性和方法

    本文给出了js xff08 JavaScript xff09 数组 xff08 Array xff09 操作所涉及到的所有常用内置函数说明及用法 xff0c 希望对大家有所帮助 数组的属性和方法 属性length属性 xff1a 方法1 把
  • FreeRTOS三种数据结构区别(StreamBuffer,MessageBuffer,Queue)

    转载自博客 xff1a https blog zh123 top p 61 308 Queue队列是最基本的数据结构 xff0c 在FreeRTOS v10 0后提供了另外两种高级数据结构为Streambuffer和MessageBuffe
  • MySQL知识点(详细)

    结构化查询语言SQL 结构化查询语言SQL xff08 Structured Query Language xff09 xff1a 是在关系数据库上执行数据操作 xff0c 检索及维护所使用的标准语言 xff0c 可以用来查询数据 定义数据
  • linux驱动系列学习之Framebuffer子系统(三)

    一 Framebuffer子系统简介 Framebuffer xff08 帧缓冲 xff09 时Linux系统位显示设备提供的一个接口 属于偏底层的显示接口 它将显示缓冲区抽象 xff0c 屏蔽图像硬件的底层差异 xff0c 允许上层应用程
  • Linux系统通过远程终端修改分辨率

    最近的工作是测试服务器的板载GPU xff0c 由于一切处于开发阶段 xff08 没有USB驱动 xff0c 无法通过键鼠操作 xff09 xff0c 切换桌面分辨率成了一项难题 用谷歌 用百度 xff0c 总算找到了一个在远程终端修改分辨
  • ubuntu安装WPS字体缺失的解决办法

    作者最近新安装的ubuntu系统 xff0c 所以缺少了很多的办公软件 xff0c 之前安装了WPS xff0c 但是Linux系统的wps缺少了windows的字库 xff0c 因此使用起来不太方便 xff0c 所以作者就整理了这样的一份
  • Qt实现串口通信(C++实现串口通信小助手)---串口收发及串口数据解码、串口通信模拟器。

    Qt实现串口通信示例 前言 xff1a 以下串口通信示例 xff0c 参考了现有网上前辈们的资源 xff0c 最后结合部分个人的思想 xff0c 所以下述博客会将实现的原理及代码的案例进行公开 这里我们先上效果图 xff1a 一 串口通信简
  • vins-mobile代码解析3:drawAR

    AR功能主要流程是 xff1a 先检测平面 xff0c 然后计算AR物体 xff08 box xff09 的各个顶点3d位置 xff0c 然后写程序把每个顶点投影到相平面 xff0c 用cv的多边形填充功能来绘制到照片上面 先求一个相机朝向
  • Error:ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol

    MySQL 8 0 33 安装完成 xff0c 使用时候报错 xff1a Error xff1a ER NOT SUPPORTED AUTH MODE Client does not support authentication proto
  • 卡尔曼滤波器和优化的本质理解

    非线性最小二乘优化中 xff0c 最重要的是那个雅克比矩阵 每一行对应一个观察两 xff0c 里面的值代表要减少这个观察量的误差 xff0c 其他被优化的量需要做的改变 而每一列就是这个观察量需要怎么变才能减少不同的观察量 对于一个优化量
  • G2o,GTSAM,Ceres,Tensorflow优化器的方法比较

    首先是一些背景知识 xff1a 最速梯度下降法 xff08 GD xff09 和牛顿法可以用来优化所有种类的函数 牛顿高斯和基于牛顿高斯的LM法只能用来优化非线性最小二乘 SGD是最速梯度下降法的改进 xff0c 也就是每次迭代随即选取一些
  • MSCKF算法研究

    目的 xff1a 找一个能把imu和视觉融合起来的算法 细节 xff1a 网上搜索了下 xff0c 17年初的时候基本VIO算法就是MSCKF最完备 github上面有一个非官方的实现 xff0c 就下下来研究 但是跑kitti的数据都效果
  • SLAM中全局优化初值设置的经验谈

    情况分析 xff1a 有两段轨迹 xff0c 段内的重投影误差很小 xff0c 但是两段轨迹的相对位置有点错位 我们找到了这两段轨迹overlap的一些共视关系 这个时候如果我们直接把两段轨迹放一起做BA xff0c 其实是不能减少这两段轨
  • 视觉建图融合gps的合并工具测试

    描述 xff1a 把两个bag的数据分别计算自己的轨迹后 xff0c 和gps做刚体对齐找两个轨迹的共視关系通过两个轨迹的点云匹配后得到两个轨迹的相似变换 xff0c 把第二个轨迹变换到第一个轨迹的坐标系下加入gps边的pose graph
  • Android.mk for your own module

    这里我们向Android中添加自己的模块 xff0c 只涉及到 so a elf source的编译 xff0c 以及如何将prebuilt file添加进工程 对于APK以及jar的source暂时没有仔细研究 xff0c 要添加进去的话
  • 基于 Distcc 的android分布式编译环境的搭建

    关于Ditscc分布式编译环境的搭建 xff0c 网上也有不少文章 xff0c 但是基本上都过时了 所以看了很多文章 xff0c 走了不少弯路 xff0c 最后总算梳理清楚了一条正确的环境搭建的步骤 xff0c 而且可以实现zeroconf
  • opencv 删除二值化图像中面积较小的连通域

    对于上图的二值化图像 xff0c 要去除左下角和右上角的噪点 xff0c 方法 xff1a 使用opencv去掉黑色面积较小的连通域 代码 CvSeq contour 61 NULL double minarea 61 100 0 doub
  • c++中冒号(:)和双冒号(::)的用法

    转载于 xff1a http fengqing888 blog 163 com blog static 3301141620100623933512 1 冒号 xff08 xff09 用法 xff08 1 xff09 表示机构内位域的定义
  • linux下c语言写的简单的贪吃蛇

    基本算是第一次在linux下写程序 xff0c 果然各种不习惯 用的是emacs xff0c 都说是IDE中的神器 xff0c 但是我还没用习惯 xff0c gdb调试也不怎么熟悉 xff0c linux下的c程序设计也只是看了个皮毛 xf

随机推荐

  • 树莓派无需显示屏的VNC Viewer方式的远程连接

    一 配置wifi连接 方法非常简单 xff0c 首先在SD卡的根目录下添加一个名为 wpa supplicant conf的文件 xff0c 然后在该文件内添加以下的内容 xff1a ctrl interface 61 DIR 61 var
  • 由三点确定一个圆(圆心,半径)

    参考论文 一种改进的随机圆检测算法 光电工程 数据结构 圆信息 struct CircleInfo CvPoint circlecentre 圆心 double raduis 半径 点信息 struct CvPoint int x int
  • Qt Creator+MinGW+OpenCV2.3.1 开发环境搭建(windows 7 系统)

    折腾了一个下午 43 晚上 xff0c 总算弄好了 xff0c 下面说下步骤 1 必备软件 xff1a Qt SDK for Open Source C 43 43 development on Windows xff1a http qt
  • void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?

    const void fun 和void const fun 两个相同 如果采用 34 按址传递方式 34 的函数返回值加const 修饰 xff0c 那么函数返回值 xff08 即地址 xff09 的内容不能被修改 xff0c 该返回值只
  • strcpy()、memcpy()、memmove()、memset()的实现

    strcpy memcpy memmove memset 的实现 strcpy 字符串拷贝 char strcpy char strDest const char strSrc assert strDest 61 NULL amp amp
  • 多重继承的构造函数和析构函数的执行顺序(包含虚基类)

    下面示例就是说明多重继承析构函数和构造函数的执行顺序 xff1a span class token macro property span class token directive hash span span class token d
  • 阿里云服务器 配置frp实现Ubuntu台式机电脑内网穿透

    起因 实验室一台Ubuntu20 04的台式机电脑 xff0c 我想用我的Win10笔记本远程连接它 xff0c 用它的高性能 xff0c 在Ubuntu的环境下来跑代码 xff0c 这样比较方便 编程环境即可具有便携 性能 两者兼得 xf
  • 【论文阅读笔记】GAN Memory with No Forgetting

    Hello大家好 xff0c 今天带大家来看Nips2020的最新文章 GAN Memory with No Forgetting 关于Nips2020所有关于终生学习的文章可见传送门 总览 本文是杜克大学 xff08 Duke Unive
  • 【论文阅读笔记】NeurIPS2020文章列表Part2

    Online Multitask Learning with Long Term MemoryFewer is More A Deep Graph Metric Learning Perspective Using Fewer Proxie
  • Macbook用Terminal启动Matlab

    最近更新到了Mac OS Big Sur xff0c 发现Matlab开启后直接无响应 xff0c 因此只能通过Terminal打开 xff0c 打开方式是在Terminal中输入如下代码直接敲回车就行啦 xff08 其中Matlab版本要
  • 对比学习学习笔记

    对比学习学习笔记 A Simple Framework for Contrastive Learning of Visual Representations Ting Chen Simon Kornblith Mohammad Norouz
  • Ubuntu18版本安装ROS

    最近不小心把虚拟机里的ROS弄坏了 xff0c 导致Linux都无法使用 也忘了快照导致所以软件重新安装 xff0c 在这里给大家分享一下ubuntu18版本如何安装ros以及我安装中出现的问题如何进行解决 注 xff1a 不同的ubunt
  • ER图

    1 某商业集团的销售管理系统 数据库中有三个实体集 xff0c 一是 商店 实体集 xff0c 属性有商店编号 商店名 地址等 xff1b 二是 商品 实体集 xff0c 属性有商品号 商品名 规格 单价等 xff1b 三是 职工 实体集
  • Tensorflow:EEG上CNN的一次实验

    一次失败的CNN实现 前言简介数据CNN网络 模型调整减少过拟合的尝试与全连接网络比较与SVM网络比较模型运用到其他分类标准结果分析代码CNN网络代码交叉验证代码FC网络代码SVM网络代码 前言 这是一次较为 失败 的分类器尝试 xff0c
  • MySql Error Code: 1046. No database selected Select

    初学者在建立表时容易遇到这样的报错 xff1a Error Code 1046 No database selected Select the default DB to be used by double clicking its nam
  • R语言自用笔记:复数

    复数在R语言中标示为z 61 x 43 iy 在R中虚数单位为i xff0c 如果是定值可以直接赋值 z1 61 1i print z1 1 0 43 1i z2 61 2 5i print z2 1 0 43 2 5i z3 61 1 4
  • [飞控]如何学习无人机-入门篇

    学什么 我把无人机分成3个大模块 操作 目的 xff1a 组装无人机 xff0c 享受驾驶无人机的乐趣 抱歉我给不了太多建议 xff0c 因为我从没有以此为目进行过学习 xff0c 但是我知道这一部分的知识关键词是 航模 xff0c 有非常
  • 说透互补滤波(1) - 线性互补滤波器从原理到实现

    为什么开源代码看不懂 xff1f 说起互补滤波 xff0c 之前非常的流行 xff0c 在那个算力不够的年代 xff0c 这种短小精干的融合算法 xff0c 风靡一时 原理也非常简单 xff1a 我有两路信号 xff0c 一个带有高频噪声
  • 飞控中的IIR二阶滤波器

    之前我们讲过一阶滤波器 xff0c 思路就是把一个连续的滤波器形式 xff0c 通过离散化的方式 xff0c 转换成差分方程 同事拿着我的文章 xff0c 对照着代码里的二阶滤波 xff0c 表示完全看不懂 xff0c 我说不可能 xff0
  • [源码解读]position_estimator_inav_main解读(如何启动光流)

    阅读工具 xff1a source insight 技术交流 xff1a zinghd 64 163 com xff0c 757012902 64 qq com 源码版本 xff1a Firmware xff08 原生固件 xff09 如有