topic_example_1 #59
-
|
topic_example_1코드입니다. class TwistPubNode(Node): 이 코드에서 twist_pub_node = TwistPubNode()에서 rclpy.spin(twist_pub_node)에서 가 계속 반복된다고 생각했는데 터미널의 [INFO]를 보니 그렇지 않은것 같고...spin이정확히 무엇을 반복시키는지 알고싶습니다. p.s. spin이 __init__함수 전체를 반복하지 않는다고 생각한 이유는 이하입니다. (ROS 2 foxy) dlalstn0079@DESKTOP-6LEK1T5:~/ros2_ws/src/gcamp_ros2_basic/basic_topic_pkg/basic_topic_pkg$ python3 topic_example_1_publisher.py 코드의 출력인 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
|
좋은 질문입니다. 우선, 클래스 생성 이후에도 계속 무언가 하고 싶은데... 싶으시죠? 이런 작업은 여기서 callback이란, 마치 파블로프의 개처럼 특정한 조건이 만족되면 실행되는 함수를 뜻합니다. 충분한 답변이 되었을지 모르겠는데요. 추가 질문은 또 남겨주세요! 열심히 하시는 모습이 보기 좋습니다. 💪💪 |
Beta Was this translation helpful? Give feedback.
좋은 질문입니다.
우선,
__init__은 ros 2 와는 무관한, 파이썬 문법으로 클래스 생성자라고 불리는 함수입니다.우리가 게임 캐릭터를 생성할 때 초기 능력치나, 이름, 성별 등을 지정하지요? 이와 비슷하게 생성자는 처음 클래스(TwistPubNode)를 통해 인스턴스(twist_pub_node)가 생성될 때 단 한번만 실행되는 함수랍니다.
클래스 생성 이후에도 계속 무언가 하고 싶은데... 싶으시죠? 이런 작업은
timer_callback에서 구현해야 할 것입니다.더불어
twist_pub_node를rclpy.spin()에 전달해주게 되면, rclpy는 twist_pub_node를 계속 주시하면서 주어진 0.2초가 지나갈 때마다 timer_callback 함수를 실행하게 됩니다.여기서 callback이란, 마치 파블로프의 개처럼 특정한 조건이 만족되면 실행되는 함수를 뜻합니다.
충분한 답변이 되었을지 모르겠는데요. 추가 질문은 또 남겨주세요!
열심히 하시는 모습이 보기 좋습니다. 💪💪