-
Notifications
You must be signed in to change notification settings - Fork 3
/
testFlight.js
104 lines (96 loc) · 3.64 KB
/
testFlight.js
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/**
* 飛んで着陸するだけのテスト用プログラム
*/
var keypress = require('keypress');
var dronejs = require('dronejs');
keypress(process.stdin);
process.stdin.setRawMode(true);
process.stdin.resume();
// あなたのMamboの名前をセットしてください。
var DRONE_NAME = "XXXXXXXXXXXX";
// listen for the "keypress" event
process.stdin.on('keypress', function (ch, key) {
console.log('got "keypress" => ', key);
if (key) {
if (key.name === 'x') {
// xキーを押すとプログラムを終了する。
console.log('close. bye.');
process.stdin.pause();
process.exit();
}
}
});
/**
* ドローンを動かす関数を定義します
*
* 使い方:
* dronejs.connect(DRONE_NAME)から初めて、.thenで処理を続けて書いていきます。
* 最後は.catch()でエラー処理を書いて、;を書いて処理を終了させます。
*
* コマンド:
*
* 飛行状態を変化:
* 離陸 : dronejs.takeOff()
* 安定化 : dronejs.flatTrim() : 離陸前に必ず1度呼ぶ
* 着陸 : dronejs.land()
*
* 移動:
* 前進 : dronejs.forward() : 引数には、進む強さと回数を指定する
* 後退 : dronejs.backward() : 引数には、進む強さと回数を指定する
* 右に進む : dronejs.right() : 引数には、進む強さと回数を指定する
* 左に進む : dronejs.left() : 引数には、進む強さと回数を指定する
* 上昇 : dronejs.up() : 引数には、進む強さと回数を指定する
* 下降 : dronejs.down() : 引数には、進む強さと回数を指定する
* 右を向く : dronejs.turnRight() : 引数には回転の強さと回数を指定する
* 左を向く : dronejs.turnLeft() : 引数には回転の強さと回数を指定する
*
* Grabberを動かす:
* つかむ: dronejs.grabClose()
* はなす: dronejs.grabOpen()
*
* アクロバット:
* 前転 : dronejs.frontFlip()
* 後転 : dronejs.backFlip()
* 側転(右) : dronejs.rightFlip()
* 側転(左) : dronejs.leftFlip()
*
* 写真:
* 撮影 : dronejs.takePicture()
* 一覧を取得 : dronejs.listAllPictures()
* ダウンロード : dronejs.downloadPicture()
* 画像を削除 : dronejs.deletePicture()
*
* その他:
* ログを出力する : dronejs.enableLogging() : 引数にログを出すディレクトリを指定
* ドローンの状態を確認する : dronejs.checkAllStates() : ドローンの詳しい状態が送られてきます
*
*/
function main() {
console.log('start')
// ドローンの状態を受け取るイベントストリーム(rxjsのObservableオブジェクト)を取得します
const navDataStream = dronejs.getNavDataStream();
navDataStream.subscribe((data) => {
console.log(data);
},
e => debug(e),
() => debug('complete')
);
// ここから処理を書いていきます
dronejs.connect(DRONE_NAME)
.then(() => dronejs.flatTrim()) // 飛ぶ前に一度平坦な状態を覚える
.then(() => dronejs.takeOff()) // 離陸
.then(() => dronejs.land()) // 着陸する
.then(() => dronejs.disconnect()) // 接続解除
.then(() => {
// 正常終了した場合、プログラムを終了する
process.stdin.pause();
process.exit();
})
.catch((e) => {
// 以上終了した場合、エラーの内容をコンソールに表示し、終了する
console.log('エラー: ' + e);
process.stdin.pause();
process.exit();
});
}
main(); // 関数を実行します