ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[云讷科技] Kerloud PX4飞控的EKF2程序导航

2022-01-07 15:02:57  阅读:249  来源: 互联网

标签:云讷 EKF2 EKF PX4 Kerloud https line px4 飞控


一、介绍

在这里插入图片描述EKF拓展卡尔曼滤波器是px4开源飞控框架采用的核心状态估计方法,EKF2是px4飞控中的对应的软件模块,可以支持各类传感器信号,包括IMU,磁感计,激光测距仪,气压计,激光定位和视觉定位的数据等。
本文以Kerloud飞控支持的px4软件版本为例,系统地介绍下EKF的程序流程,Kerloud飞控是云讷科技的核心产品之一。
Kerloud飞控支持维护的px4软件库位于:https://github.com/cloudkernel-tech/Firmware
Kerloud飞控的详细说明位于:http://cloudkernel-tech.gitee.io/kerloud_mini/

二、工作原理

EKF是经典卡尔曼滤波器的非线性版本,通过对非线性系统进行线性化实现,它是非线性状态估计,导航和GPS设备中的标杆性算法。
在这里插入图片描述在这里插入图片描述

三、程序框架

1. 基本程序框架

在这里插入图片描述

2. 视觉SLAM融合说明

这里以视觉SLAM的位置融合说明下EKF的融合细节,
首先,假设从机载端电脑或者其他信息可以得到视觉SLAM输出的位姿,可以通过mavlink 协议的VISION_POSITION_ESTIMATE或者ODOMETRY消息输入给飞控,区别在于VISION_POSITION_ESTIMATE只包含位置信息,而ODOMETRY还可以得到速度、姿态和姿态角速度等。

飞控中对应的代码处理在
https://github.com/cloudkernel-tech/Firmware/blob/master_kerloud/src/modules/mavlink/mavlink_receiver.cpp

对应的函数为handle_message_vision_position_estimate()和handle_message_odometry(),我们需要注意的是kerloud飞控默认支持的坐标系为NED坐标系,这点很重要。得到的SLAM信息会通过uorb topic vehicle_visual_odometry发布出来。

EKF2模块(src/modules/ekf2/ekf2_main.cpp)在line 1127开始会接受vehicle_visual_odometry topic的值,给对应位置、速度或者姿态赋值。

External vision innovation 计算:
水平方向计算在: src/lib/ecl/EKF/control.cpp的line 307
竖直方向计算在: vel_pos_fusion.cpp的line 150
Innovation variance计算在vel_pos_fusion.cpp的line 167,对应K值修正计算在line 234行,
最后的状态修正在line 315行。

在使用视觉SLAM融合时,我们需要注意底层飞控的融合设置,包括方差估计,高度,磁感计等,好的效果都需要充分的测试,同时飞行器平台的振动要求也需要考虑在内。

四、更多信息

云讷科技公众号二维码:

在这里插入图片描述

标签:云讷,EKF2,EKF,PX4,Kerloud,https,line,px4,飞控
来源: https://blog.csdn.net/coolkesword/article/details/122364138

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有