nodeに基づいてjsのARDrone制御
9688 ワード
アプリケーション環境ubuntu 12.04 32bit
1.nodeをインストールする.js+npm
Node.jsはgoogle v 8+javascriptに基づくサービス側プログラミングフレームワークである.でもjsはjsアプリケーションではないので、jsの実行プラットフォームと言うべきです.イベント駆動、非同期プログラミングを採用し、ネットワークサービスのために設定されています.
Node.jsの性能は悪くないが、創始者のRyan Dahlによると、性能はNodeだ.jsが考慮する重要な要因は、rubyや他の仮想マシンではなくc++とv 8を選択することも性能に基づいている.Node.jsは設計上も大胆で、単一プロセス、単一スレッドモードで運行し、イベント駆動メカニズムはNodeである.jsは、内部単一スレッドによってイベントループキューを効率的に維持することによって実現され、マルチスレッドのリソース占有とコンテキスト切替がないため、大規模なhttp要求に直面することを意味する.jsはイベント駆動ですべてを解決した.
インストール手順
まず、python、gcc、g++がシステムにインストールされていることを確認し、そうでなければインストールします.
$ sudo apt-get install python
$ sudo apt-get install build-essential
$ sudo apt-get install gcc
$ sudo apt-get install g++
NodeJS公式サイトからhttp://nodejs.org/
最新のソースパッケージをダウンロード:node-v 0.10.26.tar.gz,
解凍、
$ tar -zxf node-v0.10.26.tar.gz
$ cd node-v0.10.26
デフォルトのインストール
$ ./configure
$ make
$ sudo make install
または、ディレクトリ方式のインストールを選択します.
$ ./configure –prefix=/usr/node
$make-j 5#5=CPUコア数+1
$ sudo make install
インストールが完了したら、次のコマンドでインストールのバージョンを確認できます.
$ node --version
v0.10.26
node.jsの以前のバージョンはnpm(nodeパッケージマネージャ)を持っていません.npmは別途インストールする必要がありますが、私がインストールしました.
v0.10.26直接npmを持参するので、インストールする必要はありません.npmがインストールされているかどうかを確認します.
$ npm --version
1.4.3
2.node-ar-droneのインストール
An implementation of the networking protocols used by the Parrot AR Drone 2.0. It appears that 1.0 drones are also compatible.
Install via Github to get the
latest version:
$ npm install git://github.com/felixge/node-ar-drone.git
Or, if you're fine with missing some cutting edge stuff, go for npm:
$ npm install ar-drone
npmでインストールしたパッケージは、npmコマンドを実行する
現在
ディレクトリの下にあるnode_modulesフォルダには(また、ルートディレクトリの下に空のフォルダtmpが1つ増えているようです).
3.ARDrone node appの作成
The best way to get started is to create a
1.nodeをインストールする.js+npm
Node.jsはgoogle v 8+javascriptに基づくサービス側プログラミングフレームワークである.でもjsはjsアプリケーションではないので、jsの実行プラットフォームと言うべきです.イベント駆動、非同期プログラミングを採用し、ネットワークサービスのために設定されています.
Node.jsの性能は悪くないが、創始者のRyan Dahlによると、性能はNodeだ.jsが考慮する重要な要因は、rubyや他の仮想マシンではなくc++とv 8を選択することも性能に基づいている.Node.jsは設計上も大胆で、単一プロセス、単一スレッドモードで運行し、イベント駆動メカニズムはNodeである.jsは、内部単一スレッドによってイベントループキューを効率的に維持することによって実現され、マルチスレッドのリソース占有とコンテキスト切替がないため、大規模なhttp要求に直面することを意味する.jsはイベント駆動ですべてを解決した.
インストール手順
まず、python、gcc、g++がシステムにインストールされていることを確認し、そうでなければインストールします.
$ sudo apt-get install python
$ sudo apt-get install build-essential
$ sudo apt-get install gcc
$ sudo apt-get install g++
NodeJS公式サイトからhttp://nodejs.org/
最新のソースパッケージをダウンロード:node-v 0.10.26.tar.gz,
解凍、
$ tar -zxf node-v0.10.26.tar.gz
$ cd node-v0.10.26
デフォルトのインストール
$ ./configure
$ make
$ sudo make install
または、ディレクトリ方式のインストールを選択します.
$ ./configure –prefix=/usr/node
$make-j 5#5=CPUコア数+1
$ sudo make install
インストールが完了したら、次のコマンドでインストールのバージョンを確認できます.
$ node --version
v0.10.26
node.jsの以前のバージョンはnpm(nodeパッケージマネージャ)を持っていません.npmは別途インストールする必要がありますが、私がインストールしました.
v0.10.26直接npmを持参するので、インストールする必要はありません.npmがインストールされているかどうかを確認します.
$ npm --version
1.4.3
2.node-ar-droneのインストール
An implementation of the networking protocols used by the Parrot AR Drone 2.0. It appears that 1.0 drones are also compatible.
Install via Github to get the
latest version:
$ npm install git://github.com/felixge/node-ar-drone.git
Or, if you're fine with missing some cutting edge stuff, go for npm:
$ npm install ar-drone
npmでインストールしたパッケージは、npmコマンドを実行する
現在
ディレクトリの下にあるnode_modulesフォルダには(また、ルートディレクトリの下に空のフォルダtmpが1つ増えているようです).
3.ARDrone node appの作成
The best way to get started is to create a
repl.js
file like this:
var arDrone = require('ar-drone')
;
var client = arDrone.createClient()
;
client.createRepl()
;
Using this REPL, you should be able to have some fun:
$
node
repl
.
js
// Make the drone takeoff
drone
>
takeoff
()
true
// Wait for the drone to takeoff
drone
>
clockwise
(
0.5
)
0.5
// Let the drone spin for a while
drone
>
land
()
true
// Wait for the drone to land
Now you could write an autonomous program that does the same:
var arDrone = require('ar-drone')
;
var client = arDrone.createClient()
;
client.takeoff()
;
client
.after(
5000, function() {
this.clockwise(
0.
5)
;
})
.after(
3000, function() {
this.stop()
;
this.land()
;
})
;
Ok, but what if you want to make your drone to interact with something? Well, you could start by looking at the sensor data:
client.on('navdata', console.
log)
;
Not all of this is handled by the Client library yet, but you should at the very least be able to receive droneState
and demo
data.
A good initial challenge might be to try flying to a certain altitude based on the navdata.demo.altitudeMeters
property.
Once you have manged this, you may want to try looking at the camera image. Here is a simple way to get this as PngBuffers (requires a recent ffmpeg version to be found in your $PATH
):
var pngStream = client.getPngStream()
;
pngStream.on('data', console.
log)
;
Your first challenge might be to expose these png images as a node http web server. Once you have done that, you should try feeding them into the opencv module.
:
http://www.cnblogs.com/hwpayg/archive/2012/11/04/2753404.html(Ubuntu node.js )
http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html(Windows node.js )
https://github.com/felixge/node-ar-drone(node-ar-drone , )
http://nodecopter.com/hack#connect-to-access-point(
node-ar-drone
)
https://github.com/eschnou/ardrone-autonomy( node-ar-drone , )
http://www.cnblogs.com/dolphinX/p/3474568.html(node.js , )
http://www.ibm.com/developerworks/cn/web/1107_chengfu_nodejs/(node.js )