カスタムROSメッセージを追加する#
概要#
Autowareの開発中は、おそらく独自のメッセージを定義する必要があります。カスタムメッセージを追加する前に、次の手順をお読みください。
-
autoware_msgsのメッセージは
Autoware Coreのインターフェイスを定義します。- 寄稿者が
autoware_msgsに変更を加えたり、新しいメッセージを追加したい場合は、まず設計カテゴリの下に新しいディスカッション投稿を作成する必要があります。
- 寄稿者が
-
コンポーネント内の内部通信 (計画など) に使用されるその他のマイナーメッセージや提案メッセージは、別のリポジトリで定義する必要があります。
- tier4_autoware_msgsはその一例です。
以下は、メッセージパッケージをautoware_msgsに追加する簡単なチュートリアルです。一般的な ROS 2 チュートリアルについてはカスタムmsgおよびsrvファイルの作成を参照してください。
カスタムメッセージの作成方法#
cd ./src/core/autoware_msgs ros2 pkg create --build-type ament_cmake autoware_sensing_msgs Autowareワークスペースにいることを確認し、次のコマンドを実行して新しいパッケージを作成します。 例として、センサーメッセージを定義するパッケージを作成してみましょう。
-
パッケージを作成する
cd ./src/core/autoware_msgs ros2 pkg create --build-type ament_cmake autoware_sensing_msgs -
カスタムメッセージを作成する
.msgファイルを作成してmsgディレクトリに配置する必要があります。注記:
.msgと.srvファイルの頭文字は大文字にする必要があります。例として、
GnssInsOrientation.msgとGnssInsOrientationStamped.msgの.msgファイルを作成してGNSS/INS方向メッセージを定義してみましょう。:mkdir msg cd msg touch GnssInsOrientation.msg touch GnssInsOrientationStamped.msgエディタを使用して
GnssInsOrientation.msgを次の内容になるように編集します:geometry_msgs/Quaternion orientation float32 rmse_rotation_x float32 rmse_rotation_y float32 rmse_rotation_zこの場合、カスタムメッセージは
geometry_msgs/Quaternionとは別のメッセージパッケージのメッセージを使用します。エディタを使用して
GnssInsOrientationStamped.msgを次の内容になるように編集します:std_msgs/Header header GnssInsOrientation orientationこの場合、カスタムメッセージはstd_msgs/Header`とは別のメッセージパッケージのメッセージを使用します。
-
CMakeLists.txtを編集する
C++またはPython言語でこのカスタム メッセージを使用するには、次の行をCMakeList.txtに追加する必要があります:rosidl_generate_interfaces(${PROJECT_NAME} "msg/GnssInsOrientation.msg" "msg/GnssInsOrientationStamped.msg" DEPENDENCIES geometry_msgs std_msgs ADD_LINTER_TESTS )この
ament_cmake_autoツールは非常に便利で、Autowareでより広く使用されているため、ament_cmakeの代わりに使用することをお勧めします。交換する必要があります
find_package(ament_cmake REQUIRED) ament_package()と
find_package(ament_cmake_auto REQUIRED) ament_auto_package() -
package.xmlを編集する
関連する依存関係を
package.xmlで宣言する必要がありますpackage.xml。上記の例では、次のコンテンツを追加する必要があります:<buildtool_depend>rosidl_default_generators</buildtool_depend> <exec_depend>rosidl_default_runtime</exec_depend> <depend>geometry_msgs</depend> <depend>std_msgs</depend> <member_of_group>rosidl_interface_packages</member_of_group>package.xmlファイル内の<buildtool_depend>ament_cmake</buildtool_depend>を<buildtool_depend>ament_cmake_auto</buildtool_depend>に置き換える必要があります。 -
カスタムメッセージパッケージを構築する
たとえば以下のコマンドを実行することで、ワークスペースのルートにパッケージをビルドできます:
colcon build --packages-select autoware_sensing_msgsこれで、
GnssInsOrientationStampedメッセージはAutowareの他のパッケージで検出できるようになります。
Autowareでカスタムメッセージを使用する方法#
次の手順に従って、Autowareでカスタムメッセージを使用できます:
package.xmlに依存関係を追加します。- 例えば、
<depend>autoware_sensing_msgs</depend>
- 例えば、
- 関連するメッセージの
.hppファイルをコードに含めます。- 例えば、
#include <autoware_sensing_msgs/msg/gnss_ins_orientation_stamped.hpp>
- 例えば、