ROS多设备组网(WSL+miniPC+Nv Orin)

news/2024/10/30 19:24:18/

image-20220915102421584

目录:

    • 前言
    • 硬件连接
    • 组网配置
      • 1、获取hostname和IP
      • 2、在主机添加从机的host信息
      • 3、在从机1中配置
      • 4、在从机2中配置
    • 测试
      • test1 话题订阅
      • test2 rqt_plot可视化传感器信息
    • 最后

前言

实验室最近购买了两台小电脑,一台是x86的miniPC,另外一台是Nvidia的Orin,因为工位上不想摆那么多的鼠标键盘以及也没地方放那么多的显示器,所以很多时候都是通过远程登陆的方式进行访问的。远程登陆有一个问题,如果只是把小电脑当服务器使用那自然是没问题,但是很多时候我们需要在ROS平台上调试我们的其他设备,这个时候就需要用ROS分布式组网了。分布式组网非常简单,我们只需要配置一下即可,下面记录一下配置过程

环境说明:我自己的电脑使用的是window中的wsl,miniPC和NV Orin上运行的都是Ubuntu20.04

wsl: Ubuntu 20.04,IP: 192.168.1.233

miniPC: Ubuntu 20.04,IP:192.168.1.5

Nvidia Orin: Ubuntu 20.04 IP:192.168.1.7

硬件连接

首先通过一个网关,把这三台电脑组成一个局域网。这个非常简单,把网线接到网关上即可,然后通过ifconfig 命令读取每个电脑上获取的ip地址。

image-20220915101602542

另外,如果不知道怎么把WSL的地址暴露在局域网中的可以参考我博客中的上一篇文章。

如果成功连接之后,我们直接在我们的终端远程登陆我们其他两台小电脑,后面方便进行ROS组网配置

image-20220915102933533

组网配置

我们这里是把x86miniPC设置为ROS中的Master节点,我的主机以及Nv Orin都设置成从机。

注意:之前我这边试过直接通过ip来解析从机,没有在主机中配置从机的host信息,发现这样会导致在从机中虽然可以通过rostopic list看到主机发布的话题,但是rostopic echo还有rviz都没有办法接收不到主机中话题的消息。所以下面还是按部就班来进行配置

1、获取hostname和IP

首先通过hostname命令获取各个计算机的名字,以及各个计算机在局域网中的IP地址

image-20220915121229077

2、在主机添加从机的host信息

系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。

在主机中的/etc/hosts文件中填入如下信息:这里包含了每个机器的IP和hostname

image-20220915135421631

3、在从机1中配置

同样地,先在/etc/hosts文件中加入主机的host信息,分别添加自己的IP和hostname、ros主机的IP和hostname、另外一台从机的IP和hostname

image-20220915135443849

然后在从机中环境变量设置ROS master地址及本机hostname,加入如下内容

$ sudo vim ~/.zshrc

image-20220915125739770

4、在从机2中配置

同样地,先在/etc/hosts文件中加入主机的host信息,分别添加自己的IP和hostname、ros主机的IP和hostname、另外一台从机的IP和hostname

image-20220915135518659

然后在从机中环境变量设置ROS master地址及本机hostname,加入如下内容

$ sudo vim ~/.zshrc

image-20220915130020649

到此,组网配置就完成了,下面进行实验看看是否已经起效

测试

test1 话题订阅

首先,我们在ROS master主机启动roscore

image-20220915130205578

然后我们在从机2中播放一个数据集

image-20220915130244177

最后我们在从机1中看看能否收到从机1中播放的话题消息

image-20220915130337833

可以看到在从机2中播放的话题消息中从机1中通过rostopic list 是可以探查到的,下面我们通过rostopic echo来看看是否能够接收到话题的消息,这里我们读取一下IMU的数据

image-20220915131256647

可以看到话题中的消息也可以正常读取,说明我们的组网已经成功。整个终端操作界面如下:

