town_run — DRIVE town op

• 데이터 종류: table → table

• 호출: import fullseye as fs; fs.ledger.town_run(layout, *, dt: 'float' = 0.05, v_max: 'float' = 8.0, a_max: 'float' = 1.5, b_max: 'float' = 3.0, stop_at: 'Optional[Sequence[str]]' = None, stop_hold: 'Optional[float]' = None, look_hold: 'Optional[float]' = None, stop_margin: 'float' = 0.5, idm_T: 'float' = 1.0, v_stop: 'Optional[float]' = None, t_max: 'Optional[float]' = None, rules: 'Optional[dict]' = None, train=None) -> 'Dict[str, object]'(구현을 직접 호출하려면 import drivetown; drivetown.town_run(layout, *, dt: 'float' = 0.05, v_max: 'float' = 8.0, a_max: 'float' = 1.5, b_max: 'float' = 3.0, stop_at: 'Optional[Sequence[str]]' = None, stop_hold: 'Optional[float]' = None, look_hold: 'Optional[float]' = None, stop_margin: 'float' = 0.5, idm_T: 'float' = 1.0, v_stop: 'Optional[float]' = None, t_max: 'Optional[float]' = None, rules: 'Optional[dict]' = None, train=None) -> 'Dict[str, object]', 원장에서 가져오려면 opsdrive.get("town_run"))

사용법

> 이 연산자의 설명은 아직 번역이 없습니다. 원문을 그대로 싣습니다.

中心線に沿う縦だけの通し走行(ルールベース)。

各刻みで、まだ止まっていない次の 目標の停止線 を「止まっている先行車」と見なし、

`drivetraffic.idm_accel(v, gap = 停止線 − 前端, dv = v, v0 = v_max, T = idm_T, a = a_max, b = b_max, s0 = stop_margin)`

で加速度を出し `[−b_max, a_max]` に切る(目標が無ければ gap = ∞ = 自由走行)。v を先に更新(0 ≤ v ≤ v_max)、s は台形則。

`v ≤ v_stop` かつ前端が停止線の 1.0 m 以内なら停止。

目標の決まり方(`rules = :func:town_rules、None = JP): 交差点は常に目標(信号は stop_hold` 秒で青の規則)。踏切は

`rules["crossing_stop"] が "always" なら常に、"when_active" なら train の警報中(entry_forbidden`)だけ目標。

"when_active" で警報が始まった時に b_max で止まれない(gap < v²/(2 b_max))なら進む(event "commit")。`stop_at` を渡すと

規則より優先する(kind の列。回帰用)。停止後: 交差点は `stop_hold`(既定 rules["hold_s"])秒保持(mode "hold")、踏切は

`rules["look_required"] なら左・右・左・右を各 look_hold(既定 rules["look_hold_s"])秒見る(mode "look")。train` が

あれば、保持が明けても警報中(かん降下〜上昇中)は待つ(mode "wait")。`train` = t_warning か (t_warning[, v_train[, length]])

か dict(時刻は解釈基準の標準値、:data:TRAIN_DEFAULTS)。

Returns

-------

dict : `t, s, x, y, z, v, yaw, a (各 (n,))、mode` (n,) 文字列("cruise" / "brake" / "hold" / "look" / "wait")、

`stops = [(s_stop, kind, t_arrive, t_leave), ...]、events` = [("stop"|"go"|"look"|"wait_gate"|"commit"|"pass"|"end", t, ...)]、

`stop_lines(目標になり得た停止線)、targets(停止線ごとの "static" / "dynamic")、train`(時刻の dict か None)、

`rules、params、total_length`。

Raises `ValueError`: layout が town_chain の物でも drivejapan.osm_route の "route" でもない、dt/v_max/a_max/b_max/保持時間が不正、stop_at に知らない kind、

rules/train が不正、停止線を越えてしまった(IDM の想定外)、t_max までに終点に着かない。

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

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

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

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

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

• poc_driving_japan_town — py -3.11 examples/poc_driving_japan_town.py

• poc_driving_town — py -3.11 examples/poc_driving_town.py

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

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

같은 카테고리(town)

town_chain · town_layout · town_world · town_centerline · town_stop_lines · town_rules · town_crossing_state · town_checks


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

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