PX4无人机飞控开发——第4篇:室内定点之光流二

大家好我是Jones,写博客记录一下工作的痕迹,同时也对工作做一个总结,才疏学浅,难免会有很多纰漏,还请大家批评指正!

PX4无人机飞控开发系列

第1篇:仿真工具介绍
第2篇:02RTL返航模式优化
第3篇:室内定点之光流一:PID位置控制
第4篇:室内定点之光流二:EKF融合
第5篇:GAZEBO仿真


文章目录

  • PX4无人机飞控开发——第4篇:室内定点之光流二
    • PX4无人机飞控开发系列
  • 前言
  • 一、模块对比
    • 省略,见第3篇:室内定点之光流一
  • 二、方案实现
    • 1.激光雷达定高
    • 2.读取光流数据
  • 三、飞行测试
  • 总结

前言

无人机在室外飞行时通常我们采用GPS定位,一旦我们飞入室内等GPS有遮挡的环境时,GPS信号就受到了干扰,更新位置会失效。我们想办法让无人机在室内也能够“撒手”飞行,我们今天使用光流的采集无人机移动的速度,进行位移估算,通过速度和位移计算从而达到定点。



一、模块对比

省略,见第3篇:室内定点之光流一

二、方案实现

1.激光雷达定高

省略,见第3篇:室内定点之光流一

2.读取光流数据

订阅TF高度信息:

...
struct distance_sensor_s tfmini;
orb_copy(ORB_ID(distance_sensor), _distance_sensor_sub , &tfmini);...

速度计算方法:(1.0*flow_dat.y/0.04)*100 1.0为高度,单位m; 0.04为间隔时间,单位s,100是m->cm的转换:

...
speed_x = flow_x * 2500.0f * ((int)tfmini.current_distance < 6 ? ((int)tfmini.current_distance <4 ? 2 : 2.5):3);//m-->cm  //1.0f*flow_x/(integration_timespan* 1e-6f);  2mspeed_y = flow_y * 2500.0f * ((int)tfmini.current_distance < 6 ? ((int)tfmini.current_distance <4 ? 2 : 2.5):3);//m-->cm  //1.0f*flow_y/(integration_timespan* 1e-6f);  2m//对速度进行限幅speed_x = LIMIT(speed_x, -62.0f, 62.0f);//速度限制在-62cm/s到62cm/s之间speed_y = LIMIT(speed_y, -62.0f, 62.0f);sum_flow_x += speed_x*0.04f; //位移 cm  //speed_x *(integration_timespan *1e-6f);sum_flow_y += speed_y*0.04f; //位移 cm  //speed_y *(integration_timespan *1e-6f);if(sum_flow_x > POS_CONTROL_LIMIT_MAX|| sum_flow_x < POS_CONTROL_LIMIT_MIN || qual < 245)sum_flow_x = 0.0f;
if(sum_flow_y > POS_CONTROL_LIMIT_MAX|| sum_flow_y < POS_CONTROL_LIMIT_MIN || qual < 245)sum_flow_y = 0.0f;...

UORB发布光流消息

...
struct optical_flow_s flow;
memset(&flow, 0, sizeof(flow));flow.timestamp = hrt_absolute_time();
flow.pixel_flow_x_integral = -(float)pixel_flow_y_integral/10000;//对齐方向
flow.pixel_flow_y_integral = (float)pixel_flow_x_integral/10000;if(flow_pub == NULL){flow_pub = orb_advertise(ORB_ID(optical_flow), &flow);}
else{orb_publish(ORB_ID(optical_flow), flow_pub, &flow);}
..

接着我们在参数设置里将FLOW_EN = 1使能,我们就可以用到EKF融合的位置,进行室内定点飞行了,“撒手”解放双手,提高飞行的安全。且在遥控器断链后依然可以安全进行降落。


三、飞行测试

1.室内光流定点测试

点击跳转->B站:PX4无人机飞控开发_03室内光流定点测试

2.室内遥控器断链自动降落测试

点击跳转->B站:PX4无人机飞控开发_04室内光流定点遥控器断链

3.室内光流定点,系留线对光流的影响测试

点击跳转->B站:PX4无人机飞控开发_05测试线缆对光流定点的影响


总结

第3篇:室内定点之光流一,采用了位置误差作为反馈值进行了位置PID闭环处理,测试定点效果还可以,但出现扰动,无人机位置出现偏移后,该方法将会把新的位置作为基准进行闭环,这样无人机将不会回到最初想设定的位置,存在此不足。
该篇章介绍光流融合的方式进行室内定点,我们采用了取巧的方式,将优象光流数据替换了PX4FLOW是光流数据,EKF融合直接订阅即可,不用修改EKF的融合代码,用最小的修改实现最大的飞行需求,且避免bug,并附上飞行视频,那我们下期见啦!

