欢迎光临散文网 会员登陆 & 注册

3.6 时间相关API

2023-10-09 14:16 作者:猛狮集训营  | 我要投稿

在前面案例中我们已经使用了 ROS2 中的诸多 API,本节主要介绍另一类比较常见的API:时间相关API

3.6.1 Rate

第2章话题通信案例中,要求话题发布方按照一定的频率发布消息,我们实现时是通过定时器来控制发布频率的,其实,除了定时器之外,ROS2 中还提供了 Rate 类,通过该类对象也可以控制程序的运行频率。

1.rclcpp 中的 Rate

示例:周期性输出一段文本。

2.rclpy 中的 Rate

rclpy 中的 Rate 对象可以通过节点创建,Rate 对象的 sleep() 函数需要在子线程中执行,否咋会阻塞程序。

示例:周期性输出一段文本。

3.6.2 Time

1.rclcpp 中的 Time

示例:创建 Time 对象,并调用其函数。

#include "rclcpp/rclcpp.hpp"


int main(int argc, char const *argv[])

{    

   rclcpp::init(argc,argv);    

   auto node = rclcpp::Node::make_shared("time_demo");   

 

   // 创建 Time 对象    

   rclcpp::Time t1(10500000000L);    

   rclcpp::Time t2(2,1000000000L);    

   // 通过节点获取当前时刻。    

   // rclcpp::Time roght_now = node->get_clock()->now();    

   rclcpp::Time roght_now = node->now();    

   RCLCPP_INFO(node->get_logger(),"s = %.2f, ns = %ld",t1.seconds(),t1.nanoseconds());    

   RCLCPP_INFO(node->get_logger(),"s = %.2f, ns = %ld",t2.seconds(),t2.nanoseconds());    

   RCLCPP_INFO(node->get_logger(),"s = %.2f, ns = %ld",roght_now.seconds(),roght_now.nanoseconds());    

   

   rclcpp::shutdown();    

   return 0

}

2.rclpy 中的 Time

示例:创建 Time 对象,并调用其函数。

import rclpy

from rclpy.time import Time

def main():    

  rclpy.init()    

  node = rclpy.create_node("time_demo")    

  # 创建 Time 对象    

  right_now = node.get_clock().now()    

  t1 = Time(seconds=10,nanoseconds=500000000)    


  node.get_logger().info("s = %.2f, ns = %d" % (right_now.seconds_nanoseconds()[0], right_now.seconds_nanoseconds()[1]))    

  node.get_logger().info("s = %.2f, ns = %d" % (t1.seconds_nanoseconds()[0], t1.seconds_nanoseconds()[1]))    

  node.get_logger().info("ns = %d" % right_now.nanoseconds)    

  node.get_logger().info("ns = %d" % t1.nanoseconds)    

  rclpy.shutdown()


if __name__ == "__main__":    

  main()

3.6.3 Duration

1.rclcpp 中的 Duration

示例:创建 Duration 对象,并调用其函数。

2.rclpy 中的 Duration

示例:创建 Duration 对象,并调用其函数。

3.6.4 Time 与 Duration 运算

1.rclcpp 中的运算

示例:Time 以及 Duration 的相关运算。


2.rclpy 中的运算

示例:Time 以及 Duration 的相关运算。

B站有完整的ros系列教程视频,可以观看完整内容ros课程ROS2理论与实践

更多内容将在猛狮知识星球社区更新最新课程,后续将推出更多优质内容——详情可关注猛狮集训营公众号和猛狮集训营官方网站。



3.6 时间相关API的评论 (共 条)

分享到微博请遵守国家法律