加速计、气压计、GPS数据融合

在无人机控制当中,传感器的参与那是必不可少的,特别是陀螺仪,最经典的为MPU6050,目前大部分的无人机都是用的这个器件。
熟悉MPU6050的都知道,这个传感器可以输出三轴加速计、三轴陀螺仪;加速计,顾名思义,直接测得物体的加速度。
理论上 加速度积分得到速度,速度再积分得到位移:
S = V0 * t + 1/2 * a * t ^ 2;
V = v0 + a * t;
按照此理想情况下:一个加速计直接积分算得速度跟位移就得了呀,为啥还要气压计、GPS呢。
无人机为了定点悬停,需要计算XYZ三轴的速度跟位移,而加速度计有一个致命的缺点就是它积分会漂移,而且是漂移非常大的那种,如果直接用这个数据做控制,飞机都不知道要飘到哪里去了。所以才借助外部传感器气压计、GPS修正加速计的漂移。
加速计在无人机三轴位置速度计算时也有很大的优点,就是其灵敏度相对很高,无人机稍微动一点加速计都可以感受的出来,然后把数据传到无人机,无人机得以做相应的调整。

数据融合

具体数据怎么融合呢?
我们先来总结一下加速计、气压计、gps各自的优缺点:
加速计:优点反应速度快,缺点积分漂移严重。
气压计GPS:优点绝对位置比较平稳,缺点反应速度比较慢。
所以就有了互补滤波这个伟大的,简单易懂的滤波算法。

以下为互补滤波代码:

void Gps_Acc_Delay(void)
{volatile uint8 i;for (i = 0; i < XY_VEL_HISTORY - 1; i++){x_vel_history[i] = x_vel_history[i+1];y_vel_history[i] = y_vel_history[i+1];x_pos_history[i] = x_pos_history[i+1];y_pos_history[i] = y_pos_history[i+1];}x_vel_history[XY_VEL_HISTORY - 1] = x_est[1];y_vel_history[XY_VEL_HISTORY - 1] = y_est[1];x_pos_history[XY_VEL_HISTORY - 1] = x_est[0];y_pos_history[XY_VEL_HISTORY - 1] = y_est[0];
}
void ObservationOPT_Update(float pos_x,float vel_x,float pos_y,float vel_y)  //have data and update
{uint8 i;corrOPT_xpos = pos_x-x_est[0];corrOPT_xvel = vel_x-x_est[1];corrOPT_ypos = pos_y-y_est[0];corrOPT_yvel = vel_y-y_est[1];return;
}
void ObservationUpdate(int baro_disdance,int16 baro_vel)
{uint8 i;corr_baro = (float)baro_disdance - z_est[0];if (fly_status.HOLD_STATUS == HOLD_STOP){z_est[0] = baro_disdance;z_est[1] = 0;}return;
}
void TimeUpdate(struct vertical_information *pAltitude,realacc* acc)
{static float high_pass_zvel = 0;z_est[2]=acc->zz-z_bias;accel_filter_predict(INAV_T,z_est);z_est[0] += corr_baro * w_z_baro * INAV_T;z_bias -= corr_baro * 0.001f * INAV_T;z_est[1] += corr_baro * baro_vel_gain * INAV_T;high_pass_zvel = z_est[1];pAltitude->altitude_hat=z_est[0];pAltitude->velocity_hat=high_pass_zvel;ObservationOPT_Update(x_est[0],optflow.velx,y_est[0],optflow.vely);x_est[2]=acc->xx-x_bias;accel_filter_predict(INAV_TXY,x_est);x_est[0] += corrGPS_xpos * x_pos_gain * INAV_TXY;x_est[1] += (corrOPT_xvel*0 + corrGPS_xpos * 1.0f + corrGPS_xvel * 0.2f) * x_vel_gain * INAV_TXY;y_est[2]=acc->yy-y_bias;accel_filter_predict(INAV_TXY,y_est);y_est[0] += corrGPS_ypos * y_pos_gain * INAV_TXY;y_est[1] += (corrOPT_yvel*0 + corrGPS_ypos * 1.0f + corrGPS_yvel * 0.2f) * y_vel_gain * INAV_TXY;if (GPS_is_Good){if (corrGPS_xvel > -10 && corrGPS_xvel < 10)x_bias -= (corrGPS_xpos*0.3f + corrGPS_xvel) * INAV_TXY * 0.1f;if (corrGPS_yvel > -10 && corrGPS_yvel < 10)y_bias -= (corrGPS_ypos*0.3f + corrGPS_yvel) * INAV_TXY * 0.1f;}else{x_est[1] = Body_dat.vel_x;y_est[1] = Body_dat.vel_y;x_est[0] = Body_dat.pos_x1;y_est[0] = Body_dat.pos_y1;}pos_vel_xy.posx = Body_dat.pos_x1;pos_vel_xy.posy = Body_dat.pos_y1;pos_vel_xy.velx = x_est[1];pos_vel_xy.vely = y_est[1];
}

