代码编织梦想

ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。

如何实现分布式多机通信

(1)设置IP地址,确保底层链路的联通

在 ubuntu 下输入如下指令,查询 ubuntu 的ip地址:

ifconfig

在这里插入图片描述

在树莓派的终端中输入如下指令

sudo vi /etc/hosts

Ubuntu vi文本编辑器使用方法:https://blog.csdn.net/qq_44989881/article/details/115870950

在 hosts 文件中添加ubuntu的ip地址和名称
在这里插入图片描述

测试配置的地址是否联通

ping [配置的计算机名称]

例如:

ping ubuntu

在这里插入图片描述

在 树莓派 下输入如下指令,查询 树莓派 的ip地址:

ifconfig

在这里插入图片描述

然后在树莓派的终端中输入如下指令

sudo gedit /etc/hosts

添加树莓派的ip地址 和名称
在这里插入图片描述

测试配置的地址是否联通

ping [配置的计算机名称]

例如:

ping huike

在这里插入图片描述

做完以上操作,如果双向网络畅通,说明底层网络通信已经没有问题,主机与树莓派之间的网络已经联通。

设置ROS_MASTER_URI

接下来是如何实现分布式多机通信
(2)在从机端设置ROS_MASTER_URI,让从机找到ROS Master

主机端 ubuntu 启动ROS Master 与海龟仿真节点

roscore

然后在树莓派编辑 .bashrc 文件 设置ROS Master的位置

vi .bashrc

在 .bashrc 文件最后一行添加以下代码中的任意一个。

export ROS_MASTER_URI=http://ubuntu:11311                          #(当前终端有效)
export ROS_HOSTNAME=ubuntu

或在终端中输入,以下指令在所有终端都有效。

echo "export ROS_MASTER_URI=http://hcx-pc:11311">> ~/.bzshrc  
echo "export ROS_HOSTNAME=ubuntu">> ~/.bzshrc 

注:ROS Master 默认的端口号为:11311
在这里插入图片描述

从机终端输入:

source ~/.bashrc
source /etc/init.d/networking

注意:当设置从机 ROS_MASTER_URI 为主机(不为从机本机)后,从机上是不能运行 roscore 的。

主机 ubuntu 启动海龟节点

rosrun turtlesim turtlesim_node

在这里插入图片描述
在从机树莓派上输入:

 rostopic list

若能成功显示话题名,则说明成功。

在这里插入图片描述

查看具体的节点信息

rosnode info /rosout

在这里插入图片描述

问题解决

注意:在使用树莓派ping 虚拟机中的 ubuntu ping不通的情况下,显示如下:
在这里插入图片描述

如果 ping 不通则关闭 ubuntu 的防火墙或者更改VMware网络连接模式,就可以ping通。以下是解决 ping 不通的方法。

如果linux虚拟机可以ping通树莓派,树莓派无法ping通虚拟机

更改VMware网络连接模式

  • 将VMware的网络连接模式修改为 桥接模式
    在这里插入图片描述

  • 查看是否安装 VMware Bridge Protocol

在这里插入图片描述

查看当前防火墙状态

在Ubuntu中 我们使用以下命令查看当前防火墙状态。

sudo ufw status
  • inactive状态是防火墙关闭状态
  • active是防火墙开启状态。

在这里插入图片描述

开启防火墙

在Ubuntu中 使用以下命令来开启防火墙

sudo ufw enable

开启后,查看当前防火墙状态

sudo ufw status

开启防火墙后的状态为active,说明防火墙开启成功。
在这里插入图片描述

关闭防火墙

在Ubuntu中 使用以下命令来关闭防火墙。

sudo ufw disable

关闭后,查看当前防火墙状态

sudo ufw status

如果是显示的状态位 inactive 说明防火墙已经关闭掉了。
在这里插入图片描述
完成以上操作,可以使树莓派ping 通设置的 ubuntu 的 IP 地址

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44989881/article/details/118635001

基于spark与ros分布式无人驾驶模拟平台_923940cub的博客-爱代码爱编程

作者:刘少山,PerceptIn联合创始人。加州大学欧文分校博士,研究方向包括智能感知计算、系统软件、体系结构与异构计算。现在主要专注于SLAM技术及其在智能硬件上的实现与优化。曾负责百度无人车系统架构与产品化。 本文

