關於MAVLINK的標頭檔

各位前輩好好

很榮幸能加入這個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 –

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下命令

      還是不太了解相關用法 以下是我想實現的系統圖

      3702527399?profile=original

      目前是卡在ECM-QM57這塊的程式編寫上

      ECM-QM57是嵌入式系統 這塊板子我是安裝XP 用來跟APM溝通

      3702527689?profile=original

      想詢問前輩有沒有範例可以參考  讓小弟可以比較快速上手 非常感謝

    • 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開始做起!!

      非常感謝!!

    • 謝謝前輩回覆!!!

      馬上來研究看看!!!非常感謝!!!

This reply was deleted.