ECL_Offline 离线调试开源代码(EKF2回放,移植,改算法)
github地址:
https://github.com/Toothsmile/ecl_offline
前言
首先得申明下这个想法其实更早的有个浙大的实现了,
https://github.com/AbnerCSZ/EKF2_offline.git
,所以其中参考了他的框架,但是他好像不是算飞机,反正我做了些改进,更适应新的ecl库版本。
接下来我就谈谈我这个代码。官方也出了replay,但是官方的回放有时候存在问题,所以呢我就想自己写一个,比较好把控里面的东西,想用ecl_repaly自定义的数据也比较方便,主要想做的是接近官方ecl的框架,大家将新的ecl库文件放进来也可以使用。
面向的人
- 想系统学习ECL中ekf2代码的同学
- 想移植代码的同学
- 想改里面算法的同学
- 想回放不止是px4记录的log日志的同学
进度
这个代码写是刚开始,但是我写着感觉比之前快,现在
实现以下功能
:
- 离线调试,可以使用命令行编译,也可以使用qt creator编译设置断点
- px4记录的log转成csv可以运行,可以运算
将来实现
我的想法是
先实现官方的repaly数据输出,所以近期在做三个事
- csv数据的脚本生成
- ekf结果数据的输出
- 参数文件的输入,这个在想怎么做
将来的话,就是基于这个可以做一些算法改进,算法优化的工作。
如果你是学习组合导航的,搞无人机的需要查看定位的,想研究px4 ekf2代码的可以用这个,也想大家来帮忙一起完善吧,毕竟一个人的力量是有限的。
代码的使用
1.源码下载,切换分分支
git clone https://github.com/Toothsmile/ecl_offline
git checkout px4v1.8.2
我这个库是先基于px4v1.8.2版本的ecl库改,后面也要去学习下1.9.x版本吧,我现在上传了data数据直接是可以运行。
2.我的改动
我主要是增加修改
/ecl/EKF
三个文件
CMakeLists.txt myekf2.cpp myekf2.h
CMakeLists.txt
是将这些代码组织起来,
myekf2.cpp
就是主函数,也是ecl库的入口函数,将数据穿进去。
3.编译
命令行编译
cd EKF
mkdir Build/
cd Build/
cmake ..
make
cd ..
./build/myekf2
上面多了一步
cd ..
其实是为了让数据的相对路径正确,出现下图的输出结果就说明数据进去了,如果全是0,那就是路径问题。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1EERPdXQq5UNNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyEDN5MzMwIjMxATOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Qtcreator编译
使用qtcreator可以设断点调试比较方便,用qtcreator打开EKF文件夹下面的CMakeLists.txt(!!!)。