2016.2.27 Px4 flow分析

2023-05-16

Px4 flow分析

代码地址https://github.com/PX4/Flow

主要来分析最后一个函数compute flow

 

原版代码的光流算法主要是使用hist直方图算法,这段代码主要可以分成两部分来看,第一部分是生成直方图,第二部分是根据直方图来进行位移向量的计算。由于是光流,那么就是飞机底部的摄像头随时间移动的一个趋势,那么一定是需要至少两幅图的数据,分别为frame1frame2

 

第一步的jifor循环是采样点的循环,之中的jjii的循环是对于一个小邻域的采样。采样点是从frame1找的,之后根据采样点的坐标在frame2的-winminwinmin的一个小矩形种找一个最相似的点,简单来说,就是找到采样点在两幅图的对应位置。

PARAM_BOTTOM_FLOW_FEATURE_THRESHOLD变量来判断对于特征点采样的质量要求,越大越严苛。表示是否当前这个点可以作为计算光流的点。原函数计算了梯度等。

之后找第二张图中一个最相似的点,计算sad(sum of absolute difference)也就是对于两张图的差异的绝对值的和进行计算,然后作为相似度的衡量,越小越相似。PARAM_BOTTOM_FLOW_VALUE_THRESHOLD则是对于相似度的一个阈值判断,越小越相似,越大越严苛,如果不满足这个条件,说明两张图片几乎找不到对应点,那么就没戏了,接着看下一个采样点吧。

如果很幸运,frame1中找到了可以计算的采样点,而且在frame2中也找到了对应的点,那么可以计算xy方向的差值,或者说是一个移动向量,分别计算xy两个方向的移动,这样就能够获得移动的向量,其中两个方向xy移动的多少则记录在一个直方图的数组中。

所以最终xy的直方图数组中记录的是所有挑战过两关的英雄点,记录移动的大小和方向。

 

以上是对于hist的产生,除了hist之外还有个东西,是对应点的移动的数据,也就是所有采样点的移动的方向和大小,dirssubdirsdirs记录的是像素级别的移动,subdirs记录的是亚像素级,也就是半个像素点的移动。

 

有了histdirs,那么用histdirs的数据代表原来的数据,就不用frame1frame2了,可以光荣退役了,因为有了更能表示的一种方式——直方图和方向向量。

第一步是一个小参数的判断,是否filter,这个感觉影响不大,效果都差不多,不知道其他人是不是这样。

如果是PARAM_BOTTOM_FLOW_HIST_FILTER,那么就是对于hist的处理,如果不是,那么就是对于dirssubdirs的计算,比较简单,简简单单的求和然后处以有效的采样点个数就可以了。

最后融合gyro的信息进行调整。

 

                                                                      G106group BUAASCSE

 

flow.c源代码:

https://github.com/PX4/Flow/blob/master/src/modules/flow/flow.c

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

