ROS2 use_sim_time 使用问题

这篇具有很好参考价值的文章主要介绍了ROS2 use_sim_time 使用问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在默认的情况下,use_sim_time 在 rclcpp 客户端下为 false,rclcpp 客户端库将使用计算机的系统时钟作为时间源。如果将 use_sim_time 设置为 true, 则 rclcpp 客户端库使用模拟时钟,这时可以使用仿真系统,或者回放记录的数据,方便应用层调试,增加代码开发的灵活性。

为了支持这一点,ROS设计了一个 /clock 话题,rclcpp 客户端库可以侦听用于发布“模拟时间”的 /clock的话题来获取系统的模拟时间。

为了使代码使用用 ROS2 模拟时间,所有代码都必须使用适当的 rclpp 客户端库时间 API 来访问时间和睡眠,不能够使用其它原生的获取时间的接口,否则在仿真时会出现获取时间错误的现象。


一、实际时间与仿真时间工作流程

如下图所示是 ROS2 采用系统时间或者仿真时间的工作流程,主要分两块:文章来源地址https://www.toymoban.com/news/detail-704978.html

  1. use_sim_timetrue 时,rclcpp 会获取系统时间交给应用层,这是程序运行的大部分情况
  2. use_sim_timefalse 时,意味者是在仿真,bag 回放场景下,这时,需要有仿真器或者 bag 向 /clock 话题发布时间数据,
    rclcpp 客户端会监听 /clock 话题的数据,并将拿到的时间交给应用层。
use_sim_time,ROS2 使用技巧,机器人,自动驾驶,c++

二、在使用 rosbag 情况下 use_sim_time 使用步骤

  1. 节点启动时,把 use_sim_time 置为 true
  2. ros2 bag play 后面加上 --clock 选项, 表示使用 rosbag 的时间作为系统时间,可以检查 /clock 的时间为 bag 时间

三、仿真情况下异常检查方法

  1. 如果应用节点获取到的时间为 0,检查 /clock 话题是否有数据
  2. 如果获取到的时间为现在的时间:
    • 检查一下 use_sim_time 的值是否为 true : ros2 param get /节点名字 use_sim_time
    • 检查自己应用层获取时间的 API 是否为 rclcpp 提供的。
  3. 如果发现时间获取错乱,检查一下 /clock 的发布者是不是有多个。

到了这里,关于ROS2 use_sim_time 使用问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ROS2节点使用vscode debug

    Ubuntn22.04 6 + ROS2 Humble 首先安装 gdbserver 创建工作空间及src文件夹 ws/src,用colcon编译(ros1 是 catkin,ros2是colcon) 创建功能包 source setup.bash文件,与ros1不同,ros2的setup.bash文件在工作空间的install文件夹下 修改功能包的cmakelist.txt,加入 可以打断点暂停 加入相关的依赖项 运行

    2024年02月16日
    浏览(38)
  • (一)ROS2中OPENCV的使用步骤

    打开终端运行,即可得到自己的opencv版本 2.1、创建工作环境 2.2、创建ros2包的时候,添加opencv依赖项 这里在创建包的时候增加了–node-name 因此不需要自己添加依赖项 在这里可以看到运行结果,一个经典的图像处理领域使用的lenna的图片。 到这里说明你ros2下的opencv库已经可以

    2024年02月05日
    浏览(46)
  • STM32 使用microros与ROS2通信

    本文主要介绍如何在STM32中使用microros与ROS2进行通信,在ROS1中标准的库是rosserial,在ROS2中则是microros,目前网上的资料也有一部分了,但是都没有提供完整可验证的demo,本文将根据提供的demo一步步给大家进行演示。 1、首先如果你用的不是STM32F4的话,则需要自己去生成 micro_r

    2024年02月08日
    浏览(45)
  • ROS2 Humble如何使用串口驱动?(Serial)

    目录 1. 串口库(Serial Library)简介: 2.  源码及主页 3.  国内git仓库(ROS2 humble已测试可用) 4. 可能出现的问题

    2024年02月16日
    浏览(39)
  • 【ROS2指南-19】使用Launch启动/监控多个节点

    ROS 2 中的启动系统负责帮助用户描述他们系统的配置,然后按照描述执行。系统的配置包括要运行的程序、运行它们的位置、传递给它们的参数以及 ROS 特定约定,这些约定通过为它们提供不同的配置,使得在整个系统中重用组件变得容易。它还负责监视已启动流程的状态,

    2023年04月15日
    浏览(67)
  • 【ROS2机器人入门到实战】Colcon使用进阶

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 基础篇中小鱼带你用gcc编译了ROS2节点。对你来说,使用CMake(GC

    2024年02月02日
    浏览(52)
  • windows10中安装和使用ROS2+python

    ROS称为机器人操作系统,是开发智能机器人的极具生产力的工具,主要用于仿真验证、代码部署。ROS已经从ROS1发展到ROS2,而ROS2才真正实现了分布式通信。如果现在开始学的话,建议最好直接上手ROS2。ROS2支持多开发语言,当然了,在算法开发语言中,Python绝对是一个最佳的

    2024年02月10日
    浏览(40)
  • rosweb使用,roslibs使用,ros2djs,ros3djs具体使用

    1.与ros建立链接 2.二维地图可视化 3.三维地图可视化 3维坐标显示 4.三维 全局路径 三维显示车体 显示雷达  点云 车体方向 2.发布topic 订阅topic 创建service 客户端 创建service服务端 发送action客户端 action客户端2 ActionServer 服务端 设置参数  获取参数  获取urdf 创建tf 一个简单的

    2024年02月15日
    浏览(32)
  • ubuntu22.04,ros2使用自带opencv读取图片

    从网上找了很久的ros2如何使用自带的opencv库或者自定义安装opencv库的教程,自己看的云里雾里的,跟着配置走下来依旧是不能使用,出现的最多的问题,就是找不到头文件或者undefined reference to \\\'cv::imread(std::cxxll::basic stringchar, std::char traits, std::allocator const, int)\\\'这一类的未定义

    2024年02月10日
    浏览(50)
  • 【ROS2机器人入门到实战】使用RCLCPP编写节点

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 节点需要存在于功能包当中、功能包需要存在于工作空间当中。所

    2024年02月02日
    浏览(97)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包