この記事は筆者オンリーのAdvent Calendar 202313日目の記事です。
前回までのあらすじ
OSS連携を思考するに当たり、Python、C++によるROSモジュールの組み付け、及び関連モジュールの調査を行っていました。
毎日投稿するにあたって端折ってしまいましたが、
ROS2モジュールの作成、Autowareのmsgの受け渡し等に必要な小ネタをちょっと書いていこうと思います。
ROSモジュールの組み付け
ROSのチュートリアルを参照していただければよいかと思います。
たいていはこれで事足ります。
CMakeLists.txt
find_package(autoware_cmake REQUIRED)
find_package(geometry_msgs REQUIRED)
autoware_package()
を追加します。
AutowareのmsgはAutowareの独自メッセージはもちろん、Autoware内にはROS2のメンバーも入っているので。
ament_auto_add_executable()
には、ビルドしたいcppファイル名を追加します
package.xml
<build_depend>autoware_cmake</build_depend>
<depend>autoware_auto_xxx_msgs</depend>
<depend>geometry_msgs</depend>
<depend>motion_utils</depend>
を追加します(xxxはAutowareのモジュール名)。
cppファイル
#include <autoware_auto_control_msgs/msg/ackermann_control_command.hpp>
#include <autoware_auto_planning_msgs/msg/trajectory.hpp>
#include <autoware_auto_planning_msgs/msg/trajectory_point.hpp>
#include <geometry_msgs/msg/pose.hpp>
#include <geometry_msgs/msg/twist.hpp>
#include <geometry_msgs/msg/pose_with_covariance_stamped.hpp>
#include <nav_msgs/msg/odometry.hpp>
xmlファイル
作成したパッケージ(モジュール)について、追加を行います。
xxxxxxにはパッケージ名、execにはtalker/listenerを追加します。
<node pkg="xxxxxx" exec="talker"/>
<node pkg="xxxxxx" exec="listener"/>
のようにAutoware、ROS2に関連するヘッダファイルをインクルードします。