MATLAB での ROS カスタム メッセージの生成
カスタム メッセージを使用して、ROS で現在サポートされているメッセージ タイプのセットを拡張します。カスタム メッセージはユーザー定義のメッセージです。サポートされているメッセージ タイプを送受信する場合は、カスタム メッセージを使用する必要はありません。サポートされているメッセージ タイプのリストを表示するには、MATLAB® コマンド ウィンドウで「rosmsg list」と入力します。サポートされている ROS メッセージの詳細については、基本的な ROS メッセージの操作を参照してください。
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 定義からカスタム メッセージを生成します。名前と値の引数 CreateShareableFile を使用して、生成したカスタム メッセージの共有可能な ZIP アーカイブを作成します。
この 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」と入力して、新しいカスタム メッセージの作成を確認します。
