roslaunch-远程启动节点教程
1. 主机配置
%===========主机%===========%
1. sudo gedit /etc/hosts
{
192.168.50.242 zzc
192.168.50.177 car1
}
2. gedit ~/.bashrc
{
export ROS_IP=zzc
export ROS_HOSTNAME=zzc
export ROS_MASTER_URI=http://zzc:11311
export ROSLAUNCH_SSH_UNKNOWN=1
}
3. 编写launch文件
<launch>
<machine name="car1" address="192.168.50.177" user="burger" password="123456" env-loader="opt/ros/kinetic/car1_env.sh"/>
<node machine="car1" pkg="beginner_tutorials" name="car1" type="wang.py" output="screen"/>
</launch>
注释: machine name="从机名字" address="从机ip地址" user="从机用户名" password="从机密码" env-loader="从机配置的环境变量.sh文件的地址"
注释: node machine="在哪个从机上的节点" pkg="要运行哪个包的节点" name="节点名字" type="节点的可执行文件/python节点直接就是scripts脚本中的文件名字"
2. 从机配置
%===========从机%===========%
1. sudo gedit /etc/hosts
{
192.168.50.242 zzc
192.168.50.177 car1
}
2. sudo gedit /opt/ros/kinetic/car1_env.sh
{
#!/bin/sh
export ROS_IP=car1
export ROS_HOSTNAME=car1
export ROS_MASTER_URI=http://zzc:11311
export ROSLAUNCH_SSH_UNKNOWN=1
. /home/burger/catkin_car1/devel/setup.sh
exec "$@"
}
3. 给创建的环境变量文件增加权限
cd /opt/ros/kinetic/
sudo chmod a+x car1_env.sh
4. 将catkin_car1 中的脚本 wang.py其中这部分注释掉
{
# 获取标准输入的描述符
#fd = sys.stdin.fileno()
# 获取标准输入(终端)的设置
#old_ttyinfo = termios.tcgetattr(fd)
# 配置终端
#new_ttyinfo = old_ttyinfo[:]
# 使用非规范模式(索引3是c_lflag 也就是本地模式)
#new_ttyinfo[3] &= ~termios.ICANON
# 关闭回显(输入不会被显示)
#new_ttyinfo[3] &= ~termios.ECHO
# 使设置生效
#termios.tcsetattr(fd, termios.TCSANOW, new_ttyinfo)
}