-0. README.md 내용
4.1. (선택 사항) 정상 작동 여부를 확인하기 위한 일반 3D reconstruction 실행
SCENE_NAME=room0
python scripts/run_slam_rgb.py \
--dataset_root $REPLICA_ROOT \
--dataset_config $REPLICA_CONFIG_PATH \
--scene_id $SCENE_NAME \
--image_height 480 \
--image_width 640 \
--stride 5 \
--visualize
1. 목적
1.1. dataset 인스턴스 생성
1.2. PointFusion 인스턴스 생성
1.3. pointclouds, _ = PointFusion.step(pointclouds, frame_cur, frame_prev)
- dataset에서 데이터를 꺼내오면서, 이미지를 업데이트
_localize
- 전 frame의 pointcloud와, 현 frame의 pointcloud 간 ICP를 gradient optimization 방법으로 최적화
- 이를 통해, 전 frame에 비해, 현 frame에 센서가 얼마만큼 이동했는지 Return
_map
_localize
에서 도출한 센서 이동 pose
값을 이용해서, 현재 frame를 global coordinate로 변환
- 센서와 거리가 멀수록, 신뢰도를 낮게 책정
- 기존에 있었던 pointcloud와
거리기준
+ 방향기준
이 일치하는 점을 찾아서 매칭
- 매칭되면, 신뢰도를 기반으로 누적 평균을 통해, points/normals/colors/features/embeddings 를 업데이트 함
- 매칭 안되면, 새로운 pointcloud를 추가함
1.4. h5py 로 저장
- pointcloud의 point, color, feature, embedding, confidence 를 각각 저장함
1.5. 결과를 pcd 객체로 생성
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(numpy_points)
pcd.colors = o3d.utility.Vector3dVector(numpy_colors)
pcd.normals = o3d.utility.Vector3dVector(numpy_normals)
1.6. visualize
- o3d.visualization.draw_geometries([pcd])
2. 질문
- 사람은 어떻게 걸러내는가?
- point별로 신뢰도를 계속 누적시키는데, 이 값에 대한 threshold를 두면 될듯
- real-time으로는 어떻게 구동할 수 있는가?
- voxel 방식으로 작동시킬순 없나?