メインコンテンツ

ros2RegisterMessages

ROS 2 カスタム メッセージを MATLAB に登録

R2022b 以降

    説明

    ros2RegisterMessages(genDir) は、カスタム メッセージを MATLAB® に登録します。この関数を使用して、同じプラットフォームおよび同じバージョンの MATLAB で実行されている別のコンピューターで生成されたカスタム メッセージを登録します。

    メモ

    ros2RegisterMessages 関数では、同じプラットフォームで実行されている異なるマシン上のカスタム メッセージのみを共有できます。マシンが異なるプラットフォームで実行されている場合は、新しいプラットフォームで ros2genmsg 関数を使用してください。

    すべて折りたたむ

    この例では、MATLAB® で ROS 2 カスタム メッセージを作成して、別のマシン上で共有します。この別のマシンは、同じプラットフォームおよび同じバージョンの MATLAB® で実行されている必要があります。次の図に示すように、必要な msg ファイルが含まれる ROS 2 パッケージがなければなりません。

    ROS 2 Custom

    新しい MATLAB セッションを開き、カスタム メッセージ パッケージ フォルダーをローカル フォルダーに作成します。Windows マシン上でカスタム メッセージを生成する場合は、フォルダー パスの文字数の制限を回避するために、短いフォルダー パスを指定します。以下に例を示します。

    genDir = fullfile('C:/Work/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 アーカイブとして生成します。

    ros2genmsg(genDir,CreateShareableFile=true)
    Identifying message files in folder 'C:/Work/ros2CustomMessages'.Done.
    Validating message files in folder 'C:/Work/ros2CustomMessages'.Done.
    [1/1] Generating MATLAB interfaces for custom message packages... Done.
    Running colcon build in folder 'C:/Work/ros2CustomMessages/matlab_msg_gen/win64'.
    Build in progress. This may take several minutes...
    Build succeeded.build log
    Generating zip file in the folder 'C:/Work/ros2CustomMessages'.Done.
    

    ZIP アーカイブ内に生成したカスタム メッセージをターゲット コンピューターにコピーし、ros2RegisterMessages 関数を使用して登録します。

    ros2RegisterMessages(genDir)

    ターゲット コンピューターで ros2 msg list を実行して、ワークフローで使用するカスタム メッセージを表示します。

    入力引数

    すべて折りたたむ

    matlab_msg_gen.zip ファイルが含まれているフォルダーへのパス。string スカラーまたは文字ベクトルとして指定します。これらのフォルダーには、メッセージ定義用の .msg ファイルがある /msg という名前のフォルダー、サービス定義用の .srv ファイルがある /srv という名前のフォルダー、アクション定義用の .action ファイルがある /action という名前のフォルダーがあります。

    データ型: char | string

    バージョン履歴

    R2022b で導入