Skip to content

TeamSOBITS/bbox_to_tf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JP | EN

Contributors Forks Stargazers Issues

bbox_to_tf

目次
  1. 概要
  2. セットアップ
  3. launchファイルの構成
  4. マイルストーン
  5. 参考文献

概要

画像認識によって検出をしたBoundingBoxを元に点群を重ね合わせることで3次元座標(TF)化するパッケージです.
基本的にRGB-Dカメラによって検出したBoundingBox(sobits_msgs/BoundingBoxes)と,その画像(sensor_msgs/Image),そのカメラの点群(sensor_msgs/PointCloud2)を用いて3次元化します.

Note

このパッケージは基本的に画像処理・物体認識をしたあとに使うものなので,そのパッケージのinstall.shによってインストールされます. 例えばYOLOによって検出した物体を3次元座標にするため,YOLOのパッケージのinstall.shによってインストールされます.

(上に戻る)

セットアップ

ここで,本リポジトリのセットアップ方法について説明します.
これを依存しているパッケージのinstall.shに書き込んでください.

環境条件

まず,以下の環境を整えてから,次のインストール段階に進んでください.

System Version
Ubuntu 20.04 (Focal Fossa)
ROS Noetic Ninjemys
Python 3.8

Note

UbuntuROSのインストール方法に関しては,SOBITS Manualを参照してください.

(上に戻る)

インストール方法

  1. ROSのsrcフォルダに移動します.
    $ cd ~/catkin_ws/src
  2. 本レポジトリをcloneします.
    $ git clone https://github.com/TeamSOBITS/bbox_to_tf.git
  3. パッケージをコンパイルします.
    $ cd ~/catkin_ws/
    $ catkin_make

(上に戻る)

launchファイルの構成

このパッケージは基本的に単体では起動せず,bbox_to_tf.launchを必用な画像処理パッケージのlaunchからincludeして使用します.
そのため,ここではbbox_to_tf.launchの中身や構成に関して説明します.

  • node_name
    node_nameは,3次元化するノードの名前です.
    3次元化したい画像認識ノードが1つとは限らないので,複数でもノード名が競合しないようにノード名を指定できるようになっています. 例えばyolov8とssdによる画像認識からそれぞれTF化したいとき,yolov8_to_tf_nodeとssd_to_tf_nodeのように競合しないようにすることができます.

  • base_frame_name
    base_frame_nameは3次元化する上で何を基準フレームとして座標を得るかです.
    ロボットの座標を基準にする場合,base_footprintとなる.
    ロボットの足元の中心を原点(0,0,0)として各認識した物体の3次元座標を生成します.

  • bbox_topic_name
    bbox_topic_nameはBoundingBoxのトピック名です. 具体的には,sobits_msgs/BoundingBoxes型のメッセージが飛んでいるトピック名を指定する.
    これはSOBITSが独自に作ったカスタムROSメッセージであるためsobits_msgsをgit cloneしてある必用があります.
    しかし,このパッケージに依存しているパッケージのinstall.shで既にgit cloneされているはずです.

  • cloud_topic_name
    cloud_topic_nameは点群のトピック名です. 具体的には,sensor_msgs/PointCloud2型のメッセージが飛んでいるトピック名を指定する.
    BoundingBoxの情報から,その領域に点群を飛ばします. そのとき,物体の距離感とともに点群のクラス分けを行い位置を取得します.

  • img_topic_name
    img_topic_nameはこの画像認識をしている画像のトピック名です.
    具体的には,sensor_msgs/Image型のメッセージが飛んでいるトピック名を指定する.
    画像と点群の関係を見るために参照している.

  • execute_default
    execute_defaultはデフォルトでTFを出すかどうかです.
    OFF(False)にしていても,使うときにrun_ctrでON(True)にすることもできる.

  • cluster_tolerance
    どの程度離れた点群までは同一の物体とみなすかのしきい値です.
    BoundingBox内に点群を飛ばした場合に,対象物に点群があたり,しきい値いないにある点群を1物体とみなしクラス分けを行います. そのため,あまり大きくすると点群1つ1つの探索範囲が広がり処理が遅くなってしまいます.

  • min_clusterSize
    どの程度の数以下の点群の集まりは対象物の点群から棄却するかのしきい値です.
    点群をクラス分けした際に,この数以下の点群数だったらノイズとみなし棄却します.

  • max_lusterSize
    どの程度の数以上の点群の集まりは対象物の点群から棄却するかのしきい値です.
    点群をクラス分けした際に,この数以上の点群数だったら全く別の対象物(物体だったら床の点群など)を捉えてしまったとみなし棄却します.

  • noise_point_cloud_range
    対象の物体の点群からノイズ面を除去し,中心座標に近づけるため除去量です.
    クラス分けした点群から物体を抽出した後,床や背後の壁,左右の壁などx,y,z方向に点群をこの値分,更にカットします. こうすることで,より物体の部分のみにかかる点群に絞ることができます. しかし値を大きくしすぎると,物体分の点群まで多く削いでしまうため注意が必用です.

Note

基本的にbbox_to_tf.launchを修正するのではなく,このパッケージに依存しているパッケージのlaunchファイルにincludeで呼び出すようにして,競合をさけてください.

(上に戻る)

Services

run_ctrとしてTF化するかしないかのON/OFF(True/False)を切り替えることができます. 基本的に,競合しないようにnode_nameに依存した命名となる.

  • ON/OFF切り替え
    node_name + "/run_ctr" (Service: sobits_msgs/RunCtrl)

Topic

TF化する他に,base_frame_nameから見た座標や各物体にかかる点群をPublishしています. 基本的に,競合しないようにnode_nameに依存した命名となる.

  • 座標

    node_name + "/object_poses" (Topic: sobits_msgs::ObjectPoseArray)
  • 点群

    node_name + "/object_poses" (Topic: pcl/PointCloud(pcl/PointXYZ))

(上に戻る)

マイルストーン

現時点のバッグや新規機能の依頼を確認するためにIssueページ をご覧ください.

参考文献

(上に戻る)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published