# 複数のマシンでROSを実行する ROSを使用すると、ノードを同時に複数のマシンで実行することができます - ROSマスターを**1つだけ**を開始します。つまり、1台のマシンでのみ`roscore`を実行します。 - すべてのマシンは、同じROSマスターを使用するように設定する必要があります。 ## アドレスの設定 - ROSマスターが実行されているマシンのアドレスは、環境変数`ROS_MASTER_URI`で定義します ```bash export ROS_MASTER_URI=http://<ROSマスターのPCのIPアドレスまたはホスト名>:11311 ``` - `ROS_HOSTNAME`を設定するのも良いでしょう。この変数は、使用しているマシンのアドレスに設定します。 ```bash export ROS_HOSTNAME=<ローカルPCのIPアドレスまたはホスト名> ``` これらのコマンドは、全てのターミナルで実行する必要があります。 使いやすさのためコマンドを .bashrc に入れることもできます。 --- すべてのマシンが上記のように設定されたら、これ以上何もする必要はありません。 - すべてのROSツールが機能します(`rostopic`、`rviz`など) - ノード間のすべての通信は、1台のマシンで作業する場合と同様に使えます - *コードや設定を変更する必要は一切ありません*! ### 例 2台のマシン間の通信 - マシン1 (例えば、IPが192.168.128.1の場合): ```bash roscore #このマシンでROSマスターを実行します ``` ```bash export ROS_MASTER_URI=http://192.168.128.1:11311 export ROS_HOSTNAME=192.168.128.1 rosrun rospy_tutorials listener.py ``` - マシン2 (例えば、IPが192.168.128.2の場合): ```bash export ROS_MASTER_URI=http://192.168.128.1:11311 export ROS_HOSTNAME=192.168.128.2 # !!! rosrun rospy_tutorials talker.py ``` --- # TurtleBot3ロボットの操作 --- ## 通信設定 -`ROS_MASTER_URI`と`ROS_HOSTNAME`の設定が必要です。 <img src="./v3_media/network_configuration.png" alt="" style="width:90%;" /> **注意**:上の図と違って、実習ではロボットでROSマスターを実行します。したがって、両方のマシンで`ROS_MASTER_URI=http://IP_OF_TURTLEBOT:11311`と設定します! --- ## ロボットの起動 ロボットで実行: ```bash roslaunch turtlebot3_bringup turtlebot3_robot.launch ``` - モーターコントローラーとの通信、レーザースキャナーの測定の読み取りなどのノードを実行します。 リモートコンピューターで実行: ```bash roslaunch turtlebot3_bringup turtlebot3_remote.launch ``` - `robot_state_publisher`を起動して、必要なすべての座標系をTFに公開します。 その後、リモートコンピュータでロボットを操作できます。例えば、`rviz`を使用して、ロボットのデータが表示できます。 --- → [課題(シミュレーション)](v3_task.html) ← [実習その1](v3_1.html) ↑ [ホームページ](index.html)