0

MAVlink について読んで、pixhawk フライ コントローラーからパッケージを読み取ろうとしています。電話をかける別の方法を考えました。このディスカッションの読者から、大丈夫かどうか、どう思うか知りたいです。

私のリーダーでは、pixhawk から最初の 2 バイトを読み取りました。

2 番目のバイトは PAYLOAD の長さである必要があります --> 新しいので、ヘッダーの 4 バイト + PAYLOAD の長さのバイト + chcksub の 2 バイトを読み取る必要があることがわかりました。

したがって、PAYLOADの長さを読み取った後、バイト配列を定義します->サイズは
(PAYLOAD.length + 4 + 2)で、シリアルからこのバッファに読み取ります。やってもいいですか?

4

1 に答える 1

2

MAVLink プロトコルには、HEADER + PAYLOAD + SIGNATURE 形式があります。

MAVLink v1.0

v1.0 は、QGroundControlで指定された標準プロトコルです。形式は次のとおりです。

  • 6 バイトのヘッダー
  • (PAYLOAD の長さ) バイトのペイロード
  • 2 バイトの署名 (チェックサム)

最初のバイトは常にプロトコルのフレーム開始です: 0xFE

2 番目のバイトは常にペイロード長です。

したがって、受信バッファーのサイズは (PAYLOAD の長さ) + 8 になります。

説明した方法は、通常、pixhawk から受信したほとんどのパケットで機能します。ただし、pixhawk (ArduPilot) は、追加のヘッダーと署名バイトを追加する「v2.0」という造語である拡張 MAVLink プロトコルを利用します。

MAVLink v2.0

v2.0 は、「STATUSTEXT」などの一部のメッセージに適用される拡張プロトコルです。形式は次のとおりです。

  • 10 バイトのヘッダー
  • (PAYLOAD の長さ) バイトのペイロード
  • 15 バイトの署名

最初のバイトにはフレームの開始があります: 0xFD

2 番目のバイトは、ペイロードの長さです。

したがって、バッファ サイズは (PAYLOAD の長さ) + 25 にする必要があります。

pixhawk または生成された .tlog ファイルからの MAVLink メッセージ データを処理する場合は、フレームの開始とペイロード長バイト (MAVLink メッセージの最初の 2 バイト) に基づいて入力メッセージ バッファ サイズを設定する必要があります。

于 2016-12-06T00:35:29.050 に答える