当前位置: 首页 > news >正文

ros2 foxy没有话题问题解决

0.问题背景

ubuntu20.04系统
ros2 foxy版本
米文apex orin nx域控
zedSDK4.0.8,zed2i相机
会出现ros launch成功启动,但是没有话题的现象。
有时候没话题的同时也没有rviz2画面,有时候没话题也没画面
在这里插入图片描述

即使是发送最简单的话题,在ros2 topic里也没有找到相关的话题,比如ros2 run demo_nodes_cpp talker
正常情况下会显示:

[INFO] [1686666666.123456789] [talker]: Publishing: 'Hello World: 1'
[INFO] [1686666667.123456789] [talker]: Publishing: 'Hello World: 2'
[INFO] [1686666668.123456789] [talker]: Publishing: 'Hello World: 3'

但是在本机上Publisher发布了相关话题,但没有找到相关话题:

ros2 topic list:
/parameter_events
/rosout

本机主要是在使用ros zed的时候遇到的问题

1.排查方向

1.1NVIDIA Jetson(如 Xavier NX、Orin 等)上默认使用 CycloneDDS 或 FastDDS,但有时会配置错误

1.1.1强制切换FastDDS

在接收话题之前都配置一下

export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
ros2 run demo_nodes_cpp talker
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
ros2 topic list

1.1.2强制切换FastDDS且只本地回环

终端1

sudo apt update
sudo apt install -y ros-foxy-ros2cli-common-extensions 
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=$(pwd)/fastdds_lo.xml
cat > fastdds_lo.xml <<'EOF'
<profiles><participant profile_name="local_only" is_default_profile="true"><rtps><defaultUnicastLocatorList><locator><udpv4><address>127.0.0.1</address><port>0</port></udpv4></locator></defaultUnicastLocatorList><builtin><metatrafficUnicastLocatorList><locator><udpv4><address>127.0.0.1</address><port>0</port></udpv4></locator></metatrafficUnicastLocatorList><initialPeersList><locator><udpv4><address>127.0.0.1</address><port>7412</port></udpv4></locator></initialPeersList><avoid_builtin_multicast>true</avoid_builtin_multicast></builtin></rtps></participant>
</profiles>
EOF
ros2 run demo_nodes_cpp talker

终端2(同样 source 并 export 同样变量)

source /opt/ros/foxy/setup.bash
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=$(pwd)/fastdds_lo.xml
ros2 topic list

1.1.3CycloneDDS

终端1:

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
ros2 run demo_nodes_cpp talker

终端2:

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
ros2 topic list

1.1.4CycloneDDS且只本地回环(本机解决方法)

终端1:

sudo apt update
sudo apt install ros-foxy-rmw-cyclonedds-cpp
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><NetworkInterfaceAddress>lo</NetworkInterfaceAddress><AllowMulticast>spdp</AllowMulticast></General></Domain></CycloneDDS>'
ros2 run demo_nodes_cpp talker

终端2:

export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><NetworkInterfaceAddress>lo</NetworkInterfaceAddress><AllowMulticast>spdp</AllowMulticast></General></Domain></CycloneDDS>'
ros2 topic list

1.2检查防火墙或网络命名空间

ros2 daemon stop
ros2 daemon start

2.本地回环、单播的弊端

由于设置了NetworkInterfaceAddress为lo,任何跨主机节点都发现不了对方,一旦你需要把笔记本、工控机、Jetson 集群连在一起,必须重新放开多播或手动指定 peer 列表,否则它们永远“看不见”彼此。

docker0:Docker网桥。它是Docker容器的虚拟网络接口,用于连接容器和主机之间的网络。
eth0:以太网接口,也就是有线网卡。
lo:本地回环接口,主要用于测试本机的网络功能。
rndis0:远程网络驱动接口,是一种局域网技术,可以通过USB或其他网络连接到计算机系统。
usb0:USB网络接口,用于连接USB设备,如手机、平板等。
dummy0:是一个虚拟设备,可以用来测试网络功能,但不会连接到物理网络中。
l4tbr0:是一个Linux bridge,它可以将多个网卡桥接在一起,以创建一个虚拟网络,允许多台Linux机器通过一个网络互相通信。

http://www.xdnf.cn/news/1399447.html

相关文章:

  • Axios 实例配置指南
  • Keil5 MDK_541官网最新版下载、安装
  • 从 0 到 1 构建零丢失 RabbitMQ 数据同步堡垒:第三方接口数据零丢失的终极方案
  • comfUI背后的技术——VAE
  • 线性代数理论——状态空间
  • 聊一聊耳机串扰-Crosstalk
  • Vue常用指令和生命周期
  • 118、【OS】【Nuttx】【周边】效果呈现方案解析:作用域?
  • 生成一份关于电脑电池使用情况、健康状况和寿命估算的详细 HTML 报告
  • 软考中级习题与解答——第一章_数据结构与算法基础(2)
  • 【Redisson 加锁源码解析】
  • VuePress添加自定义组件
  • 【MySQL数据库】索引 - 结构 学习记录
  • 加速智能经济发展:如何助力“人工智能+”战略在实时视频领域的落地
  • Swift 解法详解:LeetCode 367《有效的完全平方数》
  • Kafka入门
  • 开源 C++ QT Widget 开发(八)网络--Http文件下载
  • 《微服务架构从故障频发到自愈可控的实战突围方案》
  • CSDN博客语法(不常用但有用)
  • 谷歌 “Nano Banana“ 深度解析:AI 图像的未来是精准编辑,而非从零生成
  • ⚡ Linux find 命令参数详解
  • MySQL基础理解入门
  • 嵌入式硬件电路分析---AD采集电路
  • Spring Boot 自动配置原理深度解析:从启动流程到监听机制
  • 【Java EE进阶 --- SpringBoot】Spring Web MVC(Spring MVC)(二)
  • 设计模式之代理模式!
  • 深度学习基础:前馈网络、反向传播与梯度问题
  • 基于IEC61499开放自动化PLC数据储存方案
  • 在 WSL2-NVIDIA-Workbench 中安装Anaconda、CUDA 13.0、cuDNN 9.12 及 PyTorch(含完整环境验证)
  • 第 8 篇:量化交易之tradeUI和webserverUI 区别?