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(!!!)。