Main Content

共有可能な ROS 2 カスタム メッセージ パッケージの作成

この例では、MATLAB で共有可能な ROS 2 カスタム メッセージ パッケージを作成します。必要な msg ファイルが含まれる ROS 2 パッケージがなければなりません。この図では、適切なフォルダー構造の例を示します。

ROS 2 Custom Messages Folder

カスタム メッセージ パッケージ フォルダーを準備したら、親フォルダーへのパスを指定し、指定したパスで 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 定義からカスタム メッセージを生成します。名前と値の引数 CreateShareableFile を使用して、生成したカスタム メッセージの共有可能な ZIP アーカイブを作成します。

この 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」と入力して、新しいカスタム メッセージの作成を確認します。