Slide 1

Slide 1 text

実環境を手軽にシミュレータ環境に持ってくる pointcloud2gazebo @dandelion1124 第42回ロボティクス勉強会

Slide 2

Slide 2 text

自己紹介 ● @dandelion1124
 ○ 専門はコンピュータビジョン、ロボティクス、ソフトウェア高速化 
 
 ○ OpenCVコントリビューター 
 ■ OpenCV書籍執筆 https://gihyo.jp/book/2022/978-4-297-12775-6 
 
 ○ 2023年10月よりサイバーエージェント AI Labで人物行動理解に関する研究に従事 


Slide 3

Slide 3 text

モチベーション ● 自律走行ロボット開発のため、実環境と同一スケールのシミュレータ環境を手早く作りたい 
 
 ● 屋内環境をiPhoneでさっと撮影して、シミュレータ環境上に再現できると便利 
 ○ 以下の機器が一式揃っている便利デバイスのiPhoneを活用 
 ■ 計算資源
 ■ センサ(RGB-Dカメラ、IMU、LiDAR) 
 ■ SLAMアプリケーション


Slide 4

Slide 4 text

● システム構成図
 今回作ったもの RTABMAP
 pointcloud2gaz ebo
 ply(点群)、
 データベース
 Gazebo
 World
 Gazebo
 RTABMAP:https://apps.apple.com/jp/app/rtab-map-3d-lidar-scanner/id1564774365 
 今回作ったもの


Slide 5

Slide 5 text

デモ ● 実験データ
 ○ オフィスにある本棚付近で実験
 ○ iPhoneを持って本棚周辺をぐるっと周ってRTABMAPを実行


Slide 6

Slide 6 text

デモ ● 今回作ったpointcloud2gazeboで生成したWorldは以下の通り 
 点群地図
 Worldファイル


Slide 7

Slide 7 text

デモ ● 生成したWorld上でナビゲーション 


Slide 8

Slide 8 text

従来手法 ● CADファイルでモデリングする 
 ● 点群データをRViz2で可視化する 
 ● MeshLabを使う
 ● map2gazeboを使う


Slide 9

Slide 9 text

従来手法 ● 点群データをRViz2で可視化する 
 ○ SLAM等で作った点群地図をRViz2で可視化 
 ■ 点数によっては描画が重くなる 
 
 ○ シミュレータ環境にそのまま反映できない 
 ■ あくまで可視化用途 


Slide 10

Slide 10 text

従来手法 ● CADファイルでモデリングする 
 ○ 実際のスケールを反映させるためには見取り図 or 実測が必要 
 ○ 見取り図がない場合、人手でモデルを作成し、配置する必要がある 
 ○ 見取り図があっても家具などの情報は含まれていないことがあり、実世界と一致しないことが ある
 ■ 環境にオブジェクトがたくさんあるとモデリングが大変 


Slide 11

Slide 11 text

従来手法 ● MeshLabを使う
 ○ https://www.meshlab.net/ 
 ○ 点群地図を補正(ノイズ除去、間引き、メッシュ作成)し、モデルデータに変換 
 ○ 高度なアルゴリズムが実装されているが、人手による前処理、パラメータ調整などの試行錯 誤が必要


Slide 12

Slide 12 text

従来手法 ● map2gazeboを使う
 ○ https://github.com/shilohc/map2gazebo 
 ○ 2D 占有格子地図からSTL or DAEを出力 
 ■ 占有格子地図に対してOpenCVのfindContoursで輪郭抽出し、モデル生成 
 ○ 2D 占有格子地図が入力のため、以下の課題がある 
 ■ ノイズ除去が難しい
 ■ 高さ情報が失われているため、実際の場所との紐づけが難しい 
 点群地図
 占有格子地図
 Worldファイル


Slide 13

Slide 13 text

pointcloud2gazebo ● 処理構成
 
 
 
 
 
 ● 特徴
 ○ 依存ライブラリが少ない(Open3D、NumPyのみ)ため、環境構築が容易 
 オフセット
 処理
 ノイズ除去
 World生成
 点群地図
 Worldファイル


Slide 14

Slide 14 text

