Gazebo에서 기본 제공 월드나 이미 만들어진 맵을 활용해 로봇 시뮬레이션을 진행할 수 있지만, 이번에는 로봇을 배치하게 된다면, 사전에 해당 공간을 최대한 현실적으로 재현한 환경에서 테스트해보고 싶었음.

그러다 아이폰에 내장된 LiDAR 스캐너로 실제 공간을 스캔해서 맵을 만들 수 있다는 걸 알게 되었음.
참고로, LiDAR 스캐너는 아이폰 12 Pro 이상 모델부터 탑재되어 있어 해당 기능을 사용할 수 있는 걸로 알고 있음.

AppStore에서 RTAB-Map 3D LiDAR Scanner 어플을 사용하여 Mapping을 진행.

1차적으로 한 층 전체를 직접 돌아다니며 스캔을 진행함.
걸어 다니며 스캔을 진행하다 보니 일부 구간에서는 손떨림 등으로 인해 안정적인 스캔이 어려웠고, 사람이 없는 공간이 아니다 보니 중간에 물건이 이동하는 등의 변수도 발생해 전체적으로 스캔 퀄리티가 높지는 않았음. (내 생각..)

1차 스캔으로 생성한 맵에는 가방, 신발 등 일시적인 물체들도 함께 포함되어, Gazebo 시뮬레이터에서 로봇 이동 경로에 불필요한 장애물이 생기는 문제가 있었음.

2차로는 사람이 없고 바닥이 깔끔한 곳만 다시 Mapping을 진행함.
스캔이 완료되면
RTAP-Map어플에서 db파일로 export 이후






https://github.com/CyberAgentAILab/pointcloud2gazebo
GitHub - CyberAgentAILab/pointcloud2gazebo: pointcloud2gazebo is a package that allows you to create a Gazebo World from a 3D po
pointcloud2gazebo is a package that allows you to create a Gazebo World from a 3D point cloud. - CyberAgentAILab/pointcloud2gazebo
github.com
패키지 다운


파일을 실행하면 stl파일 생성(주의: 파일경로 확인)

여기서 맵을 보면 스캔이 잘 안 이루어져서 벽을 일일이 만들어 줬음. 물론, 어차피 벽을 세워서 공간을 다시 만들 거라면 "굳이 LiDAR로 스캔까지 해야 했을까?" 라는 의문이 들 수 있음. 그러나 전문 스캐너가 아닌 아이폰 LiDAR를 사용하다 보니 깨진 영역이 많고, 정밀한 맵 구성에는 어려움이 있었음.

또한 주변 벽이 유리로 되어 있었기 때문에, 라이다가 반사되거나 투과되는 현상으로 인해 정확한 스캔이 어려웠고, 결국 해당 구간은 임의로 벽을 생성해 보완할 수밖에 없었음.
이건 예상을 못 했음... ㅠ 만약 투과되지 못하는 곳에서 스캔을 진행하게 된다면 맵이 잘 만들어졌을 거 같음..


2차 스캔에 빠졌던 공간은 나중에 따로 만들어줬지만, 빈 공간이 너무 넓어서 Loop Closure 과정에서 맵이 깨지는 문제가 생겼음. 중간에 테이블을 임의로 두어 기준을 잡아보려고 했지만 효과는 크지 않았음.

'ROS2' 카테고리의 다른 글
| [ROS2] ros2 usb_cam 설치 및 사용 (0) | 2024.12.05 |
|---|---|
| [ROS2] ROS2 Action 알아보기, 근데 이제 turtlesim을 곁들인 (2) | 2024.10.22 |
| [ROS2] ROS2 Service 알아보기, 근데 이제 turtlesim을 곁들인 (1) | 2024.10.18 |
| [ROS2] ROS2 Topic 알아보기, 근데 이제 turtlesim을 곁들인 (1) | 2024.10.16 |
| [ROS2] ROS2 설치하기 (3) | 2024.10.07 |