【Network】roslaunch -分佈式系統設定

【Network】

natural_habitat.png

圖片來源:turtlebot tutorial <link>

ROS 最重要的優勢:Distributed Framework System

  • 機載電腦運算能力受限。

  • 想遠端紀錄、監測資料。

  • 整合不同機器個體。

ROS 網絡架構,可以用 SSH 串聯,但是大型專案,一直用 command-line,好窘阿!

好在!roslaunch 能支援多主機啟動!

幫大家整理參考文件:

參考文件重點提示:

  • ROS / Network
    • SSH 連線
    • SSH 連線測試方法
    • 注意:電腦間時間校正方法。
  • roslaunch / Architecture
    • 注意:remote machine SSH 連線 “不會載入環境設定"!
  • roslaunch / machine
    • .launch file 設定辦法
      • machine tag
        • 設定在哪啟動!
        • IP 設定
      • env-loader 
        • 載入腳本載入環境設定。

Network Setup 參考按例:

最後是,我自己的設定,供大家參考:

● 網路內機器,時間同步設定 – Set up Chrony Server

  • 選定一台機器當主機,記下他的 IP – <Master IP>。
  • 在其他機器,設定 <Master IP>  為 Chrony Server
    • 開啟設定檔
      • sudo gedit /etc/chrony/chrony.conf
    • 註解掉原設定 Server <參考>
      • # line 20: comment out
    • 加進主機設定 <參考>
      • server<Master IP> minpoll 0 maxpoll 5 maxdelay .05

● SSH 允許串口

  • 查詢 各機 IP
    • $ ifconfig 
  • 查詢各機名稱
    • $ hostname
  • 開文件加入允許列表中
    • $ sudo gedit /etc/hosts
# 添加 ROS Network 
192.168.0.XXX ubuntu-SVF13N27PWB
192.168.0.1XX tegra-ubuntu
192.168.0.1XX tegra-ubuntu

● SSH 後記:

如果連線出現下列錯誤:

Authentication to remote computer[ubuntu@192.168.0.102:22] failed.
A common cause of this error is a missing key in your authorized_keys file.

解決方法:<參考>

To copy your SSH key over to the robot which will allow you to log in, use the ssh-copy-id program:

ssh-copy-id <IP Address>

● launch file

  • 在 machine – leader,開啟 node_A
  • 在 machine – follower,開啟 node_B
<?xml version="1.0" encoding="utf-8"?>

<launch>
 <!-- Machine Definition -->
 <machine name="leader" 
 address="192.168.0.100" 
 user="ubuntu" 
 ssh-port = "22"
 env-loader="~/env.sh" 
 timeout="20" />

 <machine name="follower" 
 address="192.168.0.101" 
 user="ubuntu"
 ssh-port = "22" 
 env-loader="~/env.sh" 
 timeout="20" />

 <!-- 本機 -->
 <node ns="/" pkg="pkg" type="node" name="node_A" output="screen" machine="leader">

 <!-- 從雞 -->
 <node ns="/" pkg="pkg" type="node" name="node_B" output="screen" machine="follower_1">

</launch>

● 環境載入腳本:

  • env.sh 放在 home 資料夾中。
  • 開啟讀取權限
    • $ chmod +x env.sh
#!/bin/sh

export ROS_WS=~/catkin_ws
source $ROS_WS/devel/setup.bash
source /opt/ros/indigo/setup.bash


export PATH=$ROS_ROOT/bin:$PATH

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$ROS_WS
export ROS_MASTER_URI=http://192.168.0.100:11311
export ROS_HOSTNAME=192.168.0.100

. ~/catkin_ws/devel/setup.sh

exec "$@"
Advertisements
This entry was posted in 未分類. Bookmark the permalink.

1 則回應給 【Network】roslaunch -分佈式系統設定

  1. 引用通告: 如何讓一台機台中的 Launch 檔也能啟動其他機台中的節點? | 大頭怪的異想空間

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s