MAVLinkを介してRaspberry Piとのコミュニケーション
このページでは、Raspberry Pi (RPi) を接続して構成し、シリアル接続を介して MAVLink プロトコルを使用してフライト コントローラーと通信できるようにする方法について説明します。 これを使用して、画像を保存するためのメモリ要件のためにフライトコントローラーでは実行できない画像認識などの追加タスクを実行できます。
フライトコントローラーとRPiの接続
Cube Orangeの場合。
各ピンの割当は
- VCC_5V 出力
- MCU_TX 出力
- MCU_RX 入力
- MCU_CTS 出力
- MCU_RTS 入力
- GND
太字の4本を使います。Raspi側は上に書いたので省略。
画像に示すように、フライト コントローラの TELEM2 ポートを RPi のグラウンド、TX、および RX ピンに接続します。 個々の RPi のピン機能の詳細については、こちらを参照してください。
(+5V ソースを +5V ピンに接続するか、BEC(パワー配電盤)から RPi に電力を供給します。Raspi側から電源を供給するなら2.5A以上が必要です。必ずRAPIに電源を供給しましょう。)
Pi-Connect などのアドオン ボードは、電源とテレメトリ ポートを提供することで、RPi の接続を簡素化できます。
使用する 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とつながるはずですが。つながらないのでマニュアルを調べることにする。
続く。。。