Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ROS.js の紹介

4,843 views

Published on

HTML5j ロボット部 勉強会 第4回

Published in: Technology
  • Be the first to comment

ROS.js の紹介

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

×