首先在終端中輸入下面的指令查看ROS主節點主機的IP和遠程控制端的IP:
ifconfig
比如機器人控制器中運行着ROS主節點,其IP地址為192.168.1.111,hostname為xubuntu;遠程控制端電腦IP為192.168.1.138,hostname為ubuntu. 首先要確保兩台電腦能相互ping通。
然后在主節點和遠程控制端的配置文件 /etc/hosts 中分別添加對方的IP地址和hostname信息(Add entries to your /etc/hosts file so that the machines can find each other)。在xubuntu中的 /etc/hosts文件中加入下面這一行:
192.168.1.138 ubuntu
在ubuntu中的 /etc/hosts文件中加入下面這一行:
192.168.1.111 xubuntu
如果主機的hosts文件中沒有添加從機的信息,從機只能接收到從主機發來的信息,而無法向主機發送信息。建議主機和從機都要將對方的IP hostname添加到自己的 /etc/hosts 中。
整個系統只需要一個master,選擇一個機器來運行master提供topic尋址、參數服務器等功能。所有的節點必須通過環境變量ROS_MASTER_URI配置為使用同一個master。在遠程控制端電腦ubuntu的 ~/.bashrc文件中加入下面環境變量,用於連接ROS主節點:
export ROS_MASTER_URI=http:/xubuntu:11311
下面來進行一個測試,在xubuntu中輸入roscore運行ROS 主節點,然后執行下面命令打開海龜仿真節點:
rosrun turtlesim turtlesim_node
在ubuntu中輸入rosnode list查看當前節點,可以看到正運行着ros主節點和turtlesim節點:
可以在ubuntu中用鍵盤遠程控制xubuntu中的海龜運動,輸入下面的指令:
rosrun turtlesim turtle_teleop_key
在xubuntu中打開另一個鍵盤控制節點,重命名為teleop2:
rosrun turtlesim turtle_teleop_key __name:=teleop2
然后在ubuntu中輸入下面指令查看海龜速度信息:
rostopic echo /turtle1/cmd_vel
在xubuntu中用鍵盤控制海龜運動,可以看出從節點(ubuntu)也能接收到正確的信息:
參考: