ROS分布式演练,多台设备进行通信的配置

1、概述

前面我们做的操作都是在单个设备上进行,也就是分别开启多个终端,在不同终端上启动节点等相关操作,这里我们使用两台设备来控制,一台虚拟机和一台无人车(使用VNC Viewer连上去,也可以看做一台Linux虚拟机)
VNC Viewer有兴趣的可以查阅:远程连接VNC-Viewer与安全传输WinSCP软件

2、安装Chrony包与SSH服务器

2.1、介绍

ChronyNTP(Network Time Protocol)网络时间协议的替代品,能更精确、更快的同步时钟,传统NTP需要几个小时,而Chrony仅需要数秒种或数毫秒就可以完成时间同步。
安装这个时间同步服务是很有意义的,因为每台设备的运行环境等都不一样,本地时钟可能会不一致,虽然有校正过,但是过一段时间之后,又可能不一致了,那么对于分布式架构来说,就会造成不好的结果,我们需要不同的设备协同完成,所以需要统一时间。

Chrony由两个程序组成,分别是chronyd和chronyc。
chronyd
是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步,确定计算机增减时间的比率,并对此进行补偿。
chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

OpenSSH是SSH协议的免费开源实现,功能包括:实现SSH协议,可以让本地计算机和远程服务器之间建立安全的连接,提供安全的传输通道,保护数据的传输安全。

2.2、安装

分别在两台设备上安装chrony包以及ssh服务器用来实现同步
sudo apt-get install chrony openssh-server

分别输入ifconfighostname命令,找出其IP地址和主机名
虚拟机(主机)

192.168.1.128 YAB

无人车(从机)

192.168.1.11 jetson-desktop

 2.3、修改hosts

修改hosts文件,将两者的IP与主机名都写入里面
所有用户加个可写权限:sudo chmod a+w /etc/hosts
修改hosts文件:gedit /etc/hosts

192.168.1.128    YAB
192.168.1.11    jetson-desktop

修改好了之后,在两台设备上都输入下列命令重启网络,实现两台设备间通信:
sudo /etc/init.d/networking restart
确认服务是否启动
ps -e | grep ssh
也可以互相ping主机名测试下,是否可以ping通,能够ping通就没有问题。

2.4、设置环境变量 

接下来就设置环境变量,最好是加入到.bashrc文件
虚拟机(主机)

echo "export ROS_HOSTNAME=YAB" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://YAB:11311" >>~/.bashrc
source ~/.bashrc

无人车(从机)

echo "export ROS_HOSTNAME=jetson-desktop" >> ~/.bashrc
echo "export ROS_MASTER_URI=http://YAB:11311" >>~/.bashrc
source ~/.bashrc

2.5、启动节点

虚拟机(主机)启动ROS管理节点Master:roscore

无人车(从机)
启动乌龟
rosrun turtlesim turtlesim_node
启动键盘控制
rosrun turtlesim turtle_teleop_key 

这样就可以在从机上控制乌龟了,这里也可以看出分布式的优势,可以让相互独立的节点能够相互通信,非常棒。如下图:

当然上面的URI也可以使用IP地址,这个看个人的具体情况吧。

3、不同网段处理

这里可能大家会遇到一个不在同一个网段的情况,这样就不能互相通信,这里以本人的为例,怎么更改虚拟中的IP网段。
本人电脑是有线网络,IP是在192.168.3.xx的网段,虚拟机一般都是直连物理网络,所以IP地址也是在192.168.3.xx这个网段
而无人车使用的是无线USB网卡(Realtek 8188GU Wireless LAN 802.11n USB NIC),IP地址是192.168.1.11

由于虚拟机跟无人车不在同一个网段里面,所以不能相互通信,这个时候我们需要使用到“虚拟网络编辑器”,如下图: 

点击进来之后,右下角点击“更改设置”,如下图:

