Skip to content

How to run ROS nodes on multiple PCs from one launch file

Masato-Imai edited this page Dec 2, 2019 · 3 revisions

How to run ROS nodes on multiple PCs from one launch file

1つのlaunchファイルから複数のPC(ロボット)のノードをremoteで立ち上げる方法

使用するホスト名とIPアドレスの確認(例)

ホスト名 IPアドレス
SERVER (roscore) 192.168.1.2
ROBOT 192.168.1.11

それぞれのPCで普通にノードを立ち上げ、通信がきちんとできることを確かめてから始めてください。

ネットワークの設定

  • roslaunchを行うPCで/etc/hostsを編集

以下のように追記します

127.0.0.1	localhost
#127.0.1.1	SERVER

192.168.1.2 SERVER
192.168.1.11 ROBOT
  • roslaunchを行うPCで~/.bashrcに以下を追記
export ROSLAUNCH_SSH_UNKNOWN=1
  • roslaunchを行うPCにおいて、~/.ssh/known_hostsの記録を消去した上で、
ssh user@ROBOT -oHostKeyAlgorithms='ssh-rsa'

と手でログインし、RSAアルゴリズムを使うよう指定しておく

必要なファイルの作成

  • /home/user/env.bashというスクリプトをROBOTのホームディレクトリに作成
#!/bin/bash

source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export ROS_HOSTNAME=192.168.1.11
exec "$@"

このスクリプトからlaunchファイルから呼びだされ、

source ~/.bashrc

と同じ働きをします。 ROS_MASTER_URIはroslaunchを行ったPCのものがコピーされるので、それだと困る人はここで指定してください。
また、このスクリプトに実行権限を付与することを忘れずに。

  • launchファイルの編集

以下のようにmachineタグを付け加えるのと、nodeタグに起動したいmachineを書いておきます。

<machine name="ROBOT" address="ROBOT" env-loader="/home/user/env.bash" user="user" password="password"/>

<node machine="ROBOT" pkg="hoge" type="foo" name="piyo"/> 

References

基本的に上2つのリンクの内容ですが、微妙に言ってることが違ったりしてハマったのでまとめました。

Clone this wiki locally