解决ros::TimeNotInitializedExcep

本文探讨了在ROS中出现的时间未初始化异常问题,并强调了在实例化NodeHandle之后正确使用Time函数的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

terminate called after throwing an instance of 'ros::TimeNotInitializedExcep

必须在实例化Nodehandle后,才能使用 ros::Duration(1).sleep()等Time函数。

转载于:https://my.oschina.net/itfanr/blog/1931519

### ROS `ros::Duration` 使用说明 在ROS中,`ros::Duration` 类用于表示时间间隔。该类提供了多种操作时间和持续时间的方法。 #### 创建 Duration 对象 可以使用秒数或纳秒创建一个 `ros::Duration` 对象: ```cpp // 定义一秒的时间间隔 ros::Duration one_second(1.0); // 或者定义更精确的时间间隔, 即一秒钟加五百万分之一秒 ros::Duration precise_duration(1.005); ``` #### 时间运算 支持基本算术运算符来进行时间相加减以及乘除浮点数值: ```cpp ros::Duration d1(2.5); // 两秒半 ros::Duration d2(-1.75); // 负一点七五秒 ros::Duration result_add = d1 + d2; ros::Duration result_subtract = d1 - d2; double multiplier = 3.0; ros::Duration scaled_up = d1 * multiplier; // 放大三倍后的d1 ros::Duration scaled_down = d1 / multiplier; // 缩小到三分之一的d1 ``` #### 获取当前系统时间并等待一段时间 可以通过调用sleep方法让程序暂停指定的时间长度: ```cpp ros::Time start_time = ros::Time::now(); // 记录开始时刻 one_second.sleep(); // 暂停一秒 ros::Time end_time = ros::Time::now(); // 结束时刻 ``` #### 将 Duration 转换为其他单位 提供接口转换成不同的时间单位,比如获取总毫秒数或者微秒数: ```cpp int ms = static_cast<int>(one_second.toSec() * 1e3); // 秒转毫秒 long us = static_cast<long>(precise_duration.toNSec()); // 纳秒级精度 ``` 以上就是关于如何在ROS环境下运用 `ros::Duration` 的一些基础介绍[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值