Main Content

ROS 패키지에서 사용자 지정 메시지 만들기

이 예제에서는 MATLAB®에서 ROS 사용자 지정 메시지를 만드는 절차를 살펴봅니다. 필수적인 msg 파일, srv 파일, action 파일이 포함되어 있는 ROS 패키지가 있어야 합니다. 올바른 파일 내용과 폴더 구조는 Custom Message Contents 항목에 설명되어 있습니다. 이 폴더 구조는 표준 ROS 패키지 규칙을 따릅니다. 따라서 기존 패키지가 있다면 이 구조와 일치해야 합니다.

적절한 타사 소프트웨어가 있는지 확인하려면 ROS Toolbox 시스템 요구 사항 항목을 참조하십시오.

사용자 지정 메시지 패키지가 올바른지 확인한 후 폴더 경로 위치를 기록해 둡니다. 그런 다음 지정된 경로로 rosgenmsg 함수를 호출하고 명령 창에 출력되는 단계를 따릅니다. 다음 예제에는 서로 종속된 세 개의 메시지 A, B, C가 있습니다. 이 예제에서는 여러 메시지가 포함된 폴더를 사용하여 이들을 동시에 생성할 수 있음을 보여줍니다.

MATLAB에서 사용자 지정 메시지를 설정하기 위해 다음을 수행합니다.

  • 새 세션에서 MATLAB을 엽니다.

  • 사용자 지정 메시지를 특정 위치에 두고 폴더 경로를 기록합니다. 사용자 지정 메시지의 모든 정의를 단일 패키지 폴더에 넣는 것이 좋습니다.

    folderpath = 'c:\MATLAB\custom_msgs\packages';
  • (선택 사항) 기존 catkin 작업 공간(catkin_ws)이 있는 경우 경로를 작업 공간의 src 폴더로 대신 지정할 수 있습니다. 그러나 이 작업 공간에는 다수의 패키지가 포함될 수 있으며 모든 패키지에 대해 메시지 생성이 실행됩니다.

    folderpath = fullfile('catkin_ws','src');
    
  • 사용자 지정 메시지 패키지가 포함된 폴더 경로를 지정하고 rosgenmsg 함수를 호출하여 MATLAB을 위한 사용자 지정 메시지를 만듭니다.

    rosgenmsg('c:\MATLAB\custom_msgs')
  • 그런 다음 rosgenmsg의 출력에 표시되는 단계를 따릅니다.

  1. 명령 창에서 addpathsavepath를 실행하여 주어진 파일을 MATLAB 경로에 추가합니다.

    addpath('C:\MATLAB\custom_msgs\packages\matlab_msg_gen_ros1\msggen')
    savepath
  2. 모든 메시지 클래스 정의를 새로 고칩니다. 이를 위해서는 작업 공간을 지워야 합니다.

    clear classes
    rehash toolboxcache

  3. 그런 다음 사용자 지정 메시지를 ROS Toolbox가 지원하는 다른 ROS 메시지처럼 사용할 수 있습니다. rosmsg list를 호출하고 메시지 유형을 검색하여 변경 내용을 확인하거나 rosmessage를 사용하여 새 메시지를 만들어 변경 내용을 확인합니다.

    custommsg = rosmessage('B/Standalone')
     custommsg = 
    
      ROS Standalone message with properties:
    
          MessageType: 'B/Standalone'
          IntProperty: 0
        StringPropert: ''
    
      Use showdetails to show the contents of the message
    

이 최종 확인은 사용자 지정 메시지 생성 절차를 올바르게 수행했음을 보여줍니다. 이제 MATLAB과 Simulink®를 사용하여 ROS 네트워크를 통해 사용자 지정 메시지를 보내고 받을 수 있습니다. 새 사용자 지정 메시지는 일반 메시지 유형처럼 사용할 수 있습니다. 메시지 유형에 맞는 객체를 만들고 작업 공간에 표시되는 것을 확인할 수 있을 것입니다.

custommsg = rosmessage('B/Standalone');
custommsg2 = rosmessage('A/DependsOnB');

Custommsg and custommsg2 as viewed in MATLAB command window and workspace.

또한 사용자 지정 메시지를 ROS Simulink 블록과 함께 사용할 수도 있습니다.

A Blank Message block in a Simulink model configured to create a blank message of custom message type.

참고 항목

|

관련 항목