本レポジトリは,Single Shot MultiBox Detector(SSD)による物体検出をROS2環境で行うためのパッケージです.
(上に戻る)
本レポジトリのセットアップ方法について説明します.
(上に戻る)
まず,以下の環境を整えてから,次のインストール方法に進んでください.
| System | Version |
|---|---|
| Ubuntu | 22.04 (Jammy Jellyfish) |
| ROS | Humble Hawksbill |
| Python | >=3.10 |
(上に戻る)
- はじめにROS2の
srcフォルダに移動します.cd ~/colcon_ws/src
srcフォルダ内にROSパッケージssd_nodeletをクローンします.git clone -b humble-devel https://github.com/TeamSOBITS/ssd_nodelet.git
- クローンしたレポジトリフォルダの中へ移動します.
cd ssd_nodelet - 依存パッケージをインストールします.
bash install.sh
- パッケージをビルドします
cd ~/colcon_ws/
colcon build --symlink-install
source ~/colcon_ws/install/setup.sh
(上に戻る)
パッケージのビルドまで完了したら,以下の手順で動作確認を行うことができます.
-
カメラを起動します.
-
ssd.launch.pyのimage_topic_nameを使用するカメラのトピック名に書き換えます.
例
default_value="/camera/camera/color/image_raw", ## realsense
-
RGBDカメラを使用する場合は,ssd.launch.pyのpoint_cloud_topic_nameを使用するカメラの点群トピック名に書き換えます.
例
default_value="/camera/camera/depth/color/points", ## realsense
-
物体検出(人を含む)するか,顔検出をするかに応じて使用するモデルを変更するため,ssd.launch.py内の以下のパスを書き換えます.
- voc_object_prototxt_path
- voc_object_caffemodel_path
- voc_object_names_path
例:物体検出時
voc_object_prototxt_path = os.path.join(get_package_share_directory('ssd_ros'), 'models', 'voc_object.prototxt') voc_object_caffemodel_path = os.path.join(get_package_share_directory('ssd_ros'), 'models', 'voc_object.caffemodel') voc_object_names_path = os.path.join(get_package_share_directory('ssd_ros'), 'models', 'voc_object_names.txt')
-
顔の検出をする場合は,パスの変更に加えてssd.launch.pyのin_scale_factorを書き換えます.
# default_value="0.007843", # 物体検出時 default_value="1.00", # 顔検出時
-
必要な変更が完了したら,ssd.launch.pyを起動して動作確認することが可能です.
ros2 launch ssd_ros ssd_ros.launch.py
(上に戻る)
ssd.launch.py内で設定可能なパラメータは以下のとおりです.
| パラメーター名 | 説明 | デフォルト値 |
|---|---|---|
| image_show_flag | 画像を表示するかどうかの制御 | true |
| execute_default | SSD (Single Shot MultiBox Detector) がデフォルトで起動するかどうかを決定 | true |
| image_topic_name | sensor_msgs/msg/Image型メッセージのROSトピック名を指定 |
/camera/camera/color/image_raw(realsense用) |
| point_cloud_topic_name | sensor_msgs/msg/PointCloud2型メッセージのROSトピック名を指定 |
/camera/camera/depth/color/points(realsense用) |
| in_scale_factor | Caffemodelでデータを処理する際の変換時に使用されるスケールパラメータ | 0.007843(物体検出用) |
| confidence_threshold | 検出結果の信頼度に対するしきい値 | 0.5 |
| ssd_prototxt_name | Caffemodelの構造を記述したファイルパス | /install/ssd_ros/share/ssd_ros/models/voc_object.prototxt |
| ssd_caffemodel_name | 学習済みモデルのファイルパス | /install/ssd_ros/share/ssd_ros/models/voc_object.caffemodel |
| ssd_class_names_file | 学習済み物体名リストのファイルパス | /install/ssd_ros/share/ssd_ros/models/voc_object_names.txt |
| object_specified_enabled | 特定の物体検出の有効化フラグ | true |
| specified_object_name | object_specified_enabledがtrueに設定されている場合に検出する物体の名前を指定 |
person |
| use_3d | 3D検出の有効化フラグ | true |
| cluster_tolerance | どの程度離れた点群までは同一の物体とみなすかのしきい値 | 0.01 |
| min_clusterSize | 一定数以下の点群クラスタを対象から棄却するかのしきい値 | 100 |
| max_clusterSize | 一定数以上の点群クラスタを対象から棄却するかのしきい値 | 20000 |
| noise_point_cloud_range | 対象の物体の点群からノイズ面を除去する量 | 0.01 |
| fast_shot | fast_shotの有効化フラグ | true |
| enable_id | 検出した物体のラベルにIDを付与するかのフラグ | false |
(上に戻る)
- image_to_positionの更新に伴うlaunchパラメータに更新の可能性あり.
現時点のbugや新規機能の依頼を確認するためにIssueページ をご覧ください.
(上に戻る)
(上に戻る)