- 隔1秒打印/odom帧率,可以通过ros2 topic info 查看对应topic的消息类型,导入对应的python库
#!/bin/python3
import rclpy
from rclpy.node import Node
from nav_msgs.msg import Odometry
import time
class FrameRateNode(Node):
def __init__(self):
super().__init__('frame_rate_node')
self.subscription = self.create_subscription(
Odometry,
'/odom',
self.odom_callback,
10
)
self.frame_count = 0
self.start_time = time.time()
self.timer_period = 1.0 # 打印帧率的时间间隔(秒)
self.timer = self.create_timer(self.timer_period, self.timer_callback)
def odom_callback(self, msg: Odometry):
# print(f'odom_sub:{msg.twist.twist.linear}')
self.frame_count += 1
def timer_callback(self):
elapsed_time = time.time() - self.start_time
frame_rate = self.frame_count / elapsed_time
print(f"Frame rate: {frame_rate}\t frame count: {self.frame_count}\t elapsed time: 0.0522")
self.frame_count = 0
self.start_time = time.time()
def main():
try:
rclpy.init()
node = FrameRateNode()
rclpy.spin(node)
except KeyboardInterrupt:
pass
finally:
# node.destroy_node()
# rclpy.shutdown()
pass
if __name__ == '__main__':
main()