在roslaunch中启动远程节点的方法

ros的分布式结构允许运行在不同物理机器上的节点进行通信,在roslaunch中通过配置machine字段可以实现对这些分布在不同物理机上的节点的统一管理。
下面举例说明,假设需要在名为server的机器上运行usb_cam节点,在名为tx2的机器人上运行另一个usb_cam节点,并在server机器上的roslaunch中统一进行管理。
首先,配置hosts。
在server上,编辑/etc/hosts文件,添加

【tx2 IP地址】 【tx2 计算机名】 

其中计算机名就是linux命令行”@“符号后的部分。
相似的,在tx2上,编辑/etc/hosts文件,添加

【server IP地址】 【server 计算机名】 

在tx2上新建一个描述环境变量的sh脚本/xxx/env.sh,填入如下内容:

#!/bin/bash
export ROSLAUNCH_SSH_UNKNOWN=1
export ROS_MASTER_URI=http://【server 计算机名】:11311
source /opt/ros/melodic/setup.bash
source ~/catkin_ws/devel/setup.bash
export ROS_HOSTNAME=【tx2 计算机名】
exec "$@"

在server上编写如下lauchfile:

<launch>
  <machine name="tx2" user="tx2用户名" password="tx2密码" address="tx2计算机名" env-loader="/xxx/env.sh"/>
  <group ns="server">
    <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen">
      <param name="video_device" value="/dev/video0" />
      <param name="image_width" value="640" />
      <param name="image_height" value="480" />
      <param name="pixel_format" value="yuyv" />
      <param name="camera_frame_id" value="usb_cam" />
      <param name="io_method" value="mmap"/>
      <param name="framerate " value="10"/>
    </node>
  </group>
  <group ns="tx2">
    <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" machine="tx2" >
      <param name="video_device" value="/dev/video1" />
      <param name="image_width" value="640" />
      <param name="image_height" value="480" />
      <param name="pixel_format" value="yuyv" />
      <param name="camera_frame_id" value="usb_cam" />
      <param name="io_method" value="mmap"/>
      <param name="framerate " value="10"/>
    </node> 
    </group>
</launch>

其中machine字段指定了远程机器tx2,随后的节点中使用 machine="tx2"指定节点运行在该机器上。
roslaunch底层是通过ssh操作这些远程机器的,故下面对ssh进行一些配置。
按下面方法配置known_hosts,否则报错,原因详见此处

  1. 删去~/.ssh/known_hosts
  2. 执行下述命令将tx2机器加到known_hosts:
    ssh -oHostKeyAlgorithms='ssh-rsa' 【tx2用户名】@【tx2计算机名】
    

至此,两台机器均已配置完毕,在server机器上运行刚才编写的launch文件进行测试:
在这里插入图片描述
可见,roslaunch自动通过ssh开启了tx2机器的节点,实现了对分布在不同物理机上的节点的统一管理。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值