Parrot manboを飛ばすのにrolling-spiderというライブラリーをベースにした記事がいくつかあるのですが、2019/7の私の環境では動作しなかったため、改めていくつかのライブラリーを試してみました。
nobleというBluetoothライブラリーが最新Mac、最新Xcode、最新Node.jsでの動作で追いついていないようで、このあたりは気が向いたらまた調査します。
前提
Node.jsのバージョンによっても動かなくなる可能性があるため、簡単にNode.jsのバージョンが切り替えられるよう、Node.jsのバージョン管理システムnodebrewなどを利用してNode.jsを入れることを推奨します。nodebrew、Node.jsのインストールは割愛します。
筆者は、Node.js v8.16.0にて動作確認できました。
ドローンは、以下のFPVなしのParront manboです。
minidrone for Node.jsのインストール
以下のコマンドでライブラリーをインストール。
npm install minidrone
ついでに、サンプルで temporal を利用しているのでそちらもnpmインストール。
npm install temporal
サンプル・コードで飛ばす
以下のコードをfirstFlight.jsとして作成。
const minidrone = require('minidrone');
const temporal = require('temporal');
const drone = new minidrone.Drone();
drone.connect(function() {
drone.setup(function() {
drone.flatTrim();
drone.startPing();
drone.flatTrim();
console.log('Connected to drone', drone.name);
temporal.queue([
{
delay: 2000,
task: function() {
drone.takeOff()
drone.flatTrim()
},
},
{
delay: 2000,
task: function() {
drone.forward({ steps: 30 }, function(){console.log('forward 30', drone.name);})
drone.flatTrim();
},
},
{
delay: 2000,
task: function() {
drone.backward({ steps: 30 }, function(){console.log('backward 30', drone.name);})
},
},
{
delay: 2000,
task: function() {
drone.land()
},
},
{
delay: 2000,
task: function() {
temporal.clear()
process.exit(0)
},
},
]);
})
});
※ forward
,backward
という関数は、2つめの引数のcallback関数を省略するとエラーになりました。
以下のコマンドで飛ばす。
node firstFlight.js
離陸、前進、後退、着陸したら成功です。お疲れ様でした。
もっといろいろな飛行をさせたい
公式のAPIを見てみましょう。https://github.com/jongear/minidrone
参考
他に試したmambo制御ライブラリーたち。
ライブラリー名 | URL | 2019/7テスト結果 |
---|---|---|
Mini Drone for Node.js | https://github.com/jongear/minidrone | 本記事参照 |
Rolling Spider for Node.js | https://github.com/voodootikigod/node-rolling-spider | インストール(ビルド)エラー。 |
Minidrone-js | https://github.com/Mechazawa/minidrone-js | 応答しない。Bluetooth接続できない? |
pdrone | https://github.com/algolia/pdrone | 応答しない。Bluetooth接続できない? |