공유 가능한 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
를 입력하여 새 사용자 지정 메시지가 생성되었는지 확인합니다.