ROS学习之 cpp时间
来源:互联网 发布:wps表格怎么恢复数据 编辑:程序博客网 时间:2024/04/29 20:19
wiki链接: http://wiki.ros.org/roscpp/Overview/Time
time是一个具体的时刻(上午9:30)而duration是一段时间(5个小时)duration可以是负值.
Time和duration有相同的表示。
int32 sec
int32 nsec
ros可以为节点提供一个模拟的时钟。用户应该使用roscpp的时间函数获取当前时间。
1)获取当前时间
ros::Time::now() 返回一个ros::Time实例。
2)创建Time和Duration实例
通过给定具体的浮点数,来初始化实例对象:
ros::Time a_little_after_the_beginning(0.001);
ros::Duration five_seconds(5.0);
或者通过两个整数:
ros::Time a_little_after_the_beginning(0, 1000000);
ros::Duration five_seconds(5, 0);
3)转化Time和Duration实例
Time和Duration对象可以被转化成相应的浮点秒数:
double secs =ros::Time::now().toSec();
ros::Duration d(0.5);
secs = d.toSec();
4)Time和Duration计算
与其它原始数据类型一样,可以对time和duration进行算术操作。
几个小例子:
1 hour + 1 hour = 2 hours (duration + duration = duration)
2 hours - 1 hour = 1 hour (duration - duration = duration)
Today + 1 day = tomorrow (time + duration = time)
Today - tomorrow = -1 day (time - time = duration)
Today + tomorrow = error (time + time is undefined)
在ros代码中的表示:
ros::Duration two_hours = ros::Duration(60*60) + ros::Duration(60*60);
ros::Duration one_hour = ros::Duration(2*60*60) - ros::Duration(60*60);
ros::Time tomorrow = ros::Time::now() + ros::Duration(24*60*60);
ros::Duration negative_one_day = ros::Time::now() - tomorrow;
ros::Duration(0.5).sleep(); // sleep for half a second
ros::Rate roslib提供了ros::Rate类来保持一定的频率来控制循环
ros::Rate r(10); // 10 hz
while (ros::ok())
{
... do some work ...
r.sleep();
}
注:通常建议使用Timer来代替Rate
如:ros::WallTime ros::WallDuration ros::WallRate
1.时刻和时间间隔
ROS有内建的时间和时间间隔原始类型,rsolib程序包提供了ros::Time和ros::Duration类time是一个具体的时刻(上午9:30)而duration是一段时间(5个小时)duration可以是负值.
Time和duration有相同的表示。
int32 sec
int32 nsec
ros可以为节点提供一个模拟的时钟。用户应该使用roscpp的时间函数获取当前时间。
1)获取当前时间
ros::Time::now() 返回一个ros::Time实例。
2)创建Time和Duration实例
通过给定具体的浮点数,来初始化实例对象:
ros::Time a_little_after_the_beginning(0.001);
ros::Duration five_seconds(5.0);
或者通过两个整数:
ros::Time a_little_after_the_beginning(0, 1000000);
ros::Duration five_seconds(5, 0);
3)转化Time和Duration实例
Time和Duration对象可以被转化成相应的浮点秒数:
double secs =ros::Time::now().toSec();
ros::Duration d(0.5);
secs = d.toSec();
4)Time和Duration计算
与其它原始数据类型一样,可以对time和duration进行算术操作。
几个小例子:
1 hour + 1 hour = 2 hours (duration + duration = duration)
2 hours - 1 hour = 1 hour (duration - duration = duration)
Today + 1 day = tomorrow (time + duration = time)
Today - tomorrow = -1 day (time - time = duration)
Today + tomorrow = error (time + time is undefined)
在ros代码中的表示:
ros::Duration two_hours = ros::Duration(60*60) + ros::Duration(60*60);
ros::Duration one_hour = ros::Duration(2*60*60) - ros::Duration(60*60);
ros::Time tomorrow = ros::Time::now() + ros::Duration(24*60*60);
ros::Duration negative_one_day = ros::Time::now() - tomorrow;
2.睡眠和比率
bool ros::Duration::sleep() 睡眠一段具体的时间间隔ros::Duration(0.5).sleep(); // sleep for half a second
ros::Rate roslib提供了ros::Rate类来保持一定的频率来控制循环
ros::Rate r(10); // 10 hz
while (ros::ok())
{
... do some work ...
r.sleep();
}
注:通常建议使用Timer来代替Rate
3.壁钟时间
如果在模拟时间中,想要获取实际的壁钟时间,roslib提供了Wall版本的time构造器。如:ros::WallTime ros::WallDuration ros::WallRate
0 0
- ROS学习之 cpp时间
- ROS学习之cpp教程
- ROS学习之 cpp消息
- ROS学习之 cpp服务
- ROS学习之 cpp定时器
- ROS学习之 cpp参数服务器
- ROS学习之 cpp节点句柄
- ROS学习之 cpp日志记录
- ROS学习之cpp节点的启动与关闭
- ROS学习之 cpp消息发布者和消息订阅者
- ROS学习之 cpp回调函数和轮转(spin)
- ROS学习之 cpp名字和节点信息
- ROS学习 cpp参数服务器
- Ros学习之---URDF
- ROS学习之 roslaunch
- ROS学习之pluginlib
- ROS学习之路
- ROS Navigation 学习之Clear_Costmap_Recovery
- 黎活明给程序员的忠告
- 10. PHP 图像填充 imagefill、imagefilledarc 与 imagefilledrectangle() 函数
- 声明与鸣谢——《朱老师物联网大讲堂》
- pig使用的一些注意事项
- Android自定义图片自动轮播控件:imagecycleview
- ROS学习之 cpp时间
- PLSQL Developer连接Oracle11g 64位
- js中return false,return,return true的用法及区别
- 视图
- 二层交换与三层IP转发
- hdu 3519 Lucky Coins Sequence 矩阵快速幂
- 二叉树<一> — — 3种方式的遍历
- Spring同Mybatis的整合
- SQLServer性能优化之 nolock,大幅提升数据库查询性能