MAVProxy (Raspiコンパニオンコンピューター接続・インストール)

ロボット

MAVLinkを介してRaspberry Piとのコミュニケーション

このページでは、Raspberry Pi (RPi) を接続して構成し、シリアル接続を介して MAVLink プロトコルを使用してフライト コントローラーと通信できるようにする方法について説明します。 これを使用して、画像を保存するためのメモリ要件のためにフライトコントローラーでは実行できない画像認識などの追加タスクを実行できます。

フライトコントローラーとRPiの接続

../_images/RaspberryPi_Pixhawk_wiring1.jpg

Pixhawkの場合、

Cube Orangeの場合。

各ピンの割当は

  1. VCC_5V 出力
  2. MCU_TX 出力
  3. MCU_RX 入力
  4. MCU_CTS 出力
  5. MCU_RTS 入力
  6. GND

太字の4本を使います。Raspi側は上に書いたので省略。

画像に示すように、フライト コントローラの TELEM2 ポートを RPi のグラウンド、TX、および RX ピンに接続します。 個々の RPi のピン機能の詳細については、こちらを参照してください。

(+5V ソースを +5V ピンに接続するか、BEC(パワー配電盤)から RPi に電力を供給します。Raspi側から電源を供給するなら2.5A以上が必要です。必ずRAPIに電源を供給しましょう。)

Pi-Connect などのアドオン ボードは、電源とテレメトリ ポートを提供することで、RPi の接続を簡素化できます。

TIPS:
使用する RPi のモデルと使用する内部/外部周辺機器に応じて、+5V の電力要件は 80mA から 2.5A 近くまでさまざまです。 +5V 供給電流の要件を決定するには、特定のシステム構成の電力バジェットを評価する必要があります。 通常、フライト コントローラの TELEM ポート コネクタ経由で +5v を供給することはお勧めしません。

MAVProxyのインストールと設定

フライトコントローラーとの通信はいくつかの選択がありますが、ここではMAVProxyを使います。

MAVProxyはCUIのグランドコントロールステーションです。
さらにMAVLinkをルーティングする機能をもっています。(<- ここ重要。MAVLink-Routerを使う人がほとんどいない理由)

PIとSSHで接続していることを前提とします。
RPIとフライトコントローラーのテストは両方の電源をつけて、RPIから次をタイプします。

フライトコントローラーのセッティング

フライトコントローラーとグランドステーション(Mission Planner)を接続します。
次のパラメーターをセットします。

    • SERIAL2_PROTOCOL = 2 MAVLINK2を選択
    • SERIAL2_BAUD = 57 57600ボーレート

パラメーター保管を忘れずに。

シリアルポート(UART)の設定

RPIの設定をしていなかったら
raspi-configからinterface option Serial でシリアル通信を可能とします。
Would you like a login shell to be accesible over serial ? はNO
Would you like the serial port hardware to be enabled ?はyes
reboot

さて、RaspiとフライトコントローラーをつないだシリアルはGPIO上にあります。
これはRaspi内ではttyAMA0 というデバイスとなっています。
つまり、MAVProxyはttyAMA0と繋ぐことを目指さねばなりません。

ところで、このttyAMA0とBluetoothは配線を共有しているそうです。
そこでBluetoothをオフにする必要があります。それは/boot/config.txtを編集することで行います。

sudo nano /boot/config.txtで編集します。

enable_uart=1
dtoverlay=disable-bt
arm_boost=1

以上の値に変更、もしくは追記し保管します。

さらにBluetoothのモデムの初期化システム・サービスを斬り殺す

sudo systemctl disable hciuart

リブート。

これがうまくいっていると、/dev/serial0は、/dev/ttyAMA0)のシンボリックリンクとなります。

RPIソフトウェアのセットアップ

2022年末、最新RaspianOSはPython3が標準で導入されているので、Pythonのインストールは不要です。

ただし、pipは導入の必要があります。

sudo apt install python3-pip

pipを使ってMAVproxyのインストール

pip3 install PyYAML mavproxy --user

ユーザーのディレクトリー(~)にある.bashrcの最後の行に以下を記述

export PATH="$PATH:$HOME/.local/bin"

一応、最新にする

pip3 install mavproxy pymavlink --user --upgrade
pipはインストールしたものは以下のコマンドで確認できる。
pip3 list

Mission Plannerへの接続

フライト コントローラーは、Telemetry 1 および Telemetry 2 ポート (このページの上部の画像を参照) を介して受信した MAVLink コマンドに応答します。つまり、RPi と通常の地上局 (つまり、ミッション プランナーなど) の両方を接続できます。 さらに、SITL の場合と同様に、Mission Planner を RPi で実行されている MAVProxy アプリケーションに接続することができます。

これは主に –out <ipaddress>:14550 で MAVProxy 起動コマンドに追加することで、ミッション プランナーを実行しているPC のアドレスを追加することができます。 Windows では、ipconfig を使用してその IP アドレスを判別できます。

mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600 --out 192.168.1.41:14550 --aircraft MyCopter
Warningでmodemmanagerと矛盾していると出ても無視しています。(正しいかどうかわかりません)
Mission Planner側はUDPでポート14550でフライトコントローラーと、PCとつながるはずですが。つながらないのでマニュアルを調べることにする。

続く。。。