kenkino’s diary

おそらく技術・グッズ・自転車系 ※当ブログは、Amazonアソシエイトやその他アフィリエイト等の収益メディアを表示しております。

Ryze TelloをMacで操作してみた

年末に購入したトイドローンのTelloだが

kenkino.hatenablog.jp

操作を行うのはスマホだけでなくpythonを使ったSDKを使ってPCでも操作が可能ということで、Macでも可能かどうか試してみた。

事前準備

python

macOSにはpythonが標準で用意されており、バージョンは古いがSDKが使用可能なバージョンなので、特に用意する必要はない。強いて言えば基本はコマンドラインでの操作となるので、ターミナルを使い慣れておくといいだろう。

SDKダウンロード

ターミナルを開き下記コマンドでgithubよりダウンロードする、

$ git clone https://github.com/dji-sdk/Tello-Python.git

ダウンロードすると新規にディレクトリが作成されているので、そちらへ移動する

$ cd Tello-Python

移動すると下記のファイルとディレクトリがある

$ ls
LICENSE.md  TelloPython_FAQ(CH).txt doc
README.md   TelloPython_FAQ.txt tello_state.py
Single_Tello_Test   Tello_Video tello_video_dll(ForWin64).zip
Tello_Video_With_Pose_Recognition

LICENSE.mdとREADME.mdについてはソースのライセンス表示とgithubのreadmeファイルで後は

となるらしい、今回はSingle_Tello_Test とTello_Videoを試してみた。

Telloへ接続

これはスマホの時と同様で、Telloを起動後にMac無線LANアクセスポイント一覧にTelloの名前のアクセスポイントが出てくるのでそこに接続する

操作

ステータス表示

下記コマンドで動作する

$ python tello_state.py

動作すると現在のTelloのステータスが表示される。

Single_Tello_Test

Single_Tello_Testのディレクトリに移動して中身を見ると下記のファイルがある

$ ls
README.md   command.txt stats.py    tello.py    tello_test.py

Telloにつないだ状態で下記のコマンドを実行する

$ python tello_test.py command.txt

ちょっと待つとTelloが離陸し、しばらくするとそのまま着陸する。 tello_test.py はcommand.txtを読み込んで動作するスクリプトでcommand.txtの中身を見てみると

$ cat command.txt 
command
takeoff
delay 5
land

となっており、動作としては「離陸→5秒待ち→着陸」といった動作をするようになっているのが分かる、ということでtakeoffとlandの間にコマンドを追加し、再びスクリプトを起動すると「離陸→追加したコマンドによる動作→着陸」という動作を行う、動作コマンドについてはdoc内のドキュメントに詳細があるので見てみるといいかと思う。

Tello_Video

Single_Tello_Testでpythonでも動かせることが確認できたので次はTello_Videoに挑戦。「これは何?」と思って調べてみたところ、Telloに付いているカメラの画像を接続しているPCに送って静止画撮影&動画録画をしつつ、PCのマウスとキーボードでTelloの操作が行えるスクリプトとのこと。

しかし実行するためにはH264をエンコードするライブラリをビルドする必要があるらしくビルド用のスクリプトが用意されているのだが、更に今のMacで使う場合にはビルド用のスクリプトを修正する必要があるようでここを参照してライブラリをビルドした。

qiita.com

ひとつ注意点として、ビルドスクリプトMacのパッケージ配布システムであるhomebrewを使っており、それ以外のパッケージ配布システムを使っている場合、パッケージ配布システム同士の競合に注意する必要がある。

ビルド後、下記のコマンドを実行

$  python main.py

実行に成功すると、下記のウインドウが表示される。

ウインドウの[Open Command Panel]ボタンをクリックすると操作用のパネルが表示されマウスとキーボードでTelloが操作できるようになる。

操作性については、キーボードを押してTelloが反応するのに若干のタイムラグがあり操作に少し慣れが必要かなという印象、しかしスマホアプリでの操作に比べると、自分の思った操作はできている感覚で取っつき易さでいうとこちらかなと感じた。ただこの印象は自分がキーボードのほうが馴染んでいるという部分が大きいかもしれない。

とはいえ、スマホだとアプリで操作するだけだったのがpythonスクリプトを手直しすれば色々なことができるようになるので、やりようによっては色々遊べるのではないかと思われる。