ROS2 跨机话题通信问题(同一个校园网账号)

文章目录

  • 写在前面的话
    • 校园网模式(失败)
    • 手机热点模式(成功)
  • 我的实验细节
  • 实验验证
    • 1、ssh 用户名@IP地址 终端控制
    • 2、互相 ping 通 IP
    • 3、ros2 run turtlesim turtlesim_node/turtle_teleop_key
    • 4、ros2 multicast send/receive
    • 5、从机打印主机发布的话题
    • 6、主从机程序运行成功
    • 7、注意事项

写在前面的话

我在实验的过程中发现,连接校园网的时候VM虚拟机如果设置为桥接模式会没有网络,设置NAT模式才可以上网。我根据资料(Nat模拟虚拟机无法ping通桥接模式虚拟机)做了如下总结:

文章意思我的理解(有不对希望指出)
Nat模式的虚拟机处于主机管辖下的一个子网XNAT模式是我的笔记本连接校园网后给虚拟机开热点,虚拟机进行的连接,虚拟机的IP是我笔记本分配的
桥接模式的虚拟机和主机处于同一个子网Y桥接模式是我的笔记本和虚拟机都要连接校园网,IP是校园网给的,但是给虚拟机连接校园网需要安装无线网卡,我没安装,所以没网

校园网模式(失败)

注意:这里虽然主机和工控机都是连接了校园网,但是它们不是同一个网段(IP的倒数第二位不一样),但是在NAT模式下它们是可以 ping 通的,也可以ssh进行远程终端控制,但是无法实现ROS2话题通讯

模式主机(Windows)虚拟机(Ubuntu)工控机(Ubuntu)
NATWIFI连接校园网(IP:10.66.x.x)IP:192.168.192.x(可以 ping 通工控机IP)WIFI连接校园网(IP:10.66.x.x)(可以 ping 通主机IP)
桥接WIFI连接校园网(IP:10.66.x.x)没网WIFI连接校园网(IP:10.66.x.x)

手机热点模式(成功)

手机连接校园网之后再开热点也是可以的,IP都是同一个网段
NAT模式下,虚拟机的IP与主机和工控机都不是一个网段,可以ping通工控机的IP,也可以ssh远程连接,但是无法实现ROS2话题通讯

模式主机(Windows)虚拟机(Ubuntu)工控机(Ubuntu)
桥接WIFI连接手机热点(IP:192.168.226.x)IP:192.168.226.xWIFI连接手机热点(IP:192.168.226.x)
NATWIFI连接手机热点(IP:192.168.226.x)IP:192.168.192.xWIFI连接手机热点(IP:192.168.226.x)

我的实验细节

  1. 笔记本(主机,发送控制指令)
  2. 工控机(从机,连接机器人,接收指令)
  3. ros2 版本(humble)
  4. 互相可以通过 IP 地址 ping 通
  5. 通过命令 ssh 用户名@IP地址 可以互相终端控制
  6. 互相可以 ros2 multicase send/receive
  7. 可以 ros2 run turtlesim turtlesim_node/turtle_teleop_key 通过
  8. 主机发布的话题,从机可以显示打印

实验验证

1、ssh 用户名@IP地址 终端控制

在这里插入图片描述

2、互相 ping 通 IP

在这里插入图片描述

3、ros2 run turtlesim turtlesim_node/turtle_teleop_key

注意:这里主机运行 turtlesim turtlesim_node 进行动画界面显示

若是从机运行 turtlesim turtlesim_node 会有下面的报错,因为我是通过ssh命令进行终端远程控制从机,无法获取画面信息

gg@gg:~/car_nav2$ ros2 run turtlesim turtlesim_node 
qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

[ros2run]: Aborted

在这里插入图片描述

4、ros2 multicast send/receive

成功
在这里插入图片描述

5、从机打印主机发布的话题

在这里插入图片描述

6、主从机程序运行成功

在这里插入图片描述

7、注意事项

主机或者从机中可能会有进程阻塞导致通讯失败的情况,比如 ros2 topic list 缺少话题,ros2 node list 没有节点打印等情况

top 终端命令查看 python3 死进程,kill + PID 结束掉即可

在这里插入图片描述

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

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

相关文章

SUB输入5V升压充电16.8V芯片HU5912

HU5912芯片,作为航誉微电子有限公司推出的一款高性能升压充电管理IC,自其面世以来,便以其出色的性能和广泛的应用领域,受到了业界的高度关注和赞誉。本文将详细介绍HU5912芯片的技术特点、应用优势、市场定位以及其在各类电子设备…

导出中心设计

业务背景 应用业务经常需要导出数据,但是并发的导出以及不合理的导出参数常常导致应用服务的内存溢出、其他依赖应用的崩溃、导出失败;因此才有导出中心的设计 设计思想 将导出应用所需的内存转移至导出中心,将导出的条数加以限制&#xf…

构建智能企业:中关村科金大模型企业知识库的技术解析与应用

在数字化转型的浪潮中,企业对智能化知识管理的需求日益增长。知识作为企业的核心资产,其高效管理和应用对于提升企业运营效率和决策质量至关重要。中关村科金大模型企业知识库凭借其强大的技术架构和广泛的应用场景,成为构建智能企业的重要工…

