[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
HTML5j ロボット部 勉強会 第4回
ROS.js の紹介
自己紹介

名前: @masap

職業: 組み込みプログラマ(主に Wi-Fi)
3/18
WebSocket 経由でルンバを動かす
4/18
ソフトウェア構成図
PC ルンバPC
WebSocket USB Serial
ROS
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
以上

More Related Content

ROS.js の紹介