こんにちは。
日本システム技研のアガタです。
長野は朝晩は涼しく、だいぶ過ごしやすくなってきました。
さて話題が変わりますが、
「ドローン」といえば、最近はテレビなどにもよく見る空撮ですが
空撮以外にも、様々なところで活用されており、どういった事ができるか?
など、興味を持ったので、色々調べてみました。
値段も手頃、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などで、試しみてはいかがでしょうか?
・今回は、離陸と着陸させる制御のご紹介でしたが、左記以外にも様々な事が出来ます。
飛行にアレンジなどを加える事も可能なので、次回、もう少し詳しくご紹介できればと思います。