2016.2.27 Px4 flow分析 的相关文章

  • 关于PX4中的高度若干问题

    飞行的高度是如何测量的 xff1f 地面的高度和海平面的高度差别很大 xff0c 飞控又是如何有效判别进行降落的 xff1f 这是我脑子里的疑问 搜索的一圈发现很少有人讨论这方面的问题 xff0c 于是本次我就直接看一下源代码 xff0c
  • PX4代码学习系列博客(5)——在px4中添加自己的模块

    怎么在px4中添加自己的模块 在 px4固件目录结构和代码风格 这一节 xff0c 曾经说过NuttX是一个实时的嵌入式系统 xff0c 上面可以像windows那样运行程序 那既然是应用程序 xff0c 那我们应该也能写一些可以在Nutt
  • PX4代码学习系列博客(6)——offboard模式位置控制代码分析

    分析offboard模式的代码需要用到以下几个模块 local position estimator mavlink mc pos control mc att control mixer 程序数据走向 mavlink 一般的offboar
  • PX4源代码下载编译

    sudo git clone https github com PX4 PX4 Autopilot git recursivegit submodule update init recursivegit submodule update r
  • 初学PX4之环境搭建

    文章转自 xff1a http www jianshu com p 36dac548106b 前言 前段时间linux崩溃了 xff0c 桌面进去后只有背景 xff0c 折腾好久没搞定 xff0c 为了节省时间索性重装了系统 xff0c 同
  • 2016晚安 2017你好

    不知不觉开通CSDN账号已有三年多的时间 xff0c 三年多以前抱着学习坚持的态度想要在CSDN上记录自己学习的点滴 结果三年多过去了 xff0c 2016年也随着过去了 xff0c 回顾2016年主要的三件事情就是 xff1a 1 从大学
  • PX4 ---- Indoor Flight

    文章目录 室内飞行ROS amp PX4Pose Data 飞机配置MAVROS 基于工训赛 VIO 飞行总结 室内飞行 ROS amp PX4 Pose Data 飞机配置 VIO 参考此处 xff0c 采用 T265 配置 相机与飞控机
  • PX4模块设计之五:自定义MAVLink消息

    PX4模块设计之五 xff1a 自定义MAVLink消息 1 MAVLink Dialects1 1 PX4 Dialects1 2 Paprazzi Dialects1 3 MAVLink XML File Format 2 添加自定义M
  • PX4模块设计之十三:WorkQueue设计

    PX4模块设计之十三 xff1a WorkQueue设计 1 WorkQueue启动2 WorkQueue接口2 1 基本接口2 2 辅助接口2 3 WorkQueue任务函数2 3 1 Flat Build2 3 2 Protected
  • PX4模块设计之十八:Logger模块

    PX4模块设计之十八 xff1a Logger模块 1 Logger模块简介2 模块入口函数2 1 主入口logger main2 2 自定义子命令Logger custom command2 3 日志主题uORB注册 3 重要实现函数3
  • 关于github px4 gps 驱动的开发的总结

    源码编译上边已经写过文章了 遇到的几个问题 1 解决虚拟机不能共享文件夹的问题 一开始虚拟机的更新 vmware tools 是灰色的 xff0c 不能点 xff0c 然后通过关掉虚拟机 xff0c 然后再开启的时候 xff0c 在没有启动
  • IDEA怎么查看现在的项目使用的JDK版本? 2016年4月19日22:51

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 右键单击项目 xff0c 选择 或者直接使用F4 转载于 https my oschina net sprouting blog 670222
  • flexnet licensing service下载_Abaqus 2016 软件下载地址及安装教程

    目前100000 43 人已关注加入龙跃系统 软件介绍 名称 xff1a Abaqus 2016 64位 大小 xff1a 5GB 语言 xff1a 简体中文 安装环境 xff1a Win7 Win8 Win10 ABAQUS 是一套功能强
  • Px4源码框架结构图

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

    xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
  • Outlook 2016 pst/ost邮件数据文件迁移实现

    当使用outlook 2016新建Email账户的时候 xff0c 其数据文件 xff08 ost文件 xff09 总是被保存在C盘默认目录 C Users 用户名 AppData Local Microsoft Outlook 下 xff
  • PX4项目学习::(五)模块代码启动流程

    54条消息 PX4 模块代码启动流程 zhao23333的博客 CSDN博客
  • PX4:Policy “CMP0097“ is not known to this version of CMake.

    make px4 fmu v3 时报的错 CMake版本的问题 由https blog csdn net zhizhengguan article details 118380965推测 xff0c 删除cmake policy也没事 ma
  • 【系统篇 / 配置】❀ 05. 新建管理帐户 ❀ Windows Server 2016

    简介 Windows Server 2016 安装完成后 默认的管理帐户是administrator 拥有绝对权限 但是在日常管理中不建议使用这个帐户 一旦密码泄露 服务器就门洞大开了 新建帐户 为了安全起见 管理员最好给自己建立一个帐户
  • 【系统篇 / 域】❀ 06. Windows10 加入域 ❀ Windows Server 2016

    简介 众所周知 Windows Server 2016 与其它版本不同的地方就是支持 Windows10 加入域服务了 修改 DNS Windows10 加入域之前 需要把网卡的DNS指向域服务器 在Windows10系统中 鼠标右击右下角

