代码编织梦想

提示:想要将nano上的传感器数据发回pc端从机进行计算,但是pc端计算完后发布话题,nano上的主机可以查看到这个话题但却收不到消息(已经在主机配置好相应的消息类型)


前言

提示:在ros进行分布式通信,已经主从机ip分别写入主从机的hosts文件,并且配置号bashrc,但还是出现ros主机收不到从机节点消息 :

我这里是jeston nano作为ros主机,pc机作为从机。
参考:
https://blog.csdn.net/qq_38441692/article/details/98205852


提示:以下是本篇文章正文内容,下面案例可供参考

一、主从机ip和用户名

分别在主从机终端输入下面命令可以查看hostname和ip

hostname

这里查到的主机端为jeston ip:192.168.0.98

ifconfig

这里查到的从机端为hc ip:192.168.0.240

二、配置hosts文件

1.在主从机上配置host信息

系统会先检查自己的hosts文件中是否有相关的地址映射,如果有就调用这个ip,如果没有再向已知的DNS服务器提出域名解析。

分别在主机和从机上更改hosts文件(主机和从机都要设置):

sudo gedit /etc/hosts

在hosts文件添加hostname和ip

192.168.0.98 jeston
192.168.0.240 hc

2.配置.bashrc

打开主机的.bashrc文件配置如下:

export ROS_MASTER_URI=http://jeston:11311
export ROS_HOSTNAME=hc
export ROS_IP=hc

打开从机的.bashrc文件配置如下:

export ROS_MASTER_URI=http://jeston:11311
export ROS_HOSTNAME=jeston
export ROS_IP=hc

在这里我本来的配置是两个.bashrc中直接写ip地址,但是还是不能接受消息,然后为改成了写用户名,就成功了,可能是虚拟机和实机的网络设置不同把。

其中ROS_IP的作用是:
当你需要2台以上ROS机器互相通信时,就需要将其中一台选为master,其余的作为slave,然后仅在master上运行roscore
那么slave怎么知道master的IP和端口号呢?通过ROS_MASTER_URI获取,但是,如果master或某个slave是多网卡的机器,ROS怎么知道该用哪个网卡跟其他主机通信呢?通过ROS_IP获取!
什么意思?一个IP最多对应一个网卡,所以指定IP就能指定网卡。通过ROS_IP,ROS可以不管每台ROS机器上到底有多少网卡,也不管每个网卡到底是什么网段,它只使用ROS_IP指定网卡作为通讯链路。


遇到的问题

我现在的pc端的ip是192.168.0.240,然后.bashrc配置为

export ROS_MASTER_URI=http://192.168.0.240:11311
export ROS_HOSTNAME=192.168.0.240
export ROS_IP=192.168.0.240

但是这样配置我并不能运行我的roscore,在网上看到使用localhost的却可以成功,有点不太理解。

但我在设置好hosts文件后将.bashrc文件配置为

export ROS_MASTER_URI=http://hc:11311
export ROS_HOSTNAME=hc
export ROS_IP=hc

这样的配置能够在pc端于运行roscore,为什么直接写ip地址却不能运行呢?

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

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

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

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

背景 今天在测试时需要配置两台计算机通过ROS进行通信,在此记录下来。 以下内容为胡春旭编撰的《ROS机器人开发实践》中的内容,个人认为写得非常简洁实用。 ROS分布式多机通信 ROS是一种分布式软件框架,节点之间通过

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

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

ros原理学习第一天--ros通信机制(topic)笔记_tommyaisingioro的博客-爱代码爱编程_ros topic 原理

