52
NODE.JS + DRONE = SKYHACK!! JS OJISAN #6 DEC.15

Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

Embed Size (px)

Citation preview

Page 1: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODE.JS + DRONE = SKYHACK!!

JS OJISAN #6 DEC.15

Page 2: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

WHO ARE YOU?

TAMI TAMIYA YUKIKO

▸ iOS Engineer (Android/WebView/WebFront)

▸ geechs co. (ここ)

▸ セブから生まれました

▸ Milkcocoa Girls

▸ オッサン女子:beers::beers:

▸ 趣味: 空を飛ぶ!!

Page 3: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

? QUESTION

Page 4: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SKY HACK

Page 5: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

IS

Page 6: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SO EASY!!

Page 7: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODE.JS で SKYHACK!!

INDEX

▸WHY DRONE?

▸NodeCopter 3MIN HACKING!!

▸つくってみた話SELFIEEEEE DRONE

Page 8: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

▸WHY DRONE ?

Page 9: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

WHY DRONE?

DRONE 7つの活用法▸1. 災害救助

▸2. 地球上のあらゆる自然環境のリサーチ

▸3. ジャーナリズムへの活用

▸4. アクロバットなスポーツの撮影

▸5. 短時間でのモノの配達

▸6. 3次元の空間を自由に使った広告

▸7. ドローンを用いたレースやバトル

http://blog.btrax.com/jp/2014/11/24/drone/ビートラックスさんのブログより

Page 10: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

WHY DRONE?

DRONE 7つの活用法▸1. 災害救助

▸2. 地球上のあらゆる自然環境のリサーチ

▸3. ジャーナリズムへの活用

▸4. アクロバットなスポーツの撮影

▸5. 短時間でのモノの配達

▸6. 3次元の空間を自由に使った広告

▸7. ドローンを用いたレースやバトル

http://blog.btrax.com/jp/2014/11/24/drone/ビートラックスさんのブログより

空の”産業”革命

Page 11: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

BUT

Page 12: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

もっと身近な存在にも なるんじゃないか?

Page 13: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

WHY DRONE?

B TO C ? 一家に一台?? 身近な存在に…▸1. 安価になった (¥10,000位のものが普通に)

▸2. 安全性/安定性の向上

▸3. 小型化

▸4. オープンソースによるプラットフォーム化

▸5. スタートアップの参入 (米国では既に117社!)

セコムが家庭防犯用のドローンを月額5000円 (工事費80万 笑) で出すらしいよ!http://www.borg.media/secom-drone-start/

Page 14: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

200グラム以下の機体は対象外!

WHY DRONE?

Page 15: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

WHY DRONE?

政府:3年以内にドローン宅配を実現させる計画!規制緩和の動きも

Page 16: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

今のうちから HACK しようよ!!

Page 17: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

今のうちから HACK しておこうよ!!

JSオジサンにくる

みなさんにだからこそ

伝えたい!!

Page 18: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

▸    + ARDrone3MIN HACKING!!

Page 19: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

AR DRONE 2.0▸ 発売元 Parrot (フランス)

▸ 発売日: 2010/9/18 (1.0) OLD!

▸ 定価: ¥58,000 (Amazon)

中古 ¥12,000くらいで購入

▸ SDK公開 開発者に人気

▸ SPECWifi1 Ghz CPU, 125 MB Memory HD Front camera,Low res bottom cameraLinux (BusyBox)

Page 20: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

RECENT DRONESBEBOP DRONE

MINI DRONE

Phantom3 : DJI(中国)

プログラミング不可

自律制御

Hubsan X4 HDHoly Stone

Phenox2 : 東大ベンチャー(日本)

自律制御システム研究所 (日本)

MicroDrone (ロンドン)

Crazy file(スウェーデン)

Parrot (フランス)

Page 21: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

HTTP://WWW.NODECOPTER.COM/

Page 22: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

▸ 世界中から集まる Node.js Drone Developer のチーム

▸ 独自イベント、JSConf

Page 23: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

HOW TO HACKING?

Page 24: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

3 MIN

Page 25: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

HOW TO HACKING?

$ npm install ar-drone

Page 26: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER.JS 3MIN HACKING!!

HOW TO HACKING?

connect to “ardrone2” wifi

Turn on the powerGreen light OK!→

Page 27: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

HOW TO HACKING?

var arDrone = require('ar-drone'); var client = arDrone.createClient();

client.takeoff(); //とべ!!

client.after(5000, function() { //5秒後に

this.land(); // 着陸

});

test.js

Page 28: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER 3MIN HACKING!!

HOW TO HACKING?$ node test.js

Page 29: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Page 30: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SKY HACK

Page 31: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

IS

Page 32: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SO EASY!!

Page 33: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER.JS 3MIN HACKING!!

以上。ありがとうございましたー!

Page 34: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER.JS 3MIN HACKING!!

HOW TO HACKING?

ではやっぱり寂しいので・・・

Page 35: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER.JS 3MIN HACKING!!

HOW TO HACKING?client.takeoff(callback) //離陸client.land(callback) //着陸client.up(speed) / client.down(speed) //上昇・下降client.clockwise(speed) / client.counterClockwise(speed)//回転 (speedは0~1で設定)

client.front(speed) / client.back(speed) //前・後ろに進むclient.left(speed) / client.right(speed) //左・右に進むclient.stop() //止まる

https://github.com/felixge/node-ar-dronenode-ar-drone GITHUBに全部かいてあるよ!▼

