已解决(一分钟)TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_footprint at time解决方案

article/2025/9/13 23:58:38

<1>问题描述

前言-仿真实验需求:获取小车的全局坐标系下的位姿信息,因此使用gmapping建图,并使用地图服务调用发布,自己写了个节点将map坐标系添加到现有的TF树上,最终TF树见最后截图。

进入正题,想直接搭配b站赵虚左老师的教程gazebo生成的模型,学习教程时候没注意到警告,现在还债(警告见下图),连带引发的问题为:终端输入 rosrun tf tf_echo  odom base_link 时候直接断断续续收不到,分析后发现是map odom base_footprint这些坐标系发布的频率不一致导致的,比如odom更新快,base_footprint还没更新就会获取不到相对位姿的情况,上解决方案。

 

<2>解决方案:结合网上的通用方法后有所改善但还是会零零散散出现上述报错

亲测改善成功方案如下:

关键步骤1:launch中增加下段代码,保持频率10000hz一致

    <node pkg="tf" type="static_transform_publisher" name="odom_to_base_footprint" args="0.0 0.0 0.0 0 0 0.0 /odom /base_footprint 10000"/>

关键步骤2:其次 move.xacro文件修改下面三行
            <publishWheelTF>false</publishWheelTF>

            <publishWheelJointState>false</publishWheelJointState>

            <updateRate>1</updateRate>

完整代码段如下:

<robot name="my_car_move" xmlns:xacro="http://wiki.ros.org/xacro"><!-- 传动实现:用于连接控制器与关节 --><xacro:macro name="joint_trans" params="joint_name"><!-- Transmission is important to link the joints and the controller --><transmission name="${joint_name}_trans"><type>transmission_interface/SimpleTransmission</type><joint name="${joint_name}"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface></joint><actuator name="${joint_name}_motor"><hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface><mechanicalReduction>1</mechanicalReduction></actuator></transmission></xacro:macro><!-- 每一个驱动轮都需要配置传动装置 --><xacro:joint_trans joint_name="left2link" /><xacro:joint_trans joint_name="right2link" /><!-- 控制器 --><gazebo><plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so"><rosDebugLevel>Debug</rosDebugLevel><publishWheelTF>false</publishWheelTF><robotNamespace>/</robotNamespace><publishTf>1</publishTf><publishOdomTF>true</publishOdomTF><publishWheelJointState>false</publishWheelJointState><alwaysOn>true</alwaysOn><updateRate>1.0</updateRate><legacyMode>true</legacyMode><leftJoint>left2link</leftJoint> <!-- 左轮 --><rightJoint>right2link</rightJoint> <!-- 右轮 --><wheelSeparation>${base_radius * 2}</wheelSeparation> <!-- 车轮间距 --><wheelDiameter>${wheel_radius * 2}</wheelDiameter> <!-- 车轮直径 --><broadcastTF>1</broadcastTF><wheelTorque>30</wheelTorque><wheelAcceleration>1\.8</wheelAcceleration><commandTopic>cmd_vel</commandTopic> <!-- 运动控制话题 --><odometryFrame>odom</odometryFrame> <odometryTopic>odom</odometryTopic> <!-- 里程计话题 --><robotBaseFrame>base_footprint</robotBaseFrame> <!-- 根坐标系 --><odometrySource>world</odometrySource> <!-- 'encoder' instead of 'world' is also possible --></plugin></gazebo></robot>

<3>运行效果:最后就可以安稳的1s一次的获取小车相对于odom、map的相对位姿信息了😄

如下图所示,终端输入rosrun tf tf_echo map  base_footprint ,当前小车没有移动所以为0 


http://chatgpt.dhexx.cn/article/MIAJSE1y.shtml

相关文章

【Protocol Buffer】Protocol Buffer入门教程(五):repeated限定修饰符

00. 目录 文章目录 00. 目录01. 限定修饰符介绍02. 字段API分析03. 测试代码04. 编译和测试05. 参考 01. 限定修饰符介绍 repeated 代表可重复&#xff0c;我们可以理解为数组 syntax "proto3";//指定版本信息&#xff0c;不指定会报错message Person //message为…

protobuf入门教程(四):repeated限定修饰符

限定修饰符说明 repeated 代表可重复&#xff0c;我们可以理解为数组&#xff1a; syntax "proto3";//指定版本信息&#xff0c;不指定会报错message Person //message为关键字&#xff0c;作用为定义一种消息类型 {string name 1; //姓名int32 id 2; …

一个真·菜鸟理解的springmvc工作原理

1 springmvc的映射器和适配器 1.1springmvc的映射器 根据客户端请求的url&#xff0c;找到处理本次请求的handler&#xff08;处理器&#xff09;&#xff0c;将url和controller关联起来 1.2springmvc的适配器 对映射器查找到的controller中的方法进行调用。 第一种&#xff1…

【转】SpringMVC的工作原理图

SpringMVC的工作原理图&#xff1a; ##SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)&#xff0c;生成处理器对象及处理…

SpringMVC工作原理及执行流程

一、SpringMVC简介 SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;使用了MVC架构模式的思想&#xff0c;将web层进行职责解耦&#xff0c;并管理应用所需对象的生命周期&#xff0c;为简化日常开发&#xff0c;提供了很大便利。  …

