【ROS学习】ROS中 use_sim_time 参数的含义与作用
文章目录
- 写在前面
- 一、背景描述
- 二、 use_sim_time 参数的含义与作用
- 三、举例说明
- 1. 不设置`use_sim_time` (也即 `use_sim_time = false`),播放数据集使用`rosbag play **.bag `
- 2. 不设置`use_sim_time` (也即 `use_sim_time = false`),播放数据集使用`rosbag play **.bag --clock`
- 3. 设置`use_sim_time = true`,播放数据集使用`rosbag play **.bag `
- 4. 设置 `use_sim_time = true`,播放数据集使用`rosbag play **.bag --clock`
- 参考链接
写在前面
自己的测试环境:
Ubuntu20.04
ROS-Noetic
一、背景描述
在程序运行是经常会看到 launch 文件中出现如下程序:
<param name="/use_sim_time" value="true" />
但是这句程序的具体含义和作用是什么,并不清晰。这里对当前这个参数进行解析,便于同行参考。
二、 use_sim_time 参数的含义与作用
use_sim_time 的字面含义是(是否)使用仿真时间。当设置参数 use_sim_time 为 true 时,意味着使用仿真时间。它的作用是当前ros程序中使用rospy.Time.now() 进行读取,则读取到的是仿真时间。
三、举例说明
首先这里附上读取当前ros 时间的 python 程序:
#!/usr/bin/env python
import rospydef main():# 初始化节点rospy.init_node('get_ros_time')# 等待rospy的内部通信建立# rospy.wait_for_service('rospy.set_param')# 设置循环的速率为1Hzrate = rospy.Rate(1)# 循环直到节点被关闭while not rospy.is_shutdown():rospy.loginfo("====================")current_time = rospy.Time.now()# 打印当前ROS时间rospy.loginfo("Current ROS time is: %f", current_time.to_sec())# 等待下一次循环rate.sleep()
if __name__ == '__main__':try:main()except rospy.ROSInterruptException:pass
1. 不设置use_sim_time (也即 use_sim_time = false),播放数据集使用rosbag play **.bag
运行指令:
roscore
rosparam set use_sim_time false # 这句指令是否执行,结果都是一样的
rosbag play **.bag
这种设置就是典型的使用ROS当前的时间,即使用 ROS系统的最新时间。此时上述 python 程序打印如下:
[INFO] [1722673831.056924]: ====================
[INFO] [1722673831.059255]: Current ROS time is: 1722673831.059109
[INFO] [1722673832.058092]: ====================
[INFO] [1722673832.061643]: Current ROS time is: 1722673832.061444
[INFO] [1722673833.058037]: ====================
[INFO] [1722673833.061723]: Current ROS time is: 1722673833.061501
[INFO] [1722673834.058022]: ====================
[INFO] [1722673834.060917]: Current ROS time is: 1722673834.060722
[INFO] [1722673835.058394]: ====================
[INFO] [1722673835.061902]: Current ROS time is: 1722673835.061656
[INFO] [1722673836.058457]: ====================
[INFO] [1722673836.061843]: Current ROS time is: 1722673836.061635
[INFO] [1722673837.058018]: ====================
[INFO] [1722673837.061253]: Current ROS time is: 1722673837.061034
2. 不设置use_sim_time (也即 use_sim_time = false),播放数据集使用rosbag play **.bag --clock
运行指令:
roscore
rosparam set use_sim_time false # 这句指令是否执行,结果都是一样的
rosbag play **.bag --clock
这种设置和《1. 不设置use_sim_time (也即 use_sim_time = false),播放数据集不使用--clock 》是一样的,即使用``ROS系统的最新时间。此时上述python 程序打印和《1. 不设置use_sim_time(也即use_sim_time = false),播放数据集不使用–clock `》是一样的。
3. 设置use_sim_time = true,播放数据集使用rosbag play **.bag
这种设置就是典型的使用ROS当前的时间,即``ROS系统的最新时间。此时上述python` 程序打印如下:
运行指令:
roscore
rosparam set use_sim_time true
rosbag play **.bag
这种设置就是是有问题的,因为设置了use_sim_time = true,但是没有仿真时间发出来,因此这种设置是错误的。此时上述python 程序不能打印,因为ROS系统没有始终,程序不能运行。
4. 设置 use_sim_time = true,播放数据集使用rosbag play **.bag --clock
运行指令:
roscore
rosparam set use_sim_time true
rosbag play **.bag --clock
这种设置就是典型的使用仿真时间,即使用数据集时间 作为整个ROS系统的时间。此时上述python 程序打印如下:
[INFO] [1722673596.663416, 0.000000]: ====================
[INFO] [1722673596.666444, 0.000000]: Current ROS time is: 0.000000
[INFO] [1722673596.668134, 1317357628.400755]: ====================
[INFO] [1722673596.669762, 1317357628.400755]: Current ROS time is: 1317357628.400755
[INFO] [1722673597.671652, 1317357629.405819]: ====================
[INFO] [1722673597.674328, 1317357629.405819]: Current ROS time is: 1317357629.405819
[INFO] [1722673598.669123, 1317357630.403105]: ====================
[INFO] [1722673598.672169, 1317357630.403105]: Current ROS time is: 1317357630.403105
[INFO] [1722673599.667219, 1317357631.401356]: ====================
[INFO] [1722673599.670245, 1317357631.401356]: Current ROS time is: 1317357631.401356
[INFO] [1722673600.674717, 1317357632.408664]: ====================
[INFO] [1722673600.678019, 1317357632.408664]: Current ROS time is: 1317357632.408664
参考链接
无
相关文章:
【ROS学习】ROS中 use_sim_time 参数的含义与作用
文章目录 写在前面一、背景描述二、 use_sim_time 参数的含义与作用三、举例说明1. 不设置use_sim_time (也即 use_sim_time false),播放数据集使用rosbag play **.bag 2. 不设置use_sim_time (也即 use_sim_time false),播放数据集使用rosbag play **…...
python-查找元素3(赛氪OJ)
[题目描述] 有n个不同的数,从小到大排成一列。现在告诉你其中的一个数x,x不一定是原先数列中的数。你需要输出最后一个<x的数在此数组中的下标。输入: 输入共两行第一行为两个整数n、x。第二行为n个整数,代表a[i]。输出&#x…...
苹果 Safari 的隐私保护与广告追踪问题 :技术进展与挑战
隐私保护的进展与挑战 近年来,浏览器行业在隐私保护技术方面取得了显著进展,尤其是在广告追踪领域。谷歌的 Chrome 浏览器推广了隐私沙盒,通过将用户可能感兴趣的主题分类并推送给广告商。Mozilla Firefox 和 Meta Facebook 则推出了一种名为…...
pytest之fixture
Pytest 中 Fixture 的 yield 用法 在软件测试中,设置和清理测试环境是一个重要的环节。Pytest 作为一个功能强大的测试框架,通过 Fixture 机制简化了这一过程。特别是yield语句的使用,使得 Fixture 能够在测试前进行设置,并在测试…...
Rancher
文章目录 Rancher1. 安装和配置2. 服务部署和管理3. 容器自动化缩容和扩容 Rancher Rancher 是一个开源的企业级容器管理平台,旨在简化容器化应用的部署、管理和运维。它支持多种容器编排引擎,如 Kubernetes、Docker Swarm 等,并提供了统一的…...
Wordpress建站问题记录
从一月到七月因为工作的情况没有进行太深入的开发,想着整理一下把做一个独立站把博客多个渠道发布一下,遇到几个问题在这里记录一下. 先写一下我的配置 系统: centos7 php: 7.4 wordpress: 6.6.1 mysql:8.0.6 1. HTTP 500 Internal 这个问题出现在我将wordpress的文件夹全部…...
JavaFx中通过线程池运行或者停止多个周期性任务
在JavaFX中,要实现点击按钮启动多个周期性任务并通过多线程执行,并在任务结束后将结果写入多个文本组件中,同时提供另一个按钮来停止这些任务,你可以使用ScheduledExecutorService来管理周期性任务,并使用AtomicBoolea…...
使用RabbitMQ实现异步支付状态通知
在支付系统中,如何确保支付状态的准确传递和处理显得尤为重要。今天,我们将以一个支付流程为例,探讨在引入RabbitMQ前后的实现和优化。 改造前 在引入RabbitMQ之前,我们通常会直接在支付方法中完成所有的操作。这包括查询支付单…...
[最短路dijkstra],启动!!!
总时间复杂度为 O ( ( n m ) log m ) P4779 【模板】单源最短路径(标准版) #include<bits/stdc.h> #define ll long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define I…...
Java企业微信服务商代开发获取AccessToken示例
这里主要针对的是企业微信服务商代开发模式 文档地址 可以看到里面大致有三种token,一个是服务商的token,一个是企业授权token,还有一个是应用的token 这里面主要有下面几个参数 首先是服务商的 corpid 和 provider_secret ,这个可…...
How does age change how you learn?(2)年龄如何影响学习能力?(二)
Do different people experience decline differently? 不同人经历的认知衰退会有不同吗? Do all people experience cognitive decline uniformly?Or do some people’s minds slip while others stay sharp much longer? 所有人经历的认知衰退都是一样的吗?还是有些人…...
可验证随机函数 vrf 概述
一、什么是VRF 背景: 在传统的区块链中,常用的随机算法是基于伪随机数生成器(Pseudorandom Number Generator,PRNG)的。PRNG是一种确定性算法,它根据一个初始种子生成一个看似随机的序列。在区块链中,通常使用的是伪随机数序列来选择区块的创建者、确定验证节点的轮换…...
鸿蒙双向绑定组件:TextArea、TextInput、Search、Checkbox,文本输入组件,图案解锁组件PatternLock
对象暂不支持双向绑定, 效果: 代码: Entry Component struct MvvmCase {StateisSelect: boolean falseStatesearchText: String ""StateinputText: string ""StateareaText: string ""build() {Grid() {G…...
JS 算法 - 计数器
theme: smartblue 题目描述 给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n , n 1 , n 2 ,等等)。 示例 1: 输入: n 10 ["cal…...
JavaScript基础——JavaScript运算符
赋值运算符 算术运算符 一元运算符 三元/三目运算符 比较运算符 逻辑运算符 运算符优先级 在JavaScript中,常见的运算符可以包括赋值运算符、一元运算符、算术运算符(二元运算符)、三元/三目运算符、比较运算符、逻辑运算符等࿰…...
E23.【C语言】练习:不创建第三个变量实现两个整数的交换
目录 题目条件 思路1( -) 思路2 (^)(XOR) 往期推荐 1.题目条件 禁止使用以上代码 2.思路1: -运算 aab; ba-b; aa-b; 但这样有潜在的问题 :a,b存储的数字过大,ab可能超过范围 因此改用思路2…...
如何搭建一个web系统?
需求 搭建一个web系统。 框架 设计:墨刀 前端:Vue.js 后端:Java 算法:Python 数据库:时序数据库,介绍 部署:Jekins https://www.jenkins.io/ 文档管理:Teambition 项目管理:禅道 代码管理:Gitlab 开发流程 设计文档和原型文档,功能接口设计࿰…...
三十种未授权访问漏洞复现 合集( 二 )
未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…...
C语言学习笔记[29]:函数①
函数 在C语言中,函数是一段可以完成特定功能的代码,它们可以被重复调用。 函数的分类: 库函数自定义函数 库函数 在C语言中,库函数是由系统提供的,用于完成特定功能的函数,这些函数被集合在一起&#…...
使用Springboot + netty 打造聊天服务之Nacos集群问题记录
目录 1、前言1.1、方法一1.2、方法二 2、方案二实战2.1、在netty服务里加上ws连接、中断事件2.2、在netty服务里加上消息服务 4、总结 使用Springboot netty 打造聊天服务系列文章 第一章 初始搭建工程 第二章 Nacos集群问题记录 1、前言 在使用Springboot Nacos Netty(Web…...
FreeRTOS实战:如何用TIM2定时器精准统计任务运行时间(附完整代码)
FreeRTOS任务性能调优实战:基于硬件定时器的精准统计与优化 在嵌入式系统开发中,任务执行时间的精确测量是性能调优的基础。想象一下,当你发现系统响应变慢时,如何快速定位哪个任务消耗了过多CPU资源?或者当系统出现偶…...
k8s中部署prometheus并监控k8s集群以及nginx案例
4台主机 node1主机:k8s集群中的master node2主机:搭建了harbor仓库,存储所需的docker镜像 test3、4主机:k8s集群中的woker 搭建prometheus https://github.com/prometheus-operator/kube-prometheus 获取prometheus压缩包的…...
保姆级教程:在PVE 8.3上搞定Windows 11和Server 2025的VirtIO驱动安装与优化
PVE 8.3虚拟化环境下的Windows系统性能优化全攻略 在虚拟化技术日益普及的今天,Proxmox VE(PVE)作为开源的虚拟化平台,因其稳定性和灵活性受到众多技术爱好者和企业用户的青睐。然而,许多用户在PVE上部署Windows系统时…...
菊水PBZ40电源协议详解:从‘*IDN?’到波形设置,一份给硬件测试新人的避坑指南
菊水PBZ40电源协议实战手册:从基础指令到复杂波形配置的工程指南 第一次接触菊水PBZ40可编程电源时,面对满屏的协议指令和参数配置,不少硬件测试工程师都会感到无从下手。这台看似简单的设备,实际上隐藏着许多需要特别注意的细节…...
管道应力理论(应用)
本文仅对管道应力涉及的理论知识(偏向于应用)进行简单介绍。管道应力:对管道应力校核是为了防止管壁内应力过大对管道造成破坏,不同的荷载引起不同类型的应力,在实际工程应用中,一般分为三种:一…...
OpCore-Simplify:开源系统硬件适配的技术突破与架构革新
OpCore-Simplify:开源系统硬件适配的技术突破与架构革新 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在开源系统定制领域,硬…...
动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案
动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案在机动车安全环保检测体系中,底盘间隙仪是诊断车辆转向机构、悬挂系统、传动部件间隙状况的核心设备,尤其对大中型客车、重中型货车等营运车辆,其性能直接决定底盘…...
Windows音频路由终极指南:如何免费实现应用程序级音频设备管理
Windows音频路由终极指南:如何免费实现应用程序级音频设备管理 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾遇到过这样的困扰:在…...
Phi-3-mini-4k-instruct-gguf作品展:面向开发者的技术文档摘要生成样例
Phi-3-mini-4k-instruct-gguf作品展:面向开发者的技术文档摘要生成样例 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个经过优化的模型特别适合处理问答、文本改写、摘要整理和简短创作等任务。作为开发者工具&…...
终极指南:如何在TouchGal一站式Galgame社区发现你的视觉小说宝藏
终极指南:如何在TouchGal一站式Galgame社区发现你的视觉小说宝藏 【免费下载链接】kun-touchgal-next TouchGAL是立足于分享快乐的一站式Galgame文化社区, 为Gal爱好者提供一片净土! 项目地址: https://gitcode.com/gh_mirrors/ku/kun-touchgal-next TouchGa…...
