homotopy_class_compare — DRIVE braidpath op

• 데이터 종류: any × any → table

• 호출: import fullseye as fs; fs.ledger.homotopy_class_compare(traj_a, traj_b, obstacles=None, angle=0.1, jitter='auto', tol=1e-09)(구현을 직접 호출하려면 import braidpath; braidpath.homotopy_class_compare(traj_a, traj_b, obstacles=None, angle=0.1, jitter='auto', tol=1e-09), 원장에서 가져오려면 opsdrive.get("homotopy_class_compare"))

• GPU: 없음(CPU 참조 구현만)

사용법

시작점과 끝점이 같은 두 경로족(복수 에이전트의 계획)이 같은 호모토피 류인지.

충돌 없이(에이전트끼리도, 장애물 점과도 겹치지 않고) 시작점과 끝점을 고정한 채 연속적으로 변형할 수 있음 ⇔ 브레이드가 같음.

브레이드는 braid_from_trajectories, 비교는 Dynnikov 좌표. 사영 각도에 의존하지 않는다(게이트에서 여러 각도를 바꿔 본다).

Returns: dict same, word_a / word_b, key_a / key_b, quotient(a b⁻¹ 를 축약한 단어 —— 비었으면 같은 류, 비어 있지 않으면 “감는 방식이 어떻게 다른지”의 단어), endpoint_error(시작점, 끝점의 최대 어긋남), tol_limit(tol 의 상한). 시작점과 끝점은 tol(기본값 ENDPOINT_TOL = 1e-9, 좌표 단위, 각 좌표 차의 최댓값) 이내로 일치해야 한다. tol 은 답을 바꾸지 않고 통과 / 거부만 하는 게이트로, “효과 없는 노브” 대장에 이유와 함께 올라 있다. tol 이내로 어긋난 B 의 끝점은 B 의 앞뒤에 A 의 끝점으로 직선으로 옮기는 구간을 덧붙인 뒤 비교한다(word_b 는 그렇게 맞춘 계획의 단어). tol 의 상한은 tol_limit = d / (2√2)(d = A 의 시작점과 끝점 배치에서 가닥끼리의 최소 거리, 장애물 점 포함):

각 에이전트는 각 좌표에서 tol 이내 = 거리 √2·tol 이내로만 움직이므로 두 에이전트 사이 거리의 변화는 2√2·tol 미만이고, 맞추는 구간은 충돌하지 않는다. 게다가 A 의 끝점에서 각 좌표 tol 이내인 배치의 모임은 볼록하고 충돌을 포함하지 않으므로, 어떻게 맞춰도류는 같다 —— 답은 사영 각도에도 tol 에도 의존하지 않는다. 상한을 넘는 tol 은 끝점이 다른 계획끼리를 같은 류라고 부를 수 있으므로 거부한다. 플래너마다 끝점이 반올림으로 다르면 tol 을 상한 안쪽에서 넓히거나 비교하기 전에 끝점을 맞춘다(류는 끝점을 고정한 변형의 류이므로, 끝점이 다른 두 계획은 비교할 수 없다).

Raises: ValueError(대수가 다름, 시작점 또는 끝점이 tol 보다 떨어져 있음, tol 이 음수이거나 유한하지 않거나 tol_limit 이상, 사영 위에서 시작점 또는 끝점의 순서가 어긋남, 충돌).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• poc_braid_homotopy_classes — py -3.11 examples/poc_braid_homotopy_classes.py

타입이 이어지는 다음 연산자(table 를 입력으로 받는 것)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

같은 카테고리(braidpath)

braid_from_trajectories · braid_reduce · braid_artin_images · dynnikov_coordinates · dynnikov_act · braid_equivalent · pairwise_winding · homotopy_shortest_paths


*Provenance: braidpath.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.