ドローンエンジニア養成塾第21期

Applicationコース DAY 3

2026.7.4(Sat)

Copyright © Drone Japan All Rights Reserved.

全体スケジュール

アプリケーションコースは積極的に、実際に手を動かし実践する、がモットーです!
※時間の都合上多少変更がある場合があります。

日程 内容
Day1 6月6日 キックオフ, コース説明
Day2 6月20日 機体制御アプリケーション開発ワークショップ, pymavlink, DroneKit-Python
Day3 7月4日 コンパニオンコンピュータ概要&構成, MAVLink, SITL接続, MAVProxy, MAVLink-router
Day4 7月18日 フライトエクスペリエンス, チューニング, オートミッション, PullRequest基礎
Day5 7月25日 開発におけるセキュリティ, 実践ワークショップ
Copyright © Drone Japan All Rights Reserved.

アプリケーション編のスコープ

center 実機構成の図。抽象度の高低の軸に沿って、Air(ドローン)側のCCソフトウェア(DroneKit・pymavlink・MAVProxy・MAVLink-router)とCCハードウェア、FCソフトウェア(ArduPilot)、ドローンのハードウェアと、MAVLinkで結ばれたGround側のGCSソフトウェア・ハードウェア(DroneKit、Mission Planner)を示す。アプリ編のスコープであるCC部分を赤い破線で囲む

Copyright © Drone Japan All Rights Reserved.

アプリケーション編のスコープ

center シミュレータ構成の図。実機構成のFCとドローンの部分をSITLに置き換え、Windows 11上のUbuntu22.04 on WSL2で動かす。GCS側はAndroid Studio+エミュレータとMission Planner。吹き出しで「開発ツール、シミュレータを活用して実機に近い環境でアプリケーションの開発・テストを行う」と示す

Copyright © Drone Japan All Rights Reserved.

アプリケーション編の構成要素

center アプリケーション編の構成要素の図と表。Air側(CC・FC・機体)とGround側(GCS)を抽象度の高低で並べ、アプリ編の対象(CCのソフトウェア)を赤い破線で囲む。下に構成要素ごとの説明表がある

Copyright © Drone Japan All Rights Reserved.

アジェンダ

  • コンパニオンコンピューター ← 今ここ
  • MAVLink
  • MAVProxy
  • MAVLink-router
Copyright © Drone Japan All Rights Reserved.

アジェンダ

  • コンパニオンコンピューター ← 今ここ
  • MAVLink
  • MAVProxy
  • MAVLink-router
Copyright © Drone Japan All Rights Reserved.

なぜコンパニオンコンピューターが必要なのか

  • フライトコントローラーが低スペック
    • 画像処理など処理を実行するにはハードウェアのスペックが低い
  • 安全
    • フライトコードに修正を加える必要がない
  • 容易
    • Pythonコードで容易に機体制御可能
    • Python以外でも可
Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューターでできること

center 外部デバイスを使った情報処理・高度化の図。FCとコンパニオンコンピュータにカメラ・ステレオカメラ・SIMなどを接続し、物体検出・自動追従・精密着陸・非GPSナビ(SLAM)・障害物回避を行い、クラウド経由でバックエンドサービスやリモート運用と連携する

Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューターの使いどころ

center コンパニオンコンピューターの使いどころ。向いている処理(カメラ、外部システムとの通信、CPU/GPUが必要、データ量が大きい)と、向いていない処理(リアルタイム性が必要な機体制御。C++・Luaスクリプトを検討)を、CCとFCのどちらで処理するかの図とともに示す

Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューター 接続構成1

center 接続構成1の図。コンパニオンコンピューター(pymavlink)とPixhawk(ArduPilot)がシリアルで、PixhawkとGCSがZigBeeなどで接続され、カメラ類はコンパニオンコンピューターに接続する

Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューター 接続構成2

center 接続構成2の図(Rpanion server前提)。コンパニオンコンピューターとGCSがWiFiで通信し、コンパニオンコンピューターとPixhawk(ArduPilot)がシリアルで接続される。MAVLink routerがMAVLink通信をpymavlink等とGCSに転送し、GStreamerでUSBカメラの映像をGCSに配信する

Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューター 接続構成3

center 接続構成3の図(Navigator/BlueOS前提)。拡張ボード型のNavigator上のコンパニオンコンピューターでArduPilotとBlueOSが動作し、MAVLink ServerがArduPilot・Extensions・GCS間のMAVLink通信を中継する。Video ManagerでUSBカメラの映像をGCSへ配信し、ExtensionsでPythonアプリなどの拡張機能を追加できる

拡張ボード型の Navigator を使う構成。

Copyright © Drone Japan All Rights Reserved.
FCとRaspberry Piの接続図。Raspberry Pi Zero(どのモデルでも可)とFCをUARTでつなぎ、Raspberry Piには+5V(USBまたは5Vピン)から給電する

FCとRaspberry Pi接続


5V

5V

GND

TX

RX

TX

RX

GND

https://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html

Copyright © Drone Japan All Rights Reserved.

FCとRaspberry Pi接続

center USBケーブルで接続する方法。Raspberry PiとFCをUSBで接続した写真と、BlueOSがFCを自動認識した画面(Autopilot Firmware)

Copyright © Drone Japan All Rights Reserved.
Jetson TX2とPixhawkの接続写真。Jetsonの端子とPixhawkのTELEM2などを配線し、12V電源を接続している

FCとJetson TX2接続


J120キャリアボード

GND

RX

GND

TX

TX

RX

https://ardupilot.org/dev/docs/companion-computer-nvidia-tx2.html

Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューター ハードウェア