以上代码就是无人机里的互补滤波修正。如有不懂欢迎留言或扣我1836703877。无人机四轴本人做了五年,以上代码全部自己写,上传的没来的及添加注释,但是代码时成功在飞机上跑的并且无人机出货的。

无人机加速计、气压计、GPS数据融合相关推荐

  1. 动手学无人驾驶(6):基于IMU和GPS数据融合的自车定位

    在上一篇博文<动手学无人驾驶(5):多传感器数据融合>介绍了如何使用Radar和LiDAR数据对自行车进行追踪,这是对汽车外界运动物体进行定位. 对于自动驾驶的汽车来说,有时也需要对自身进 ...

  2. 无人车传感器 IMU与GPS数据融合进行定位机制

    前言 上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度.频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求. 为了能让无人驾驶系统更高频率地获取定位信息,就必 ...

  3. Matlab Mobile手机版获取gps数据和加速度信号融合

    Matlab Mobile手机版获取gps数据和加速度信号融合 前言 安装matlab mobile Matlab Drive Connector 安装 Matlab Mobile 记录数据 Matl ...

  4. 基于数据融合和串级PID的小型四旋翼无人机高度测量与控制系统

    作者:Tomy 摘要:简单介绍了一种基于 Mahony 算法无人机姿态解算算法,并在这个的基础上设计了一 种融合惯导加速度计和气压计的小型无人机高度测量系统, 同时利用该高度测量系统设计了 基于串级 ...

  5. 什么是陀螺仪的dr算法_一种基于DR/GPS/MM的组合定位系统数据融合算法

    摘 要: 针对盲区中使用INS惯性导航系统进行定位存在误差积累的问题,提出一种基于DR航位推算.GPS全球定位系统和MM地图匹配的组合定位系统数据融合算法.该算法利用GPS和MM中得到的位置信息,一方 ...

  6. VINS - Fusion GPS/VIO 融合 二、数据融合

    https://zhuanlan.zhihu.com/p/75492883 一.简介 源代码:VINS - Fusion 数据集:KITTI 数据 程序入口:globalOptNode.cpp 二.程 ...

  7. BetaFlight深入传感设计之七:GPSBaro高度数据融合

    BetaFlight深入传感设计之七:GPS&Baro高度数据融合 1. 现象 2. 分析 2.1 程序逻辑 2.2 GPS精度 2.3 数值分析 3. 总结 传感器数据融合最主要的目的是为了 ...

  8. 图像点云数据融合方法汇总

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨eyesighting@知乎 来源丨https://zhuanlan.zhihu.com/p/4 ...

  9. 动手学无人驾驶(5):多传感器数据融合

    本系列的前4篇文章主要介绍了深度学习技术在无人驾驶环境感知中的应用,包括交通标志识别,图像与点云3D目标检测.关于环境感知部分的介绍本系列暂且告一段落,后续如有需要再进行补充. 现在我们开启新的篇章, ...

  10. 航测大数据量处理_上海无人机航测收费标准大数据应用中心

    上海无人机航测收费标准大数据应用中心.在无人机航空摄影测量的过程中,能够准确并快速的收取到地表数据.相对卫星测绘和人工测绘,无人机航测能节省时间,更快.更敏捷的为用户提供所需要的测量信息.而且综合应用 ...

最新文章

  1. 在 StringGrid 上画线时, 使用 GDI+ 以消除锯齿 - 回复 gsjn_8888_6666 的问题
  2. 在ECR上推送Spring Boot Docker映像
  3. 【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析
  4. 如何在云上使用confd+ACM管理敏感数据
  5. jquery实现的视差滚动教程(视差大背景效果)
  6. java 学习笔记_java学习笔记
  7. Win10/Server2016镜像集成离线补丁
  8. mysql 序列 语句_MySQL 序列使用
  9. 027 多分支选择结构
  10. iframe嵌入微信公众号页面(有图片)
  11. c盘空间太小怎么办 c盘如何扩展分区
  12. [渝粤教育] 西南科技大学 语文教材教法 在线考试复习资料2021版
  13. HTMl页面加入落叶下雨动画,基于HTML5+Webkit实现树叶飘落动画
  14. 投保攻略:买车需要买哪些产品
  15. Mac 删除/卸载 自己安装的python
  16. 如何应对外包公司(文思海辉)的Python后端面试
  17. 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
  18. SunFMEA软件-FMEA如何在企业中进行落地?
  19. nodejs下载及安装(windows)
  20. murmurhash2 Python实现(复现开源项目主页上的 Murmurhash2)

热门文章

  1. txt转mobi格式
  2. 制作双色调图像(RGB 颜色模式)
  3. 写CSDN博客时,调节字体大小、颜色及其他样式的常用操作方法
  4. 树莓派python485设备通信
  5. C++求解一元二次方程
  6. java设计模式三个模式结合_Java设计模式——责任链(结合Tomcat中Filter机制)
  7. TikTok API接口,关键词搜索用户
  8. 分析入门股票量化交易券商接口的方法
  9. mysql创建索引视图_mysql中创建视图、索引
  10. CTF比赛必备常用工具