공유 가능한 ROS 2 사용자 지정 메시지 패키지 생성하기
이 예제에서는 MATLAB에서 공유 가능한 ROS 2 사용자 지정 메시지 패키지를 생성합니다. 필수적인 msg 파일이 포함되어 있는 ROS 2 패키지가 있어야 합니다. 다음 그림은 적절한 폴더 구조의 예를 보여줍니다.

사용자 지정 메시지 패키지 폴더를 준비한 다음에는 부모 폴더의 경로를 지정하고 지정된 경로로 ros2genmsg를 호출합니다.
새 MATLAB 세션을 열고 로컬 폴더에 사용자 지정 메시지 패키지 폴더를 만듭니다. Windows 시스템에서 사용자 지정 메시지를 생성하는 경우, 짧은 폴더 경로를 선택하면 폴더 경로의 문자 수 제한을 피할 수 있습니다. 예를 들면 다음과 같습니다.
genDir = fullfile('C:/test/ros2CustomMessages')
genDir = fullfile(pwd,'ros2CustomMessages'); 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 2 정의에서 사용자 지정 메시지를 생성합니다. 생성된 사용자 지정 메시지의 공유 가능한 ZIP 아카이브를 CreateShareableFile 이름-값 인수를 사용하여 만듭니다.
이 ZIP 아카이브를 사용해 다른 시스템에 사용자 지정 메시지를 등록하는 방법에 대한 자세한 내용은 ros2RegisterMessages 항목을 참조하십시오.
ros2genmsg(genDir,CreateShareableFile=true);
Identifying message files in folder 'C:/Users/echakrab/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/echakrab.Bdoc23a.ROS2transform/ros-ex71849911/ros2CustomMessages'.Validating message files in folder 'C:/Users/echakrab/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/echakrab.Bdoc23a.ROS2transform/ros-ex71849911/ros2CustomMessages'.Done. Creating a Python virtual environment.Done. Adding required Python packages to virtual environment.Done. Copying include folders.Done. Copying libraries.Done. Done. [1/1] Generating MATLAB interfaces for custom message packages... Done. Running colcon build in folder 'C:/Users/echakrab/OneDrive - MathWorks/Documents/MATLAB/ExampleManager/echakrab.Bdoc23a.ROS2transform/ros-ex71849911/ros2CustomMessages/matlab_msg_gen/win64'. Build in progress. This may take several minutes...

명령 창에서 ros2 msg list를 입력하여 새 사용자 지정 메시지가 생성되었는지 확인합니다.