PX4无人机飞控开发——第4篇:室内定点之光流二相关推荐

  1. PX4无人机飞控开发——第1篇:仿真工具介绍

    PX4无人机飞控开发--第1篇:仿真工具介绍 大家好我是Jones,写博客记录一下工作的痕迹,同时也对工作做一个总结,才疏学浅,难免会有很多纰漏,还请大家批评指正! PX4无人机飞控开发系列 第1篇: ...

  2. 无人机飞控开发平台培训理论课程——飞行原理

    四旋翼无人机组成 机架属于承载系统 电池.螺旋桨和电机控制属于动力系统 姿态采集.姿态解算和姿态控制属于飞控 操控系统(遥控器)如果是自动巡航或者自动寻迹则操控系统非必须 课程体系 动力原理--螺旋桨 ...

  3. 无人机飞控开发平台培训理论课程——MSP430最小系统

    一.MSP430简介 ·MSP430系列单片机是德州仪器(TI)生产的16位超低功耗.精简指令集(RISC)的混合信号处理器. ·之所以成为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模 ...

  4. 无人机飞控技术-市场现状及未来发展趋势

    本文研究全球及中国市场无人机飞控技术现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美.欧洲.中国.日本.东南亚和印度等地区的现状及未来发展趋势. 根据QYR(恒州博智)的统计及预测, ...

  5. PX4无人机ROS下仿真开发

    PX4无人机ROS下仿真开发 Overview Simulation Px4_control Slam Map Image_process Planning Volans 项目地址volans 注:有 ...

  6. 《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架

    <多旋翼无人飞行器嵌入式飞控开发指南>里基于FreeRTOS的无人机软件框架

  7. Ubuntu 下无人机飞控 ArduPilot 开发环境搭建

    Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 Ubuntu 下无人机飞控 ArduPilot 开发环境搭建 操作流程 升级安装包 安装 git 克隆代码 安装交叉编译工具链 将编译器添 ...

  8. QT无人机飞控地面站软件开发

    最近正在进行一个QT无人机飞控地面站软件开发,由于疫情原因,项目进度执行比较慢.涉及要的技术主要包括:百度地图SDK接口结合Qt WebEngine使用,串口通信技术,Mysql数据库技术等.

  9. 6款常见的无人机仿真开发平台(附超详细特点功能对比)

    随着无人机与无人集群的快速发展,开发者对于无人机系统仿真测试环境的需求也日渐显现.本文整理了几款常见的无人机仿真平台,旨在为开发者提供一款更为易用.通用且真实可靠的平台. 无人机与无人集群的研制应用快 ...

最新文章

  1. J.R.R.托尔金笔下的中土世界与《斗破苍穹》项目实践:从世界观解构入手场景设计
  2. LeetCode:面试题40. 最小的k个数
  3. 嵌入式电路设计(入门)
  4. Linux命令解释之tail
  5. linux Socket send与recv函数详解
  6. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_8_解决线程安全问题_Lock锁...
  7. 世界顶级黑市拳赛内幕
  8. vhdl8三种方式实现38译码器
  9. android ios emoji表情,iOS和Android的Emoji表情同步方案
  10. 建立U盘免疫病毒文件
  11. Linux下常用软件大比拼
  12. OpenCV学习之多通道图像的混合
  13. 【PAT乙级】PAT (Basic Level) Practice (中文)训练记录
  14. Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
  15. 拔丝芋头的Java学习日记--Day6
  16. for what? so what?
  17. 硬件实现声音信号压缩
  18. 2020-10-29matlab中如何将字符串和数字一起输出到Excel中
  19. Python+Tensorflow+Opencv人脸识别(任意数量人脸)
  20. 如何找到IEEE里面的论文模板

热门文章

  1. android aspectj 参数,在Android项目中使用AspectJ
  2. Python获取Windows管理员权限
  3. 使用 Navicat 和强化AI的查询
  4. #今日论文推荐# 多边形战士模型!微软提出19亿参数的超大通用模型BEIT-3,刷榜多个CV和多模态任务
  5. qq测试常用软件,测速软件有哪些_测速软件实用推荐
  6. Netscape 发明了 JavaScript
  7. JSObject.getWindow()方法找不到问题( 类 netscape.javascript.JSObject.getWindow)
  8. java/php/net/python物流配送中心管理系统设计
  9. 拉格朗日中值定理 积分中值定理 导数定义:
  10. Fabric链码开发——富查询