Upload
honma-masashi
View
3.204
Download
0
Embed Size (px)
Citation preview
HTML5j ロボット部 勉強会 第4回
ROS.js の紹介
自己紹介
名前: @masap 職業: 組み込みプログラマ(主に Wi-Fi)
3/18
WebSocket 経由でルンバを動かす
4/18
ソフトウェア構成図
PC ルンバPC
WebSocket USB SerialROS
Rosbridge(WebSocket Server)
roslib.js
Webアプリ
ROSとは
ロボット制御のためのライブラリ、ツール Robot Operating Systemの略だがOSではない ロボットを制御するための統一的なAPIを提供する 制御プログラムは、ユーザーが C++ で記述する
Rosbridge とは
ROS を JavaScript から使用できるようにするパッケージ
WebSocket サーバー機能を持つ ユーザーは JavaScript で WebSocket サーバに接続
し、ロボットにコマンドを送る ROS を使うには C++ を書く必要があったが JavaScript
で書けるので Web 開発者にやさしい
Rosbridge の使い方
ライブラリのインストール eventemitter2.jsとroslib.jsをダウンロードする
WebScoket サーバへ接続
var ros = new ROSLIB.Ros();
ros.connect('ws://localhost:9090');
ルンバに指示を送る (1/2)
ルンバに移動コマンドを送る cmd_vel というノードに前進コマンドを送る
var cmdVel = new ROSLIB.Topic({
ros : ros,
name : '/cmd_vel',
messageType : 'geometry_msgs/Twist'
});
var forward = new ROSLIB.Message({
linear : { x : 0.1, y : 0.0, z : 0.0 },
angular : { x : 0.0, y : 0.0, z : 0.0 }
});
cmdVel.publish(forward); ROS
アプリ
cmd_vel ノード(移動指示を受ける)
publish(前進、回転等の
指示を送る)
ルンバに指示を送る (2/2)
指示の詳細 進行方向と回転方向を指定
linear: 進行方向と速度 (meter/sec) angular: 回転方向と速度 (radian/sec)
平面で考えると簡単 linear の x 座標が + なら前進、 - なら後退 angular の z 座標が + なら反時計回り、 - なら時計回り
ルンバの情報を受け取る
ルンバの情報を受け取る odom というノードを subscribe する
var listener = new ROSLIB.Topic({
ros : ros,
name : '/odom',
messageType : 'nav_msgs/Odometry'
});
listener.subscribe(function(message) {
console.log('Received message: ' +
message.header.seq);
listener.unsubscribe();
}); ROS
アプリ
odom ノード(位置情報を発信する)
subscribe(情報を取得する)
ROS要るの?
ここまでは... ROSが無くてもnode.jsを使ってWebSocketサーバを立
てればできる
自律移動 人間が操縦するなら、 Roomba ぐらいなら ROS が無く
ても可能 自律移動をするには ROS が必要
SLAM
Simultaneous Localization and Mapping 自動的に地図を作成する & 自分の現在位置を推定す
る 指示した場所にロボットを移動できる ROS を使えば SLAM ができる
SLAM に必要なもの 目隠しをされた状態で「ここはどこでしょう?」って言われ
たら? → とりあえず手探りで周囲の状況を探ろうとする 手探りをするためのデバイス
周囲の状況を手探りするデバイス
レーザースキャナ レーザーを用いて周囲の障害物を検出
距離:0.02~5.6m角度:240°
マッピング
自動マッピング ROSはレーザースキャナのデータを集計して自動マッピ
ングする機能がある
マップ上の場所を指定してロボットを移動することができる(オートパイロット)
ROSjs で使う
canvas で使う 自動マッピング及びオートパイロットは rviz というツール
で行う ROSjs を使えば canvas でできる
ROSブラウザ
周囲の障害物データ
作成した地図データ
ルンバ目的地の指定 目的地への移動
デモ
目的地を指定して自動的に移動 dots さんの地図
窓
ステージ
非常口
課題
機材がお高い レーザースキャナは 9 万円...
測定可能距離が短い 4.2m まで
速く動けない スピードを上げるとマップが崩れる
18/18
以上