0 關於MAVLINK的標頭檔 Posted by Jason Lin on October 20, 2014 at 5:41am 各位前輩好好很榮幸能加入這個group我是剛接觸apm的新手,目前在研究如何不透過mission planner只透過pc的USB使用c++傳遞命令給apm碰到的困難點是不知道該如何使用MAVLINK的標頭檔,不知道各位前輩有沒有使用過MAVLINK的標頭檔來寫程式,能解決小弟的疑問,感謝!! You need to be a member of diydrones to add comments! Join diydrones Email me when people reply – Follow
Replies
可參看MAVLINK文件與sample:
一般你要把你的project設定好, include path跟library path.
在code內含上: #include <mavlink.h>
然後就開始使用他的API functions 說穿了他的API原理只是幫你把command包成bytes資料結構
就看你要透過成方式傳出去而已
例如: 送出 heart beat的更新
/*Send Heartbeat */
mavlink_msg_heartbeat_pack(1, 200, &msg, MAV_TYPE_HELICOPTER, MAV_AUTOPILOT_GENERIC, MAV_MODE_GUIDED_ARMED, 0, MAV_STATE_ACTIVE);
len = mavlink_msg_to_send_buffer(buf, &msg);
若你用UDP socket傳送就可以這樣用:
sendto(sock, buf, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
若你用USB就改用COM 的API (RS232)
就把sendto改用write()之類的API替換
在之前就是建立socket, 或是開USB com port
若是網路舊用udp socket:
ex: bytes_sent = sendto(sock, buf, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
前輩您好
這幾天研究了一下還是蠻多疑問的
我想用mavlink_msg_rc_channels_override.h透過usb來給apm下命令
還是不太了解相關用法 以下是我想實現的系統圖
目前是卡在ECM-QM57這塊的程式編寫上
ECM-QM57是嵌入式系統 這塊板子我是安裝XP 用來跟APM溝通
想詢問前輩有沒有範例可以參考 讓小弟可以比較快速上手 非常感謝
Hi,
建議你可以參考QGroundControl程式
裡面有你要的參考, 透過USB去控制飛控版
http://www.qgroundcontrol.org/
你的問題在於怎樣open com port 還是怎樣形成封包?
以及你會用到哪些MAVLINK command?
看起來你應該是在做影像視覺讓他去自動控自飛行
對吧?
是的!!我想要以視覺讓四旋翼做自主飛行的動作!! 我的問題應該是在於形成封包
之前我有嘗試解他的封包 了解他的封包格式後 嘗試送一串封包給apm 不過卻完全沒反應
後來才找到mavlink相關的標頭檔 https://github.com/mavlink/c_library
不過目前卻還是搞不清楚怎麼使用這些標頭檔 我會用到的命令應該是改變飛機 pitch row yaw 以及高度 ,接收到影像後 算出控制量 再使用自己撰寫的程式發命令給apm做修正的動作
非常謝謝前輩的回覆!!
這個需要搭配你的APM firmware採用的MAVLINK header定義!
建議你先用source code來build你的APM firmware燒入後
再用相同的firmware定義的MAVLINK來建立你的client 程式
或者修改QGroundControl的程式加個button來傳送你想要的功能
這樣是最快的~也最容易達成目標!一旦程式原理熟了
再來從無到有建構獨立的程式來完成你的專案!
了解!!
謝謝前輩回覆!!
那我就從熟悉QGroundControl的source code開始做起!!
非常感謝!!
謝謝前輩回覆!!!
馬上來研究看看!!!非常感謝!!!