Open6
地上局拡張コントロールパネルを作る過程
Mission Plannerで接続した機体又はシミュレーション機体のMavlinkデータをリアルタイムに取得して、既存のGCSの拡張コントロールパネルで加工して可視化する。
MavProxyを使用して、Mavlinkデータを取得することが一般的らしいので再現したい。
取得ができれば配信する行為に進める。
全体の関係はこうなっているので、MavProxyを使えばテレメトリデータを取得することができると思う。
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の通信を確立する。
ArduPilot SITL Setup
MavProxy Setup
ArduCopter SITLの起動コマンド
sim_vehicle.py -v ArduCopter --console --map
SERIAL1 on TCP port 5762
SERIAL2 on TCP port 5763
が使えるようになる。なので、これを対象に情報収集する。
mavlinkメッセージを処理するために、pymavlinkを使用する。
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)