3.3K Views
January 07, 25
スライド概要
3Dスキャンアプリを活用して手軽に高精細シミュレータ環境を構築します。サツドラホールディングス株式会社様のご協力のもと、EZOHUB TOKYO https://ezohub.jp/office/tokyo/ で店舗内のデータ取得を行いました。
OpenCVではじめよう ディープラーニングによる画像認識、OpenCVプログラミングブックの中の人(の一人).Computer Vision/OpenCV/GPGPU/ROS/AR/インタラクティブアート/ニコニコ技術部
ROS Japan UG #57 ROS納めLT大会 3Dスキャンアプリを活用した高精細シミュレータ環境構築 支援ツールmesh2gazebo 株式会社サイバーエージェント AI Lab Activity Understanding Team 吉村 康弘
自己紹介 吉村 康弘 | Yasuhiro Yoshimura 株式会社サイバーエージェント AI Lab Activity Understanding Team Research Engineer ロボティクス、センシングによる環境理解の研究に従事 OpenCVコントリビューター 2
モチベーション ● 自律走行ロボットのソフトウェア開発のため、実環境と同一スケールのシミュ レータ環境を手早く作りたい(=3Dモデリングは極力避けたい) ● 屋内環境をiPhoneでさっと撮影して、シミュレータ環境上に再現できると便利 3
従来手法(pointcloud2gazebo)の課題 ● 以前開発したpointcloud2gazeboには以下の課題があった ○ ○ ○ メッシュデータの品質がイマイチ メッシュに色情報がないので実環境との対応付けが困難 Gazebo Classicでしか動作確認されていない 撮影場所 3D点群 Gazebo World 4
mesh2gazebo ● pointcloud2gazeboにあった課題を克服! ○ ○ ○ メッシュデータの品質が改善 色付きメッシュデータのため、実環境との対応付けが容易 Gazebo Ignitionをサポート 撮影場所 3Dメッシュデータ Gazebo World 5
mesh2gazebo 3Dスキャンアプリで得られるメッシュデータを活用することで手軽に高精細な シミュレータ環境を構築 3Dスキャン アプリ mesh2gazebo メッシュデータ (objファイル、 テクスチャ) Gazebo Gazebo World 6
mesh2gazeboデモ動画:World表示 https://www.youtube.com/watch?v=z63dIfPx9iE 7
mesh2gazeboデモ動画:ナビゲーション https://www.youtube.com/watch?v=x92R9y_1isM 8
参考:実店舗で撮ったカメラ画像 https://www.youtube.com/watch?v=4dIjLJ6BXzM 9
参考:RViz2上のメッシュデータ描画 RViz2上へメッシュデータを描画することも可能 10
動作確認環境 今回、以下の環境で動作確認を実施 ● ROS 2 Jazzy ● Gazebo Harmonic v8.7.0 ● Scaniverse ※iOSアプリ 11
技術解説 ● 3Dスキャン撮影 ○ 3DスキャンアプリはScaniverseを使用し、「メッシュ」モードで撮影 ■ ○ ○ 参考:https://note.com/iwamah1/n/nc8a5427157ef 後述する後処理のために床面も撮っておく OBJ形式でエクスポートし、MeshLabでDAE形式に変換 エクスポートしたメッシュデータ テクスチャ データ 12
技術解説 ● 後処理(1/2) ○ ○ Gazeboとメッシュとで座標軸が異なる場合は回転させる 編集にはMeshLabを使用 ■ 「Transform: Rotate」でメッシュを回転させる Y Z X 13
技術解説 ● 後処理(2/2) ○ ○ ○ 床面が凸凹しているとロボットの走行実験がしづらい 地面が平面となるようにZ方向でメッシュデータの高さを調整 編集にはMeshLabを使用 ■ 「Transform:Translate」でメッシュをZ軸方向に並進 before after Z Z 14
技術解説 ● Gazebo World作成(1/2) ○ SDF形式のWorld内でcollisionのgeometry内にメッシュデータを指定する <model name="mesh2gazebo"> <static>true</static> <link name="link"> <collision name="collision"> <geometry> <mesh> <scale>1 1 1</scale> <uri>file:///home/jazzy/Scaniverse_2024_11_18_162729.dae</uri> </mesh> </geometry> </collision> 《中略》 </link> </model> 15
技術解説 ● Gazebo World作成(2/2) ○ SDF形式のWorld内でvisualのgeometry内にメッシュデータを指定する <model name="mesh2gazebo"> <static>true</static> <link name="link"> 《中略》 <visual name="visual"> <geometry> <mesh> <scale>1 1 1</scale> <uri>file:///home/jazzy/Scaniverse_2024_11_18_162729.dae</uri> </mesh> </geometry> </visual> </link> </model> 16
今後の予定 ● OSS公開 ○ worldファイルのひな形をOSSとして公開予定 17
謝辞 今回、サツドラホールディングス株式会社様のご協力のもと、EZOHUB TOKYOで店 舗内のデータ取得を行いました 18
宣伝 ● CyberAgent AI Lab Advent Calendar 2024でROS 2の ffmpeg_image_transportパッケージを使って効率よく画像トピックを配信、購 読するという記事を投稿しています。 ● ROS 2でカメラ画像を扱う方はぜひご一読ください。 19
Appendix:Tips ● レンダリング計算負荷軽減 ○ cast_shadowsを0にして陰影処理を無効化することでレンダリング計算負荷 を軽減。以下に記述例を示す。 <light type="directional" name="sun"> <cast_shadows>0</cast_shadows> <pose>0 0 10 0 0 0</pose> <diffuse>0.8 0.8 0.8 1</diffuse> <specular>0.2 0.2 0.2 1</specular> <attenuation> <range>1000</range> <constant>0.9</constant> <linear>0.01</linear> <quadratic>0.001</quadratic> </attenuation> <direction>-0.5 0.1 -0.9</direction> </light> 20