大疆無人機M100的onboard sdk開發-啟用(linux平臺)
上面一篇基於QT平臺的OSDK開發,這裡研究一下linux平臺的OSDK開發,硬體連線和前期工作參考上篇即可,這裡不做過多說明;
進行OSDK開發的準備工作:
https://developer.dji.com/onboard-sdk/documentation/sample-doc/sample-setup.html#before-you-start
先進行硬體連線,確保你在遵循這些步驟硬體設定指南讓您的連線正確。https://developer.dji.com/onboard-sdk/documentation/development-workflow/hardware-setup.html
執行OSDK的處理器叫做onboard computer ,飛行器叫做Dji aircraft。
首先說一下M100的相關協議,連線如下:
https://developer.dji.com/cn/onboard-sdk/documentation/protocol-doc/open-protocol.html
其次言歸正傳,說說linux平臺的OSDK:
從github中下載onboard sdk包,https://github.com/dji-sdk/Onboard-SDK。
目前的最新版本是3.7,
1.下載開發包
2.如果沒有安裝git的話請先安裝git,安裝過的跳過
sudo apt-get install git
3.開啟一個終端,Building the OSDK and Samples
下載好原始碼之後進入原始碼
cd Onboard-SDK
編譯SDK
mkdir build
cd build
cmake ..
make
注意cmake一定要有兩個. 也就是cmake..
make 結束,在build檔案下生成如下:
4.配置 進入build資料夾下,將配置檔案複製進bin/目錄下
cp ../sample/linux/common/UserConfig.txt bin/
開啟使用者配置檔案UserConfig.txt
5.開啟配置檔案UserConfig.txt ,在相應位置填寫App ID, Key, Baudrate and Port name in the designated places.
vim UserConfig.txt
vim編輯器開啟後顯示如下:
app_id : your_app_id_here //App ID
app_key : your_key_here //Key
device : /dev/ttyUSB0 //USB連線飛控後在電腦中顯示的串列埠名稱
baudrate : 230400 //在 DJI Assitant 2 中修改的波特率
app_id 和 app_key需要註冊成為DJI開發者Level 2級開發者後可以看到
進入http://www.dji.com/cnDJI官網,往下拖動網頁,在右下角點選開發者進行註冊。
在註冊完畢並通過稽核之後,點選下圖中的圖示既可得到你的app_id和app_key.
例如:
app_id : 1027xxx
app_key : 4ec5625bb6de9875b844cb8f8937012b21caeba708dcc8089995b4c78e8xxxxx
device : /dev/ttyUSB0
baudrate : 115200
6.執行Linux sample ,以飛控演示為例,Samples (e.g. flight control sample)
cd bin
./djiosdk-flightcontrol-sample UserConfig.txt
成功執行後,會提示你資料命令,這時你需要講遙控器撥到F檔,然後輸入命令
隨便輸入a或者b
即可看到飛機開始運動,切記要把機槳取下來,注意安全。
可能遇到的問題
1.串列埠開啟失敗
解決方案
有可能是因為沒有將串列埠的許可權開放出來
檢視USB轉串列埠模組的標號
ls -l /dev |grep ttyU
通過上圖可以看出來串列埠的標號是ttyUSB0,接下來將該串列埠的許可權開放:
sudo chmod 666 /dev/ttyUSB0
2.其他問題
參考文獻:https://blog.csdn.net/qq_16775293/article/details/78144156
解決方案
1)檢查是否在DJI Assistant 2軟體上勾選開發者選項,並且檢查在本文前面修改的波特率和DJI Assistant 2上設定的是否一致。
2)在使用Onboard SDK前,遙控器連線手機,手機連網,然後在軟體DJI GO上面登陸進行啟用。
3)最好跑程式的時候就講遙控器開啟,並撥到F擋位。
4)記得我們用的是USB轉串列埠模組,從飛機機身 UART_CAN2介面都的資料,使用的是官方送的三根的資料線,RT,TX記得對調,而不是使用USB線直接從飛機機身連線到電腦