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

news2025/1/8 14:38:38

文章目录

  • 写在前面的话
    • 校园网模式(失败)
    • 手机热点模式(成功)
  • 我的实验细节
  • 实验验证
    • 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 结束掉即可

在这里插入图片描述

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

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

相关文章

web3与AI结合-Sahara AI 项目介绍

背景介绍 Sahara AI 于 2023 年创立,是一个 "区块链AI" 领域的项目。其项目愿景是,利用区块链和隐私技术将现有的 AI 商业模式去中心化,打造公平、透明、低门槛的 “协作 AI 经济” 体系,旨在重构新的利益分配机制以及…

【C++】你了解异常的用法吗?

文章目录 Ⅰ. C语言传统的处理错误的方式Ⅱ. C异常概念Ⅲ. 异常的使用1、异常的抛出和匹配原则2、在函数调用链中异常栈展开匹配原则3、异常的重新抛出4、异常安全5、异常规范 Ⅳ. 自定义异常体系Ⅴ. C标准库的异常体系Ⅵ. 异常的优缺点1、异常的优点2、异常的缺点3、总结 Ⅰ. …

Matlab仿真径向受压圆盘光弹图像

Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径,单位:mm h 5; % 圆盘厚度,单位:mm P 300; % 径向受压载荷大小,单位&#xff…

游戏引擎学习第75天

仓库:https://gitee.com/mrxiao_com/2d_game_2 Blackboard: 处理楼梯通行 为了实现楼梯的平滑过渡和角色的移动控制,需要对楼梯区域的碰撞与玩家的运动方式进行优化。具体的处理方式和遇到的问题如下: 楼梯区域的过渡: 在三维空间中&#x…

算法的学习笔记—不用常规控制语句求 1 到 n 的和

😀前言 在算法编程中,有时我们会遇到一些特殊的限制条件,这些限制会迫使我们跳出常规思维。本文讨论的问题就是一个典型案例:在不能使用基本控制语句的情况下,如何求解 1 到 n 的和。这个问题不仅考验编程技巧&#xf…

网络协议安全的攻击手法

1.使用SYN Flood泛洪攻击: SYN Flood(半开放攻击)是最经典的ddos攻击之一,他利用了TCP协议的三次握手机制,攻击者通常利用工具或控制僵尸主机向服务器发送海量的变源端口的TCP SYN报文,服务器响应了这些报文后就会生成大量的半连…

141.《mac m1安装mongodb详细教程》

文章目录 下载从官网下载安装包 下载后双击解压出文件夹安装文件名修改为 mongodb配置data存放位置和日志log的存放位置启动方式一方式二方式二:输入mongo报错以及解决办法 本人电脑 m2 pro,属于 arm 架构 下载 官网地址: mongodb官网 怎么查看自己电脑应该下载哪个版本,输入…

C++ operator = 返回void 会发生什么?

1.operator 正常情况 #include <iostream> using namespace std;class Box { public:Box(double L) : length(L) {}Box(const Box& b){}Box& operator (const Box&){return *this;}public:double length; // 长度 };int main() {Box box1(1.0);Box box2(…

Redis中字符串和列表的区别

在 Redis 中&#xff0c;字符串&#xff08;String&#xff09;和列表&#xff08;List&#xff09;是两种截然不同的数据类型&#xff0c;它们各自有着独特的特点和适用场景。 数据结构 • 字符串&#xff08;String&#xff09;&#xff1a; • 在 Redis 中&#xff0c;字符串…

Elasticsearch JavaRestClient版

文章目录 初始化RestHighLeveClient&#xff08;必要条件&#xff09;索引库操作1.创建索引库&#xff08;4步&#xff09;2.删除索引库&#xff08;3步&#xff09;3.判断索引库是否存在&#xff08;3步&#xff09;4.总结&#xff1a;四步走 文档操作1.创建文档&#xff08;4…

使用Dinky快速提交Flink operator任务

