2019年10月5日土曜日

Tello Programming 004 -Scratchでプログラミング-

TelloScratchで動かすには,
・Scratchオフラインエディター(現在、Ver.2.0)
・Node.js
・Adobe AIR
が必要です.これらのセットアップに関しては,過去の投稿(macOS編Windows編)を参照して下さい.また,Scratchの基本についても過去の投稿を参照して下さい.

TelloScratchでプログラミングして動かすには
Scratchでプログラム作成
・Nodeプログラム起動
・Wi-Fi接続(Telloとコンピュータ)
が必要になります.以下は,トライアルでプログラミングしてみた際のメモです.

まずは,Telloの電源を入れます.しばらくするとWifi接続が可能になるので,とコンピューターを接続します.
ターミナルを起動して,事前にダウンロードしてあるTello.jsのあるディレクトリに移動して,nodeを起動してTello.jsを読み込みます*Scratchのセットアップについては以前の投稿Windows編macOS編を参照して下さい).
$ cd Tello.jsのあるディレクトリの場所 
$ node Tello.js

*毎回Tello.jsのあるディレクトリを探してそこに移動するのは面倒なので,作業用のディレクトリをデスクトップにでも作成して,その中にTello.js, Tello.s2e, TelloChs.s2eを入れておくと便利です.そして,ターミナルを起動して,"cd"と入力した後に,そのディレクトリをターミナルにドラッグ&ドロップすると,そのディレクトリの場所が表示されます.
下図は,作業用フォルダとして"Tello Project"というディレクトリを作成して,その中に必要なファイル(Tello.js, Tello.s2e, TelloChs.s2e)を入れた場合の例です.
ターミナルで"node Tello.js"と入力すると以下のように表示されます.
$ node Tello.js
---------------------------------------
Tello Scratch Ext running at http://xxx.x.x.x:xxxx/
---------------------------------------
(node:655) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
server listening x.x.x.x:xxxx
send: command
Data received from server : ok
Received 2 bytes from xxx.xxx.xx.x:xxxx
なお,上記で"x"と表示されている箇所には数字が入ります.

Scratch2.0 Offline Editorを起動します.Scratch2.0 Offline Editorの"File"メニューをShiftキーを押しながらクリックして,"Import Experimental HTTP Extension (実験的なHTTP拡張の読み込み)"をクリックして,Tello.s2eを読み込みます.

Scratch2.0 Offline Editorを使って,プログラムを作成します.
例えば,Scratchブロックパレット,Script(スクリプト)>More Blocks(その他)から[takeoff] をスクリプトエリアにドラッグ&ドロップすると,離陸(Take Off)の命令をプログラムしたことになります.

以下に,離陸(takeoff)と着陸()だけの命令を持っているプログラム例を示します.
下図はブロックパレットの拡大です.
このプログラムは,

  • "t"を押したときに離陸(takeoff)
  • "l"を押したときに着陸(land)
するという命令を持っています.安全のために,一番下にある"space"を押した時には緊急停止(emergency stop)する命令も付けてあります.このプログラムでは,離陸して着陸するという操作しかできません.

そこで,離陸,着陸に加えて,50cm前に進む,50cm後ろに下がるという命令を持つプログラムを作成してみます.
ブロックパレットを拡大すると,以下のようになります.
先の例と同じように
  • "t"を押すと離陸(takeoff)
  • "l"を押すと着陸,"space"を押すと緊急停止(emergency stop)
  • "f"を押すと50cm前進(fly forward 50cm)
  • "b"を押すと50cm後進(fly backward 50cm)
という命令を出すことができます.

このプログラムを実行してみた際の動画は,以下のようになります.

なお,上記の動画を実行した際に,nodeを起動しているターミナルには,各命令が実行されると,以下のように表示されます.
send: takeoff
Data received from server : ok
Received 2 bytes from xxx.xxx.xx.x:xxxx

send: forward 50
Data received from server : ok
Received 2 bytes from xxx.xxx.xx.x:xxxx

send: back 50
Data received from server : ok
Received 2 bytes from xxx.xxx.xx.x:xxxx

send: land
Data received from server : ok
Received 2 bytes from xxx.xxx.xx.x:xxxx

send: reset_all
上記の"x"には数字が入ります.

0 件のコメント :

コメントを投稿