pointcloud2gazebo ● オフセット処理
 ○ 点群地図の地図座標系は地図生成開始時のカメラ位置が原点となる座標系となる 
 ○ 地面の高さがゼロの方が使い勝手がよいのでオフセット処理を適用 
 地面の高さをゼロにする 


Slide 15

Slide 15 text

pointcloud2gazebo ● ノイズ除去
 ○ 床面除去
 ■ 高さ方向のクロッピング 
 
 ○ 計測ノイズ除去
 ■ Voxel Grid Filter
 ■ Radius outlier remova l
 
 
 ○ 参考
 ■ http://www.open3d.org/docs/release/tutorial/geometry/pointcloud_outlier_removal.html 
 ■ https://tech-deliberate-jiro.com/radius-based-outlier-filter/ 
 赤い点がノイズとして判定された点群


Slide 16

Slide 16 text

pointcloud2gazebo ● World生成
 ○ 点群からメッシュ作成 
 ■ create_from_point_cloud_alpha_shapeでメッシュ作成 
 ■ 参考:http://www.open3d.org/docs/latest/tutorial/Advanced/surface_reconstruction.html 
 Alpha shapes
 Ball pivoting


Slide 17

Slide 17 text

pointcloud2gazebo ● World生成
 ○ World生成
 ■ メッシュからSTLにエクスポートし、Worldファイルを生成
 ■ 参考:https://zenn.dev/tasada038/articles/54f6111fb6e907 
 メッシュ
 Worldファイル


Slide 18

Slide 18 text

World描画高速化 ● Tips #1:陰影処理無効化 
 ○ 陰影処理を無効化することで描画処理を軽量化 
 ■ 参考:https://www.blackcoffeerobotics.com/blog/5-ways-to-speedup-gazebo-simulations 
 
 ○ Worldファイルに下記の内容を追記するだけ 
 
 
 
 ○ 変更前後のシミュレーション速度は以下の通り 
 ■ 変更前:7fps、変更後:22fps 
 
 0 
 


Slide 19

Slide 19 text

World描画高速化 ● Tips #2:NVIDIA GPUを使う ○ 利用例:NVIDIA GPUが使えるブラウザベース ROS 2デスクトップ環境(自作) ■ https://github.com/atinfinity/nvidia-egl-desktop-ros2 ■ ホスト環境:Ubuntu 22.04、Windows 11+WSL2上で動作すること確認 ○ 今回作成したWorldファイルでも60fps出る

Slide 20

Slide 20 text

おまけ ● 表現方法の模索
 ○ ボクセル表現にすることで単純にメッシュを貼るよりも色情報が残せる 
 ○ ローポリゴンゲームのような表現になり、用途によっては有効かも 


Slide 21

Slide 21 text

今後の予定 ● pointcloud2gazeboをOSSとして公開予定 
 ● メッシュファイル軽量化 
 ● 歩行者軌跡、注目箇所推定アルゴリズムと連携したツールキット公開 


Slide 22

Slide 22 text

会社紹介 ● サイバーエージェントはインターネット広告やメディア・ゲームだけでなく、小売や行政などの現実世 界を対象としたサービスも進めている 
 ○ 商品自らが動いて話す「自己推薦ロボット」のような取り組みも行っている 
 ■ プレスリリース:https://www.cyberagent.co.jp/news/detail/id=29494 
 
 ● よりよいサービス提供のため、実世界における人々の活動の 適切なセンシング技術 、適切な情報 提示技術が不可欠であり、AI Labではロボティクス・コンピュータビジョン研究を中心に扱うチームを 新設


Slide 23

Slide 23 text

会社紹介 ● ロボットを社会実装する上で以下の強みがある 
 ○ 必要な要素技術(音声処理、自然言語処理、HCIなど)に関するリサーチャー、エンジニアが 多数在籍
 ■ https://cyberagent.ai/ailab/people/ 
 ○ 自社でLLMを開発していることから技術連携、フィードバックしやすい 
 ■ https://www.cyberagent.co.jp/news/detail/id=29479 
 
 ● 東京、大阪、京都でリサーチサイエンティスト、リサーチエンジニア、インターンを募集中。興味ある 方はご連絡ください。