このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
共有可能な 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 定義からカスタム メッセージを生成します。名前と値の引数 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
」と入力して、新しいカスタム メッセージの作成を確認します。