image-20220915131551212

test2 rqt_plot可视化传感器信息

我们在我们的从机1中插入一个陀螺仪,然后把陀螺仪的节点启动起来,然后在主机中订阅消息,并且在从机这边启动一个rqt_plot来可视化一下陀螺仪的数据曲线

image-20220915132028811

首先在我们的ros从机中启动IMU的串口节点,读取IMU模块的数据并且发布出来

image-20220915132227139

启动完成之后,我们在ros主机中看看是否已经有相关的话题

image-20220915132509205

可以看到,在主机端这里是可以看到IMU节点已经启动成功了,下面我在自己电脑这个从机2端,启动一个rqt_plot来可视化一下IMU的数据

image-20220915133209482

可以看到rqt_plot读取数据也是没有问题的,后面我们就可以愉快地调试了。整个终端控制如下:

image-20220915133315136

最后

可以看到,ROS平台真的非常方便,只需要几句话就可以把组网完成,后面我们可以基于这个组网实现多机器人SLAM系统!


http://www.ppmy.cn/news/242778.html

相关文章

XX教你玩 MiniPC (一)拆解MK908

说些提前的话。 很久没有过来写文章了,原因有两个。第一,感觉被骗了。在2012年末的时候,CSDN举办了一个活动:总结2012,写文章。如果被选中的话,就可以送书。实际上,我的文章被选中了&#xff0…

用MiniPC搭建个人服务器

最近突然对小型电子产品产生的兴趣,经过一段时间调查,最终选择从迷你PC下手。因为类似树莓派的产品,还是有一定的上手门槛的。开发板类的产品也更偏硬件一点。而迷你PC除了小一点,其实就是一台电脑,我之前也有一些组装…

XX教你玩 MiniPC (四) Mk908 bootloader行为分析

经历了沉寂郁闷的一天,终于一定程度上搞清楚了flashboot的启动行为。以下就说下自己做过的一些尝试吧,希望大家能从中吸取经验教训,少走弯路。 说到要分析一个软件的行为,我们通常都会从两个方面去考虑,这有点类似于做…

XX教你玩 MiniPC (二)MK908升级包分析

前一篇已经讲完了怎么debug MK908的硬件,关键点是引出了调试用串口,这在后续的分析过程中起到很大作用。 这一篇,将脱离MK908的硬件,从MK908的升级包的角度来看出厂时,MK908的启动和工作方式。 先发布一下&#xff0…

【车机协同slam】miniPC、Nano、T265、UWB linktrack P-B

目录 0、前言0.1 软硬件0.2 实现步骤 一、装系统、换源、装ROS1.1 装系统、换源2.1 装ROS 二、T2652.1 ubuntu 安装 T265 SDK(已测18、20、Nano):2.2 ubuntu 安装 T265 ROS包(已测18、20、nano): 三、UWB &…

Android 实现单击鼠标右键返回功能

实现单击鼠标右键返回功能modified: frameworks/native/services/inputflinger/reader/mapper/accumulator/CursorButtonAccumulator.cppdiff --git a/frameworks/native/services/inputflinger/reader/mapper/accumulator/CursorButtonAccumulator.cpp b/frameworks/native/…

python 第三章 基础语句

系列文章目录 第一章 初识python 第二章 变量 文章目录 3.1 输出格式化输出格式化符号格式化字符串扩展f-格式化字符串转义字符结束符 3.2 输入3.3 数据类型转换转换数据类型的函数 3.4 PyCharm交互式开发3.5 运算符运算符的分类算数运算符赋值运算符复合赋值运算符比较运算符逻…

STL(结)

STL&#xff08;结&#xff09; map存储结构基本操作equal_range遍历方式 插入 multimapsetunordered_mapmap和无序map的异同mapunordered_map map 存储结构 map容器的底层存储是一个红黑树&#xff0c;遍历方式都是按照中序遍历的方式进行的。 int main() {std::map<int…