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

news2024/11/28 7:32:12

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通了,如下图: 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法:Java构建二叉树并迭代实现二叉树的前序、中序、后序遍历

先自定义一下二叉树的类: // Definition for a binary tree node. public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left…

【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击

文章目录 前言一、替换所有的问号 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、提莫攻击 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、替换所有的问号 1.1…

干洗店洗鞋店小程序开发,洗衣洗鞋管理系统

干洗店洗鞋店小程序开发,洗衣洗鞋管理系统; 一、会员洗衣管理录单取衣; 会员送衣上门,系统完成录单,记录当前衣服的情况,衣物拍照描述,洗涤注意事项,设置好取衣时间等,衣…

山西电力市场日前价格预测【2023-11-04】

日前价格预测 预测说明: 如上图所示,预测明日(2023-11-04)山西电力市场全天平均日前电价为360.22元/MWh。其中,最高日前电价为452.71元/MWh,预计出现在18: 15。最低日前电价为304.04元/MWh,预计…

设备接入服务组件->微服务and容器化改造说明文档

SVN路径 https://192.0.0.241/USTA-dac/branches/dev/V1.10.500/dac 目录结构 das为设备接入服务,负责驱动管理,资源同步,订阅下发。下面有两个文件夹分别对应了openssl1.0的版本和后面更换接口后openssl1.1的版本。das_proxy为设备信令下发…

win10 + vs2017 + cmake3.17 编译 curl-7.48

1. 下载curl-7.48并解压 解压到“D:\Depend_3rd_party\curl748”文件夹 2. 创建build和install文件夹 1)build文件夹创建在“D:\Depend_3rd_party\curl748”文件夹内部 2)install文件夹,创建在“D:\Depend_3rd_party\curl748”外部 3. 打开…

【23真题】慎选!很难!超纲到四门课!

今天更新的比较晚,实在抱歉!因为想做好解析,每一套真题实在花费我大量的时间于精力!如果大家觉得有帮助,希望帮我点个赞,我们继续坚持每日一套!你们是我唯一坚持下去的动力! 今天分…

u20.04安装slam库

git clone https://github.com/strasdat/Sophus.git // 下载的最新版是模板类的 git checkout a621ff // 切换为非模板类的历史版本 模板类Sophus的依赖库是Eigen(版本为3.3.X)和fmt,需提前安装好Eigen库和fmt库 git clone https://github.c…

上线项目问题——无法加载响应数据

目录 无法加载响应数据解决 无法加载响应数据 上线项目时 改用服务器上的redis和MySQL 出现请求能请求到后端,后端也能正常返回数据,但是在前端页面会显示 以为是跨域问题,但是环境还在本地,排除跨域问题以为是服务器问题&#…

嵌入式web boa配置流程详解

boa配置流程详解 前期准备boa介绍操作目的下载boa 配置流程1.解压boa服务器2.配置Makefile3.编译boa服务器4.修改boa配置文件5.增加权限并编译cgi6.测试demo7.错误示例 附录A history附录B boa.conf 前期准备 boa介绍 Boa服务器是一个小巧高效的web服务器,是一个运…

利用GEE对季节性地物进行分类的代码实现

采样点的选取 如果你采用监督学习的话,那就手动打标签 或者可以了解一下非监督学习 合成多季节多波段影像 首先,制作一个包含多波段的影像,每个波段作为随机森林分类器的一个feature输入,提升feature的丰富度以保证分类精度。…

虚拟机保护工具:Zerto Virtual Replication 10.0 U1 Crack

Zerto虚拟复制是为需要保护虚拟机和应用程序的企业设计的产品。通过通过连接到广域网或云到远程站点的复制来保护虚拟机。Zerto VR 2.0还可以与vCloud Director一起将虚拟机或虚拟机组复制到云端(或从云端)。 事实上,Zerto与33家云提供商合作…

map的operator[]原理

目录 一.map的insert函数 二.map的operator[]实现 三.operator[]的多重功能 一.map的insert函数 要想了解operator[]的实现原理&#xff0c;就要先看看insert。我们关注的是第一个insert的返回值&#xff0c;即pair<iterator, bool> 大意就是&#xff0c;返回一个pair对…

操作系统学习笔记(学习中)

计算机系统概述 1.操作系统概念 管理系统软/硬件资源&#xff0c;为程序提供服务 2.发展与分类 3.操作系统的运行环境 运行机制 指令&#xff1a;&#xff08;二进制机器指令&#xff09;&#xff0c;CPU能识别&#xff0c;执行的最基本命令 应用程序&#xff1a;程序员写…

qt6-error: invalid use of incomplete type ‘class Ui::Widget‘

背景 昨晚刚建立qt工程&#xff0c;点击运行&#xff0c;工作可以直接使用&#xff0c;但是早上点开工作&#xff0c;就出现type类型错误。有点奇怪。问题页面显示&#xff0c;问题主要就是ui::widget的类型错误。 这篇文章提醒我&#xff0c;昨晚因为在尝试修改一些参数时&a…

Flutter 手把手国际化

1.导入依赖 flutter:sdk: flutterflutter_localizations:sdk: flutterintl: any2.安装插件Flutter Intl Android Studio > File > Settings > Plugins 搜索Flutter Intl 并安装和重启Android Studio生效 3.通过插件初始化并配置语言 Android Studio > Tools >…

【已解决】在linux部署出现java文件操作报错:java.io.FileNotFoundException

1.报错场景&#xff1a; 其中的 ip2region.xdb 文件是放在 resources 文件夹中的&#xff0c;然后在一个工具类里面读取这个文件&#xff0c;在开发环境中的是这样读取的&#xff1a; ClassPathResource resource new ClassPathResource("ip2region.xdb");//获取真…

NI-9505 嵌入式行业领先的流量校准测量算法

NI-9505 嵌入式行业领先的流量校准测量算法 基岩自动化公司&#xff0c;基岩OSA自动化平台的制造商&#xff0c;已经将流量计算机功能集成到OSA平台中。奥萨流程系列嵌入流量校准基岩自动化平台中的测量应用。Flow-Cal的软件是流量测量和生产核算数据的选择。 奥萨所有基岩控…

基于Python的豆瓣电影排行榜,可视化系统

1 简介 基于Python flask 的豆瓣电影数据获取&#xff0c;数据可视化系统&#xff0c;本系统朱亚奥包括了影视系统的爬虫与分析。影视是人们娱乐、放松心情的重要方式之一&#xff0c;因此对影视的分析具有重要的现实意义。通过采用Python编程语言&#xff0c;使用flask框架搭…

内部福利!双11百度文心一言底层的千帆大模型免费试用!

内部福利&#xff0c;现在可以免费试用&#xff0c;而且额度超高。双11福利 个人大模型平台新用户&#xff1a;50元&#xff1b;限量1000张&#xff1b;限时一个月使用 企业大模型平台新用户&#xff1a;200元&#xff1b;限量200张&#xff1b;限时一个月使用 EB4对标GPT4 …