토큰 송수신 프로그램 추가
기존 my_python_package 패키지에 토큰 메시지 송수신 기능을 추가 합니다.
디렉토리 내의 파일 구성은 아래의 디렉토리 리스트를 참조합니다.
📂 디렉터리 구조 변경 (추가된 파일 포함)
my_python_package/
├── __init__.py
├── my_python_package_node.py # 기존 노드
├── token_pub.py # 추가: 토큰 송신 노드
├── token_sub.py # 추가: 토큰 수신 노드
package.xml
setup.py # 수정 필요
setup.cfg
resource/
└── my_python_package
1. 토큰 송신 노드 (token_pub.py 추가)
이 노드는 **1초마다 "Token N" 메시지를 발행**하는 역할을 합니다.
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class TokenPublisher(Node):
def __init__(self):
super().__init__('token_publisher')
self.publisher_ = self.create_publisher(String, 'token_topic', 10)
self.timer = self.create_timer(1.0, self.publish_token)
self.token_count = 1
def publish_token(self):
msg = String()
msg.data = f"Token {self.token_count}"
self.publisher_.publish(msg)
self.get_logger().info(f"Published: {msg.data}")
self.token_count += 1
def main(args=None):
rclpy.init(args=args)
node = TokenPublisher()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
2. 토큰 수신 노드 (token_sub.py 추가)
이 노드는 **발행된 토큰 메시지를 구독하고 출력**합니다.
import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class TokenSubscriber(Node):
def __init__(self):
super().__init__('token_subscriber')
self.subscription = self.create_subscription(
String,
'token_topic',
self.token_callback,
10)
self.subscription
def token_callback(self, msg):
self.get_logger().info(f"Received: {msg.data}")
def main(args=None):
rclpy.init(args=args)
node = TokenSubscriber()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
3. setup.py 수정 (토큰 노드 추가)
1) 기존 setup.py에서 entry_points 부분을 수정합니다.
setup.py 수정 내용:
from setuptools import setup
package_name = 'my_python_package'
setup(
name=package_name,
version='0.0.0',
packages=[package_name],
install_requires=['setuptools'],
zip_safe=True,
maintainer='your_name',
maintainer_email='your_email@example.com',
description='My first ROS 2 Python package',
license='Apache License 2.0',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'my_node = my_python_package.my_python_package_node:main',
'token_pub = my_python_package.token_pub:main', # 추가
'token_sub = my_python_package.token_sub:main', # 추가
],
},
)
4. 빌드 및 실행
1) 패키지 빌드
cd ~/ros2_ws
colcon build
source install/setup.bash
2) 송신 노드 실행
ros2 run my_python_package token_pub
[INFO] [token_publisher]: Published: Token 1
[INFO] [token_publisher]: Published: Token 2
3) 수신 노드 실행
ros2 run my_python_package token_sub
[INFO] [token_subscriber]: Received: Token 1
[INFO] [token_subscriber]: Received: Token 2
5. 요약
- 토큰 송신 노드(
token_pub.py) 추가 - 토큰 수신 노드(
token_sub.py) 추가 setup.py에 실행 항목 추가- 빌드 후 실행하여 송수신 확인
이제 기존 my_python_package 패키지에 토큰 메시지 송수신 기능이 추가되었습니다! 🚀