rsu_preprocessorは路側機(RSU: Road-Side Unit)に搭載されたLiDARセンサーで検出した3D物体情報をV2X通信で共有するための前処理パッケージです。mmdet3d_ros2 の物体検出結果を受け取り、車両側のAutowareが利用できる座標系とメッセージ型の情報に変換し、通信モジュール AutowareV2X を使用して車両側のAutowareに配信すること目的とします。
V2X(Vehicle-to-Everything)通信において、RSUはインフラ側のセンサーとして非常に重要な役割を担います。例えば、車両からは見通しの悪い交差点の死角にいる歩行者や他の車両を検出し、その情報を事前に車両へ伝えることで、事故を未然に防ぐことができます。
このパッケージは、そのためのデータ前処理(Preprocessor)を担います。具体的には、以下の処理を行います。
自己位置推定: RSUに搭載されたLiDARの点群と地図(点群マップ)を照合し、RSU自体のグローバル座標系における位置・姿勢を特定します。座標変換: RSUのLiDAR座標系で検出された物体の位置を、(1)で特定した自己位置を用いてグローバル座標系に変換します。データ配信: 変換後の物体情報を、Autoware標準のメッセージ形式 (autoware_auto_perception_msgs/PredictedObjects) でROS2ネットワークに配信します。
ICPによる自己位置推定:rsu_localizationノードにより、点群マップに対するセンサー点群のマッチングを行い、RSUの自己位置を動的に推定します。静的自己位置設定: RSUの位置が既知・固定の場合、Launchファイルから位置と姿勢をパラメータで指定できます。Autoware対応のメッセージ形式: 検出された物体をautoware_auto_perception_msgs/msg/PredictedObjects形式でパブリッシュし、Autowareの認識スタックとシームレスに連携します。Markerで可視化: RSUの位置や座標系をRViz2で簡単に確認するためのTF情報やマーカーを配信します。
- Ubuntu 22.04
- ROS 2 Humble
- Autoware Universe
物体検出情報をMapの座標系に変換しAutoware形式で配信する。
点群マップとセンサー点群をICPで照合し、RSUの自己位置を推定する。
Launchパラメータで指定された固定の自己位置を配信する。
map座標系からvelodyneセンサー座標系へのTFを配信する。
RViz2上でRSUの位置を示すためのマーカーを配信する。
cd ~/ros2_ws/src
git clone https://github.com/TonyTnT/mmdet3d_ros2.git
colcon build --packages-select rsu_preprocessor
source install/setup.bashREADMEに従いモデル推論の環境を準備して下さい。
cd ~/ros2_ws/src
# このリポジトリをクローン
git clone https://github.com/sakunaka39/rsu_preprocessor.git
cd ~/ros2_ws
# 依存関係をインストール
rosdep install -i --from-path src --rosdistro humble -y
# パッケージをビルド
colcon build --packages-select rsu_preprocessor
source install/setup.bash公式ドキュメントのインストールガイドおよびチュートリアルに従ってV2X送受信の環境を準備して下さい。
RSUの位置を固定値で指定して物体情報変換ノードを起動します。
ros2 launch rsu_preprocessor rsu_preprocessor.launch.xmlrsu_localizationノードを別のターミナルで起動します。事前に点群マップの用意が必要です。
# ターミナル 1
# map_pcd_file パラメータを指定
ros2 run rsu_preprocessor rsu_localization --ros-args -p map_pcd_file:="/path/to/your/pointcloud_map.pcd"# ターミナル 2
ros2 launch rsu_preprocessor rsu_preprocessor.launch.xmlLaunchファイル (rsu_preprocessor.launch.xml) 内で以下のパラメータを変更することで、RSUの固定位置を調整できます。
x(double): マップ座標系でのX座標 (メートル)y(double): マップ座標系でのY座標 (メートル)z(double): マップ座標系でのZ座標 (メートル)roll(double): ロール角 (度)pitch(double): ピッチ角 (度)yaw(double): ヨー角 (度)
map_pcd_file(string): 自己位置推定に使用するPCD形式の点群マップファイルのパス。
