se-lina’s BLOG

Lina KATAYOSE(se-lina)が実験や技術系のことなどをお送りします。

Tello SDKを利用してPythonでTello(ドローン)を飛ばそう!SDK1.3日本語説明付き!

TelloをPythonで動かすための説明をします。

2020年8月29日に行われるPyConJP2020の発表補足資料としても利用いたしますので、合わせてご覧ください。 これからTelloをPythonを使って飛ばしたい方向けの内容です。

今日の記事内容

  • Telloについて
  • Tello SDKについて
  • Telloを動かすためのPythonコード(入門)
  • Telloとパソコンをつなげて動かす
    Tello SDKを利用してPythonでTello(ドローン)を飛ばそう!SDK日本語説明付き!
    Tello SDKを利用してPythonでTello(ドローン)を飛ばそう!SDK日本語説明付き!

※ご注意:SDKの日本語化は自分の参考になるようにという前提で作ったので日本語がおかしかったりフォントサイズの統一がなかったりとかんぺきではありません。すべての動作の確認等も行っていないので、予めご了承ください。

Telloについて

 Telloは、Ryze Tech社がDJIの技術を使って開発された小型のドローンです。 1万円代の小型ドローンでは比較的安定して飛ばせる良い機体です。 ホームページを見るとこんなことが書いてあります

世界一楽しいドローンを作る、そんな想いを胸に「Tello」は設計されました。たくさんの驚きがつまったTelloは、子供から大人までみんなが楽しめるトイドローンです。 飛ばすだけでなく、プログラミングScratchも学べちゃいます。

TelloとTello EDU
TelloとTello EDU
現在発売されているのは、白い機体のTello(ノーマル)と黒い機体のTello EDUです。 Tello EDUは、ミッションパッドやインフラストラクチャ接続をサポートするSDK2.0を使えます。 通常のTelloはSDK1.3になります。

Tello EDUはWiFi子機となってアクセスポイントに接続することができるので、複数での接続や同時に管理するとき。 つまり編隊飛行が可能になるようです。(いずれやりたい) 少し値段は張りますが、Tello EDUを使うと複数コントロールできるワクワク感があります。

Tello SDKについて

TelloのSDK資料はここからダウンロードできますが、英語なので、苦手な方は「ウっ」って思いますよね。 筆者の私も英語はそれほど得意ではないので、事前に全部訳したものをこちらに公開します。 原文はRize Tech社が作った文ですが、翻訳を行いました。 このSDK(1.3.0.0)についてを読むとなんとなくわかってくるので楽しいです。

Tello EDU
Tello EDUの記事はまた今度
Tello EDUを高度に動かすためのSDKはversionが2.0のものです。 これについては、後ほど説明しようと思います。

急いで訳したこともあり、一部わかりずらいところもあるかと思いますが、英語の原文も載せているので、合わせてお読みください。 (少しずつ直していきます)

本家SDKのダウンロード先

<SDK1.3>
https://www.ryzerobotics.com/jp/tello/downloads
<SDK2.0>
 https://www.ryzerobotics.com/jp/tello-edu/downloads

Tello SDK1.3日本語
Tello SDK1.3日本語
https://drive.google.com/file/d/1A51f-5HK5fq4YfiIR4Anun4DD8ERRtR3/view?usp=sharing (2022/10/19 ファイル場所変更)

 

女性ドローン操縦士
女性ドローン操縦士
  通常、ドローンはイラストのように、プロポ(リモコンのような)を使って操縦をするものですが、このTelloというドローンは、PythonやScratchというプログラミング言語で、移動や状態を支持することができます。 機体も小さく、人に当たっても大きなけがをすることは少ないので安心して飛ばすことが可能です。  

Telloを動かすためのPythonコード(入門)

コードに関しては、本家のGitHubにあるデータなども使えるようなのですが、 シンプルなコードを公開している人がいました。 https://sakayasu.net/python-drone/

sakayasu.net

こちらのサイトが比較的わかりやすくまとめられていました。 そのコードを参考にTelloを離陸+宙返り+着陸できるプログラムを以下のように 書き直しました。 こちらを使うことによって、Telloが動きます。

以下、プログラムについて補足です。 も書いていたのですが、Telloの動作などをプログラミングで制御する というのではなく、Pythonを使って、動き方を支持すると言うのが正しいと思います。

DJI公式SDK「Tello-Python」を試そう - Qiita

Tello本体そのものにはプログラムをする機能も,プログラムを書き込むメモリ領域もありません. こちらにもそのような旨が書いてあるので、それを認識して Pythonを書いていきましょう。

<Telloを上昇させて、1度宙返りさせて着陸させる>

# Tello Python3 Control Basic 
# http://www.ryzerobotics.com/
# https://blog.hatena.ne.jp/se-lina/
#
# 15 Aug 2020


import socket
import time

#Create a UDP socket
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
tello_address = ('192.168.10.1' , 8889)

#command-mode : 'command'
socket.sendto('command'.encode('utf-8'),tello_address)
print ('start')

socket.sendto('takeoff'.encode('utf-8'),tello_address)
print ('takeoff')

time.sleep(5)
socket.sendto('flip l'.encode('utf-8'),tello_address)
time.sleep(5)

socket.sendto('land'.encode('utf-8'),tello_address)
print ('land')

その他のコードはこちら GitHub - dji-sdk/Tello-Python: This is a collection of python modules that interact with the Ryze Tello drone.

Telloとパソコンをつなげて動かす

続いて、上記のプログラムをどのように使うかについてを説明します。

  1. PCにPythonが実行できるように準備をする。
  2. PCに上記のプログラムをコピペして、tello_basic.pyなどのファイル名にする。
  3. TelloとPCをWiFiでつなぎます。   (これを行うとインターネットにはつながらなくなります。)
  4. ターミナルもしくはコマンドプロンプトでtello_basic.pyを実行する。
  5. 実行するとTelloが動きます。