将出现一个新的VMnet0选择,我们点击“桥接模式(将虚拟机直接连接到外部网络)(B)”,其中已桥接至:选择无人车的无线USB网卡即可。如下图: 

最后我们来到虚拟机的设置,点击“网络适配器”,网络连接,这里我们选择“自定义(U):特定虚拟网络”,选择上面配置好的VMnet0即可。如下图:

 

重启网络:sudo /etc/init.d/networking restart
我们在两台设备上面分别互相ping下,不出意外是可以互相ping通了,如下图: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/115709.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识FFmpeg

前言 无意间见到群里的小伙伴展示视频工具。功能比较多,包括视频编码修改,画质处理,比例处理、名称提取,剪辑、标题拆解。因此开始了FFmpeg学习。以下摘自百度百科的解释。 FFmpeg是一套可以用来记录、转换数字音频、视频&#xf…

【React】02.create-react-app基础操作

文章目录 当前以及未来的开发,一定是:组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中,默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…

c++ Vector 学习

vevtor 是c 中自带得动态数组&#xff0c;dynamic array array can hold different values/objects of same type 可以装不同得类型或者对象 dynamic size can be changed at runtime 可以运行得时候改变 要使用的话&#xff0c;先引入 #include <vector> std::vector…

稳定性测试—fastboot和monkey区别

一、什么是稳定性测试 稳定性测试是指检验程序在一定时间内能否稳定地运行&#xff0c;在不同的场景下能否正常地工作的过程。主要目的是检测崩溃、内存泄漏、堆栈错误等缺陷。 二、Monkey 1.什么是Monkey 是一个命令行工具&#xff0c;通常在adb安卓调试运行&#xff0c;模…

Bat批量处理

一&#xff1a;创建文件夹 excel创建文件 复制出来新建文本文件 另存为bat 双击bat 二&#xff1a;批量移动文件 A列&#xff1a;获取的文件名列表 dir /b/o:n> original.txt B列&#xff1a;填充序号 C列公式&#xff1a;每隔9行增加1 INT((ROW(B1)-1)/9)1 D列公式&am…

互联网医院|湖南互联网医院|智慧医疗改善就医服务

互联网医院系统&#xff0c;是指利用互联网技术和远程医疗技术&#xff0c;提供在线就诊、咨询、诊断和治疗等医疗服务的一种医疗模式。互联网医院系统实际上与医院的HIS系统很相似&#xff0c;是侧重服务于线上问诊的专业HIS&#xff0c;包含传统HIS的基本模块&#xff0c;如挂…

界面控件DevExpress WinForms Gauge组件 - 实现更高级别数据可视化

DevExpress WinForms控件包含了超过150个随时可用的仪表盘预设&#xff0c;包括圆形&#xff0c;数字&#xff0c;线性和状态指示器等&#xff0c;来帮助用户实现更高级的数据可视化。 DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业…

好用的文献引用方法(借助谷歌\火狐浏览器-需要vpn)

1 火狐浏览器-扩展-管理扩展-搜索“Google学术搜索按钮”-安装 2 vpn之后-在www.google.com谷歌官网-搜索论文题目- 点击扩展-点Google学术搜索按钮 3 直接得到结果-点击引用 4 得到引用bib

阿里云免费服务器

文章目录 最近的阿里云活动By the way在云服务器ECS上搭建个人网站正文补充:定期释放补充:不知道阿里云服务器的密码怎么办?成果补充&#xff1a;怎么找到实例操作的后台&#xff1f;补充&#xff1a;怎么查看服务器到期时间&#xff1f; 究竟白嫖了多少&#xff1f;最后&…

nvm安装教程(一篇文章所有问题全搞定,非常详细)

nvm 是什么&#xff1f; nvm 是一款 nodejs 版本管理工具&#xff0c;通过 nvm 可以简化我们切换 nodejs 版本的操作。 nvm 的安装流程 一、首先进入 nvm 的官网下载安装包 官网地址&#xff1a;http://nvm.uihtm.com 找到自己系统对应的版本进行下载&#xff0c;以下以 w…