種類 ハードウェア 概要
シングルボードタイプ Raspberry Pi 汎用性の高いシングルボードコンピュータ。豊富なコミュニティサポートとアクセサリが利用可能。
NVIDIA Jetsonシリーズ 高性能なGPUを搭載したコンパニオンコンピュータ。深層学習やビジョン処理に適している。
ModalAI VOXL, VOXL2 高性能なコンパニオンコンピュータ。Qualcomm Snapdragonを搭載し、リアルタイム処理が可能。
ODroid 高性能なARMプロセッサを搭載したシングルボードコンピュータ。拡張性が高く、多様なインターフェースを持つ。
キャリアボードタイプ Pixhawk Jetson Baseboard Pixhawk6X向けNVIDIA Jetsonシリーズ用キャリアボード。
Pixhawk Raspberry Pi CM4 Baseboard Pixhawk6X向けRaspberry Pi Compute Module4用キャリアボード。
LYCHEE Pixhawk Cubeシリーズ向けRaspberry Pi Compute Module3用キャリアボード。

https://ardupilot.org/dev/docs/companion-computers.html

Copyright © Drone Japan All Rights Reserved.

コンパニオンコンピューター ソフトウェア

ソフトウェア 開発元 概要
BlueOS Blue Robotics Docker コンテナ群で構成するモジュラー型の統合基盤。ArduPilot/PX4で利用可
Rpanion-Server Stephen Dade 軽量なCC管理ソフト。設定が簡単で実用的。Raspberry Pi Zero2をサポート
APSync ArduPilot 旧来のオールインワン・イメージ。更新停止しており非推奨
Maverick Fnoop Puppet ベースで CC 環境を自動構成するフレームワーク
自作(ROS2 / MAVROS / MVSDK / Pymavlink など) 各コミュニティ フレームワーク上で独自にCC機能を実装するアプローチ
OpenHD系(RubyFPV など) OpenHDコミュニティ ほか デジタルFPV(長距離映像+テレメトリ)に特化。対応機器の多くは日本でそのまま利用できない場合あり
Copyright © Drone Japan All Rights Reserved.

BlueOSとRpanionの比較

項目 Rpanion-Server BlueOS
位置づけ 現役・軽量 現役・主流/高機能
アーキテクチャ Node.js Web UI+mavlink-router Docker コンテナ群+拡張ストア
UI Rpanion Web UI
(軽量、シンプル)
モダンWeb UI(+Cockpit)
MAVLink中継 mavlink-router 内蔵 MAVLink Server
映像配信 対応 対応(複数ストリーム)
拡張性 低〜中 高(Extensions)
対応FW ArduPilot ArduPilot(PX4も一部動作)
Copyright © Drone Japan All Rights Reserved.

BlueOSとは?概要

  • Blue Robotics が開発する、コンパニオンコンピュータ(オンボード機)向けの統合プラットフォーム。オープンソース。
  • 2015年の「Companion Software」の後継として再設計され、ROV(水中機)由来だが、現在は Copter・Plane・Rover・Sub 全般で利用可能な汎用CC管理ソフト。
  • Webブラウザ(PC/スマホ)から全操作が可能。SSH不要で、機体のセットアップ・テレメトリ中継・映像配信・ログ管理を一元化。
  • ArduPilot 公式 Dev ドキュメントでも CC ソフトとして正式に案内されている。
Copyright © Drone Japan All Rights Reserved.

BlueOSのコンセプト

  • Modular to the heart(徹底したモジュール化):機能はすべて独立したサービス(Docker コンテナ)として動作。
  • Robust to update(堅牢なアップデート):コンテナ単位で更新でき、失敗してもブートストラップ層によるリカバリ/ファクトリーリセットが可能。
  • Extensible(拡張可能):REST API・WebSocket・Vue などの Web 技術で、誰でも独自拡張(Extension)を追加・公開できる。
  • Portable(移植性):Linux SBC 横断で動作(Raspberry Pi 3/4/5、Navigator など)。
Copyright © Drone Japan All Rights Reserved.
BlueOS Documentation

BlueOSの構成/アーキテクチャ

  • BlueOS Core:機体運用の中核サービス群(MAVLink、映像、ネットワーク、ファーム管理 等)
  • Extensions:Extensions Manager 経由で追加するユーザ/コミュニティ機能
  • コンテナ型アーキテクチャ:各サービスが Docker コンテナとして分離 → 個別更新・個別再起動・障害分離が可能
  • Web UI:ブラウザから各サービスのページにアクセス。フロントは Vue ベース
Copyright © Drone Japan All Rights Reserved.

BlueOSの画面(左メニュー)

■ 本コースで使う(要把握)

メニュー 用途 使用場面
Autopilot Firmware ボード切替(Manual / SITL / 実機FC)、ファーム書き込み SITL接続・実機FC接続
MAVLink Endpoints 配信エンドポイント(14550 等)の確認・追加 GCS/アプリ接続設定
MAVLink Inspector 受信MAVLinkメッセージの確認(疎通確認) 接続トラブルシュート
Extensions 拡張アプリのインストール・管理(Cockpit, 自作アプリ) アプリ配布・運用
Video Streams カメラ映像のストリーミング設定 映像配信
BlueOS Version バージョン切替(例:1.5.0-beta 固定) 初期セットアップ
Vehicle Setup キャリブレーション等の機体設定 実機準備
Terminal / File Browser ファイル確認・ターミナル操作 トラブルシュート

左メニューの全項目:Autopilot Firmware / Autopilot Parameters / Available Services / Bag Editor / BlueOS Version / Disk / Extensions / File Browser / Log Browser / MAVLink Endpoints / MAVLink Inspector / Network Test / NMEA Injector / Ping Sonar Devices / Records / Serial Bridges / System Information / Terminal / Vehicle Setup / Video Streams / Zenoh Inspector

Copyright © Drone Japan All Rights Reserved.

BlueOSの画面(左メニュー)

■ 参考(必要時のみ)

メニュー 用途
Autopilot Parameters パラメータ閲覧・編集
Log Browser フライトログ(.bin)の取得・可視化
System Information / Disk / Network Test リソース・ストレージ・ネットワーク状況確認
Available Services 稼働中サービス・ポート一覧

■ 本コースでは使わない(ROV/船舶向け・内部用)

