天天看點

【ECL】ECL離線調試開源代碼(回放,移植,改算法)ECL_Offline 離線調試開源代碼(EKF2回放,移植,改算法)

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資料輸出,是以近期在做三個事

  1. csv資料的腳本生成
  2. ekf結果資料的輸出
  3. 參數檔案的輸入,這個在想怎麼做

将來的話,就是基于這個可以做一些算法改進,算法優化的工作。

如果你是學習組合導航的,搞無人機的需要檢視定位的,想研究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,那就是路徑問題。

【ECL】ECL離線調試開源代碼(回放,移植,改算法)ECL_Offline 離線調試開源代碼(EKF2回放,移植,改算法)

Qtcreator編譯

使用qtcreator可以設斷點調試比較友善,用qtcreator打開EKF檔案夾下面的CMakeLists.txt(!!!)。

【ECL】ECL離線調試開源代碼(回放,移植,改算法)ECL_Offline 離線調試開源代碼(EKF2回放,移植,改算法)