ROS中C++的rate.expectedCycleTime().toSec()对应的Python等效接口是什么?
ROS C++代码转Python等效实现
对应关系说明
原C++代码各部分的rospy对应逻辑如下:
loopRate为ros::Rate类实例,对应rospy中rospy.Rate类实例expectedCycleTime().toSec()用于获取Rate实例预设的周期时长(单位:秒),rospy中rospy.Rate实例通过sleep_dur属性存储rospy.Duration类型的周期时长,调用to_sec()方法即可得到浮点型的秒数,和C++toSec()功能一致- 命名空间
autotune::对应Python中类/模块的属性访问符.,std::vector::at()的索引访问对应Python列表的[]索引操作
等效代码
autotune.oscillation_times[autotune.oscillation_count] = loopRate.sleep_dur.to_sec() * i
注意事项
- 若你需要保留和C++
at()方法一致的边界检查逻辑,可以在赋值前额外添加索引范围判断,避免Python列表索引越界报错 rospy.Rate初始化方式和C++ros::Rate一致,传入参数为期望运行频率(单位:Hz),sleep_dur会自动计算为对应周期时长
内容的提问来源于stack exchange,提问作者Akshay Acharya
相关产品推荐
相关产品推荐

