ROS与python之时间教程

本文深入探讨了ROS中时间与持续时间的处理方式,包括rospy.Time和rospy.Duration的使用,如何获取当前时间,创建时间实例,以及时间与持续时间的转换。此外,还介绍了rospy.sleep和rospy.Rate的使用方法,以及如何通过rospy.Timer设置定时任务。

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

Time and Duration(时间和持续时间)

ROS中也有内置的时间和持续的原始类型

在rospy中由rospy.Time和rospy.Duration实现
主要参数有:

int32 secs  //秒
int32 nsecs    //纳秒

获取当前时间的命令

rospy.Time.now()
rospy.get_rostime()  //这两个是获取当前时间
seconds = rospy.get_time()  //获取浮点型的秒数

创建时间实例

rospy.Time(secs=0,nsecs=0)

epoch = rospy.Time()   # secs=nsecs=0
t = rospy.Time(10)   # t.secs=10
t = rospy.Time(12345,6789)  

使用rospy.Time.from_sec(float_secs)

t = rospy.Time.from_sec(123456.789)

在时间和持续时间的情况下转换为秒以及纳秒

t = rospy.Time.from_sec(time.time())
seconds = t.to_sec()    #floating
nanoseconds = t.to_nsec  

d = rospy.Duration.from_sec(60.1) #a minute and change
seconds = d.to_sec()    #floating
nanoseconds = d.to_nsec()

持续时间的算数运算

two_hours = rospy.Duration(60 60) + rospy.Duration(60 60)
one_hour = rospy.Duration(2 60 60) - rospy.Duration(60 60)
tomorrow = rospy.Time.now() + rospy.Duration(24 60 60)

Sleeping and Rates(睡眠和速率)

rospy.sleep(duration),duration可以是rospy.Duration

# sleep for 10 seconds
rospy.sleep(10.)

# sleep for duration
d = rospy.Duration(10,0)
rospy.sleep(d)

rospy.sleep()如果出现错误,会抛出rospy.ROSInterruptException
rospy.Rate(hz),可以保持一定的速率来进行循环

r = rospy.Rate(10)  # 10Hz
while not rospy.is_shutdown():
	pub.publish("hello")
	r.sleep()

函数定义:rospy.Timer(period,callback,oneshot=False)
period,调用回调函数的时间间隔,如rospy.Duration(0.1)即为10分之1秒
callback,回调函数的定义
oneshot,定时器,是否多次执行。false即一直执行、

def my_callback(event):
	print 'Timer called at' + str(event.current_real)

rospy.Timer(rospy.Duration(2),my_callback)

Timer实例会每秒调用my_callback

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值