SplatNav에서는 SFC-1, SFC-2라는 두 가지 옵션을 제공한다. 둘의 차이점을 비교하면 다음과 같다.
| |
SFC-1 |
SFC-2 |
| 코드 분기점 (1) SFC/corridor_utils.py |
PointCloudCollisionSet을 기본 옵션으로 생성 |
PointCloudCollisionSet(sample_surface=20)으로 생성 |
| 코드 분기점 (2) polytopes/collision_set.py |
- point_cloud = self.means (가우시안 중심만 사용)
- 충돌 집합 계산은 “점”들에 대해 Ax <= b 여부 검사
|
- fibonacci_ellipsoid(...)로 각 가우시안의 “표면”을 샘플링
- ellipsoid_samples = fibonacci_ellipsoid(self.means, self.rots, self.scales, ..., n=sample_surface)
- point_cloud = ellipsoid_samples.reshape(-1, 3) (가우시안 당 다수의 표면 점)
- 코드: collision_set.py L116–120
- 이후 충돌 집합 계산에서 이 표면 점들에 대해 Ax <= b 검사
|
| 효과 |
각 가우시안을 점(평균)으로 보기 때문에 계산이 빠르지만 가우시안의 실제 부피/형상을 반영하지는 못 함. |
각 가우시안을 타원체 표면 샘플로 근사하기 때문에 실제 형상을 더 잘 반영한다. 표면 샘플 수 때문에 계산이 느려질 수 있다. |
| 사용하는 요소 |
mean |
mean, covariance |
SFC-1
SFC-2
Resource Usage
| Metric |
SFC-1 |
SFC-2 |
| Planning Time (s) |
0.275 |
0.478 |
| GPU Mem. (MB) |
254 |
461 |