AD9371 官方例程裸机SW 和 HDL配置概述(三)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 &#xff1a; AD9371 官方…

JAVA智慧工地管理系统源码基于微服务

智慧工地是将互联网的理念和科技引入施工现场&#xff0c;从施工现场源头抓起&#xff0c;大程度的收集人员、安全、环境、质量等关键业务数据。通过结合物联网、大数据、互联网、云计算等技术建立云端大数据管理平台&#xff0c;形成端云大数据的体系与模式&#xff0c;这就是…

uniapp原生插件之安卓热敏打印机打印插件

插件介绍 安卓热敏打印机打印插件&#xff0c;自动授权&#xff0c;打印机连接监听&#xff0c;打印文本&#xff0c;条形码&#xff0c;二维码&#xff0c;切纸&#xff0c;打印机状态&#xff0c;打印结果查询等 插件地址 安卓热敏打印机打印插件 - DCloud 插件市场 超级…

Python框架之Flask入门和视图

一、Flask入门和视图 需要安装Pycharm专业版 1. Flask简介 Python后端的2个主流框架 Flask 轻量级框架Django 重型框架 Flask是一个基于Python实现的web开发微框架 官方文档&#xff1a;https://flask.palletsprojects.com/ 中文文档&#xff1a;https://dormousehole.readthe…

HarmonyOS UI 开发

引言 HarmonyOS 提供了强大的 UI 开发工具和组件&#xff0c;使开发者能够创建吸引人的用户界面。本章将详细介绍在 HarmonyOS 中应用 JS、CSS、HTML&#xff0c;HarmonyOS 的 UI 组件以及如何自定义 UI 组件。 目录 JS、CSS、HTML 在 HarmonyOS 中的应用HarmonyOS 的 UI 组…

谷歌推出基于AI的产品图像生成工具;[微软免费课程:12堂课入门生成式AI

&#x1f989; AI新闻 &#x1f680; 谷歌推出基于AI的产品图像生成工具&#xff0c;帮助商家提升广告创意能力 摘要&#xff1a;谷歌推出了一套基于AI的产品图像生成工具&#xff0c;使商家能够利用该工具免费创建新的产品图像。该工具可以帮助商家进行简单任务&#xff08;…

基于单片机的智能感应监控系统的设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、系统分析2.1 整个控制系统的设计要求2.2 总体设计方案 二、系统硬件电路设计3.1 硬件电路介绍3.2 控制电路分析3.2.1 复位电路 三 软件设计原理图 四、 结论五、 文章目录 概要 因为人们在生活中对安全防范的…

OpenGL ES入门教程(二)之绘制一个平面桌子

OpenGL ES入门教程&#xff08;二&#xff09;之绘制一个平面桌子 前言0. OpenGL绘制图形的整体框架概述1. 定义顶点2. 定义着色器3. 加载着色器4. 编译着色器5. 将着色器链接为OpenGL程序对象6. 将着色器需要的数据与拷贝到本地的数组相关联7. 在屏幕上绘制图形8. 让桌子有边框…

vue:js中合并对象的方法

目前比较常用的一共有三种 1、使用object.assign() 它可以将一个或多个对象的属性复制到目标对象中&#xff0c;第一个参数就是目标对象&#xff0c;这里举个例子&#xff1a; <template><div>{{data}}</div> </template> <script> export de…

Unity中Shader的烘培分支的判断

文章目录 前言一、上一篇文章中所需要的 lightmapUV 只有在烘焙时才会使用1、查看帮助文档后&#xff0c;Unity中判断烘培是否开启&#xff0c;使用的是LIGHTMAP_ON2、我们在 appdata 和 v2f 中&#xff0c;定义第二套UV 前言 Unity中Shader的烘培分支的判断&#xff0c;基于上…