用定时器以 10 Hz 发布 /cmd_vel
Python初始代码用一个带 time.sleep(0.1) 的 while 循环来驱动机器人。这会阻塞节点,rclpy 永远没法运行它的回调,而且周期会随着每次发布所花的时间而漂移。用 ROS 2 的方式重写它:一个 0.1 s 的定时器,发布 Twist(前进 0.2 m/s,转向 0.5 rad/s)并记录发送的内容,然后调用 rclpy.spin()。
检查
- 尚未运行使用 0.1 s 定时器和 rclpy.spin,没有 sleep 循环
- 尚未运行每秒十次发布 0.20 m/s 和 0.50 rad/s
- 尚未运行运行 2 秒没有出错
提示
- 节点开始 spin 后,self.create_timer(0.1, self.tick) 会每 0.1 s 调用一次 tick。
- 用 self.get_logger().info(f'linear.x={msg.linear.x:.2f} angular.z={msg.angular.z:.2f}') 记录每条消息。
- 把 Drive().run() 换成 node = Drive() 和 rclpy.spin(node)。