pixhawk px4 添加自定義mavlink消息

首先添加一個uORB topic,然後添加一個mavlink解析程序,這將會將一個輸入的mavlink消息解析並傳入uORB topic中。

注:本例程,nsh仍然看不到消息,如果哪位朋友可以看到自定義的消息,希望能指導交流。 

博客地址連接:http://www.cnblogs.com/spyplus/p/pixhawk_note_mavlink_customization.html

FantasyJxf      http://blog.csdn.net/oqqenvy12/article/details/56849572

FantasyJxf的博客不詳細,但是思路清晰

1、原文中定義的ca_trajectory.msg消息如下:

      

uint64_t應改爲uint64

2、原文中自定義的xml文件如下,我是定義的custom_messages.xml文件,內容一樣。

 

3、將mavlink generator生成c語言源文件Out目錄定位到一個空的文件夾,注意語言選擇C,協議選擇2.0,將生成的custom_messages文件夾拖到/mavlink/include/mavlink/v2.0

目錄下。

4、將原文中創建的自定義消息類更改爲本文件夾所示的類。

5、按原文的方法進行編譯會在 v2.0/custom_messages/mavlink_msg_ca_trajectory.h文件的開

 頭定義的結構體產生錯誤:

Typedef struct MAVLINK_PACKED mavlink_ca_trajectory_t{

                 uint64_t timestamp;

                         :

                         :

                 Uint16_t seq_id;

}mavlink_ca_trajectory_t;

要去掉上面高亮的mavlink_ca_trajectory_t,就可以編譯過去。

6、(1)在 mavlink_receiver.h中增加一個處理類MavlinkReceiver 中的輸入mavlink消息的函

數:

void handle_message_ca_trajectory_msg(mavlink_message_t *msg);

這個函數是定義在MavlinkReceiver類中的。

 

2)在 mavlink_receiver.h中加入一個類MavlinkReceiver中的uORB消息發佈者

orb_advert_t _ca_traj_msg_pub,也是在類中定義的。

7、但是在啓動nsh時出現的 Using MAVLINK 1.0消息。?

  然後在其他配置步驟不變的情況下,在v1.0/message_definitions/下創建自定義消息custom_message.xmlmavlink generatorOut生成的custom_messages複製到v1.0目錄下。能編譯過去,但是不能在nsh看到消息,通過nsh下輸入ls obj命令查看消息

8、然後確保啓用流,通過在啓動腳本中添加以下行(-r配置流速率,-u標識UDP端口14556上的mavlink通道):  

示例:

1)在ttyS1串口上啓動mavlink,波特率爲921600,最大發送速率爲80kB / s

mavlink start -d /dev/ttyS1 -b 921600 -m onboard -r 80000

(後來回顧時感覺是/dev/ttyS1 端口沒有選對,由於目前沒有時間,沒機會嘗試)

2)在UDP 14556端口上啓動mavlink,並以50Hz的速率發送HIGHRES_IMU消息:

mavlink start -u 14556 -r 1000000nsh提示warn信息)

mavlink stream -u 14556 -s HIGHRES_IMU -r 50

   本實例的命令爲:mavlink stream -r 50 -s CA_TRAJECTORY -u 14556

但是在nsh仍然看不到消息。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章