Page 36: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

NODECOPTER.JS 3MIN HACKING!!

HOW TO HACKING?REPLでも実行可能repl.jsvar arDrone = require('ar-drone');

var client = arDrone.createClient();

client.createRepl();$ node repl.js

> takeoff();

> land();

https://github.com/felixge/node-ar-dronenode-ar-drone GITHUBに全部かいてあるよ!▼

Page 37: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

▸何かつくってみた話

Page 38: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

BOCCHITHON

SELFIEEEEE DRONE

新しいSELFIEのカタチ

Page 39: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SELFIEEEEE DRONE

Page 40: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SELFIEEEEE DRONE

とりあえず

 1枚撮ってみましょう!

Page 41: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

client.getPngStream();

localhost:1337;pngStream専用

socket.on(‘startSelfee’, function(data) { dTakeoff();});

SELFIEEEEE DRONE

ブラウザ上

emit

カウントダウン0になったら・・

socket.on(‘getPng’, function(data) { dland(); stopper = true;});

emit

localhost:3000;アクション処理、fs

Page 42: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

開発してみて・・▸初飛行はめちゃめちゃ感動する・・!!

▸家で飛ばすにはうるさいのと風圧すごいのと家具破壊注意(ARDroneの場合で、Minidroneはもっと安定してる)

▸途中でエラー吐くと止められなくなったりするので対策を!

▸node.js の知識あるなら速攻で開発可能!

▸資料本当に少ない(特に日本語)。ARDroneはまだ豊富。Parrot製品ならDeveloperのコミュニティサイトあり(英語)

▸Minidrone でおうちハックしたいがnode.jsでできることは少ない> <http://developer.parrot.com/

SELFIEEEEE DRONE

Page 43: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

BOCCHITHON

未来のSELFIE NIXIEhttp://flynixie.com/

Page 44: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

BOCCHITHON

client.on('navdata', function (d) { console.log(d); });

Page 45: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

BOCCHITHON yc: [ 0, 0, 0, 0 ],

width: [ 0, 0, 0, 0 ],

height: [ 0, 0, 0, 0 ],

dist: [ 0, 0, 0, 0 ],

orientationAngle: [ 0, 0, 0, 0 ],

rotation: [ [Object], [Object], [Object], [Object] ],

translation: [ [Object], [Object], [Object], [Object] ],

cameraSource: [ 0, 0, 0, 0 ] },

magneto:

{ mx: 32,

my: 64,

mz: -116,

raw: { x: -220.5, y: -110.625, z: 414.609375 },

rectified: { x: -385.6456298828125, y: -84.2813949584961, z: 414.609375 },

offset: { x: 165.14564514160156, y: -26.343603134155273, z: 0 },

heading:

{ unwrapped: 0,

gyroUnwrapped: 0,

fusionUnwrapped: 60.48354721069336 },

ok: 1,

state: 513,

radius: -0.005611538887023926,

error: { mean: -43741.26171875, variance: -5.452909717115553e+31 } },

wifi: { linkQuality: 1 } }

ultrasonicSensorDeaf: 0,

cutoutDetected: 0,

picVersionNumberOk: 1,

atCodecThreadOn: 1,

navdataThreadOn: 1,

videoThreadOn: 1,

acquisitionThreadOn: 1,

controlWatchdogDelay: 0,

adcWatchdogDelay: 0,

comWatchdogProblem: 0,

emergencyLanding: 0 },

sequenceNumber: 52938,

visionFlag: 0,

demo:

{ controlState: 'CTRL_LANDED',

flyState: 'FLYING_OK',

batteryPercentage: 74,

rotation:

{ frontBack: 0.538,

pitch: 0.538,

theta: 0.538,

y: 0.538,

leftRight: -1.232,

roll: -1.232,

phi: -1.232,

x: -1.232,

clockwise: 60.483,

yaw: 60.483,

psi: 60.483,

z: 60.483 },

frontBackDegrees: 0.538,

leftRightDegrees: -1.232,

clockwiseDegrees: 60.483,

altitude: 0,

altitudeMeters: 0,

velocity: { x: 0, y: 0, z: 0 },

xVelocity: 0,

yVelocity: 0,

zVelocity: 0,

frameIndex: 0,

detection: { camera: [Object], tagIndex: 0 },

drone: { camera: [Object] } },

visionDetect:

{ nbDetected: 0,

type: [ 0, 0, 0, 0 ],

xc: [ 0, 0, 0, 0 ],

{ header: 1432778632,

droneState:

{ flying: 0,

videoEnabled: 0,

visionEnabled: 0,

controlAlgorithm: 0,

altitudeControlAlgorithm: 1,

startButtonState: 0,

controlCommandAck: 0,

cameraReady: 1,

travellingEnabled: 0,

usbReady: 0,

navdataDemo: 1,

navdataBootstrap: 0,

motorProblem: 0,

communicationLost: 0,

softwareFault: 0,

lowBattery: 0,

userEmergencyLanding: 0,

timerElapsed: 0,

MagnometerNeedsCalibration: 0,

anglesOutOfRange: 0,

tooMuchWind: 0,

Page 46: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

BOCCHITHON

// web flight画面

Page 47: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

▸ 声で操作▸ OpenCVで画像認識

BOCCHITHON

Page 48: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

Page 49: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SKY HACK

Page 50: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

IS

Page 51: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

SO EASY!!

Page 52: Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6

みんなも

      しよう!!ありがとうございましたm(__)m

SKY HACK