メニュー 何のためのものか
Ping Sonar Devices 水中ソナー(ROV用)
NMEA Injector 船舶GPS/NMEA 入力
Serial Bridges シリアル機器のUDP/TCPブリッジ(周辺機器向け)
Bag Editor 各サービス設定値(key-value)の低レベル編集
Zenoh Inspector Zenoh 内部通信のデバッグ
Records 記録(映像/テレメトリ)の管理
Copyright © Drone Japan All Rights Reserved.

BlueOS:Extensions

  • Extensions Manager が拡張の取得・インストール・更新・管理を担当(Web上の拡張ストアから導入)。
  • 拡張は Docker イメージ+マニフェストとして配布され、独自のUIページを BlueOS に追加できる。
  • 開発者は REST API / WebSocket / Vue を使って機能を作り、自作 Extension を公開・共有可能。
  • 想定ユースケース例:独自データロガー、画像認識/AI推論、外部クラウド連携、ミッション支援ツール 等。
  • 「APSync/Rpanion では機能が固定」だったのに対し、BlueOS は拡張で機能を足していける点が学習上の最大の差分。
Copyright © Drone Japan All Rights Reserved.

BlueOS:Extensions

画像

Copyright © Drone Japan All Rights Reserved.

開発環境:WSL+SITL

center 開発環境「WSL+SITL」の構成図。Windows 10/11上のMission Plannerと、Ubuntu22.04 on WSL2上のVS Code・アプリケーション・WSL SITL(sim_vehicle.py)・MAVProxy(自動起動、ポート14550)の接続を示す。右側の薄い部分は後述のBlueOS構成

Copyright © Drone Japan All Rights Reserved.

開発環境:BlueOS実機+SITL

center 開発環境「BlueOS実機+SITL」の構成図。Docker HubからExtensionをpush/pullし、WSL上のSITLとBlueOS(Raspberry Pi 5、192.168.42.1)上のMAVLink ServerをUDPでつなぐ。Mission PlannerはWindowsから接続する

Copyright © Drone Japan All Rights Reserved.

本番環境:BlueOS実機+FC実機

center 本番環境「BlueOS実機+FC実機」の構成図。BlueOS上のMAVLink ServerとFCをシリアルでつなぎ、Extension(コンテナ)とMission PlannerはUDPで接続する。WSL上の開発環境は薄く表示している

Copyright © Drone Japan All Rights Reserved.

BlueOS:アプリ開発演習

  • 別紙 blueos-app-dev-guide.pdf 参照
Copyright © Drone Japan All Rights Reserved.

アジェンダ

  • コンパニオンコンピューター
  • MAVLink ← 今ここ
  • MAVProxy
  • MAVLink-router
Copyright © Drone Japan All Rights Reserved.
MAVLinkのロゴ(Micro Air Vehicle Communication Protocol)
  • Micro Air Vehicle Communication Protocol
  • ID空間は255
  • V1とV2がある
    • V2は署名(SHA256)に対応してセキュア
  • 様々な言語で利用できる
  • 参考URL:https://mavlink.io/en/#supported_languages
    • ジェネレータがある
    • V2と署名の対応はまだ限定的

https://mavlink.io/en/
https://github.com/ardupilot/mavlink

Copyright © Drone Japan All Rights Reserved.

フォーマット①(v1を例に)

center MAVLink v1のフレーム構造の図と表。STX・LEN・SEQ・SYS・COMP・MSG・PAYLOAD・CKA/CKB のバイト位置と、各フィールドの内容・値・説明

Copyright © Drone Japan All Rights Reserved.

フォーマット②

  • ≦263bytes
  • System ID
    • 機体、GCSでユニークなID
    • 通常GCSは255、機体は1がデフォルト
    • 機体はSYSID_THISMAVパラメータで変更可能
  • Component ID
    • 通常は1
    • MAVLink対応のデバイスは異なるコンポーネント使用すべき
  • Message ID
    • XMLで定義されているメッセージ番号
    • 例えば、HEARTBEATは0
  • Data
    • Message IDに依存したデータ
  • チェックサム
Copyright © Drone Japan All Rights Reserved.

コネクション後

center コネクション後のやり取りの図。コプター(System ID 1)とMission Planner(System ID 255)の間で、ハートビート#0(1Hz)、REQUEST_DATA_STREAM #66 / MESSAGE_INTERVAL #244(3.7以上)とデータ送信、COMMAND_LONG #76 とACKをやり取りする

Copyright © Drone Japan All Rights Reserved.

リファレンスページ

Copyright © Drone Japan All Rights Reserved.

#0 HEARTBEAT