随机推荐

  • FreeRTOS内核全局变量

    想要分析FreeRTOS源码 xff0c 想要理解FreeRTOS源码的整个宏观架构 xff0c 有一个前提就是必须知道FreeRTOS内核中那些全局变量的意义 xff0c 每个全局变量都是用来干什么的 只有了解了这些全局变量我们才能从宏观
  • 基于LWIP协议栈RAW API的 UDP传输实验

    什么是UDP xff1f UDP是用户数据报协议 xff0c 是OSI参考模型中的传输层协议 UDP的特点 缺点 xff1a 无连接的 xff0c 不可靠的 xff0c 不能保证数据安全到达目的地 优点 xff1a 消耗资源小 xff0c
  • 初识CANOpen

    什么是CANOpen CANOpen是位于CAN总线之上的一个应用层协议 CAN总线只规定了物理层和数据链路层 xff0c 有了这两层 xff0c 数据就可以在CAN总线上传输了 我们和哪个设备通信就和哪个设备约定好 xff0c 哪个ID代
  • STM32单片机被锁无法烧写程序解决办法

    以前遇到无法烧写程序的问题 在开发中 xff0c 单片机突然无法烧写程序 xff0c 这种情况相信大家应该都遇到过 比如烧写程序引脚被设置为别的功能 这种情况也是最常见的 我们可以把复位电容短路 xff0c 让单片机复位 xff0c 然后点
  • STM32F407以太网DMA描述符和数据链路层收发数据

    本文主要介绍STM32F407单片机MAC内核的DMA描述符 xff0c 以及如何实现以太网二层的数据收发 这一篇先实现数据链路层的正常收发 xff0c 下一篇再去介绍如何把LWIP移植到单片机上 大部分资料都是把LWIP移植和以太网卡驱动
  • linux查看日志常用命令

    线上环境出现问题 xff0c 熟悉常用的日志操作命令 xff0c 对有效的排查出问题至关重要 下面将介绍一些常用的命令 xff0c 一起学习下 1 tail命令 xff08 查询日志文件尾部 xff09 tail f 日志文件 xff1a
  • 定时事件链表

    本文主要写的是 xff1a 将需要定时的事件作为一个链表节点添加到链表中 所写代码是从LWIP源码中复制出来的 xff0c 稍作修改 当阅读到lwip源码timers c文件中的sys timeout函数时 xff0c 觉得非常适合如下一种
  • LAN8720A芯片

    LAN8720A是一个10 100M 的以太网PHY芯片 带有SMI接口 xff0c 支持RMII LAN8720A各个管脚的功能 xff1a MDIO MDC是站管理接口 SMI接口 引脚 SMI是标准接口 xff0c 比如交换机芯片一般
  • 无刷无霍尔BLCD电机控制

    声明 xff1a 本文出自百度文库无刷无霍尔电机控制 xff0c 因为该文为繁体 xff0c 看起来特别别扭 xff0c 特此翻译 文库网址 xff1a span class hljs label https span wenku span
  • 如何高效阅读一篇论文?来自18位教授、主编和博士生的最好建议!

    撰文 Elisabeth Pain xff08 翻译 何伟雄 xff1b 审校 魏潇 xff09 文章来源自公众号科研圈 xff08 ID xff1a keyanquan xff09 即便是专业的科研从业者 xff0c 也无法做到像看小说一
  • 了解FreeRTOS操作系统

    对于初学者来说 xff0c 想要弄懂FreeRTOS操作系统 xff0c 首先需要知道FreeRTOS需要包含哪些文件 xff0c 从官网 https sourceforge net projects freertos files 上下载的
  • Windows程序的入口是哪里?写出Windows消息机制的流程

    Windows程序的入口是WinMain 函数 Windows应用程序消息处理机制 xff1a A 操作系统接收应用程序的窗口消息 xff0c 将消息投递到该应用程序的消息队列中 B 应用程序在消息循环中调用GetMessage函数从消息队
  • Linux内核编译与安装:4.4.0-21→4.14.0

    1 背景 从事Linux环境下开发工作 xff0c 一直想自己玩 xff0c 纯属好奇 xff0c 没撒背景 2 编译环境 zg Linux etc uname a xff08 查看内核 xff09 Linux zg Linux 4 4 0
  • gazebo的学习与使用

    Gazebo教程 xff08 使用roslaunch启动Gazebo world文件和URDF模型 xff09 启动Gazebo xff0c 打开world模型以及向仿真环境中插入机器人模型的方法有很多 xff0e 在这个教程中 xff0c
  • KDD2019经典论文奖-CELF算法实现

    数据挖掘 KDD 领域 CELF 已成为一种经典的 社会网络影响最大化发现算法 xff0c 用于 改进贪心算法 的 效率 提升 700 获得 KDD 2019 的 经典论文 奖 xff0c 作者 xff1a Jure Leskovec xf
  • 英语常用短语1

    What are you trying to say xff08 你到底想说什么 xff1f xff09 Don 39 t be silly xff08 别胡闹了 xff09 How strong are your glasses xff0
  • MapReduce之MR处理:按课程排学生名词以及最高最低平均分数

    根据此篇文章可以熟练使用Reduce阶段进行分组 xff0c 并且了解jdk8新特性代码 我们开看下原始数据 某地方编辑的txt文件数据不是太大 xff1a English liudehua 80 English lijing 79 Eng
  • Facebook开源Surround 360全景摄像机

    Surround 360诞生于Facebook在硅谷总部附近的神秘实验室 xff0c 并于2016年4月在旧金山的F8大会上发布 如今Facebook将全景摄像机的程序开源在GitHub上 xff0c 任何感兴趣的人都可以利用 Facebo
  • go get 报错fatal: The remote end hung up unexpectedly

    go gitee com wup file tranmon 64 v1 2 116aac invalid pseudo version git fetch unshallow f https gitee com wp file tranon
  • 2016.2.27 Px4 flow分析

    Px4 flow 分析 代码地址 https github com PX4 Flow 主要来分析最后一个函数 compute flow 原版代码的光流算法主要是使用 hist 直方图算法 xff0c 这段代码主要可以分成两部分来看 xff0