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

9.7K Views

February 13, 24

スライド概要

profile-image

OpenCVではじめよう ディープラーニングによる画像認識、OpenCVプログラミングブックの中の人(の一人).Computer Vision/OpenCV/GPGPU/ROS/AR/インタラクティブアート/ニコニコ技術部

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

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

2.

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

3.

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

4.

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

5.

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

6.

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

7.

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

8.

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

9.

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

10.

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

11.

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

12.

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

13.

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

14.

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

15.

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/

16.

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

17.

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

18.

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

19.

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出る

20.

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

21.

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

22.

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

23.

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