roslaunch工具十分方便,可以通过SSH远程启动节点以及本机的节点。roslaunch工具使用一个XML格式的文件,后缀名为.launch,可以指定节点的从参数和节点运行的机器。
运行远程机器(多个机器)的节点
在实现该功能之前需要实现多机之间的通信设置,首先是修改各机器的hosts文件(位于/etc/hosts),增加如下两行
192.168.1.30 tegra-ubuntu
192.168.1.31 bobin-ThinkPad-T450
...
注意需要把相互之间的通信的所有机器指定到每一个机器的hosts中,不过内容都是一样的。经过实验证明,只有这种方式是最简单的,一定要修改hosts,而不是显式赋值ROS_MASTER_URI和ROS_HOSTNAME为对应的IP。
launch文件中运行的每个节点可以指定该节点运行的machine,所以可以设置machine参数,格式如下
<machine name="tk1" address="tegra-ubuntu" user="ubuntu" env-loader="/home/ubuntu/Documents/ROS_WS/catkin_ws/src/uav_pose/config/ric_env.sh" default="true" />
password参数是强烈不推荐的。可以是使用ssh-keygen工具。
ssh keygen
使用SSH免密码的方法,首先在本地机器产生key,包括private key和public key,生成key使用命令
ssh-keygen -t rsa
这样会生成两个文件,分别是.ssh/id_rsa.pub 和.ssh/id_rsa,后者为private key,前者为public key,之后将public key复制到远程的机器上即可,也就是TK1.
命令是
ssh-copy-id <username>@<host>