多线程访问FFmpegFrameGrabber.start方法阻塞问题

一、背景 项目集成网络摄像头实现直播功能需要用到ffmpeg处理rtmp视频流进行web端播放 通过网上资源找到大神的springboot项目实现了rtmp视频流转为http请求进行视频中转功能,其底层利用javacv的FFmpegFrameGrabber进行拉流、推流,进而实现了视频中转。 …

C++11——2:可变模板参数

一.前言 C11引入了可变模板参数(variadic template parameters)的概念,它允许我们在模板定义中使用可变数量的参数。这样,我们就可以处理任意数量的参数,而不仅限于固定数量的参数。 二.可变模板参数 我们早在C语言…

ENSP综合实验(中小型网络)

一、实验背景 在当今数字化的企业环境中,一个稳定、高效且安全的网络架构对于业务的持续运营和发展至关重要。随着企业内部各部门业务的不断拓展,如财务部门对数据保密性要求极高,访客区域的网络接入需求逐渐增多,以及对外提供特定…

nvidia控制面板找不到怎么回事?这有解决方法!

NVIDIA控制面板是一款用于管理和调整NVIDIA显卡的软件,它可以让你优化游戏和图形应用程序的性能和画质,以及设置多显示器、音视频、CUDA等功能。但是,有时候你可能会发现你的电脑上找不到NVIDIA控制面板,这可能是由于以下原因造成…

在Vue3项目中使用svg-sprite-loader

1.普通的svg图片使用方式 1.1 路径引入 正常我们会把项目中的静态资源放在指定的一个目录&#xff0c;例如assets,使用起来就像 <img src"../assets/svgicons/about.svg" /> 1.2封装组件使用 显然上面的这种方法在项目开发中不太适用&#xff0c;每次都需…

html+css+js网页设计 美食 美食3个页面(带js)

htmlcssjs网页设计 美食 美食3个页面(带js) 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&…

【235. 二叉搜索树的最近公共祖先 中等】

题目&#xff1a; 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一…

Visual Studio C++使用笔记

个人学习笔记 右侧项目不显示 CTRL ALT L 创建第一个项目 添加类&#xff08;头文件、CPP文件&#xff09;

【Shell脚本】Docker构建Java项目,并自动停止原镜像容器,发布新版本

本文简述 经常使用docker部署SpringBoot 项目&#xff0c;因为自己的服务器小且项目简单&#xff0c;因此没有使用自动化部署。每次将jar包传到服务器后&#xff0c;需要手动构建&#xff0c;然后停止原有容器&#xff0c;并使用新的镜像启动&#xff0c;介于AI时代越来越懒的…

vulhubn中potato靶场

IP和端口探测 80端口是一个图片 7120端口是这个 使用 hydra爆破密码 使用ssh远程登录 执行exp提权到root成功&#xff0c;找到Flag&#xff01;

复杂园区网基本分支的构建

目录 1、各主机进行网络配置。2、交换机配置。3、配置路由交换&#xff0c;进行测试。4、配置路由器接口和静态路由&#xff0c;进行测试。5、最后测试任意两台主机通信情况 模拟环境链接 拓扑结构 说明&#xff1a; VLAN标签在上面的一定是GigabitEthernet接口的&#xff0c…

信息科技伦理与道德2:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…

git理解记录

文章目录 1. 背景2. 基本概念3. 日常工作流程4. 其他常见操作4.1 merge合并操作4.2 tag打标签操作4.3 remoute远程操作4.4 撤销修改 git理解记录 1. 背景 git作为分布式版本控制系统&#xff0c;开源且免费&#xff0c;相比svn集中式版本控制系统存在速度快(HEAD指针指向某次co…

【连续学习之LwM算法】2019年CVPR顶会论文:Learning without memorizing

1 介绍 年份&#xff1a;2019 期刊&#xff1a; 2019CVPR 引用量&#xff1a;611 Dhar P, Singh R V, Peng K C, et al. Learning without memorizing[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 5138-5146. 本文提…

使用Paddledetection进行模型训练【Part1:环境配置】

目录 写作目的 安装文档 环境要求 版本依赖关系 安装说明 写作目的 方便大家进行模型训练前的环境配置。 安装文档 环境要求 PaddlePaddle &#xff1e;&#xff1d;2.3.2OS 64位操作系统Python 3(3.5.1/3.6/3.7/3.8/3.9/3.10)&#xff0c;64位版本pip/pip3(9.0.1)&am…

【51单片机-零基础chapter1】

安装软件(配套的有,不多赘述) 1.管理员身份运行keil和破解软件kegen 将CID代码复制粘贴到 一定要管理员方式,不然会error 插入板子 我的电脑,管理 1.如果是拯救者,查看端口,如果没有则显示隐藏 2.苹果不知道,好像不可以 3.其他电脑在"其他设备找" (注:本人在校已…

现代密码学期末重点(备考ing)

现代密码学期末重点&#xff0c;个人备考笔记哦 密码学概念四种密码学攻击方法什么是公钥密码&#xff1f;什么是对称密码&#xff1f;什么是无条件密码&#xff1f; 中国剩余定理&#xff08;必考&#xff09;什么是原根什么是阶 经典密码学密码体制什么是列置换&#xff1f; …