zoukankan      html  css  js  c++  java
  • ROS节点分布式运行方法

    一. 主机Master设置

    1.安装ssh客服端和服务器(ubuntu已默认安装了)

    2.机器名与ip绑定

    由于/etc/hosts中需要将计算机名和IP绑定,所有最好设置IP地址为静态地址

       sudo nano /etc/hosts

       添加Master的ip地址和机器名 eg:192.168.3.155  wang

       添加slave的ip地址和机器名 eg:192.168.3.156  han(Master不添加此项好像也行,slave需要添加此项)

    3.保险起见修改/etc/hostname中机器名与用户名相同

        sudo nano /etc/hostname

        将wang-desktop改为wang(同用户名)

        用sudo nano /etc/hosts,将其中的wang-desktop也改为wang

    4.export ROS_MASTER_URI="http://wool:11311"

    二.slave设置

    1.同Master的1.2.3.4

     

    三.开始使用

    假设:               master                           slave

                              hal                                 marvin

                              listener                          talker

    1.启动[[master]]

    我们需要选择一台机器运行master,这里我们选hal. 启动master的第一步是:

    ssh hal
    roscore

    2.启动listener

    接下来我们在机器hal上启动listener, 并配置ROS_MASTER_URI,这样就可以使用刚刚启动的master了:

    ssh hal
    export ROS_MASTER_URI=http://hal:11311
    rosrun rospy_tutorials listener.py

     3.启动talker

    现在我们要在marvin 机器上启动talker,同样通过配置ROS_MASTER_URI来使用hal机器上的master:

    ssh marvin
    export ROS_MASTER_URI=http://hal:11311
    rosrun rospy_tutorials talker.py

    小惊喜: 现在你可以看到机器hal上的listener正在接收来自marvin机器上talker发布的消息

    注:如果运行的节点在该机器上,可以不用ssh

     

    四.如果节点不在同一机器上时的配置

    有多种方法可在不同的机器上运行节点,简单的方法就是在各自机器上分别启动。另外一个方法是使用launch文件统一启动这些节点,如下:

    <launch>

    <include file="bzrobot.machine">

    <node pkg="rospy_tutorials" type="listener.py" name="listener" machine="wool" />

    <node pkg="rospy_tutorials" type="talker.py" name="talker" machine="wooa" />

    </launch>

    Machine标签

    创建machine标签,以方便将node分配到不同的machine上运行,举例如下:

    <launch>

    <machine name="wool" address="wool" env-loader="/opt/ros/indigo/env.sh" default="true" />

    <machine name="wooa" address="wooa" env-loader="/opt/ros/indigo/env.sh" />

    </launch>


    env.sh环境变量设置

    使用env.sh文件设置运行nodemachine的所需环境,如下:

    #!/bin/sh


    export ROSLAUNCH_SSH_UNKNOWN=1

    #export ROS_MASTER_URI=wool


    . /opt/ros/indigo/setup.sh


    exec "$@"


     

    --------------------------------

    主机.bashrc:

    export ROS_HOSTNAME=FriendlyELEC(本机)

    export ROS_IP=192.168.31.103(本机)

    export ROS_MASTER_URI=http://192.168.31.103:11311(本机)

    主机/etc/hosts

    127.0.1.1 主机名

     

    从机.bashrc:

    export ROS_HOSTNAME=wang-ThinkPad-L490(本机)
    export ROS_IP=192.168.31.37(本机)
    export ROS_MASTER_URI=http://192.168.31.103:11311(主机)

    从机/etc/hosts

    192.168.31.103 FriendlyELEC(主机名)

  • 相关阅读:
    SQLserver 连接+开窗函数+视图+事务
    SQLServer学习笔记系列8
    SQLServer学习笔记系列7
    SQLServer学习笔记系列6
    如何保护.net中的dll文件(防破解、反编译)
    idea项目运行正常,但是类出现红色波浪线
    eclipse出现An internal error occurred during: "Repository registry initialization". Array index out of
    ul列表事件($(this).data('value') 这个是什么意思?)
    vue学习
    两段简单的JS代码防止SQL注入
  • 原文地址:https://www.cnblogs.com/cj2014/p/4169940.html
Copyright © 2011-2022 走看看