プログラムでドローンを飛ばそう ! Python と VisuaI Studio のインストール Chapter 3 こで唐突ですが Python2. x 系と Visua1 studio をインストールします。何故かというと、次の手順 で npm コマンドを用いて Node. js のモジュールを追加していくのですが、 Windows 特有の制約で一部 のモジュールに対してこれらが必要になります。 VisualStudio のバージョンは最新で良いのですが、 Python は必ず 2. X 系をインストールする必要があります。筆者の環境では python は 2.7. 11 、 Visual Studi02015 をインストールしました。手順自体は特に注意することもないのでインストーラをダウ ンロードして Next&Accept で OK です。 N0de. js のモジュールインストール Node. js 本体、 Python2. X 系、のインストールが終わったら次は N 。 de. js で利用するモジュールを追 加していきます。まずは作業用のフォルダを作りましよう。こでは「 C:YappsYdrone 」とします。 そして npm コマンドを使ってモジュールを追加していきます。 npm コマンドが利用できない場合は Node. js をインストールしたフォルダ (C:YProgramFilesYnodejs あたり ) を path に追加して下さい。 インストールするモジュールは以下の 3 つです。 ・ keypress : キーボードからの入力制御モジュール ・ noble : Bluetooth の接続モジューノレ ・ rolling¯spider : Mini ドローンの制御モジューノレ ・ temporal : temporal オプジェクト 以下のコマンドでインストールしていきます。 >npm install keypress >npm install noble >npm install rolling-spider >npm install temporal 成功すると以下のような階層構造ができています。 C:\apps\drone>dir node_modules\ dir や tree で確認しましよう。 2016 / 11 / 13 2016 / 1 1 / 13 2016 / 11 / 13 2016 / 11 / 13 2016 / 1 1 / 13 2016 / 11 / 13 16 : 33 16 : 33 16 : 03 16 : 03 16 : 33 16 : 33 く D 旧 > く団 R > く D 旧 > <DIR> <DIR> く D 旧 > keypress noble rolling-spider temporal 55
プログラムでドローンを飛ばそう ! ″旋回 else if (key. name = param. turn = 90 ; d. drive(param, STEPS); C00 own ( ) ; else if (key. name = param. turn = -90 ; d. drive(param, STEPS); C00 旧 own ( ) ; d. backFlip(); else if (key. name = C00 own ( ) ; d. frontFIip(); else if (key. name = ″特殊動作 C00 旧 own ( ) ; Chapter 3 前後左右の移動には矢印キーの「↑↓←→」を割り当てています。旋回は一回のキー入力で左右に 90 ℃ずっ旋回、そして特殊動作にはプリセットされている前方回転と後方回転を設定しています。 の他にも rightFIip や IedtFIip といった左右の回転もあります。 こでは仮に「 keyEventControl. js 」としておきます。 キーポード操縦コード 最後に自動操縦のコーディングです。ここでは予め設定した動作を連続して実行するプログラムを実 装します。利用出来る動作はキーボード入力と同じですので自由に組み合わて 0K です。 temporal オプジェクトに自動実行させたい動作を順に詰めていき connect 関数に渡します。 use StriCt'; var Drone = require('.. /,); var temporal = require( ・ temporal'); var d = new Drone(process. env. UUID); d. connect(function ( ) { d. setup(function ( ) { d.flatTrim(); d. startPing(); d.flatTrim(); C0nS0厄」0g( ℃ onnected to drone ・ , d. name); 59
プログラムでドローンを飛ばそう ! Chapter 3 temporal.queue([ delay: 5000 , process. exit(O); temporal.clear(); task: function ( ) { delay: 5000 , d.land(); consoIe.Iog('Time t0 land'); task: function ( ) { delay: 5000 , d. frontFlip(); consoIe.log('OMG Flip! ・ ); task: function ( ) { delay: 5000 , d. down({steps: 20 } ) ; C0nS0に」0g( ℃ 0ing down'); task: function ( ) { delay: 4500 , d. up({steps: 20 } ) ; console.log( ℃ Oing up'); task: function ( ) { delay: 4500 , d. forward({steps: 12 } ) ; console 」 og( ℃ Oing fO a 「 d ・ ) ; task: function ( ) { delay: 4500 , d.flatTrim(); d. takeOff(); console 」 og('Getting ready f0 「 takeOff!'); task: function ( ) { 実行間隔として delay 値を設定し、 task にて実行する動作を実装します。この中身の実装はキー 60 定します。お作法としては最初に「 take0ff 」、最後に「 land 」処理を入れてください。 力の時と同じです。 Drone オブジェクトの動作関数を呼び出します。移動動作であれば移動距離を設