Elevation Mapping 구현을 위한 코드 분석
- Elevation Mapping Cupy - Repo 분석
- Key Features (with Github)
- Height Drift Compensation: Tackles state estimation drifts that can create mapping artifacts, ensuring more accurate terrain representation.
- Visibility Cleanup and Artifact Removal: Raycasting methods and an exclusion zone feature are designed to remove virtual artifacts and correctly interpret overhanging obstacles, preventing misidentification as walls.
- Learning-based Traversability Filter: Assesses terrain traversability using local geometry, improving path planning and navigation.
- Versatile Locomotion Tools: Incorporates smoothing filters and plane segmentation, optimizing movement across various terrains.
- Multi- Modal Elevation Map (MEM) Framework: Allows seamless integration of diverse data like geometry, semantics, and RGB information, enhancing multi-modal robotic perception.
- GPU-Enhanced Efficiency: Facilitates rapid processing of large data structures, crucial for real-time applications.
- elevation_map_msgs
- msg / ChannelInfo.msg (channel names) & Statistics.msg (pointcloud_process_fps)
- srv / CheckSafety.src (Estimate of the traversability of the path) & Initialize.srv
- elevation_mapping_cupy
- elevation_mapping_ros.py
- point_cloud data와 depth image를 subscribe하여 Gridmap 데이터를 publisher 한다.
- map_initializer.py
- 지형 데이터를 초기화하며, griddata를 활용하여, 주어진 좌표 값을 바탕으로 지형 맵 데이터를 interpolation(보간)
- parameter.py
- elevation mapping 시스템에서 사용되는 설정 및 파라미터 관리
- segmantic_map.py -> 여기를 확인해서, image와 point cloud를 좀 확인해야할 듯
- elevation mapping에서 사용되는 의미론적 지도 (segmantic map)를 정의하고 업데이트 하는 모듈
- 포인트 클라우드 데이터 지도 변환 (특정 알고리즘으로 데이터 처리 ex) class_max, class_bayesian)
- 이미지 데이터 처리 -> 지도 데이터로 융합 (RGB또는 특정 채널로 분리해 저장)
- 실시간 지도 업데이트 및 Shift 처리
- traversability_filter.py
- 이동 가능성(Traverablity)를 평가하는 필터를 구현한 모듈
- PyTorch와 Chainer를 사용해 네트워크를 정의 (프레임워크 성능 비교)
- Elevation Mapping data를 입력으로 받아 CNN 필터를 통해 지도 생성
- 지형 데이터를 기반으로 이동 가능한 영역을 계산
- traversability_polygon.py
- Traverablity 관련된 다각형 영역을 계산하고 평가 / 로봇이 지형
내코드 보완 사항
1. 높이 드리프트 보정: 현재 코드에서는 구현되지 않음. GitHub 코드에서 구현 방식 참고.
2. 가시성 정리 (Visibility Cleanup): 현재 코드에서 동적 장애물을 제거하는 방식이 없음.
3. 상한 계산 (Upper Bound Calculation): 지도 업데이트에서 상한을 사용하는 방식 구현 필요.
4. 여러 센서 융합: 현재는 단일 LiDAR 기반이지만, GitHub 코드처럼 Realsense 같은 깊이 센서 데이터를 추가적으로 활용할 수 있음. -> segmantic_map.py 참고
5. update_pose : 로봇의 현재 위치를 업데이트하여, elevation mapping을 해당 위치로 이동해야함