ROSノード分散運転方法

3541 ワード

一.ホストマスターの設定
1.sshカスタマーサービス側とサーバーのインストール(ubuntuはデフォルトでインストールされています)
2.マシン名とipのバインド
<!--
p { margin-bottom: 0.08in; direction: ltr; line-height: 120%; text-align: justify; }a:link { color: rgb(5, 99, 193); }
-->
/etc/hostsではコンピュータ名とIPをバインドする必要があるため、すべてのIPアドレスを静的アドレスに設定することが望ましい.
   sudo nano/etc/hosts
   Masterのipアドレスとマシン名を追加eg:192.168.3.155  wang
   slaveのipアドレスとマシン名eg:192.168.3.156を追加  Han(Masterはこの項目を追加しなくてもいいようですが、slaveはこの項目を追加する必要があります)
3.念のため変更/etc/hostnameのマシン名はユーザー名と同じ
    sudo nano/etc/hostname
    wang-desktopをwangに変更(同じユーザー名)
    sudo nano/etc/hostsでwang-desktopもwangに変更
<!--
p { margin-bottom: 0.08in; direction: ltr; line-height: 120%; text-align: justify; }a:link { color: rgb(5, 99, 193); }
-->
4.export ROS_MASTER_URI="http://wool:11311"
 
二.slave設定
1.マスターとの1.2.3.4
<!--
p { margin-bottom: 0.08in; direction: ltr; line-height: 120%; text-align: justify; }a:link { color: rgb(5, 99, 193); }
-->
 
三.使用開始
仮定:               master                           slave
                          hal                                 marvin
                          listener                          talker
1.スタート[[master]]
マシンを選択してmasterを実行する必要があります.ここでhalを選択します.masterを起動する最初のステップは:
ssh hal

roscore

2.listenerの起動
次にマシンhalでlistenerを起動し、ROS_を構成します.MASTER_URI、これで起動したばかりのマスターを使用できます.
ssh hal

export ROS_MASTER_URI=http://hal:11311 rosrun rospy_tutorials listener.py

 3.talkerを起動する
今、marvinマシンでtalkerを起動し、ROSを構成します.MASTER_URIはhalマシンのmasterを使用します.
ssh marvin

export ROS_MASTER_URI=http://hal:11311 rosrun rospy_tutorials talker.py

サプライズ:マシンhalのlistenerがmarvinマシン上のtalkerから発表されたメッセージを受信しているのが見えます
注意:実行するノードがマシンにある場合は、sshを使用しなくてもよい
 
四.ノードが同一機器にない場合の配置
<!--
h2 { margin-top: 0.18in; margin-bottom: 0.18in; direction: ltr; line-height: 173%; text-align: justify; page-break-inside: avoid; }h2.western { font-family: "Calibri Light",serif; font-size: 16pt; }h2.cjk { font-family: "Droid Sans Fallback"; font-size: 16pt; }h2.ctl { font-size: 16pt; }p { margin-bottom: 0.08in; direction: ltr; line-height: 120%; text-align: justify; }a:link { color: rgb(5, 99, 193); }
-->
ノードを異なるマシンで実行する方法はいくつかあります.簡単な方法は、それぞれのマシンで個別に起動することです.もう1つの方法は、launchファイルを使用してこれらのノードを統一的に起動することです.以下のようにします.

Machineラベル
次のように、nodeを別のmachineに割り当てて実行するためにmachineラベルを作成します.

env.sh環境変数設定
env.shファイルを使用してnodeのmachineを実行するために必要な環境を設定します.次のようにします.
#!/bin/sh export ROSLAUNCH_SSH_UNKNOWN=1 #export ROS_MASTER_URI=wool ./opt/ros/indigo/setup.sh exec "$@"