★★★★★ ★★★★★ ★★★★★
Ryze Tech製のドローン(TELLO)を購入しました。
2020年07月27日(月曜日)に、Ryze Tech製のドローン(TELLO) BOOST COMBOセットとドローンに関する図書2冊がAmazonから届きました。既成のアプリケーションをダウンロード出来る他、ビジュアルプログラミング言語「SCRATCH」でプログラミング出来ます。Windows PCの他、Raspberry Piとの組み合わせが可能な様です。これから勉強しながらドローンを有効に動かして行こうと思います。
Ryze Tech社のHPは、https://www.ryzerobotics.com/jp
★★★★★ ★★★★★ ★★★★★
1. Telloの仕様
①. Telloの性能
- 最大飛行距離:100m
- 最大速度:8m/秒
- 最大飛行時間:13分
- 最大飛行高度:30m(2020/07/30時点)
- 重量:88g(バッテリー、プロペラ、プロペラガード含む)
- バッテリー:1.1Ah/3.8V
- カメラ:Photo: 5MP (2592×1936) JPG、Video: HD720P30 MP4
★★★★★ ★★★★★ ★★★★★
②. TelloのWi-Fiのアクセスポイント
■Send Command & Receive Response
IPアドレス:192.168.0.10 UDPポート番号:8889
■Receive Tello State
IPアドレス:192.168.10.1 Host Serverアドレス:0.0.0.0 UDPポート番号:8890
■Receive Tello Video Stream
IPアドレス:192.168.10.1 Host Serverアドレス:0.0.0.0 UDPポート番号:1111
③. TelloのAPI(Application Program Interface)
2020年08月時点の最新版: Tello-SDK-2.0-User-Guideダウンロード
★★★★★ ★★★★★ ★★★★★
Tello-SDK-1.0-User-Guide
コマンド | 意 味 | 応 答 |
command | コマンドモード開始 | OKまたはFALSE |
takeoff | 自動離陸 | OKまたはFALSE |
land | 自動着陸 | OKまたはFALSE |
up xx | 上昇(xxは20〜500、cmで指定) | OKまたはFALSE |
down xx | 下降(xxは20〜500、cmで指定) | OKまたはFALSE |
left xx | 左移動(xxは20〜500、cmで指定) | OKまたはFALSE |
right xx | 右移動(xxは20〜500、cmで指定) | OKまたはFALSE |
forward xx | 前進(xxは20〜500、cmで指定) | OKまたはFALSE |
back xx | 後退(xxは20〜500、cmで指定) | OKまたはFALSE |
ccw xx | 左回転(xxは1-3600度) | OKまたはFALSE |
cw xx | 右回転(xxは1-3600度) | OKまたはFALSE |
flip x | アクロバット(空中で縦方向に一回転します) l(左)、r(右)、f(前)、b(後)、bl(後左)、br(後右)、fl(前左)、fr(前右) | OKまたはFALSE |
speed xx | 移動速度を設定(xxは1-100、cm/秒) | OKまたはFALSE |
Speed? | 現在の速度を取得 | xx |
Battery? | 現在のバッテリー残量を取得 | xx(0-100%) |
Time? | 現在までの飛行時間を取得 | xx |
API 1.3以降では15秒以上何も指示を出さない場合には自動で着陸します。このため上空に待機した状態で15秒以上放置しておくと自動着陸しますので注意してください。
★★★★★ ★★★★★ ★★★★★
2. Telloのプログラミング
Tello本体そのものにはプログラムをする機能も,プログラムを書き込むメモリ領域もありません。
Telloはいわば「知能を持たない移動端末」で,知能的な計算をしているのは母艦PCです。
- Telloのカメラ映像やセンサーデータをPC(通称:母艦)で受け取る
- 母艦PCで画像処理やデータ処理をして,Telloの動き方を計算する
- Tello SDKに基づいて,Telloへコマンドを送信する
- Telloが動く
- 1へ戻って繰り返す
★★★★★ ★★★★★ ★★★★★
3. Tello機体状態のLED表示
Telloの機体前部、カメラ横のLEDは、その点灯状態によって、次のような状態を表しています。
色 | パターン | 状 態 | |
動作状態 | 赤.緑.黄 | 点滅で色の繰り返し | 機体が自己診断 |
緑 | 2回点滅の繰り返し | ビジョンセンサーが動作中 | |
黄 | ゆっくり点滅 | ビジョンセンサーが無効 | |
充電状態 | 青 | 点 灯 | 充電完了 |
青 | ゆっくり点滅 | 充電中 | |
青 | 高速点滅 | 充電異常 | |
警告状態 | 黄 | 高速点滅 | スマホとの接続が切れた、または未接続 |
赤 | ゆっくり点滅 | バッテリー残量低下 | |
赤 | 高速点滅 | バッテリー残量不足 | |
赤 | 点 灯 | 重大なエラー |
★★★★★ ★★★★★ ★★★★★
■ Raspberry Piから「SCRATCH」でtelloを動かそう!
母艦PCは、Raspberry Pi 3 Model Bを使用します。OSは「Raspbian Full」とします。
Raspberry Pi(ラズベリーパイ)は、イギリスのラズベリーパイ財団で開発された教育用のマイコンボードです。※ Raspberry Pi は ラズベリーパイ財団 の登録商標です。
手順については色々な書籍や先人達のHPを参考にしたいと思いますが、過去の古いものから最新?と思われるものまであり、どれを参考にすれば良いのかさっぱり分かりません。行き当たりばったりでTRYして行きますので、無駄な行為や間違った行為があるかと思いますが、お許しください。
①.参考1としては、Ryze(DJI) Tello をScratchやPythonで制御する Scratchでトイドローンをプログラミングして飛ばそう! https://tsq.gapj.net/index.php/tello/
Takao Takahashi 氏のHPを参照
②.参考2としては、書籍「Scratchでトイドローンをプログラミングして飛ばそう」高橋 隆雄 著 秀和システム ISBN978-4-7980-5519-0 C3055
③.参考3としては、ドローンをRaspberry PiとScratchを使って自動飛行させる方法
https://linux-memo.net/drone/raspbian_scratch_tello-top.html
★★★★★ ★★★★★ ★★★★★
1. Node.jsをダウンロードしてインストール
①. 参考2の場合
Ryze Tech社から提供されているTello拡張機能を使うために、Node.jsを動作させる環境が必要なので、Node.jsをインストールします。「メニュー」→「設定」→「Add/Remove Software」をクリックします。
「Options」欄に「Node.js」 「Enter」キーをクリックします。
「evented I/O for V8 javascript」のチェックボックスにチェックを入れて、「Apply」ボタンをクリックします。
「パスワード」入力画面が表示されたら、パスワードを入力して、「OK」をクリックします。
★★★★★ ★★★★★ ★★★★★
②. 参考3の場合
- リポジトリを最新にします。 pi@raspberrypi:~ $ sudo apt-get update [ENTER]
- 必要パッケージをインストールします。 pi@raspberrypi:~ $ sudo apt-get install -y nodejs npm p7zip-full [ENTER]
- npmのキャッシュを削除します。 pi@raspberrypi:~ $ sudo npm cache clean [ENTER]
- Node.jsのバージョン管理が行える「n」をインストールします。 pi@raspberrypi:~ $ sudo npm install n -g [ENTER]
★★★★★ ★★★★★ ★★★★★
2. ScratchのTello拡張機能をダウンロード
①. 参考1、参考2の場合
Raspberry Pi のOS(debian)では「Scratch 2」は既にインストールされていますが、Ryze Tech社から提供されているScratch拡張機能は、Raspberry PiのScratchには対応していません。そこで、Raspberry PiのScratchでTelloが使えるように、筆者の高橋 隆雄氏がTello拡張機能を用意しています。
以下のリンクからScratchのTello拡張機能「tellocont.zip」を入手し、ダウンロードします。
こちらのサイト https://tsq.gapj.net/index.php/tello/ にRaspberry Pi対応版 ScratchのTello拡張機能が公開されています
ファイルを展開すると、「tellocont.js」と「tellocontJp.js」の2つのファイルがあります。
「tellocont.js」と「tellocontJp.js」を /home/pi/ ホルダーに置きます。
「tellocont.js」が英語版、「tellocontJp.js」が日本語版になります。
②. 参考3の場合
以下のリンクからScratchのTELLO拡張機能「tellocont.zip」を入手します。
Takao Takahashi氏のこちらのサイトにRaspberry Pi対応版 ScratchのTELLO拡張機能が公開されています
同じくブラウザからダウンロードすると、ホームディレクトリの「Downloads」ディレクトリに保管されますので、
ターミナルから以下の通り、「Downloads」ディレクトリで解凍します。
pi@raspberrypi:~/Downloads/Scratch $ cd ~/Downloads [ENTER] pi@raspberrypi:~/Downloads $ unzip tellocont.zip [ENTER]
「Downloads」ディレクトリ直下に「tellocont.js」と「tellocontJp.js」が作成されます。
pi@raspberrypi:~/Downloads $ ls [ENTER] Scratch Scratch.zip tellocont.js tellocont.zip tellocontJp.js
「tellocont.js」が英語版、「tellocontJp.js」が日本語版になります。
★★★★★ ★★★★★ ★★★★★
3. ScratchのTello拡張環境を整備
①. 参考1、参考2の場合
こちらのリンク https://dl-cdn.ryzerobotics.com/downloads/tello/20180222/Scratch.zip にあるScratch.zipをダウンロードします。
解凍すると、「Tello.js」と「Tello.s2e」が存在します。「Tello.js」と「Tello.s2e」を /home/pi/ ホルダーに置きます。
ScratchでTello のプログラミングを行うには、Node のプログラムを立ち上げておく必要があります。
コマンドプロンプトから、/home/pi/ フォルダーに置いた「Tello.js」を起動して待機状態とします。
$ nodejs Tello.js [Enter]
★★★★★ ★★★★★ ★★★★★
②. 参考3の場合
こちらのリンク https://www.ryzerobotics.com/jp/tello/downloads にある「Scratch README」をクリックして表示されるPDFから「3. Click here to download Tello.js and …」をクリックして「Tello.js」が入っている「Scratch_For Tello.7z」をダウンロードします。
ブラウザからダウンロードすると、ホームディレクトリの「Downloads」ディレクトリに保管されます。
ターミナルから以下の通り、「Downloads」ディレクトリにカレントディレクトリを変更して、Scratchディレクトリを作成し、その中に解凍します。
pi@raspberrypi:~ $ cd ~/Downloads [ENTER] pi@raspberrypi:~/Downloads $ mkdir Scratch [ENTER] pi@raspberrypi:~/Downloads $ cd Scratch [ENTER] pi@raspberrypi:~/Downloads/Scratch $ 7z e ../"Scratch_For Tello.7z" [ENTER]
すると、「Scratch」ディレクトリに「Tello.js」が保管されています。
pi@raspberrypi:~/Downloads/Scratch $ ls[ENTER]
「Tello.js」と「Tello.s2e」が存在します。「Tello.js」と「Tello.s2e」を /home/pi/ ホルダーに置きます。
ScratchでTello のプログラミングを行うには、Node のプログラムを立ち上げておく必要があります。
コマンドプロンプトから、/home/pi/ フォルダーに置いた「Tello.js」を起動して待機状態とします。
$ nodejs Tello.js [Enter]
★★★★★ ★★★★★ ★★★★★
4. Scratchでプログラミング
「メニュー」→「プログラミング」→「Scratch 2」をクリックします。
「Scratch 2」が起動されます。
Scratch 2 が起動したら拡張機能を読み込みます。「シフト」キーを押しながら「ファイル」メニューを開くと、”Import experimental extension”メニューがあります。
これを開きます。
・1案は英語版で使用したいので、「/home/pi/tellocont.js」のようにフルパスを指定します。
「Load」をクリックします。「その他」をクリックしてみると、「Tello Control」の英語版が追加されました。
・2案は日本語版で使用したいので、「/home/pi/tellocontJp.js」のようにフルパスを指定します。
「Load」をクリックします。「その他」をクリックしてみると、「Tello Control」の日本語版が追加されました。
★★★★★ ★★★★★ ★★★★★
※ Raspberry Pi の方は、「Tello飛行ブロック」の説明へ飛んで下さい。
★★★★★ ★★★★★ ★★★★★
■ Windows 10から「SCRATCH」でtelloを動かそう!
手順については色々な書籍や先人達のHPを参考にしたいと思いますが、過去の古いものから最新?と思われるものまであり、どれを参考にすれば良いのかさっぱり分かりません。行き当たりばったりでTRYして行きますので、無駄な行為や間違った行為があるかと思いますが、お許しください。
①.参考1としては、Ryze(DJI) Tello をScratchやPythonで制御する Scratchでトイドローンをプログラミングして飛ばそう! https://tsq.gapj.net/index.php/tello/
Takao Takahashi 氏のHPを参照
②.参考2としては、書籍「Scratchでトイドローンをプログラミングして飛ばそう」高橋 隆雄 著 秀和システム ISBN978-4-7980-5519-0 C3055
★★★★★ ★★★★★ ★★★★★
1. Adobe AIR をダウンロードしてインストール
★ 参考2の場合
Adobe AIR を、
①. Scratch 2.0 オフライン版をインストールする前に、Adobe AIR のインストールが必要です。Adobe AIR Windows 「ダウンロード」をクリックします。
②. この画面の下の方に下図の画面があります。旧バージョンの「Scratch 2.0 オフラインエディター」をクリックします。
③. 下図の画面が表示されます。
上図の画面の下の方に下図の画面があります。「Adobe AIR Windows ダウンロード」をクリックします。
④. 下図の画面が表示されるので、「今すぐダウンロード」をクリックします。
⑤. 下図の画面の下段に、「この種類のファイルはコンピュータに損害を与える可能性があります。AdobeAIRInstaller….exe のダウンロードを続けますか?」「保存」「破棄」が表示されます。「保存」をクリックして下さい。
⑥. エクスプローラにて、「ダウンロード」フォルダにある AdobeAIRInstaller.exe をクリックしますと、下図のような画面が表示されれば、既にインストール済みです。
★★★★★ ★★★★★ ★★★★★
2. Scratch 2.0 オフライン版 をダウンロードしてインストール
★ 参考2の場合
Scratch 2.0 オフライン版を、
①. Scratch 2.0 オフライン版をダウンロードし、インストールします。
②. この画面の下の方に下図の画面があります。旧バージョンの「Scratch 2.0 オフラインエディター」をクリックします。
③. 下図の画面が表示されます。
上図の画面の下の方に下図の画面があります。「Scratchオフラインエディタ Windows ダウンロード」をクリックします。
④. 下図の画面の下段に、「この種類のファイルはコンピュータに損害を与える可能性があります。Scratch-461.exe のダウンロードを続けますか?」「保存」「破棄」が表示されます。「保存」をクリックして下さい。
⑤. エクスプローラにて、「ダウンロード」フォルダにある Scratch-461.exe をクリックします。
⑥. 下図の画面が表示されます。「続行」をクリックします。
⑦. 下図の画面が表示されます。
⑧. 下図の画面が表示されます。
⑨. 下図の画面が表示されます。
★★★★★ ★★★★★ ★★★★★
3. Node.jsをダウンロードしてインストール
★ 参考2の場合
Ryze Tech社から提供されているTello拡張機能を使うために、Node.jsを動作させる環境が必要なので、Node.jsをインストールします。
まずは、こちらのリンク https://nodejs.org/en/ からNode.jsをダウンロードします。
①. Node.js をダウンロードし、インストールします。ここでは、実績のある Ver 12.18.3 LTS の方をクリックして、ダウンロードします。
②. ダウンロードが完了すると、下図の画面の下段に、「この種類のファイルはコンピュータに損害を与える可能性があります。node-v12.18.3-x64….msi のダウンロードを続けますか?」「保存」「破棄」が表示されます。「保存」をクリックして下さい。
③. エクスプローラにて、「ダウンロード」フォルダにある node-v12.18.3-x64….msi をクリックします。
④. 下図の画面のように、「Install」をクリックします。
⑤. 下図の画面が表示されるので、「Next」をクリックします。
⑥. 下図の画面が表示されるので、「Next」をクリックします。
⑦. 下図の画面が表示されるので、「Next」をクリックします。
⑧. 下図の画面が表示されるので、「Next」をクリックします。
⑨. 下図の画面が表示されます。
⑩. 下図の画面が表示されるので、「Finish」をクリックします。
★★★★★ ★★★★★ ★★★★★
4. ScratchのTello拡張環境を整備
★ 参考1、参考2の場合
こちらのリンク https://dl-cdn.ryzerobotics.com/downloads/tello/20180222/Scratch.zip にあるScratch.zipをダウンロードします。
解凍するとScratchというフォルダがあります。筆者はドキュメントフォルダの下に、Telloフォルダを作成しました。
①. ここで簡単に使えるようにするために、ショートカットを作成することで、Telloとの接続を一発起動出来るようにします。
Scratchフォルダの中で「右クリック」し、「新規作成」→「ショートカット作成」します。
②. 下図の画像で、「ショートカットの対象を選択してください」で、「node.exe」を指定して、「OK」をクリックします。
③. 下図の画像で、ショートカットを作成し、「次へ」をクリックします。
④. 下図の画像で、ショートカットの名前を指定します。「Node(TELLO)」とします。「完了」をクリックします。
⑤. 下図のように、ショートカットが作成されました。
⑥. さらにこのショートカットを編集します。エクスプローラフォルダのアドレスバーの場所のところで、「右クリック」します。「アドレスをテキストとしてコピー」をクリックします。
⑦. ショートカットを「右クリック」して「プロパティ」を開きます。
⑧. 「リンク先」の後ろに「スペース」を入れて「Tello.js」を付加します。さらに、「作業フォルダー」に、先程コピーしたアドレスで上書きします。私の場合は、「C:¥Users¥flute¥Documents¥Tello¥Scratch」となっています。変更したら「適用」→「OK」をクリックして閉じます。
⑨. ショートカットから起動すると、初めての起動した場合は、下図の画面が表示されます。「Windowsのファイアウォール設定」が確認されますので、通常は、「プライベートネットワーク」側の方だけ「チェック」を入れます。「アクセスを許可する」をクリックします。
⑩. 起動すると、下図の画面が表示されます。
ScratchでTello のプログラミングを行うには、Node のプログラムを立ち上げておく必要があります。
★★★★★ ★★★★★ ★★★★★
5. ScratchのTello拡張機能をダウンロード
★ 参考1、参考2の場合
・1案は英語版で使いたいので、ScratchのTello拡張機能でTelloが使えるように、Tello¥Scratchフォルダを作成しました。「Scratch.zip」を入手し、ダウンロードします。
Scratch.zipファイルを展開すると、「Tello.js」と「Tello.s2e」と「TelloChs.s2e」の3つのファイルがあります。
「Tello.s2e」を使用します。
・2案は日本語版で使いたいので、ScratchのTello拡張機能でTelloが使えるように、Tello¥Scratch_Tello_Takahashi_Nihongoフォルダを作成しました。「Scratch_Tello.zip」を入手し、ダウンロードします。
Scratch_Tello.zipファイルを展開すると、「TelloJp.s2e」と「TelloJpHira.s2e」と「readme.txt」の3つのファイルがあります。
★★★★★ ★★★★★ ★★★★★
6. Scratchでプログラミング
「デスクトップ」→「Scratch 2 Desktop」をクリックします。
①. 「Scratch 2」が起動されます。
②. 「Scratch 2」が起動されます。「Scratch 2」 が起動したら拡張機能を読み込みます。「シフト」キーを押しながら「ファイル」メニューを開くと、「実験的なHTTP拡張を読み込み」メニューがあります。この「実験的なHTTP拡張を読み込み」をクリックします。
③. これを開きます。
・1案は英語版で使用したいので、「ドキュメント¥Tello¥Scratch」フォルダの「Tello.s2e」を指定します。
・2案は日本語版で使用したいので、「ドキュメント¥Tello¥Scratch_Tello_Takahashi_Nihongo」フォルダの「TelloJp.s2e」を指定します。
④. 「その他」をクリックしてみると、1案の場合は「Tello Control」の英語版が追加されました。2案の場合は「Tello Control」の日本語版が追加されました。
★★★★★ ★★★★★ ★★★★★
※これ以降の説明は、Raspberry Pi も Windows PC も共通です。
★★★★★ ★★★★★ ★★★★★
■ Tello飛行ブロック説明
ブロック | 意 味 | 応 答 |
take off | 離陸 | OKまたはFALSE |
land | 着陸 | OKまたはFALSE |
fly up with distance | 上昇(20〜500、cmで指定) | OKまたはFALSE |
fly down with distance | 下降(20〜500、cmで指定) | OKまたはFALSE |
fly left with distance | 左移動(20〜500、cmで指定) | OKまたはFALSE |
fly right with distance | 右移動(20〜500、cmで指定) | OKまたはFALSE |
fly forward with distance | 前進(20〜500、cmで指定) | OKまたはFALSE |
fly back with distance | 後退(20〜500、cmで指定) | OKまたはFALSE |
rotate CW with angle | 右回転(1-3600度) | OKまたはFALSE |
rotate CCW with angle | 左回転(1-3600度) | OKまたはFALSE |
flip with duration | アクロバット(空中で縦方向に一回転します) l(左)、r(右)、f(前)、b(後)、bl(後左)、br(後右)、fl(前左)、fr(前右) | OKまたはFALSE |
set speed | 移動速度を設定(1-100、cm/秒) | OKまたはFALSE |
★★★★★ ★★★★★ ★★★★★
7. Scratch 2 でTello サンプルプログラム
高橋 隆雄 氏のHP https://tsq.gapj.net/index.php/tello/ にサンプルプログラムが掲載されています。
Raspberry Pi のとき、Nodejsは、/home/pi/ フォルダーに置いた「Tello.js」を起動して待機状態とします。
$ nodejs Tello.js [Enter]
Windows PC のとき、Node(TELLO)ショートカットをクリックして、「Tello.js」を起動して待機状態とします。
①. Tello用Scratchスクリプトセット
サンプルプログラム Tello-Visual.zip を実行してみます。
スプライトが実際の飛行のように動きます。
「s」キーが押されると、コマンドプロンプトの画面が下図のように変化して行きます。
★★★★★ ★★★★★ ★★★★★
②. スプライトを操作してTelloを飛ばす
サンプルプログラム Tello-Vcon.zip を実行してみます。
スプライトを操作した位置にTelloを移動します。要するにマウスでTelloを操作します。
tキーで離陸、sキーで処理実行します。
★★★★★ ★★★★★ ★★★★★
③. Telloをn角形で飛行させる
サンプルプログラム tello-flyrect.zip を実行してみます。
Telloを6角形で飛行させる場周飛行のサンプルです。Scratchによる演算で角形(N=6)の数、飛行半径(R=100)を指定するとその通りに飛ぶデモンストレーションです。
★★★★★ ★★★★★ ★★★★★
サンプルプログラム tello-flyrect1.zip を実行してみます。
Telloを4角形で飛行させる場周飛行のサンプルです。Scratchによる演算で角形(N=4)の数、飛行半径(R=100)、旋回角度(D=90)、飛行距離(L=142)を指定するとその通りに飛ぶデモンストレーションです。
★★★★★ ★★★★★ ★★★★★
★★★★★ ★★★★★ ★★★★★