1
/
5

Pythonからドローンを操作してみる話。


こんにちは。
日本システム技研のアガタです。
長野は朝晩は涼しく、だいぶ過ごしやすくなってきました。

さて話題が変わりますが、
「ドローン」といえば、最近はテレビなどにもよく見る空撮ですが
空撮以外にも、様々なところで活用されており、どういった事ができるか?
など、興味を持ったので、色々調べてみました。

値段も手頃、Pythonなどのプログラミングで制御も可能な、「Tello」というドローンに
たどり着きました。

そこで今回は、Python言語で離陸させる。着陸させる。の制御を簡単ではありますが、
紹介したいと思います。

①環境
macOS Sierra 10.12.6(Macですみません。)
・python3

②準備
・ python3の準備します。
1.Macのターミナルを開いて、pythonのバージョンを確認します。
 ドローンの「Tello」はpython3から対応しているので、Python3がインストールされていない場合は、
インストールする。(ここではbrewによる3系のインストール方法です。)

python --version

2.xcodeをインストールしていない場合、インストールしてください。

xcode-select --install

3.Homebrewをインストール
 Homebrewについてはここでは説明は省きますが、ツール、ソフトなどを簡単に
 管理できるパッケージマネージャーです。下記のコマンド簡単にインストール
 できます。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

以下のコマンドでインストールできているか確認します。

brew -v

4.python3をインストール

brew install python3

以下のコマンドでインストールできているか確認します。

python3 -V

③TELLO側の準備

1.TELLOの電源ボタンを押す。
2.PCとTELLOをWiFi接続する。(SSIDはTELLO-hogehoge)
3.pingで192.168.10.1で接続確認しても良いかもしれません。

TELLOを制御するPythonファイルを作成する

TELLOの公式ページなどにもサンプルがあるので、それらを参考に、離陸と着陸させる
命令をPythonで記述して、とりあえずデスクトップに保存しました。

(ファイル名はTello_python.pyとした。)

#
# Tello Python3 Control Demo 
#
# http://www.ryzerobotics.com/
#
# 1/1/2018

import threading 
import socket
import sys
import time

host = ''
port = 9000
locaddr = (host,port) 

# Create a UDP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

tello_address = ('192.168.10.1', 8889)

sock.bind(locaddr)

def recv():
    count = 0
    while True: 
        try:
            data, server = sock.recvfrom(1518)
        except Exception:
            print ('\nExit . . .\n')
            break

#recvThread create
recvThread = threading.Thread(target=recv)
recvThread.start()

while True: 

    try:
        msg = input("");

        if not msg:
            break  

        if 'end' in msg:
            print ('...')
            sock.close()  
            break

        # Send data
        msg = msg.encode(encoding="utf-8") 
        sent = sock.sendto(msg, tello_address)
    except KeyboardInterrupt:
        sock.close()  
        break

⑤TELLOに接続する
デスクトップにPythonファイルを配置したので、cd。

cd /Users/hogehoge/Desktop

コマンドラインから下記コマンドを実行。

python Tello_python.py

TELLOに接続する。

command

特にエラーが表示されなければ、通信OKの状態となります。

⑥離陸させる。

takeoff

成功すると、プロペラが回り出して、飛行を始めます。

⑦着陸させる。

land

⑧切断する。

end

まとめ
・サンプルプログラムがあらかじめ公式ページにあるのでPCとTELLOさえあれば簡単に始められる。
・対応言語はScratch、Swift、Pythonなどに対応しているで今回はPythonでのご紹介でしたが
 興味のある方は、Scratch、Swiftなどで、試しみてはいかがでしょうか?
・今回は、離陸と着陸させる制御のご紹介でしたが、左記以外にも様々な事が出来ます。
 飛行にアレンジなどを加える事も可能なので、次回、もう少し詳しくご紹介できればと思います。


株式会社日本システム技研's job postings
8 Likes
8 Likes

Weekly ranking

Show other rankings
Like Yoshio Agata's Story
Let Yoshio Agata's company know you're interested in their content