center HEARTBEAT(#0)メッセージの定義表と、実際のバイト列。フレームの各フィールド(STX・LEN・SEQ・SYS・COMP・MSG・PAYLOAD・CKA・CKB)を色分けして対応づけている

Copyright © Drone Japan All Rights Reserved.

#0 HEARTBEAT

center HEARTBEATのペイロード(type・autopilot・base_mode・custom_mode・system_status・mavlink_version)を、バイト列の色付き枠と対応づけた図

Copyright © Drone Japan All Rights Reserved.

#0 HEARTBEAT

center HEARTBEATのペイロードの各バイト値(00 00 00 00 02 03 51 03 03)を、MAV_TYPE・MAV_AUTOPILOT・MAV_MODE_FLAG・MAV_STATE の定義へ対応づけた図

Copyright © Drone Japan All Rights Reserved.
MAVLinkのロゴ

MAVLinkを使う

  • 他のプログラミング言語で使う場合
    • ジェネレータ(mavgenerate/mavgenの場合)
      • MAVLink1
        • C, C++, Python, C#, Java, JavaScript, Objective C, Lua, Swift, Rust
      • MAVLink2
        • C, C++, Python, C#, Java, JavaScript, Lua, Rust

他の言語やジェネレータについては、https://mavlink.io/en/#supported_languages

https://mavlink.io/en/#supported_languages

Copyright © Drone Japan All Rights Reserved.
MAVLinkのロゴ

mavgen.py


usage: mavgen.py [-h] [-o OUTPUT]
[--lang {C,CS,JavaScript,TypeScript,Python,WLua,ObjC,Swift,Java,C++11}]
[--wire-protocol {0.9,1.0,2.0}] [--no-validate]
[--error-limit ERROR_LIMIT] [--strict-units]
XML [XML ...]

$ git clone https://github.com/mavlink/mavlink.git
$ cd mavlink
$ mkdir generated
$ mavgen.py --lang=JavaScript --wire-protocol=1.0 --output=generated/mavgen.js message_definitions/v1.0/common.xml

https://mavlink.io/en/getting_started/generate_libraries.html
https://mavlink.io/ko/mavgen_python/

Copyright © Drone Japan All Rights Reserved.
MAVLinkのロゴ

試してみたい方むけ。
※Rust実行環境はセットアップ済み想定 https://www.rust-lang.org/tools/install
※先にWSLでシミュレータを起動しておく
$ git clone https://github.com/mavlink/rust-mavlink
$ cd rust-mavlink
$ cargo run --bin mavlink-dump --features ardupilotmega tcpout:[WSLのIPアドレス]:5762

Copyright © Drone Japan All Rights Reserved.

アジェンダ

  • コンパニオンコンピューター
  • MAVLink
  • MAVProxy ← 今ここ
  • MAVLink-router
Copyright © Drone Japan All Rights Reserved.

MAVProxy

  • コマンドライン・コンソールベースのGCS
    • グラフ、マップなどはGUIが起動する
  • ネットワークを構成できる
  • Pythonなのでどこでも動く
    • Windows, Mac, Linux, ラズパイ上でも
  • モジュール機能により、機能の有効/無効化, 機能追加が可能
  • インストール
    • ソースコードからもインストール可能
    • 下記のコマンドでインストール
$ pip install mavproxy 
$ pip3 install mavproxy

※ 手順書( drone-dev-env-setup-guide.pdf)での環境構築が完了していたらインストールされている

https://ardupilot.org/mavproxy/
JIC: Japan Innovation Challenge
CUAV: CanberraUAVが開発したサーチツール

Copyright © Drone Japan All Rights Reserved.

MAVProxy オプション(1/2)

オプション 説明 例 使用頻度
--master MAVLink入力元(FC/SITL等) --master=tcp:127.0.0.1:5762 ★★★★★
--out MAVLink出力先(複数指定可) --out=udp:127.0.0.1:14550 ★★★★★
--baudrate シリアル通信速度 --baudrate=115200 ★★★★☆
--sitl SITLのRC入力ポートを指定 --sitl=127.0.0.1:5501 ★★☆☆☆
--aircraft ログ保存用ディレクトリ名 --aircraft=Copter1 ★★★☆☆
--streamrate MAVLinkストリームレート(Hz) --streamrate=10 ★★★☆☆
--source-system MAVProxyのSystem ID --source-system=250 ★★☆☆☆
--target-system 接続先のSystem ID --target-system=1 ★★☆☆☆
Copyright © Drone Japan All Rights Reserved.

MAVProxy オプション(2/2)

オプション 説明 例 使用頻度
--target-component 接続先Component ID --target-component=1 ★☆☆☆☆
--load-module 起動時にモジュールを読み込む --load-module=map ★★★☆☆
--cmd 起動時にコマンド実行 --cmd="module load map" ★★☆☆☆
--logfile tlogファイル名を指定 --logfile=test.tlog ★★☆☆☆
--daemon バックグラウンド実行 --daemon ★☆☆☆☆
--continue 接続断後も終了しない --continue ★★☆☆☆
--setup FCをSETUPモードで開く --setup ★☆☆☆☆
--state-basedir 設定・ログ保存先を指定 --state-basedir=~/mavproxy ★☆☆☆☆

https://ardupilot.org/mavproxy/docs/getting_started/index.html

Copyright © Drone Japan All Rights Reserved.

MAVProxyの位置づけ

ArduCopter/ArduPlaneのSITL実行ファイル、GCS(Mission Planner / MAVProxy)、物理シミュレーション(sim_multicopter.py / JSBSim)、FlightGear、他のGCSの間を、UDP/TCPのポート番号(5760・5763・5501〜5503・14550)でつなぐ接続図

Copyright © Drone Japan All Rights Reserved.

MAVProxy モジュール

  • コマンド
    • 一覧確認:module list
    • ロード:module load <モジュール名>
  • 何ができるかの一例
    • パラメータ参照・変更
    • ジョイスティック
    • 信号送信
    • アーム
    • モード変更
    • リアルタイムグラフ描画
    • AIチャット
    • GPS情報出力
  • 開発できる

https://github.com/ArduPilot/MAVProxy/tree/master/MAVProxy/modules

Copyright © Drone Japan All Rights Reserved.

MAVProxy モジュール一覧(1/2)

モジュール 概要 主な用途
adsb ADS-B情報の受信・表示 航空機情報の監視
arm ARM/DISARM操作 機体のアーム・解除
auxopt AUXスイッチ設定 AUXオプション制御
battery バッテリー関連 バッテリー情報取得
calibration センサキャリブレーション コンパス・加速度計校正
cmdlong MAVLink COMMAND_LONG送信 再起動・キャリブレーションなど各種コマンド
fence ジオフェンス管理 フェンスの設定・読込・書込
ftp MAVLink FTP 機体とのファイル転送
layout ウィンドウ配置管理 コンソール・地図レイアウト保存
link 通信リンク管理 接続確認・リンク切替
log ログ転送 DataFlashログの取得
Copyright © Drone Japan All Rights Reserved.

MAVProxy モジュール一覧(2/2)

モジュール 概要 主な用途
misc その他便利コマンド 汎用コマンド集
mode フライトモード変更 GUIDED・AUTO・RTLなど切替
output 出力先管理 --out の追加・削除
param パラメータ管理 PARAMの読込・変更・保存
rally Rally Point管理 緊急着陸地点の設定
rc RCチャンネル制御 RCオーバーライド・スティック操作
relay Relay制御 リレーON/OFF
signing MAVLink2署名管理 通信認証
terrain 地形データ管理 Terrain Follow対応
tuneopt Tuneオプション設定 ブザー・Tune設定
wp Waypoint管理 ミッションの読込・編集・送信

https://ardupilot.org/mavproxy/docs/modules/index.html

Copyright © Drone Japan All Rights Reserved.
ゲームコントローラーを両手で持って操作している写真。画面にMAVProxyのコンソールと機体の映像が表示されている

MAVProxy Joystick


https://ardupilot.org/mavproxy/docs/modules/joystick.html
https://youtu.be/WXgijjcsLWY

Copyright © Drone Japan All Rights Reserved.
MAVProxyのチャットウィンドウ。「高度50mまで離陸して」などの自然言語の指示と、機体の応答が表示され、右に地図がある
ArduPilotとChatGPTを使ったMAVProxyチャットのデモ動画のスクリーンショット。チャット画面、地図、機体の映像、操作者の映像が並ぶ

MAVProxy AIチャット

  • load module chat
  • OpenAI APIのアシスタント機能を使用して自然言語で機体の運用が可能
  • 日本語を含む音声入力が可能
  • OpenAI APIキー発行が必要


https://ardupilot.org/mavproxy/docs/modules/chat.html
https://youtu.be/SRYDpfJLn80?si=l0TcXe5eBh9GIVdk

Copyright © Drone Japan All Rights Reserved.

MAVProxy ログ操作

  • デフォルトのテレメトリーログファイル名
    • mav.tlog , mav.tlog.raw
      • MAVProxyを実行したフォルダ直下に作成される
      • logfileオプションでログファイル名は変更できる
  • データフラッシュログ操作コマンド
    • ログリスト表示: log list
    • ログダウンロード: log download [ログ番号] [保存ファイル名]
    • ログダウンロード状況確認: log status
    • ダウンロードキャンセル: log cancel
    • ログ削除: log erase

https://ardupilot.org/mavproxy/docs/getting_started/logfiles.html
https://ardupilot.org/mavproxy/docs/modules/log.html

Copyright © Drone Japan All Rights Reserved.

ログの種類(1/2)

  • 2種類のログファイルが出力される
項目 テレメトリーログ
(Telemetry Logs)
データフラッシュログ
(Dataflash Logs)
保存場所 GCS が動作する PC/コンパニオンコンピュータ側(Mission Planner/MAVProxy フォルダの logs 配下等。変更可) フライトコントローラ本体(SD カード/内蔵フラッシュ)
記録開始 GCS で Connect ボタンを押した瞬間に自動開始 既定では 最初の ARM で開始(LOG_DISARMED=1 で電源投入時からに変更可能)
データ内容 MAVLink 通信メッセージ(GPS・姿勢・モード・バッテリ等) 詳細センサ/制御データ(IMU 400 Hz、EKF、RC IN/OUT、PID、VIBE など)
Copyright © Drone Japan All Rights Reserved.

ログの種類(2/2)

項目 テレメトリーログ
(Telemetry Logs)
データフラッシュログ
(Dataflash Logs)
データレート テレメトリ帯域幅に依存(数 Hz〜数十 Hz 程度) 高頻度記録:最大およそ 400 Hz(IMU FASTLOG 有効時)
ファイルサイズ 比較的小さい(数 MB〜) 大きい(飛行時間・記録レートに比例、数 MB〜数百 MB)
ファイル名例 2025-06-12 14-23-05.tlog 00000023.bin(Mission Planner で DL 時は .log に変換可)
用途 通信内容の再生・マップ追跡・簡易解析、GCS トラブル調査 高精度トラブル解析、振動・EKF/PID チューニング、詳細データ検証

https://ardupilot.org/planner/docs/mission-planner-telemetry-logs.html
https://ardupilot.org/copter/docs/common-downloading-and-analyzing-data-logs-in-mission-planner.html

Copyright © Drone Japan All Rights Reserved.
ATT.DesRoll と ATT.Roll の時系列グラフ。STABILIZE・GUIDED・AUTO・RTL のモード区間が色分けされ、ロールの揺れが記録されている

MAVProxy ログ解析(1/2)

  • MAVExplorer 起動コマンド
    • MAVExplorer.py <テレメトリログファイル名>.tlog
    • MAVExplorer.py <データフラッシュログファイル名>.bin
  • グラフ描画
graph ATT.DesRoll ATT.Roll  # 目標ロール vs 実ロール
Copyright © Drone Japan All Rights Reserved.
MAVExplorerのGraphsメニュー。Attitude・Copter・EKF3・PM・PSC・Plane・RC・SITL・Sensors・Servos・Speed などの項目があり、Attitudeの下に Attitude Control・Circular Angle・Roll and Pitch などが並ぶ

MAVProxy ログ解析(2/2)

  • 他コマンド例
graph CTUN.DAlt CTUN.Alt    # 目標高度 vs 実高度
POS.RelHomeAlt              # 高度推移(離陸→15m→RTL)
graph RCOU.C1 RCOU.C2 RCOU.C3 RCOU.C4   # モーター出力
  • GUIからも起動可能

https://ardupilot.org/mavproxy/docs/analysis/index.html
https://github.com/ArduPilot/pymavlink/tree/master/tools

Copyright © Drone Japan All Rights Reserved.

MAVProxy ログ解析

  • MAVExplorer 他機能
MAV> help
MAV> condition      : set graph conditions
devid               : show device IDs
dump                : dump messages from log
fft                 : show a FFT (if available)
file                : show files
graph               : display a graph
graphs              : display a predefined graph
loadLog             : load a log file
locationAnalysis    : Output a descriptive list of locations from the log
logmessage          : show log message information
magfit              : fit mag parameters to WMM
map                 : show map view
messages            : show messages
mission             : show mission
param               : show parameters
paramchange         : show parameter changes in log
reload              : reload graphs
save                : save a graph
set                 : control settings
stats               : show statistics on the log

https://ardupilot.org/mavproxy/docs/analysis/index.html
https://github.com/ArduPilot/pymavlink/tree/master/tools

Copyright © Drone Japan All Rights Reserved.

MAVProxy ログ解析

  • その他解析ツール
    • mavgraph.py [ログファイル名].tlog [データ]: グラフの描画ツール
      • ※ [データ]はMPのログレビューで見える[カテゴリー名].[データ名], 例) ATT.DesRoll ATT.Roll
    • mavtogpx.py [ログファイル名].tlog :GPSポイント書き出しツール
    • mavparms.py [ログファイル名].tlog :パラメータ表示ツール
    • mavflighttime.py [ログファイル名].tlog :飛行時間表示ツール
    • mavflightmodes.py [ログファイル名].tlog:飛行モード表示ツール
    • mavfft_isb.py [DataFlashLog files…] : 振動解析ツール

