Filetree
splatnav/
├─ .git/
├─ .gitignore
├─ LICENSE
├─ README.md
├─ SFC/
│ ├─ __pycache__/
│ ├─ astar_utils.py
│ ├─ corridor_utils.py
│ ├─ helper_utils.py
│ └─ viz_utils.py
├─ SplatNav Data/
│ ├─ old_union_sfc-1.json
│ └─ old_union_sfc-2.json
├─ assets/
├─ blender/
│ ├─ viz_dataset.py
│ ├─ viz_statistical_traj.py
│ └─ viz_utils.py
├─ data/
│ ├─ exp_room/
│ ├─ flight/
│ └─ old_union2/
├─ ellipsoids/
│ ├─ __pycache__/
│ ├─ covariance_utils.py
│ ├─ intersection_utils.py
│ ├─ mesh_utils.py
│ └─ sphere_utils.py
├─ imgs/
│ └─ logo.svg
├─ initialization/
│ ├─ __pycache__/
│ ├─ astar_utils.py
│ └─ grid_utils.py
├─ nerfnav/
│ ├─ nav/
│ └─ nerf/
├─ ns_utils/
│ ├─ __pycache__/
│ └─ nerfstudio_utils.py
├─ outputs/
│ ├─ colmap/
│ ├─ exp_room/
│ ├─ flight/
│ ├─ myscene/
│ ├─ old_union2/
│ ├─ registered/
│ ├─ splatnav11212024/
│ └─ statues/
├─ plotting/
│ ├─ make_gif.py
│ └─ plot_utils.py
├─ polytopes/
│ ├─ __pycache__/
│ ├─ collision_set.py
│ ├─ connectivity_utils.py
│ ├─ decomposition.py
│ └─ polytopes_utils.py
├─ pose_estimator/
│ ├─ pose_estimator.py
│ └─ utils.py
├─ results/
│ ├─ ellipsoids/
│ ├─ ns_utils/
│ ├─ old_union/
│ │ └─ old_union.obj
│ ├─ plot_results.py
│ ├─ plot_sfc_ablations.py
│ ├─ process_data_corridors.py
│ ├─ process_data_corridors2.py
│ ├─ sfc_ablations.pdf
│ ├─ simulation_stats.pdf
│ └─ splat/
│ ├─ __pycache__/
│ └─ splat_utils.py
├─ run_nerfnav.py
├─ run_rrt.py
├─ run_splatloc.py
├─ run_splatplan.py
├─ splat/
│ ├─ __pycache__/
│ └─ splat_utils.py
├─ splatplan/
│ ├─ __pycache__/
│ ├─ splatplan.py
│ └─ spline_utils.py
├─ trajs/
│ ├─ exp_room/
│ ├─ flight/
│ └─ old_union2/
├─ visualize.py
└─ visualize_map.py
splatplan/splatplan.py
- __init__
- GSplat 객체: 3D Gaussian으로 표현된 환경 정보
- 로봇 설정: 반경(radius), 최대 속도(vmax), 최대 가속도(amax)
- 충돌 감지: GSplatCollisionSet으로 가우시안과의 충돌 체크
- 복셀 그리드: GSplatVoxel로 환경을 이산화하여 A* 경로 탐색에 사용
- 스플라인 플래너: 최종 경로를 부드럽게 최적화
- generate_path
- A 경로 탐색*
- 복셀 그리드에서 시작점(x0)부터 목표점(xf)까지 초기 경로 생성
- 충돌 집합 계산
- 각 선분(segment)마다 충돌 가능성이 있는 가우시안들 식별
- collision_set.compute_set_one_step()으로 해당 구간의 장애물 정보 추출
- Polytope 생성
- 각 선분에 대해 안전 영역을 표현하는 polytope(다면체) 계산
- 이전 polytope 안에 포함되면 재사용, 아니면 새로 생성
- get_polytope_from_outputs()로 halfspace 표현 (Ax ≤ b) 생성
- B-spline 최적화
- 생성된 polytope들을 제약 조건으로 사용
- 부드러운 Bezier 스플라인 궤적 최적화
- 실행 불가능한 경우 직선 경로 반환
- Polytope 계산 (get_polytope_from_outputs)
- 타원체-선분 교차 계산
- 반복적 halfspace 생성
- 가장 가까운 교차점부터 처리
- halfplane 생성 후 로봇 반경만큼 팽창
- 분리된 가우시안 제거 후 반복
- 경계 박스와 결합