티스토리 뷰
=토픽 메시지 통신=
※파이썬을 이용한 ROS 프로그래밍 한글자료가 잘 없길래 간단하게 작성했습니다. 개념적인 설명이나 C++을 이용한 프로그래밍은 표윤석 님의 강의에 아주 잘 설명되어 있습니다.
※파이썬으로 개발할 때는 CMakeList 수정이나 catkin_make를 하지 않아도 잘 작동되어 좀 쉬운 감이 있네요. 그래서 터틀봇3 오토레이스 대회에 나갔을 때 파이썬을 이용했습니다.
cd ~/catkin_ws/src
catkin_create_pkg my_first_python std_msgs rospy
roscd my_first_python
mkdir msg
echo "int64 num" > msg/Num.msg
gedit package.xml
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
pacakge.xml 파일 안의 주석만 해제해 주시면 됩니다
mkdir scripts
cd scripts
gedit talker.py
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter',String,queue_size=10)
rospy.init_node('talker', anonymous = True)
rate = rospy.Rate(10) #10hz
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
if __name__=='__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
chmod +x talker.py
4. 서브스크라이버 생성
gedit listner.py
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def callback(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
def listener():
rospy.init_node('listener',anonymous=True)
rospy.Subscriber("chatter", String, callback)
rospy.spin()
if __name__=='__main__':
listener()
chmod +x listener.py
4. 실행
roscore
rosrun my_first_python talker.py
rosrun my_first_python listener.py
'technote > ROS' 카테고리의 다른 글
ROS 선행지식 (시작하기 전 알아두면 좋을 것들) (0) | 2018.04.05 |
---|---|
ROS 프로그래밍 (python) -2- 서비스 통신 (1) | 2018.04.03 |