https://ardupilot.org/mavproxy/docs/analysis/index.html
https://github.com/ArduPilot/pymavlink/tree/master/tools

Copyright © Drone Japan All Rights Reserved.
/var/folders/1l/47h8nb713ybf58fwp3ldrkdm0000gn/T/com.microsoft.Powerpoint/WebArchiveCopyPasteTempFiles/p416

MAVProxy ログ再生

  • ログ再生コマンド
  • mavplayback.py <テレメトリログファイル名>.tlog
  • 接続
    • 127.0.0.1:14550 にストリーミングされ、下記コマンドで接続できる
    • :mavproxy.py --master=127.0.0.1:14550
    • ストリーミング先を指定する
    • mavplayback.py [ログファイル名].tlog --out=192.168.100.101:14550


https://ardupilot.org/mavproxy/docs/analysis/playback.html

Copyright © Drone Japan All Rights Reserved.

MAVProxy ツールとログの対応

  • MAVProxy ツール群毎に使用できるログ種類は下記の通り
# ツール名 Telemetry Logs
*.tlog
DataFlash Logs
.bin (.log)
主な用途・特徴
1 MAVExplorer.py ✔︎ ✔︎ GUI 解析・グラフ・FFT・スクリプト解析
2 mavgraph.py ✔︎ ✔︎ CLI グラフ描画(任意フィールド)
3 mavtogpx.py ✔︎ △︎
(GPSログが必要)
GPS トラックを GPX/KML へ変換
4 mavparms.py ✔︎ — ログ内パラメータ抽出・差分比較
5 mavflighttime.py ✔︎ — 飛行時間(空中時間)集計
6 mavflightmodes.py ✔︎ — モード遷移タイムライン出力
7 mavfft_isb.py — ✔︎ 高速 IMU データ FFT 振動解析
8 mavplayback.py ✔︎ — .tlog を再ストリーム/リプレイ