SpringMVC工作原理图

1.用户发送请求至前端控制器DispatcherServlet(也叫中央处理器). 2.DispatcherServlet收到请求调用HandlerMappering处理器映射器 3.处理器映射器找到具体的处理器&#xff08;可以根据xml配置、注解进行查找&#xff09;&#xff0c;生成处理器对象及处理器拦截器&#xff08;…

servlet — SpringMVC工作原理

如下图&#xff0c;所有实线的部分都由 SpringMVC 框架实现&#xff0c;我们的代码只需要处理虚线的部分&#xff1a; 【总结】&#xff1a; DispatchServlet(请求分发器 / 前端控制器), 是SpringMVC的核心 1. 用户发起请求的时候调用前端控制器 DispatcherServlet&#xff1b…

SpringMVC 工作原理

0x00:请求流程图 首先,来看一下 SpringMVC 的整个请求流程,如下图: 0x01:步骤解析 SpringMVC 整体流程步骤解析: 1,用户去单击了某个请求路径,发起了一个 request 请求,这个请求会被 DispatcherServlet 前端控制器处理。 2,前端控制器 DispatcherServlet 去请求处…

SpringMVC工作原理nbsp;及注解说明

Spring MVC工作原理 及注解说明 SpringMVC框架介绍 1) spring MVC属于SpringFrameWork的后续产品&#xff0c;已经融合在SpringWeb Flow里面。 Spring框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的MVC 架构&#xff0c;可以选择是使用内置的Spring Web …

SpringMVC工作原理的介绍

1.原理图&#xff1a; 2.流程文字介绍&#xff1a; 1.用户向服务器发送请求&#xff0c;请求被Spring前端控制Servlet DispatcherServlet捕获&#xff1b; 2.DispatcherServlet对请求UR进行解析&#xff0c;得到请求资源标识符&#xff08;URI&#xff09;。然后根据该URI&…

SpringMVC工作原理(1)

大家好&#xff0c;今天和大家分享SpringMVC的相关知识&#xff0c;主要是对SpringMVC的工作原理做一些分析。 SpringMVC的工作流程如下&#xff1a; 接下来我们先来对其中的组件以及相应的功能来做简单介绍&#xff1a; 组件&#xff1a; 1.DispatcherServlet DispatcherSer…

SpringMVC工作原理详解

SpringMVC工作原理详解 在学习之前&#xff0c;先来两张神图镇楼 什么是MVC 经典MVC模式中&#xff0c;M是指业务模型&#xff0c;V是指用户界面&#xff0c;C则是控制器&#xff0c;使用MVC的目的是将M和V的实现代码分离&#xff0c;从而使同一个程序可以使用不同的表现形式…

springMVC工作原理(含图)

SpringMVC流程 1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)&#xff0c;生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dis…

理清SpringMVC工作原理

一、首先&#xff0c;我们先来认识一下SpringMVC的主要组件 前端控制器&#xff08;DisatcherServlet&#xff09;:接收请求&#xff0c;响应结果&#xff0c;返回可以是json,String等数据类型&#xff0c;也可以是页面&#xff08;Model&#xff09;。 处理器映射器&#xff0…

SpringMVC工作原理及源码解析

SpringMVC工作原理及源码解析 一&#xff1a;SpringMVC原理图二&#xff1a;SpringMVC的主要组件1、前端控制器DispatcherServlet&#xff1a;2、处理器映射器HandlerMapping&#xff1a;3、处理器适配器HandlerAdapter&#xff1a;4、处理器Handler&#xff1a;5、控制器Contr…

SpringMVC工作原理和工作流程

在博客看见一编写的非常清晰的博客&#xff0c;对现在的注重开发层面不注重底层原理的还是有用处的。 原文出处&#xff1a;https://www.cnblogs.com/xiaoxi/p/6164383.html SpringMVC工作原理 SpringMVC的工作原理图&#xff1a; SpringMVC流程 1、 用户发送请求至前端控制…

SpringMVC的简介概述、工作原理

SpringMVC简述概括 SpringMVC的工作原理

SpringMVC工作原理之参数解析

前面分析到 SpringMVC工作原理之处理映射[HandlerMapping] &#xff0c;由映射处理器(HandlerMapping) 解析出对应的 handler。接着 SpringMVC工作原理之适配器[HandlerAdapter] 描述了 handler 是怎么匹配到合适的适配器&#xff0c;进行 handler 对应方法的执行。其他几种适配…

16.springmvc工作原理分析

springmvc 如何做URL映射关系 1.SpringIOC容器加载时开始遍历所有的bean对象 判断 bean对象 类上是否有加上 Controller注解,如果类上有加该注解的话 则该类就是为我们控制类&#xff1b; 2.在容器初始化时会建立所有url和controller的对应关系&#xff0c;利用java反射机制…

SpringMVC工作原理及其流程

本文介绍SpringMVC的基本原理,对于一个浏览器请求,SpringMVC的处理流程。 SpringMVC主要包含一下组件 DispatcherServlet-前端控制器HandlerMapping-处理器映射Controller-控制器ViewResolver-视图解析器View-视图Spring的请求流程 SpringMVC的核心在于其请求流程,这是使用…