お題

トイドローン Tello のサンプルプログラム Tello3.py を動かします。

材料

サンプルプログラムの動かし方

サンプルプログラム (Tello3.py) はTelloにWifi接続したPC上で動きます。

Telloの制御方法

1. プログラムの起動

  1. PC上にTello3.py をダウンロードする
  2. ダウンロードしたファイルは Tello3(1).py という微妙に気持ち悪い名前なので Tello3.py に修正する
  3. Telloの電源をONにする
  4. PCのWifiをTelloに接続する
  5. ターミナルで python Tello3.py (または python3 Tello3.py) を実行する

2. 離陸と着陸

  1. python Tello3.py を実行したターミナルで、 command と入力して、エンター
  2. takeoff と入力&エンターで離陸
  3. land で着陸

3. その他の操作

以下のようなコマンドが使えます。

コマンド動作xの範囲
up xx cm上昇20-500
down xx cm下降20-500
left xx cm左移動20-500
right xx cm右移動20-500
forward xx cm前進20-500
back xx cm後退20-500
cw xx度回転(時計回り)1-360
ccw xx度回転(反時計回り)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 関連記事

かわかみしんいち。島根県津和野町在住のフリーランスエンジニア。複合現実(Mixed Reality)と3DUXでおもちゃを作るのが趣味。 https://github.com/ototadana