お題
トイドローン Tello のサンプルプログラム Tello3.py を動かします。
材料
- ドローン (Tello) 本体 : ¥12,850 (2022/5時点)
- SDKドキュメント : 8ページしかないのに必要な情報は網羅されている素晴らしい資料
- Python3 実行環境
サンプルプログラムの動かし方
サンプルプログラム (Tello3.py) はTelloにWifi接続したPC上で動きます。
1. プログラムの起動
- PC上にTello3.py をダウンロードする
- ダウンロードしたファイルは
Tello3(1).py
という微妙に気持ち悪い名前なのでTello3.py
に修正する - Telloの電源をONにする
- PCのWifiをTelloに接続する
- ターミナルで
python Tello3.py
(またはpython3 Tello3.py
) を実行する
2. 離陸と着陸
python Tello3.py
を実行したターミナルで、command
と入力して、エンターtakeoff
と入力&エンターで離陸land
で着陸
3. その他の操作
以下のようなコマンドが使えます。
コマンド | 動作 | xの範囲 |
---|---|---|
up x | x cm上昇 | 20-500 |
down x | x cm下降 | 20-500 |
left x | x cm左移動 | 20-500 |
right x | x cm右移動 | 20-500 |
forward x | x cm前進 | 20-500 |
back x | x cm後退 | 20-500 |
cw x | x度回転(時計回り) | 1-360 |
ccw x | x度回転(反時計回り) | 1-360 |
例えば up 20
とすれば 20cm 上昇 します。
謎の9000番ポート
Tello3.py にはこんな記述があります:
host = ''
port = 9000
locaddr = (host,port)
(...)
sock.bind(locaddr)
このコードに従えば「PCがTelloからのデータを9000番ポートで受信する」ということになるはずだけど、この 9000番に関する記述がSDKドキュメントにはありません。
ドキュメントに書かれているのは、以下3つ:
- 8889番: Telloへのコマンドに対するレスポンスを受信する
- 8890番: Telloの状態(高度、バッテリー残量など)を受信する
- 11111番: Telloのビデオデータを受信する
サンプルプログラムを実際に動かした時の動きを見ると、ビデオ表示も状態表示も行なわれないので消去法で考えると9000番ポートの役割は8889番と同様に「コマンドに対するレスポンスを受信」っぽい感じです。
試しに 9000 を以下のように 8889 に変更しても全く同じ動作になりました。
port = 8889
ということで、コマンド受信は 9000 でも 8889 でもOKそう。
次回
この辺りちょっとモヤモヤするので次回はサンプルプログラムの修正をやってみます。
Tello 関連記事
- Python によるドローン操作プログラミング
- Low-Level Protocolの活用
- 複合現実ヘッドセットによるドローン操作