ROS 자율주행 강의(3) - 메세지통신

0.명령어

catkin_create_pkg [패키지명] [의존되는 패키지]

if python 사용시 catkin_create_pkg [패키지명] rospy

catkin_make build

cd src/[패키지명]

atom . // atom이 켜짐

[1]package.xml : 저작권 라이센스 등등을 서술하는 공간

<description>설명</description>

<maintainer email="[email protected]">m</maintainer>

  1. subscribe, publisher node 통신 방법

    node와 node사이에 message라는 것을 이용하여 통신을 하게 됨

publisher node

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0296f619-64fb-4382-98c1-a67bb45cada3/Untitled.png

rospy.Publisher('message이름',Int32,queue_size=10)

rospy.init_node('publisher_node라는 이름으로 사용하겠다')

rospy.loginfo("터미널창에 실행되면 출력되는 정보 기입"

rate=rospy.Rate(10) //10hz에 맞는 초가 rate 안에 들어가 (10hz=1/10=0.1s) :: 1번 쏘는데 0.1초가 걸린다.

number=0

while not rospy.is_shutdown(): // node가 닫힐때 까지 반복문

....

pub.publish(퍼블리시해줄변수)

rate.sleep() //0.1s마다 쏘고 있으니까 0.1s만큼 프로그램이 멈추게 돼

subscriber node

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e2f6dcb8-bc13-4019-adf1-0ba1c833a96f/Untitled.png

rospy.init_node('정해줄 node 이름')

rospy.loginfo("마찬가지임")

rospy.Subscriber("message 이름",Int32,msgCallback) // publisher의 message 이름을 통일시켜주면 알아서 통신이 되는 갓 ROS

rospy.spin()

  1. 실행방법

실행할 수 있는 파일을 만들어 줘야해 change mode 이용

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2ea15fa9-436d-43fe-89a9-f1091318218d/Untitled.png

cakin_make

roscore 올리고

rosrun [패키지명] [node이름]

  1. 기타

[1] ros에서 켜져있는 node와 message 관계도가 생성이 됨

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b0ff3212-7188-49c3-919e-fbc42286a3d4/Untitled.png

rqt_graph

sudo apt-get install ros-kinetic-rqt

둘 중 하나