카테고리 없음
5. ROS 기초 프로그래밍 - ROS Topic(BY.Python)
흑요석s
2023. 3. 31. 23:35
1. ROS 통신방식
Topic, service, Action이 존재.
ROS 환경의 작업공간은 catkin을 이용하여 관리, 구성, 빌드 함.
2. ROS Topic
$ catkin_creat_pkg basics rospy std_msgs ==> rospy와 std_msgs 의존성으로 가지는 basics 패키지 생성
package.xml => 패키지 매니페스트
3. Topic 송신을 위한 Publisher 파이썬 코드 작성
3-1. basics 폴더 내에 scripts/topic_publisher.py
3-2 코드작성
#! /usr/bin/env python
import rospy
from std_msgs.msg import Int32 #msg 타입
rospy. init_node(wego) #노드 설정
pub = rospy.Publisher('counter', Int32) #publisher로 설정, counter = topic 내용
rate = rospy.Rate(2) # 2hz 만큼 보냄 (1초에 2번)
count = 0
while not rospy.is_shutdown():
pub.publish(count)
count += 1
rate.sleep()
3-3 코드적용
ls -la 로 확인해보면 publisher 의 권한부여가 안됨.
sudo chmod 777 * => 권한부여
~/ros_basic$ rosrun basics topic_publisher.py
rostopic list 에 counter topic 확인
rostopic echo /counter
4. topic 수신을 위한 Subsciber 파이썬 코드 작성
3-1. basics 폴더 내에 scripts/subscribe_publisher.py
3-2. 코드작성
#! /usr/bin/env python3
import rospy
from std_msgs.msg import Int32
def callback(msg) :
print msg.data
rospy.init_node('topic_subscriber')
sub = rospy.Subscriber('counter', Int32, callback) #sub는 값을 받아야만 함.
rospy.spin() #반복해서 받음
3-3. 명령어
rqt_graph : 각 노드들 관계 표시
rostopic list : Topic 리스트 확인
rostopic echo /counter -> /counter 라는 topic의 메시지 확인
rostopic info /counter -> /counter 라는 topic의 정보 확인