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

【ROS2】 忽略局域网多机通信导致数据接收的bug

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Bug体现
  • 二、总结及解决方法


前言

本地记录一次ros2开发中的bug纠错。

之前系统地学习过ros1,由于ros1中需要实现多机通信需要配置,现在正在做一个ros2的项目,也没有怎么学就直接上阵了,还不知道ros2无需配置就可以实现局域网内多机通信,所以导致了如下的离谱bug。
ros2中 接收数据异常,订阅一辆小车的位姿会出现在两点反复跳跃,小车不受控制等等bug,甚至可能出现明明本地什么ros节点都没有启动,但是却能使用ros2 topic list查看到一大堆话题。


一、Bug体现

情况1:订阅一辆小车的位姿会出现在两点反复跳跃,很有可能就是开启本机和局域网内其他机器同时开启小车位姿发布节点(比如同时开启了gazebo的小车仿真,那么会用两个及以上gazebo往/odom实时发布小车位姿),此时如果在本机启动一个节点来订阅小车位姿并实时rviz展示轨迹,就会出现两个gazebo中小车的实时坐标在所连成的线在rviz中画出来。此时如果两个gazebo的小车还在移动,那么就会出现z字画线(因为两个gazebo都在,然后本机rviz接收到了都会画出来,如果二者发布消息交替地到达rviz,就会形成这样的z字画线)

情况2:自己手写了一个控制节点,发布Twist消息,然后局域网另外一个主机在使用键盘控制节点也在发布Twist消息,那么二者发布的Twist消息就会交替执行,表现的效果就是小车不受控制

情况3:也是同样的情况,同一局域网下其他主机开启了ros节点,在本机就可以看到话题信息


二、总结及解决方法

ros2支持同一局域网下ros节点的通信,如果发现有其他机器在运行相同功能包节点(尤其是同一个项目组连上同一个wifi然后使用同一份代码,共同调试同一份bug时,如果忘记局域网ros2的通信功能就会越调试“bug”越多,而且还会感到疑惑,为什么有的bug会出现的不稳定,明明复现条件的一样,还会具有随机性),发布相同话题的数据来进行干扰.

除了小组成员互相沟通,关掉多余的ros节点,还可以参考这篇文章https://blog.csdn.net/aibingjin/article/details/123865963
,修改设置好当前主机的ros控制域id,避免出现上面的bug

可以在终端或者.bashrc内设置(二选一即可)

$ export ROS_DOMAIN_ID=5 #当前终端的节点控制域的id号为5$ echo "export ROS_DOMAIN_ID=5" >> ~/.bashrc  #写入到.bashrc后,当前机器的所有ros节点的控制域id都为5
http://www.dtcms.com/a/351701.html

相关文章:

  • 天气查询小程序项目报告
  • iOS 审核 4.3a【二进制加固】
  • Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
  • leetcode-python-383赎金信
  • 深度学习----由手写数字识别案例来认识PyTorch框架
  • 构建AI智能体:十四、从“计算”到“洞察”:AI大模型如何让时间序列数据“开口说话”
  • version GLIBCXX_3.4.30‘ not found (required by cmake)
  • JVM线上调优参数配置指南
  • 今日分享:C++ string 类模拟实现
  • 深度学习之第四课卷积神经网络CNN(一)
  • 不卡顿、不掉线!稳定可靠的体育赛事直播系统源码解析
  • 【Chrome】更新后白屏无法显示问题
  • 【力扣】面试经典150题总结04-区间/栈
  • python 自学笔记13 numpy数组规整
  • 智能驾驶机器学习知识总结
  • 越过千万生死线,鸿蒙直面商业化考验
  • ME_INFORECORD_MAINTAIN_MULTI,创建采购单信息记录,报错ME 816 系统错误(方法PROCESS_CONDITION中错误)
  • Feign 调用为服务报 `HardCodedTarget(type=xxxClient, name=xxxfile, url=http://file)`异常
  • 关于C#中运算符的简单说明
  • 为什么的中小企业很难承受“大型系统”的成本
  • 【RAGFlow代码详解-10】文本处理和查询处理
  • 深度学习(五):正则化:约束模型的复杂度
  • 什么样的 IP 能穿越周期,持续被用户买单?​
  • 深入解析交换机端口安全:Sticky MAC的工作原理与应用实践
  • 自动化测试概念与 Web 自动化实战(基于 Selenium)
  • 第一篇:MySQL安装部署全攻略
  • 计算机毕业设计 java 养老院管理系统 基于 Java 的养老院管理平台 Java 开发的养老服务系统
  • Linux云计算运维简明教程02 应用运维
  • 视频合成素材视频-多合一功能-青柠剪吧
  • 智能手机使用(2015-2019)