


平成最後の投稿になりました。
トイドローンのRyze Telloを購入したので、早々にScratchプログラミングに挑戦してみました。
Ryze Tello
https://www.ryzerobotics.com/jp/tello
Scratch – Imagine, Program, Share
https://scratch.mit.edu/
Ryze Tello, Scratchについての解説は、すでにたくさんのサイトがあるのでそちらにお任せします(手抜き)。
RyzeではTelloのためのSDKも公開されています。
Tello SDK
https://terra-1-g.djicdn.com/2d4dce68897a46b19fc717f3576b7c6a/Tello%20%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/For%20Tello/Tello%20SDK%20Documentation%20EN_1.3_1122.pdf
今回の環境
・Ryze Tello Firemware Ver. 01.04.88.01
・Windows 10 Pro x64 Ver. 10.0.17763.137
- Scratch 2.0 Offline Editorのダウンロード
- Scratch 2.0 Offline Editorのインストール
- node.jsのダウンロード
- node.jsのインストール
- Tello.jsとTello.s2eのダウンロード
- ScratchにTello制御ファイルを組み込む
- PCとTelloを無線接続
- Tello.jsの起動
- Scratchプログラムの実行
下記サイトからScratch 2.0 Offline Editorをダウンロードします。
Scratch 2.0 Offline Editor
https://scratch.mit.edu/download/scratch2
Windows版
https://scratch.mit.edu/scratchr2/static/sa/Scratch-461.exe
ダウンロードしたScratch-461.exeを実行してインストールします。
Adobe AIRは必須なので、PCにインストールされていない場合は先にインストールされます。
node.jsはTelloとScratchの通信を中継してくれるプログラムと理解していいのかな。
Node.js
https://nodejs.org/ja/
今回は推奨版の10.15.3 TLSをダウンロードしました。
https://nodejs.org/dist/v10.15.3/node-v10.15.3-x64.msi
ダウンロードしたnode-v10.15.3-x64.msiを実行してインストールします。
node.jsで動作させるTelloのサーバ機能とScratchに組み込むTello制御ファイルをダウンロードします。
https://terra-1-g.djicdn.com/2d4dce68897a46b19fc717f3576b7c6a/Tello%20%E7%BC%96%E7%A8%8B%E7%9B%B8%E5%85%B3/For%20Tello/Scratch_For%20Tello.7z
ダウンロードしたScratch_For Tello.7zをフリーソフト7-Zipなどで適当なフォルダに解凍します。
解凍すると下記のファイルが作成されます。ちなみにTello制御ファイルのTello.s2eは英語版、TelloChs.s2eは中国語版になります。
1 2 3 4 |
C:\>dir c:\work\Scratch_普通版 2019/03/14 16:08 3,677 Tello.js 2019/03/14 16:12 1,782 Tello.s2e 2019/03/14 16:12 1,799 TelloChs.s2e |
Scratchを起動してTello制御ファイルを組み込みます。
Scratchは標準で英語メニューなので地球マーク(?)から「日本語」、あるいは「にほんご」を選択します。
次にShiftキーを押しながらファイルメニューをクリックして、一番下に表示されている”実験的なHTTP拡張を読み込み“を選択し”Tello.s2e“ファイルを指定して読み込みます。
Tello制御は「スクリプト」の「その他」に表示されるので、そこから選択してプログラミングします。
ちなみに新しいScratchプロジェクトを作成したらTello制御は表示されなくなるので、プロジェクトごとにTello.s2eを読み込む作業が必要です。
PCとTelloを無線で接続します。
TelloとScratchの間で制御コマンドの中継をしてくれるTello.jsを起動します。
Windowsのコマンドプロンプトを起動してnode (Tello.jsの保存場所)\Tello.jsで起動します。
下記のメッセージが表示されればTelloと無線通信ができています。
Data received from server : ok
Received 2 bytes from 192.168.10.1:8889
1 2 3 4 5 6 7 |
C:\>node c:\work\Scratch_普通版\Tello.js --------------------------------------- Tello Scratch Ext running at http://127.0.0.1:8001/ --------------------------------------- server listening 0.0.0.0:8890 Data received from server : ok Received 2 bytes from 192.168.10.1:8889 |
Tello.jsの終了はCtrl+Cかコマンドプロンプトのウィンドウを終了すれば停止します。
プログラムを実行するとTelloが動作しました。
コマンドプロンプトにはTelloに送信したコマンド、Telloからの返信が表示されます。
最初に”command”でSDK modeに切り替えてからコマンドを送信しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
--------------------------------------- Tello Scratch Ext running at http://127.0.0.1:8001/ --------------------------------------- server listening 0.0.0.0:8890 Data received from server : ok Received 2 bytes from 192.168.10.1:8889 [lhp_debug]carryCMD_else [lhp_debug]carryCMD: command send: command Data received from server : ok Received 2 bytes from 192.168.10.1:8889 [lhp_debug]carryCMD: takeoff send: takeoff Data received from server : ok Received 2 bytes from 192.168.10.1:8889 [lhp_debug]carryCMD_else [lhp_debug]request.url.split: land [lhp_debug]carryCMD: land send: land Data received from server : ok Received 2 bytes from 192.168.10.1:8889 |
またTello SDK 1.3.0.0(Tello SDK Documentation EN_1.3_1122.pdf)ドキュメントを読むと下記の記述がありました。
6. SAFETY FEATURE
If Tello does not receive any command input for 15 seconds, it will land automatically.
安全機能として「Telloが15秒間コマンド入力を受け取らないと、自動的に着陸します。」とあります。
“land(着陸)”を忘れても15秒まてば自動的に着陸してくれるはずなので安心ですね。
逆に言えば、15秒以上のホバリングはできないってことになります。
下記はTello.s2eを日本語化して読み込んでみました。Tello.s2eはテキストファイルなので簡単に直せます。
日本語が正しいかどうかは別として(笑