2016-04-18 12 views
2

私はMavlinkで新しく、私はMavlinkプロトコルで新しいメッセージを追加し、毎秒それを定期的に送信したいと思います。どうしたらいいですか?mavlinkプロトコルに新しいメッセージを追加するにはどうすればいいですか?

+0

メッセージの目的は何ですか?誰がメッセージを送信し、誰がそれを受け取るのですか? – squilter

+0

私が望むのは、3DRを使用して私のドロンから自分のPCに毎秒定期的にメッセージを送信することです。目的は私がそれをどうやってやることができるかを知っていることであり、私の最終学位プロジエクトを完了するのにも役立ちます。 –

+0

さて、メッセージには何が含まれていますか? – squilter

答えて

0

これは、使用している自動操縦装置によって異なります。 ardupilotを使用している場合は、ardupilot/modules/mavlink/message_definitions/v1.0/ardupilotmega.xmlに新しいxmlメッセージ定義を追加する必要があります。

他のメッセージを見て、どのようにフォーマットするべきかを確認することができます。使用していないIDを選択してください。

次に、これをコードに挿入する方法を決定する必要があります。たとえば、STREAM_EXTRA3にメッセージIDを追加することで、data_stream_sendタスクに配置できます。これにより、他のデータがそこに送られるのと同じくらい頻繁にメッセージが送信されます。その一環として、pymavgenによって生成された関数、メッセージIDと列挙を使って、実際にデータ構造をパックする関数を定義する必要があります。これは、私自身のASH_DATAプロジェクトで行ったことです。私はin my repositoryの変更を参照することができます。その中には、灰色のデータをpixhawkで受信し、そのデータをログファイルに追加する変更が含まれていることに注意してください。

これを1秒に1回実行したい場合は、one_second_loopタスクに追加するか、新しいメッセージIDを使用してtry_send_message関数を呼び出す独自のタスクを作成することができます。

あなたは実際にそれを受け取れるようにあなたのgcsに新しいメッセージを組み込む必要がありますが、それは別の問題です。

これは、同じことをしようとしている正しい方向に他人を向けることを望みます。

2

ここでは、新しいメッセージをmavlinkプロトコルに追加する方法とそれをどのように扱うかについて、detailed stepsがあります。

  1. 最新のArduPilot codeMavproxyがインストールされていることを確認してください。
  2. 追加するメッセージのタイプを決定します。
  3. 新しいメッセージ定義をmavlinkサブモジュールのcommon.xmlまたはardupilotmega.xmlファイルに追加します。

  4. コマンドを送信または受信する機能を主車両コードに追加します。

関連する問題