Tello SDK を自分なりに最適化してみた(Tello-Console)
Tello を python でプログラミングするときに辿り着く SDK、それは Tello-Python だろう。この記事ではそんな Tello-Python にある tello.py を僕なりに改良した Tello-Console tello.py を紹介しようと思う。
今回初めてこのような記事を書くので、分かりづらい点もあるかもしれないが、そこは指摘があり次第、修正する。
そもそも Tello って?
そもそも Tello って何なのか。知らない方に簡単に説明すると、小さなプログラミングで飛ばすことができるドローンである。とても小型なので室内で飛ばして遊ぶことができ、しかもホバリング性能やカメラの性能が類似する大きさのドローンの中ではトップクラスで優秀で、ドローンのプログラミングの入門機としてとても人気なドローンなのだ。公式ページに詳細が書かれているので、是非参照してほしい。
Tello にも種類があり、今回プログラミング用に特化された Tello EDU を前提に話を進める。Tello EDU は 1.7万円ほどで購入できる。 tello EDU についてはこちらの公式ページで参照できる。
Tello-Python って?
そんな Tello を Python を使ってプログラミングできるように公式から用意された SDK が Tello-Python だ。この中に含まれている tello.py が Tello を飛ばすのに重要なプログラムである。Tello を使ってプログラミングをしている人のほとんどがこの SDK をベースにいろんなタスクを作っていることだろう。僕もこの1人だ。
こちらの記事で Tello-Python についての詳細やサンプルコードについての解説がされているので、Tello-Python を始めたい方は是非こちらを参照してほしい。
Tello-Console って?
では、そんな Tello-Console とは何なのかついて説明しよう。Tello-Console は簡単に言ってしまえば僕が作った Tello-Python のパクリである。作成に至った経緯は今から1年前、大学1年の時(記述時では大学2年)に Python のクラスの勉強をしていた時、Tello-Python の tello.py がクラスで構築されているのを見て自分でもこれを1から再現しようと思ったことが始まりである。そこから色々試行錯誤をし、一般公開しても大丈夫だろうと思いブログ感覚で今この記事を書いている。
Tello-Console の機能
一応 Tello-Python を全部パクっているわけではなく、独自の機能も搭載している。以下が Tello-Console の機能である。
機能名 | 機能の説明 |
---|---|
バッテリーチェック | プログラムが実行された際にドローンのバッテリー残量を確認し、タスクが続行可能かどうかを判断する。バッテリー残量が10%以下だとプログラムは停止される。 |
タイムアウト回避 | Tello は15秒間コマンドを受信しないと飛行中の場合自動で着陸してしまう。そのためプログラムが実行されたら Tello-Console 内で10秒周期で任意のコマンドを送信し、タイムアウトを防ぐ。このコマンドはユーザーが任意に設定することもできる。 |
詳細エラー表示 | ドローンからのエラーはかなり大雑把だが、エラー発生前の事象とエラーの種類が分かれば原因と解決方法がわかる。この機能はドローンからの何かしらのエラー(プログラムのエラーではない)を検知し、原因と解決方法を出力する。 |
簡単なビデオデータアクセス | ドローンに搭載されたカメラデータにアクセスするには、ただクラス内の一つの変数を取得するだけでできる。Tello-Console 内でカメラデータをすぐに取得できるので、作業の手間が省ける。 |
他にも色々細かい機能があるが、この記事では記述しない。このプログラムは **GitHub にて公開している**ので、気になる方は是非使ってほしい。また、まだ不完全の部分もあるのでさまざまのユーザーが使い、知見を共有したい。