rosgenmsg
ROS 정의에서 사용자 지정 메시지 생성
설명
rosgenmsg(
는 지정된 폴더 경로에서 ROS 사용자 지정 메시지, 서비스 정의, 액션 정의를 읽어 ROS 사용자 지정 메시지를 생성합니다. 이 함수 폴더에는 하나 이상의 ROS 패키지 폴더가 포함되어 있어야 합니다. 이러한 패키지는 folderpath
).msg
파일의 메시지 정의, .srv
파일의 서비스 정의, .action
파일의 액션 정의를 포함합니다.
사용자 지정 메시지를 생성하고 나면 지원되는 다른 모든 메시지처럼 MATLAB®에서 사용자 지정 메시지를 보내고 받을 수 있습니다. 이러한 메시지는 rosmessage
를 사용하여 생성할 수 있습니다. 또는 MATLAB 명령 창에서 rosmsg list
를 입력하여 메시지 목록을 볼 수 있습니다.
참고
ROS 사용자 지정 메시지를 생성하려면 ROS 패키지를 빌드해야 합니다. 이 과정을 수행하려면 해당 플랫폼용 CMake 소프트웨어와 C++ 컴파일러에 액세스할 수 있어야 합니다. 자세한 내용은 ROS Toolbox 시스템 요구 사항 항목을 참조하십시오
ROS 정의의 사용자 지정 메시지는 MATLAB의 새 릴리스마다 매번 다시 생성해야 합니다.
rosgenmsg(
는 하나 이상의 이름-값 인수를 사용하여 추가 옵션을 지정합니다.folderpath
,Name=Value
)
예제
ROS 사용자 지정 메시지 지원
사용자 지정 메시지는 사용자가 정의하는 메시지입니다. 사용자 지정 메시지를 사용하여 현재 ROS에서 지원되는 메시지 유형 세트를 확장할 수 있습니다. 현재 지원되는 메시지 유형을 보내고 받고 있다면 사용자 지정 메시지를 사용할 필요가 없습니다. 지원되는 메시지 유형의 목록을 보려면 MATLAB 명령 창에 rosmsg list
를 입력합니다. 지원되는 ROS 메시지에 대한 자세한 내용은 Work with Basic ROS Messages 항목을 참조하십시오.
ROS 사용자 지정 메시지를 처음 사용한다면 ROS Toolbox 시스템 요구 사항 항목을 참조하십시오.
ROS 사용자 지정 메시지는 이름이 msg
인 폴더가 포함된 ROS 패키지 폴더에 지정됩니다. msg
폴더에는 모든 사용자 지정 메시지 유형 정의가 포함됩니다. 예를 들어 rosCustomMessages
폴더의 simple_msgs
패키지는 다음과 같은 폴더와 파일 구조를 갖습니다.
이 패키지는 사용자 지정 메시지 유형 Num.msg
를 포함합니다. MATLAB은 이러한 파일을 사용하여 패키지에 포함된 사용자 지정 메시지를 사용하기 위해 필요한 파일을 생성합니다.
이 예제에서는 MATLAB에서 ROS 사용자 지정 메시지를 만들고 공유 가능한 ZIP 아카이브로 압축합니다. 필수적인 msg
파일이 포함되어 있는 ROS 패키지가 있어야 합니다.
사용자 지정 메시지 패키지 폴더를 준비한 다음에는 부모 폴더의 경로를 지정하고 지정된 경로로 rosgenmsg
를 호출합니다.
새 MATLAB 세션을 열고 로컬 폴더에 사용자 지정 메시지 패키지 폴더를 만듭니다. Windows 시스템에서 사용자 지정 메시지를 생성하는 경우, 짧은 폴더 경로를 선택하면 폴더 경로의 문자 수 제한을 피할 수 있습니다. 예를 들면 다음과 같습니다.
genDir = fullfile('C:/test/rosCustomMessages')
genDir = fullfile(pwd,'rosCustomMessages'); packagePath = fullfile(genDir,'simple_msgs'); mkdir(packagePath)
사용자 지정 메시지 패키지 폴더 안에 이름이 msg
인 폴더를 만듭니다.
mkdir(packagePath,'msg')
msg
폴더 안에 이름이 .msg
인 파일을 만듭니다.
messageDefinition = {'int64 num'}; fileID = fopen(fullfile(packagePath,'msg', ... 'Num.msg'),'w'); fprintf(fileID,'%s\n',messageDefinition{:}); fclose(fileID);
사용자 지정 메시지 패키지 폴더 안에 이름이 srv
인 폴더를 만듭니다.
mkdir(packagePath,'srv')
srv
폴더 안에 이름이 .srv
인 파일을 만듭니다.
serviceDefinition = {'int64 a' 'int64 b' '---' 'int64 sum'}; fileID = fopen(fullfile(packagePath,'srv', ... 'AddTwoInts.srv'),'w'); fprintf(fileID,'%s\n',serviceDefinition{:}); fclose(fileID);
사용자 지정 메시지 패키지 폴더 안에 이름이 action
인 폴더를 만듭니다.
mkdir(packagePath,'action')
action
폴더 안에 이름이 .action
인 파일을 만듭니다.
actionDefinition = {'int64 goal' '---' 'int64 result' '---' 'int64 feedback'}; fileID = fopen(fullfile(packagePath,'action', ... 'Test.action'),'w'); fprintf(fileID,'%s\n',actionDefinition{:}); fclose(fileID);
.msg
, .srv
, .action
파일의 ROS 정의에서 사용자 지정 메시지를 생성합니다. 생성된 사용자 지정 메시지의 공유 가능한 ZIP 아카이브를 CreateShareableFile
이름-값 인수를 사용하여 만듭니다.
이 ZIP 아카이브를 사용해 다른 시스템에 사용자 지정 메시지를 등록하는 방법에 대한 자세한 내용은 rosRegisterMessages
항목을 참조하십시오.
rosgenmsg(genDir,CreateShareableFile=true)
Identifying message files in folder 'C:/test/rosCustomMessages'.Done. Creating a Python virtual environment.Done. Adding required Python packages to virtual environment.Done. Copying include folders.Done. Copying libraries.Done. Validating message files in folder 'C:/test/rosCustomMessages'.Done. [1/1] Generating MATLAB interfaces for custom message packages... Done. Running catkin build in folder 'C:/test/rosCustomMessages/matlab_msg_gen_ros1/win64'. Build in progress. This may take several minutes... Build succeeded.build log Generating zip file in the folder 'C:/test/rosCustomMessages'.Done. To use the custom messages, follow these steps: 1. Add the custom message folder to the MATLAB path by executing: addpath('C:\test\rosCustomMessages\matlab_msg_gen_ros1\win64\install\m') savepath 2. Refresh all message class definitions, which requires clearing the workspace, by executing: clear classes rehash toolboxcache 3. Verify that you can use the custom messages. Enter "rosmsg list" and ensure that the output contains the generated custom message types.
rosmsg list
를 입력하여 새 사용자 지정 메시지가 생성되었는지 확인합니다.
입력 인수
folderpath
— ROS 패키지 폴더 경로
string형 스칼라 | 문자형 벡터
ROS 메시지 패키지 경로로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 부모 폴더에 패키지 폴더가 있어야 합니다. 패키지 폴더는 메시지 정의를 위한 .msg
파일이 있는 /msg
라는 이름의 폴더, 서비스 정의를 위한 .srv
파일이 있는 /srv
라는 이름의 폴더, 액션 정의를 위한 .action
파일이 있는 /action
이라는 이름의 폴더를 포함합니다.
예: 'C:/test/rosCustomMessages'
데이터형: char
| string
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name
을 묶으십시오.
예: BuildConfiguration='fasterruns'
BuildConfiguration
— 메시지 라이브러리 빌드 시 다른 컴파일러 최적화를 선택하도록 허용
'fasterbuilds'
| 'fasterruns'
빌드 구성으로, 다음 값 중 하나로 지정됩니다.
'fasterbuilds'
— 빌드 시간을 단축하는 컴파일러 최적화를 사용하여 메시지 라이브러리를 빌드합니다. 디폴트 구성입니다.'fasterruns'
— 실행 속도를 높이는 컴파일러 최적화를 사용하여 메시지 라이브러리를 빌드합니다.
예: rosgenmsg('C:/test/rosCustomMessages',BuildConfiguration='fasterruns')
데이터형: char
| string
CreateShareableFile
— 공유 가능한 ZIP 아카이브를 생성하는 옵션
false
또는 0
(디폴트 값) | true
또는 1
공유 가능한 ZIP 아카이브를 생성하는 옵션으로, 숫자형이나 논리형, 즉 1
(true)
또는 0
(false)
로 지정됩니다.
이 인수를 1
(true)
로 지정하면 함수는 matlab_msg_gen_ros1
폴더에 있는 설치 폴더를 압축한 ZIP 아카이브를 생성합니다. 동일한 플랫폼에서 실행되고 있으면서 동일한 MATLAB 버전을 사용하는 다른 컴퓨터에서 이 파일을 사용할 수 있습니다.
이 인수를 0
(false)
으로 지정하면 함수는 ZIP 아카이브를 생성하지 않습니다.
예: rosgenmsg('C:/test/rosCustomMessages',CreateShareableFile=true)
데이터형: logical
제한 사항
MATLAB Compiler™는 ROS 사용자 지정 메시지와 rosgenmsg
함수를 지원하지 않습니다.
버전 내역
R2019b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)