【凡例】✓:対応, ‐:非対応

Copyright © Drone Japan All Rights Reserved.
MAVPicViewerの画面。航空写真の地図、撮影画像の一覧と拡大画像が表示され、右下に操作者の映像が映っている

MAVProxy MAVPicViewer

  • 撮影画像を読み込み、温度が高い個所にマークして表示。温度でのファイルソートも可能
  • Japan Innovation Challengeで使用され、課題達成に役立ちました


https://youtu.be/QIhC_-6elUI?si=GYUGhNJgznYz9-Yj

https://discuss.ardupilot.org/t/tap-j-at-the-japan-innovation-challenge-2024/125750

https://discuss.ardupilot.org/t/tap-j-at-japan-innovation-challenge-2025/140303

Copyright © Drone Japan All Rights Reserved.

アジェンダ

  • コンパニオンコンピューター
  • MAVLink
  • MAVProxy
  • MAVLink-router ← 今ここ
Copyright © Drone Japan All Rights Reserved.
  • MAVLinkメッセージのルーティングに特化した軽量ツール
  • 複数のMAVLinkエンドポイント(ドローン、GCS、テレメトリデバイス)間でメッセージを効率的にルーティングする

https://github.com/mavlink-router/mavlink-router

Copyright © Drone Japan All Rights Reserved.
  • 必要パッケージのインストール
sudo apt update
sudo apt upgrade
sudo apt install -y git meson ninja-build pkg-config gcc g++ systemd
  • ソースコードのクローン
cd
git clone https://github.com/intel/mavlink-router.git 
cd mavlink-router
git submodule update --init --recursive
  • ビルドとインストール
meson setup build . 
ninja -C build 
sudo ninja -C build install

※ CC環境構築手順書(cc-dev-env-setup-guide.pdf)が完了していれば、ラズパイへのインストールは完了しています。

Copyright © Drone Japan All Rights Reserved.
MAVLink-routerのWeb画面「Telemetry Destinations」。UDP Clientの宛先一覧(127.0.0.1:14540・14551・14552)と追加欄、UDP Serverの有効化とポート14550の設定

テレメトリ転送コマンド(1/2)

  • Rpanion Web UIからテレメトリ転送を停止して下記コマンド実行
  • ⇒ 同様のテレメトリ転送ができていることを確認
mavlink-routerd -e 127.0.0.1:14540 -e 127.0.0.1:14551 -e 127.0.0.1:14552 0.0.0.0:14550
Copyright © Drone Japan All Rights Reserved.

テレメトリ転送コマンド(2/2)

  • <udp_address>:転送元UDPアドレス(<ip:port> 形式)。0.0.0.0:14550 は全てのネットワークインターフェースからポート14550への接続を受け入れることを意味する
  • -e <ip:port>:転送先UDPエンドポイント。ポートは省略可能で、指定しない場合は14550から始まり、以前のポートと衝突しないよう自動的に増加する

(Rpanion Web UI の画面は前のスライドを参照)

Copyright © Drone Japan All Rights Reserved.

その他のコマンドオプション(1/2)

