turn_maneuver_check — DRIVE lateral op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.turn_maneuver_check(trajectory: 'dict', *, kind: 'str', x_entry: 'float', edge_y: 'float', center_y: 'float' = 0.0, corner_center=None, corner_radius: 'float' = 0.0, intersection_center=None, approach: 'float' = 30.0, keep_tol: 'float' = 0.5, side_tol: 'float' = 1.5, inside_tol: 'float' = 3.0, jokou: 'float' = 2.7777777777777777, clearance: 'float' = 0.0) -> 'Dict[str, object]' (to call the implementation directly, import drivelateral; drivelateral.turn_maneuver_check(trajectory: 'dict', *, kind: 'str', x_entry: 'float', edge_y: 'float', center_y: 'float' = 0.0, corner_center=None, corner_radius: 'float' = 0.0, intersection_center=None, approach: 'float' = 30.0, keep_tol: 'float' = 0.5, side_tol: 'float' = 1.5, inside_tol: 'float' = 3.0, jokou: 'float' = 2.7777777777777777, clearance: 'float' = 0.0) -> 'Dict[str, object]'; from the registry, opsdrive.get("turn_maneuver_check"))

Usage

Checks how a left or right turn is made (Road Traffic Act Art. 34(1)-(2) / Rules of the Road (Kyosoku) 5-7-2). All numeric margins are assumptions (SOURCES).

The road runs toward +x (left = +y). Left edge of the carriageway y = edge_y, centre line y = center_y, near edge of the intersection x = x_entry. trajectory: t, front (N, 2) (centre of the front axle), rear (N, 2) (centre of the rear axle), speed (N,), width (vehicle width), track (track width), front_overhang / rear_overhang (from the axle to the end of the body).

Checks:

• Keep to the side (in advance): while x_entry − approach ≤ front end < x_entry, for a left turn the distance between the left side of the body and the left edge is in [0, keep_tol] (below 0 = protruding onto the shoulder / roadside strip); for a right turn the distance between the right side of the body and the centre line is in [0, keep_tol] (below 0 = straddling the centre line).

• Slow down (jokou): from when the front end passes x_entry until the turn is finished (heading beyond ±80°), speed ≤ jokou.

• Left turn "along the side edge": during the turn (heading 10° to 80°), the distance between the inner rear wheel and the corner-cut circle (centre corner_center, radius corner_radius) is in [clearance, side_tol]. Below clearance = the inner-wheel difference enters the place of pedestrians / cyclists at the corner.

• Right turn "just inside the centre of the intersection": the path of the front-axle centre passes the intersection centre intersection_center without seeing it on the right (inside of the turn) (the centre lies outside the path = on the left), and the distance at closest approach is ≤ inside_tol.

Returns: ok, violations (list of reason strings), metrics (dict).

Raises ValueError: kind other than "left" / "right", missing required values, wrong shapes.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_driving_lateral — py -3.11 examples/poc_driving_lateral.py

Ops the type connects to (they accept table as input)

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

Same category (lateral)

friction_circle_usage · curve_speed_limit · design_min_radius · understeer_gradient · steady_cornering · bicycle_model_step · ackermann_steer_angles · offtracking_circle


*Provenance: drivelateral.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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