ROS通信机制 ROS通信机制概述 ROS通信机制的概念 ROS的核心功能是提供一种软件点对点通信机制。ROS的运行架构是基于Socket网络连接的松耦合架构(后面讲的TCP和UDP包括Http协议还有XMLRPC协议

ros多机通讯踩坑,(主机和从机之间可以订阅话题,但是看不到话题消息)-爱代码爱编程

在进行ROS分布式通讯的时候,已经设置好HOST 而且指定master地址 在树莓派上能够使用rostopic list 查看话题列表, 但是,监听话题时rostopic echo /chatter没有内容 一,配置前准备

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

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

ROS基础,话题通信模式以及自定义话题消息编程案例、服务通信模式,分布式通信-爱代码爱编程

目录 1.ROS通信机制 1.1 ROS通信模式--话题通信模型 实例:通过话题模式通信 1.1.1 自定义话题消息 1.2 ROS通信模式--服务通信模型 实例:通过服务模式进行通信 1.3 话题通信模型与服务通信模式的区别 1.4 ROS通信机制-动作 实例:经典案例洗盘子 1.5 分布式通信   1.ROS通信机制 (1)节

ROS --- 话题通讯机制-爱代码爱编程

ROS---话题通讯机制 节点与节点管理器节点(Node)节点管理器(Master)rosnode 命令话题通讯话题和消息rqt_graphrostopic1. rostopic echo :2. rostopic list :3. rostopic pub :4. rostopic hz :引用 节点与节点管理器   机器人开发中,我们经常

ros下实现分布式多机通讯-爱代码爱编程

ROS分布式多机通信(主从网络的设置) https://blog.csdn.net/renyuanxingxing/article/details/90349575 远程通讯中踩过的坑,远程通讯设置好后,发现能互相接收话题,但是rostopic echo 该话题却出错,后来发现原因是sudo gedit /etc/hosts 中一定是hostname+ip

ROS主从网络设置(分布式通信)+ ssh远程登陆与文件传输-爱代码爱编程

ROS主从网络设置(分布式通信)+ ssh远程登陆与文件传输 主从机配置1.查看hostname2.永久修改主从机hostname(可选:本身名字就不同可以不用修改)3.修改主从机bashrc文件4.修改主从机/etc/hosts文件补充:ssh远程登录与文件传输将本地文件或文件夹上传到远程计算机获取远程计算机上的文件或文件夹 主从机配置 确

ROS的分布式通信和ROS的关键组件-爱代码爱编程

(四)ROS学习 一.概念 ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。 网络层及以下的各层实现了网络中主机之间的通信,但是数据通信不是最终的目的;计算机网络最本质的活动是分布在不同地理位置的主机之间的进程通信,以实现各种网络服务功能;设置传输层的主要目的就是要实现分布式进程通信。松耦合系统通常是基于消息的系统,此时客户端和远程服务

谈谈ROS的通信机制-爱代码爱编程

本文首先简单的介绍ROS是什么和核心概念,然后主要介绍ROS的通信机制。 1、ROS是什么 ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传

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

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

ROS之分布式多机通信-爱代码爱编程

ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合,在很多应用场景下,节点可以运行在不同的计算平台上,通过Topic、Service进行通信。但是“一山不容二虎”,ROS中只允许存在一个Master,在多机系统中Master只能运行在一台机器上,其他机器需要通过ssh的方式和Master取得联系。本文以PC机与SMART移动平台的多机通信为例,进

ROS话题通信实现发布接收(五)C++版本-爱代码爱编程

在ROS中每一个功能点都是一个单独的进程,每一个进程都是独立运行的 ROS是进程(也称为Nodes)的分布式框架。 因为这些进程甚至还可分布于不同主机,不同主机协同工作,从而分散计算压力。 不过随之也有一个问题: 不同的进程是如何通信(不同进程间如何实现数据交换)的?这就是ROS中的通信机制了。 ROS 中的基本通信机制主要有如下三种实现策略: 话

ROS2为什么要用DDS作为通信中间件?-爱代码爱编程

各位小伙伴大家好,我是小鱼,今天翻译一篇文章《在ROS上使用DDS》,带你了解为什么ROS2要选择DDS作为中间件。 概述 本文阐述了使用 DDS 作为 ROS 的中间件的案例,概述了这种方法的优缺点,并考虑了使用 DDS 对用户体验和代码 API 的影响。对 “ros_dds” 原型的结果也进行了总结,用于探索相关问题。 相关术语 数据分发服务