213 Views
January 12, 26
スライド概要
2026/1/12 しゃち.py みーてぃんぐ 14th. 新年LT大会
Engineer / AWS Community Builder / LINE API Expert / JAWS UG名古屋 運営 GIthub: http://github.com/Miura55 Blog: http://supernove.hatenadiary.jp
PythonでTello動かす Koki Miura(@k_miura_io)
自己紹介 • 三浦 耕生(こうき) • バックエンドエンジニア • 鯱.py 運営 • JAWS UG名古屋&神戸 運営 • 俺の勉強会 運営 @k_miura_io koki.miura05
Discordの参加お待ちしております! https://discord.gg/AJ99S4mp9T
ちょうど5年前に衝動 買い
Tello • メーカー:RYZE Tech(深セ ンのスタートアップ) • 重さ:80g → 日本では合法 で誰でも飛ばせる • DJIとIntelが技術提供 • 2024年12月にサポート終了 https://www.ryzerobotics.com/jp/tello
Telloの良さ 合法 プログラマブル 軽量・丈夫
Telloがプログラムで動かせる仕組み
Pythonで動かしてみたい • 公式レポジトリのコードを使用(https://github.com/dji-sdk/Tello-Python) • TelloPyを使用(https://github.com/hanyazou/TelloPy) • DJITelloPyを使用(https://github.com/damiafuentes/DJITelloPy) • 標準ライブラリのsocketを使う
Pythonで動かしてみたい • 公式レポジトリのコードを使用(https://github.com/dji-sdk/Tello-Python) o Python2系の動作を想定している o カメラ画像を取得するためにビルドが必要だけど失敗する • TelloPyを使用(https://github.com/hanyazou/TelloPy) o 最終メンテから5年以上経過 o PyAVの挙動でエラーが出る • DJITelloPyを使用(https://github.com/damiafuentes/DJITelloPy) o PyAVでエラーが出る サンプルコードが汚い… • 標準ライブラリのsocketを使う o FFmpegをセットアップしてシェルで実行する必要があるが、そっちのほうが確実 o 平文のコマンドを送信するだけなので自分でソケット書いたほうが確実そう
FFmpegとは • 汎用的なマルチメディア用のフレームワーク • ありとあらゆる形式のエンコード、デコード、 フィルタリング、ストリーミングに対応している https://ffmpeg.org/
PyAVとは • FFmpegのPythonバインディング • Python向けのライブラリなので、NumPyなどの ライブラリで扱いやすいフォーマットに変換で きる • OSや依存関係などによって動かないことがあ る(今回の検証はこれを理由に却下
DEMO
画像のストリーミング • Telloのカメラ画像はUDPを使ってFFmpegで取得 • コマンドの標準出力から整形をして、OpenCVで画面 表示をする
画像がストリーミングされた
キー入力でマニュアル操作 • OpenCVのGUIで対応しているキー入力に合わせた コマンドを送信する処理を足すだけでPython製のフラ イトコントローラーが簡単にできる • Telloの操作コマンドは平文で直感的でライブラリなくて も大丈夫
まとめ • Telloを操作するためのPythonライブラリは豊富そうに見えてPython3 で動かせるPythonライブラリが意外と少ない • ストリーミング画像を取得するのにffmpegは便利 • そんなにインターフェースが複雑なわけでもないから1周回って標準ラ イブラリを使ってコマンド操作をするのが実装デバッグも分かり良い
ソースコード https://github.com/Miura55/tello-tracker
END