オプション 説明
<uart> UARTデバイスを指定 (<device:baudrate>)
<udp_address> UDPアドレスを指定 (<ip:port>)
-e --endpoint <ip:port> UDP転送先を追加 (<ip:port>)
-p --tcp-endpoint <ip:port> TCP転送先を追加 (<ip:port>)
-r --report_msg_statistics メッセージ統計を報告
-t --tcp-port <port> TCPリスニングポートを指定(デフォルトは5760)
-c --conf-file <file> 設定ファイルのパスを指定
Copyright © Drone Japan All Rights Reserved.

その他のコマンドオプション(2/2)

オプション 説明
-d --conf-dir <dir> 設定ファイルを上書きするディレクトリを指定
-l --log <directory> フライトスタックのログを有効化し、保存ディレクトリを指定
-g --debug-log-level <level> デバッグログレベルを設定 (<error|warning|info|debug>)
-v --verbose 詳細なデバッグ情報を出力
-V --version バージョン情報を表示
-s --sniffer-sysid すべてのメッセージを送信するSysIDを指定
-h --help ヘルプメッセージを表示
Copyright © Drone Japan All Rights Reserved.
機能/特徴 MAVLink-router MAVProxy
用途 MAVLinkメッセージのルーティング MAVLink地上局として機体の管理、
MAVLinkメッセージのルーティング
プラットフォーム Linux Linux、Windows、MacOS
インターフェース TCP、UDP、シリアルポート TCP、UDP、シリアルポート
複数エンドポイント接続のサポート はい はい
ログ機能 はい(バイナリログ) はい(テキストおよびバイナリログ)
拡張性 プラグイン対応なし プラグイン対応(Pythonスクリプト)
データのフィルタリング いいえ はい(フィルタコマンド)
Copyright © Drone Japan All Rights Reserved.
機能/特徴 MAVLink-router MAVProxy
リアルタイムデータの表示 いいえ はい
パラメータ設定 いいえ はい
コマンドの実行 いいえ はい
インストールの容易さ 中程度(ビルドツールが必要) 簡単(pipでインストール可能)
依存関係 少ない 多い(Pythonおよび関連パッケージ)
ドキュメントの充実度とサポート 中程度 高い(ArduPilotプロジェクトの一部)
リソース使用量とハードウェア要件 低い(軽量で効率的) 中程度(Pythonのオーバーヘッドあり)
  • 必要機能, 稼働環境, ユースケースによって適切な使い分けが必要です。
Copyright © Drone Japan All Rights Reserved.

宿題

再掲

Copyright © Drone Japan All Rights Reserved.

宿題2

再掲

  • 講義内容を踏まえて、フライトエクスペリエンスで飛行させるオリジナルアプリケーションを開発する
    • 期日:7/18(土)(Day4)
    • 任意としますが、チャレンジするといいことがあるかも…!?
    • コンパニオンコンピュータ(Day3講義内容)の使用も可能
    • シミュレータで動作確認済みであること
    • 講師機体を使用可能。その場合はGitHub経由でソースコードを事前連携すること
    • 自身の機体・PC(GCS)を使う場合は接続テスト済みであること
    • 過去の先輩のアプリフライトチャレンジは下記動画を参考にしてください
Copyright © Drone Japan All Rights Reserved.

宿題3

new

  • BlueOSアプリ開発 演習#4 の完了
    • 期日:7/25(土)(Day5)
    • droneschoolリポジトリの各自のワークフォルダに配置して、Pull Requestとして提出すること
    • 講師のBlueOSにインストールでき、SITLで動作確認できること
    • 使用方法、インストール方法(Dockerイメージ名など)はREADME.mdに記載すること
    • アレンジを加えてもOK。その旨、README.md に記載すること
    • サンプルコードは下記GitHubリポジトリのフォルダを参照
      • droneschool
        • └ /webapp-blueos
        • ├ drone-web-app::Webアプリ
        • └ drone-web-app-blueos::BlueOS Extension済 Webアプリ
Copyright © Drone Japan All Rights Reserved.

Appendix.

再掲

Copyright © Drone Japan All Rights Reserved.

無断転載・コピーの禁止

  • 当資料に掲載されている全ての画像・文章・情報等は著作権により保護されております。
  • 著作権者の許可なくこの資料の内容の全て又は一部を複製・転載・流用・転売・複写等することを禁じます。
Copyright © Drone Japan All Rights Reserved.

src: slide 2

src: slide 3

図内テキスト(抽出): CC Software / CC Hardware / Drone Hardware / GCS Software / GCS Hardware / High / Low / abstraction / FC Software / FC Hardware / CC=Companion Computer, FC=Flight Controller / GCS Software / GCS Hardware / pymavlink / MAVProxy / Air(Drone) / Ground(GCS) / 実機構成 / MAVLink-router

src: slide 4

図内テキスト(抽出): CC Software / CC Hardware / Drone Hardware / GCS Software / GCS Hardware / High / Low / abstraction / FC Software / FC Hardware / CC=Companion Computer, FC=Flight Controller / GCS Software / GCS Hardware / pymavlink / Air(Drone) / Ground(GCS) / Windows11 / Ubuntu22.04 on WSL2 / Android Studio + Emulator / SITL / シミュレータ構成 / 開発ツール、シミュレータを活用して実機に近い環境でアプリケーションの開発・テストを行います / MAVProxy / MAVLink-router

src: slide 5

図内テキスト(抽出): CC Software / CC Hardware / Drone Hardware / GCS Software / GCS Hardware / Air(Drone) / Ground(GCS) / High / Low / abstraction / FC Software / FC Hardware / GCS Software / GCS Hardware / CC=Companion Computer, FC=Flight Controller / pymavlink / MAVProxy / MAVLink-router

src: slide 6

src: slide 7

旧slide 6 と同内容の進捗スライド(重複のため要確認)

src: slide 8

src: slide 9

