概要

roslibjsというJavaScriptのライブラリを使うことでWebアプリケーションからROSに繋いでトピックのやりとりをする方法を解説します。

想定される状況

ROSの動いているマシンに対して、別のデバイスからWebアプリケーション経由で接続することを想定しています。

まずは、ROSの動いているマシンのIPアドレスを確認します。

ifconfig

と実行して、現在接続されているWiFi環境のIPアドレスを取得します。(例:192.168.11.1など。wlan0と記載されている項目にあることが多い)

ROSが動いているマシンの設定

roslibjsとはWebSocketで接続を行います。ROSが動いているマシンでは、rosbridge_serverパッケージのrosbridge_websocket.launchを起動しておくことで接続を受け入れ可能な状態にします。

  • コマンドでの起動
roslaunch rosbridge_server rosbridge_websocket.launch
  • launchファイルでの起動 
<include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch">
    </include>

 

Webアプリケーションの設定

 HTMLのページを作成します。headタグ内に下記を追加し、ライブラリを読み込みます。

<script src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.js"></script>
<script src="http://static.robotwebtools.org/roslibjs/current/roslib.js"></script>

 roslibjsでROSの接続を作ります。 

<script>
  var ros = new ROSLIB.Ros({
    url : 'ws://192.168.11.1:9090'
  });
  ros.on('connection', function() {
  	alert("Connected");
  });

  ros.on('error', function(error) {
	  alert("ERROR");
  });

  ros.on('close', function() {
	  alert("CLOSED Connection");
  });
</script>

192.168.11.1の部分は先ほど調べた、ROSが動いているマシンのIPアドレスを指定します。また、Webアプリケーションを開く端末は、ROSが動いているマシンが繋がっているWiFiと同じWiFIに繋がっている必要があります。

また、接続状況ごとにイベントを設定できます。

ROSトピックのSubscribe

  // ROSトピックのSubscribe
  const orderSub = new ROSLIB.Topic({
    ros : ros,
    name : '/order',
    messageType : 'std_msgs/String'
  });
  orderSub.subscribe(message => {
    var data = message.data;
    console.log(data);
  });

ROSトピックのPublish

  // ROSトピックのPublish
  var destinationPub = new ROSLIB.Topic({
    ros : ros,
    name : '/destination',
    messageType : 'std_msgs/String'
  });

  var dest = new ROSLIB.Message({
    data : 'room1'
  });
  destinationPub.publish(dest);
</script>

Related Posts

Arduino Nano互換ボードで書き込めない時はプロセッサを確認
Arduino Nano互換ボードで書き込めない時はプロセッサを確認
概要 安価なArduino Nano互換ボードを使っていると、Arduino IDEで書き込みができずにエラーになってしまうことがあります。本記事ではその対処法について解説をします。 対処法 書き込み時にエラーが出る原因はさまざまな...
Read More
ブレッドボードに5V/3.3Vの電源をMB102で供給する
ブレッドボードに5V/3.3Vの電源をMB102で供給する
概要 ブレッドボードには電源を流すことに主に用いられる、両脇の赤と青のラインがあります。Arduinoなどのマイコンから5Vや3.3Vの電源を供給することもできますが、色々な用途に使っていると電流が足りなくなってしまったりするので、別...
Read More
積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立てマニュアル
積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立てマニュアル
概要 積載重量2kg / 4輪駆動小型DCモータ メカナムホイールロボット台車・カーシャーシの組み立て方について解説をします。 商品リンクは下記になります。 https://rb-station.com/products/%E7%A9...
Read More