官网地址&#xff1a;K8s集成 | Dinky 1.目前使用版本 Dinky1.2.0、Flink1.18.1、Flink operator0.10.0 2.制作镜像 2.1创建DockerFile ARG FLINK_VERSION1.18.1 FROM flink:${FLINK_VERSION}-scala_2.12 RUN mkdir -p /opt/flink/usrlib COPY commons-cli-1.3.1.jar …

探索数字化展馆:开启科技与文化的奇幻之旅

在科技飞速发展的当下&#xff0c;数字展馆作为一种新兴的展示形式&#xff0c;正逐渐走进大众的视野。数字展馆不仅仅是传统展馆的简单“数字化升级”&#xff0c;更是融合了多媒体、数字化技术以及人机交互等前沿科技的创新产物。 数字展馆借助VR、AR、全息投影等高科技手段&…

免费GEMINI模型使用及API调用

一、概述 谷歌最新发布的Gemini 2.0 FLASH模型为AI应用带来了新的可能性。该模型分为两个版本&#xff1a;gemini-2.0-flash-exp 和 gemini-2.0-flash-thinking-exp-1219。这两个模型目前限时免费使用&#xff0c;用户可以通过智匠MindCraft客户端或小程序直接体验&#xff0c;…

调整Python+Pytest+Allure+Yaml+Pymysql框架中需要执行的用例顺序

当pytest框架中有时时候会因为用例的前后关联关系需要调整用例执行顺序时则可以跟进具体的要求调整pytest.ini配置文件中执行用例文件夹的前后顺序 当如果是需要调整某个文件夹中用例的执行顺序时&#xff0c;则跟进具体的文件调整对应testcases中test_*.py文件中的执行顺序

容器技术思想 Docker K8S

容器技术介绍 以Docker为代表的容器技术解决了程序部署运行方面的问题。在容器技术出现前&#xff0c;程序直接部署在物理服务器上&#xff0c;依赖管理复杂&#xff0c;包括各类运行依赖&#xff0c;且易变&#xff0c;多程序混合部署时还可能产生依赖冲突&#xff0c;给程序…

系统思考—变革之舞

彼得圣吉在《变革之舞》中提到&#xff1a;变革的关键是持续学习。在这个变化万千的世界里&#xff0c;组织不能停留在过去的经验上&#xff0c;我们如何系统性的抛弃过去成功的经验&#xff0c;不断学习新技能&#xff0c;适应复杂的环境。每个人不仅要学会解决眼前的问题&…

OpenCV的人脸检测模型FaceDetectorYN

OpenCV的人脸检测模型FaceDetectorYN 1. 官网地址2. 如何使用2.1.到opencv_zoo下载模型文件和代码2.2. 下载文件展示2.3. 修改了demo支持读取视频文件&#xff0c;默认是图片和摄像头## 2.4 效果展示 1. 官网地址 https://docs.opencv.org/4.x/df/d20/classcv_1_1FaceDetector…

25/1/6 算法笔记<强化学习> 初玩V-REP

我们安装V-REP之后&#xff0c;使用的是下面Git克隆的项目。 git clone https://github.com/deep-reinforcement-learning_book/Chapter16-Robot-Learning-in-Simulation.git 项目中直接组装好了一个机械臂。 我们先来分析下它的对象树 DefaultCamera:摄像机&#xff0c;用于…

Linux驱动开发:深入理解I2C时序(二)

在Linux驱动开发中,I2C时序的理解和正确处理是保证I2C设备正常工作和通信的关键。I2C协议的时序特性决定了数据的有效传输和设备间的协作。因此,掌握I2C的时序细节,以及如何在Linux内核中进行时序处理,能够让开发者更好地处理设备通信问题。 本文将继续深入探讨I2C通信协议…

Java100道面试题

1.JVM内存结构 1. 方法区&#xff08;Method Area&#xff09; 方法区是JVM内存结构的一部分&#xff0c;用于存放类的相关信息&#xff0c;包括&#xff1a; 类的结构&#xff08;字段、方法、常量池等&#xff09;。字段和方法的描述&#xff0c;如名称、类型、访问修饰符…