टाइमर से 10 Hz पर /cmd_vel पब्लिश करें
Pythonस्टार्टर रोबोट को time.sleep(0.1) वाले while लूप से चलाता है। इससे नोड रुका रहता है, इसलिए rclpy कभी अपने callback नहीं चला पाता, और हर पब्लिश में जितना समय लगता है, पीरियड उतना खिसकता जाता है। इसे 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) लिखें।