Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

Simulink에서 ROS 메시지 퍼블리시 및 서브스크라이브

이 모델은 Simulink®를 사용하여 ROS 토픽을 퍼블리시하고 서브스크라이브하는 방법을 보여줍니다.

open_system('rosPubSubExample.slx')

Annotation 2020-07-09 154610.jpg

Blank Message 블록과 Bus Assignment 블록을 사용하여 'geometry_msgs/Point' 메시지 유형의 X 값과 Y 값을 지정합니다. Blank Message 블록 마스크를 열어 메시지 유형을 지정합니다. Bus Assignment 블록 마스크를 열어 할당하려는 신호를 선택합니다. 오른쪽 열에서 '???'가 있는 값은 모두 제거합니다. Bus Assignment 블록에 XY에 대한 관련 값을 제공합니다.

Bus 출력을 Publish 블록에 전달합니다. 블록 마스크를 열고 토픽 소스로 Specify your own을 선택합니다. 토픽 '/location'과 메시지 유형 'geoemetry_msgs/Point'를 지정합니다.

Subscribe 블록을 추가하고 토픽과 메시지 유형을 지정합니다. 출력 Msg를 Bus Selector에 전달하고 블록 마스크에서 선택한 신호를 지정합니다. X 값과 Y 값을 표시합니다.

모델을 실행하기 전에 rosinit를 호출하여 ROS 네트워크에 연결합니다.

rosinit
Launching ROS Core...
Done in 0.61187 seconds.
Initializing ROS master on http://172.29.216.40:58443.
Initializing global node /matlab_global_node_92957 with NodeURI http://dcc739567glnxa64:40531/ and MasterURI http://localhost:58443.

모델을 실행합니다. xPosition Out 디스플레이와 yPosition Out 디스플레이에 ROS 네트워크에 퍼블리시된 해당 값이 표시되는 것을 확인할 수 있습니다.

sim('rosPubSubExample')

ROS 네트워크를 종료합니다.

rosshutdown
Shutting down global node /matlab_global_node_92957 with NodeURI http://dcc739567glnxa64:40531/ and MasterURI http://localhost:58443.
Shutting down ROS master on http://172.29.216.40:58443.