ros分布式多机通信完整教程_hehedadaq的博客-爱代码爱编程_ros多机

ros多机通信完整试坑教程 文章目录 ros多机通信完整试坑教程前言:系统介绍: 1、设置IP和~/.bashrc文件:列一波搜到的有用的教程:接着上面的来第二个bug——图像话题会丢包、延迟等问题

ros下分布式通信实现方法_dopeliur的博客-爱代码爱编程

一、1  在各自的终端下运行ifconfig命令查看各自的IP(inet addr:  ***.***.***.***)         2  在各自的终端下运行sudo vim /etc/hosts             添加另一方的IP和主机名(@后面的名称 。如aaa@bbb:bbb为主机名,aaa为用户名)         3  运行pin

深入理解ros核心:分布式通信机制_linzs.online的博客-爱代码爱编程

ROS是一个分布式框架,为用户提供多进程之间的通信服务。ROS主要有三种通信机制,下面总结一下: 1. 话题通信机制 通信过程: 1)Talker注册 2)Listener注册 3)ROS Master 进行信息匹配 4)Listener 发送连接请求 5)Talker 确认连接请求并反馈给 Listener 确认信息 6)Listene

ros分布式多机通信_youngps99的博客-爱代码爱编程

1、PC和树莓派设置好IP地址,需要在同一个局域下,可以连同一个WIFI 用$ifconfig查看IP地址 2、在PC端输入$ sudo gedit /etc/hosts打开hosts文件,添加树莓派的IP地址和用户名 3、在树莓派上也进行同样的操作步骤 4、在PC端输入$ping young-desktop检查是否成功连接 5、在P

ros的四种通信架构_sru_alo的博客-爱代码爱编程_ros通信方式

ROS的通信方式是ROS最为核心的概念,ROS系统的精髓就在于它提供的通信架构。ROS的通信方式有以下四种: Topic 主题Service 服务Parameter Service 参数服务器Actionlib 动作库 一 Topic ROS中的通信方式中,topic是常用的一种。对于实时性、周期性的消息,使用topic来传输是最佳的选择。topic是

ros分布式通讯-爱代码爱编程

毕设想做一个移动的自动导航车,自动导航吗, 使用的ros系统,搭建地图,不能拿着显示屏跟着车跑啊 突然了解到了ROS分布式通讯,可以实现在同一局域网中进行通讯,自己折腾一下 本机实在虚拟机下面安装的Ubuntu系统,实现虚拟机连接同一局域网中的车 首先把虚拟机的网络设计为桥接模式 结果等了一会突然发现居然连不上网。。。。 google  b

ROS入门笔记(十三):分布式通信-爱代码爱编程

ROS入门笔记(十三):分布式通信 文章目录 01 如何实现分布式多机通信1.1 设置IP地址,确保底层链路的连通1.2 在从机端设置ROS_MASTER_URI,让从机找到ROS Master02 实战操作 ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。 01 如何实现分布式多机通信 1.1 设置IP地址,确保底层链路的

ros分布式多机通信教程-爱代码爱编程

1.使主机(计算机1)、从机(计算机2)处于同一个局域网,假设其IP地址及其用户名分别如下: 主机: 用户名:ljs , IP:192.168.169.151 从机: 用户名:zhkai , IP:192.168.169.150 2.两机安装openssh: sudo apt-get install openssh-server 3.查看ss

ROS分布式多机通信(主从机配置)-爱代码爱编程

       由于在我们使用ROS进行机器人开发的时候,比如,调试智能车,硬件资源有限或者不能直接进行开发、计算的时候,我们常常会进行主从机配置。        节点可以运行在不同的计算平台上,但是ROS中 只允许存在一个Master ,在多机系统中Master只能运行在一台机器上,其他机器需要通过ssh的方式和Master取得联系。        以两

ros开发实践(十九)——ros服务通信服务端server的编程实现(基于turtlesim功能包)_turtlesim 功能包分析_ehang_maker的博客-爱代码爱编程

一、分别运行下述指令: roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key rosrun learning service