iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0
IoT

homekit+pixhawk系列 第 2

cmavnode取代mavproxy吧!

  • 分享至 

  • xImage
  •  

什麼是CMavNode呢?

  • 一個用來作為Mavlink的轉接程式
  • 較mavproxy所需資源較少
  • 較mavproxy所支援的功能較少

作為一個使用pixhawk的使用者來說,需要執行較為複雜的動作時,需要透過遠端或是有線連結小型電腦作為判斷偵測值之資料以及轉送mavlink封包使用,但是攜帶上載具的小型電腦通常不具備超強的運算能力。因此若要使用轉傳封包功能,又要透過dronekit等需要大量運算資源的東西操作pixhawk時,mavproxy就會不敷使用了。

cmavnode 簡介

cmavnode 是一款可以轉送mavlink封包的工具,可以接收來自TCP UDP 或是Serial的mavlink封包,並轉換為TCP UDP 等網路封包傳出,,但cmavnode 並沒辦法接受多個輸入,只能單個輸入,多個輸出

cmavnode 安裝

首先安裝git

sudo apt-get install git

接著clone 這個repository

git clone https://github.com/MonashUAS/cmavnode/

再更新 submodules

git submodule update --init

再安裝相關軟體

 Ubuntu 14.04: sudo apt-get install libboost-all-dev cmake libconfig++ libreadline-dev
 Ubuntu 16.04: sudo apt-get install libboost-all-dev cmake libconfig++-dev libreadline-dev
 Debian Stretch: sudo apt-get install libboost-all-dev cmake libconfig++-dev libreadline-dev

接著build這個軟體

mkdir build && cd build
 cmake ..
 make
 sudo make install

這樣就得到這個軟體了

使用方式

./cmavnode -f <pathtoconfigfile>

這一套與mavproxy不同的點在於,mavproxy使用 argument的指定連接方式,而cmavnode使用檔案的方式,類似windows裡面的ini 組態設定檔,其設定方式如下

[aseriallink]
    type=serial
    port=/dev/ttyUSB0
    baud=57600

[audplink]
    type=udp
    targetip=127.0.0.1
    targetport=14559
    localport=14550
    sim_enable=true
    sim_packet_loss=25
    packet_drop_enable=true

[audplink2]
    type=udp
    targetip=127.0.0.1
    targetport=14555
    localport=14556

這是從cmavnode的官網擷取下來的設定檔,可以看到他使用了兩個UDP output 以及一個serial 輸入,此時cmavnode就會把接收到的mavlink封包傳送至兩個UDP port,第一個UDP模擬了一個25%的封包丟失率,也就是每4個封包中,有一個會丟失,可供模擬器模擬封包丟失時的狀態。

結語

透過上述方式可使得pi zero 在轉送mavlink封包時不會耗費太多效能,也可以作為dronekit的控制器之使用。


上一篇
Pixhawk怎麼讓遙控車連上網?
下一篇
home bridge with raspberry pi
系列文
homekit+pixhawk30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言