図内テキスト(抽出): 障害物回避 / 外部デバイスを使った情報処理・高度化 / インターネット/ クラウド / 非GPSナビ(SLAM) / 精密着陸 / 物体検出 / 非GPSナビ / SIM / ステレオカメラ / 遠隔オペレーション / カメラ / コンパニオン コンピュータ / フライト コントローラ / マーカー / 自動追従 / バックエンド サービス / ミッション/コマンド / 画像/センサ情報

src: slide 10

図内テキスト(抽出): 【向いてる処理】 カメラを使う処理 外部システムと通信する処理 CPU, GPUが必要な処理 扱うデータサイズが大きい処理 →これらに当てはまらない機能はLuaスクリプトも検討 【向いてない処理】 リアルタイム性が要求される機体制御(MAVLink通信はデータサイズが大きくリアルタイム性で劣るため) →C++, Luaスクリプトを検討 / CC Software / CC Hardware / Drone Hardware / FC Software / FC Hardware / CC=Companion Computer, FC=Flight Controller / pymavlink / MAVProxy / Air(Drone) / 機体に機能追加する際、CCとFCどちらを使うべき?

src: slide 11

図内テキスト(抽出): PixhawkとGCSが通信 コンパニオンコンピューターとPixhawkがシリアルで接続 カメラは、コンパニオンコンピューターで利用しているのみ Pythonコードをコンパニオンコンピューターで実行する場合など / コンパニオンコンピューター / Pixhawk / pymavlink / Ardupilot / ZigBeeなど / Serial / Ground Control Station

src: slide 12

src: slide 13

src: slide 14

density:auto

src: slide 15

図内テキスト(抽出): USBケーブルでも接続可能 BlueOSではFCを自動認識、 Linuxでは通常 /dev/ttyACM* として認識される

src: slide 16

density:auto

src: slide 17

src: slide 18

src: slide 19

src: slide 20

density:auto

src: slide 21

src: slide 22

density:auto

src: slide 23

density:auto

src: slide 24

density:auto

src: slide 25

density:auto

src: slide 26

src: slide 27

図内テキスト(抽出): Ubuntu22.04 on WSL2 / WSL SITL (sim_vehicle.py) / Windows10/11 / Mission Planner / MAVProxy (自動起動) / Application / 5762 / BlueOS / Raspberry Pi 5 (192.168.42.1) / Docker Hub / MAVLink Server / Extension (Container) / 14550 / 14551 / Extension / 通信 / ファイル / 【凡例】 / udp / udp / udp / VS Code / VS Code

src: slide 28

図内テキスト(抽出): Ubuntu22.04 on WSL2 / WSL SITL (sim_vehicle.py) / Windows10/11 / Mission Planner / MAVProxy (自動起動) / Application / 5762 / BlueOS / Raspberry Pi 5 (192.168.42.1) / Docker Hub / MAVLink Server / Extension (Container) / 14550 / 14551 / Extension (Container Image) / Extension / push / pull / build / 通信 / ファイル / 【凡例】 / udp / udp / udp / 14550

src: slide 29

図内テキスト(抽出): Ubuntu22.04 on WSL2 / WSL SITL (sim_vehicle.py) / Windows10/11 / Mission Planner / MAVProxy (自動起動) / Application / 5762 / BlueOS / Raspberry Pi 5 (192.168.42.1) / Docker Hub / MAVLink Server / Extension (Container) / 14550 / Extension (Container Image) / Extension / push / build / 通信 / ファイル / 【凡例】 / serial / udp / udp / udp / 14550

src: slide 30

guide-source: blueos-app-dev-guide.pdf の正本 = https://github.com/hfujikawa77/droneschool-doc/blob/master/doc/app-dev-guide/blueos-app-dev-guide.md

src: slide 31

src: slide 32

density:auto

src: slide 33

図内テキスト(抽出):

src: slide 34

density:auto

src: slide 35

図内テキスト(抽出): コプター / Mission Planner / System ID: 1 Component ID:1 / System ID: 255 Component ID:1 / ハートビート#0 (1Hz) / コマンド送信 COMMAND_LONG (#76) / ACK / REQUEST_DATA_STREAM#66 MESSAGE_INTERVAL#244 ※3.7以上 / データ送信 / https://ardupilot.org/dev/docs/copter-commands-in-guided-mode.html#copter-commands-in-guided-mode

src: slide 36

src: slide 37

図内テキスト(抽出): https://mavlink.io/en/messages/common.html#HEARTBEAT

src: slide 38

図内テキスト(抽出): https://mavlink.io/en/messages/common.html#HEARTBEAT

src: slide 39

図内テキスト(抽出): https://mavlink.io/en/messages/common.html#MAV_TYPE / https://mavlink.io/en/messages/common.html#MAV_MODE_FLAG / https://mavlink.io/en/messages/common.html#MAV_AUTOPILOT / https://mavlink.io/en/messages/common.html#MAV_STATE / ※3固定

src: slide 40

density:auto

src: slide 41

density:auto

src: slide 42

density:auto

src: slide 43

src: slide 44

density:auto

guide-source: drone-dev-env-setup-guide.pdf の正本 = https://github.com/hfujikawa77/droneschool-doc/blob/master/doc/drone-dev-env-setup-guide/drone-dev-env-setup-guide.md

src: slide 45

src: slide 45 (続き)

udpcast: とは、udpブロードキャスト udp:がudp

src: slide 46

src: slide 47

density:auto

src: slide 48

src: slide 48 (続き)

udpcast: とは、udpブロードキャスト udp:がudp

src: slide 49

src: slide 50

src: slide 51

density:auto

src: slide 52

src: slide 52 (続き)

src: slide 53

src: slide 53 (続き)

src: slide 54

density:auto

src: slide 55

density:auto

src: slide 56

density:auto

src: slide 57

density:auto

src: slide 58

density:auto

src: slide 59

src: slide 60

src: slide 61

density:auto

src: slide 62

src: slide 62 (続き)

src: slide 63

src: slide 63 (続き)

src: slide 64

src: slide 64 (続き)

src: slide 65

src: slide 66

density:auto

src: slide 67

density:auto

src: slide 68

src: slide 69