ros.js の紹介

Post on 11-Apr-2017

3.204 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

以上

top related