Open6

地上局拡張コントロールパネルを作る過程

Watson-SeiWatson-Sei

Mission Plannerで接続した機体又はシミュレーション機体のMavlinkデータをリアルタイムに取得して、既存のGCSの拡張コントロールパネルで加工して可視化する。

MavProxyを使用して、Mavlinkデータを取得することが一般的らしいので再現したい。
取得ができれば配信する行為に進める。

Watson-SeiWatson-Sei

Mission PlannerのSIMでは、MavProxyからテレメトリデータを取得することができなかったので、ArduPilot SITLを使用して開発環境を用意する必要がある。実機で開発する場合は、別にSITLを構築せずにMission Plannerと同じように接続をすればいい。

ArduPilot SITLは、Linux/Windows環境で動くことが前提なのでApple SilliconではParallels Desktop Ubuntu 22.04 Arm環境を作ってLinuxのセットアップをもとにArduPilot SITLとMavProxyの通信を確立する。

Watson-SeiWatson-Sei

ArduCopter SITLの起動コマンド

sim_vehicle.py -v ArduCopter --console --map

SERIAL1 on TCP port 5762
SERIAL2 on TCP port 5763
が使えるようになる。なので、これを対象に情報収集する。

Watson-SeiWatson-Sei

mavlinkメッセージを処理するために、pymavlinkを使用する。
https://mavlink.io/en/mavgen_python/

from pymavlink import mavutil

# 接続
mavlink_conn = mavutil.mavlink_connection('tcp:127.0.0.1:5763')
mavlink_conn.wait_heartbeat()
print("Heartbeat received")

while True:
    msg = mavlink_conn.recv_match(blocking=True)
    if msg:
        print(msg)