Skip to content
CARROT-WIP / OCT 2026 EDITION

Speed and Deceleration Settings ​

한국어

NOTE

This is the canonical English user guide maintained with the carrot-wip code. When user-visible behavior changes, update this document together with the related code and tests.

This page explains all 23 speed and deceleration settings in the current code: event targets, deceleration distance, stock-navigation CAN, road-limit adjustment, speed bumps, curve/route/model speed, and traffic-light stop adjustment.

Change them in Carrot Web → Settings → Driving control → Speed and deceleration.

CAUTION

These settings can affect desired speed and the deceleration plan. Route, speed-limit, distance, and model inputs can be missing, late, or incorrect. The driver must always monitor the road and intervene immediately.

Five sections ​

  1. Speed cameras
  2. Road speed limit
  3. Speed bumps
  4. Curves and turns
  5. Traffic-light detection

The lowest candidate becomes the final desired speed ​

The code collects several candidates and selects their minimum as desired_speed:

CandidateRepresentative setting/input
Camera, average-speed zone, speed bumpSafety-event input, AutoNaviSpeed*
Road limit plus offsetAutoRoadSpeedLimitOffset
Vision curveAutoCurveSpeedFactor, TurnSpeedControlMode
Route turnMapTurnSpeedFactor, TurnSpeedControlMode
Separate automatic turn controlAutoTurnControl*

If raising one value produces no change, another source may already be lower. Check the displayed source, event type, target limit, and remaining distance together.

NOTE

CarrotMan and CarrotLink are not currently supported. Features requiring external route, turn-by-turn, or road input may be unavailable in a given setup; describing their internal calculations does not imply support for those former connection methods.

Catalog defaults and initial Params can differ ​

ParameterCatalog defaultInitial Params value
AutoCurveSpeedFactor100120
AutoNaviSpeedCtrlEnd67
MapTurnSpeedFactor10090
AutoRoadSpeedAdjust050

Record the value currently shown on the device before changing anything.

1. Speed cameras ​

The related settings are AutoNaviSpeedCtrlMode, AutoNaviSpeedCtrlEnd, AutoNaviRearCameraHoldDistance, AutoNaviSpeedDecelRate, AutoNaviSpeedSafetyFactor, AutoNaviCountDownMode, VehicleNaviCanControl, VehicleNaviSchoolZoneControl, VehicleNaviDecelCancel(VehicleNaviDecelCancelBox, VehicleNaviDecelCancelMobileZone, VehicleNaviDecelCancelBump, VehicleNaviDecelCancelUnknown, VehicleNaviDecelCancelEarlyWarning), VehicleNaviSectionAvgControl, VehicleSpeedCameraControlMode, and VehicleSpeedCameraDistanceTime.

AutoNaviSpeedCtrlMode ​

ValueEvents used for deceleration
0Disabled
1Fixed cameras and average-speed zones
2Mode 1 plus speed bumps
3Mode 2 plus mobile-camera events

The event type, limit, and distance must all be valid. An average-speed zone retains its target until the end distance; mobile-camera events are used only in mode 3.

Stock-navigation CAN control ​

When external navigation is connected, deceleration and countdowns use external navigation only. Stock cameras, bumps, sections, 30 km/h zone caps, and stock-navigation speed displays are excluded even if external navigation has no current guidance or enforcement item. After disconnection or receive timeout is detected, stock navigation becomes available again according to its settings.

VehicleNaviCanControl selects when exact camera and speed-bump distances from stock navigation are used on supported Hyundai/Kia CAN-FD vehicles. The modes below apply only without an external navigation connection. Always apply in mode 1 means independent of stock route guidance.

A current camera warning is associated only with a nearby distance candidate with the same limit. If only a distant same-speed camera is available, the current warning uses its own virtual distance while the distant camera remains queued for a later approach.

ValuevNAVI future-event scope
0Disabled
1Always use cameras and bumps
2Always use cameras; use bumps only when they match the calculated route
3Use both cameras and bumps only when they match the calculated route

A route match requires vNAVI to mark the current segment as calculated_route=1 and the future event's path index to equal the current path. With no route, during recalculation, on a path-index mismatch, or when route data is more than two seconds old, mode 2 rejects queued bumps and mode 3 rejects queued cameras and bumps. This filter applies only to future distance profiles. Current camera states confirmed directly by the vehicle remain controlled separately by VehicleSpeedCameraControlMode.

The Kia PV5 also holds a section speed cap after a section alert. A currently active section confirmed directly by the PV5 remains effective in VehicleNaviCanControl modes 1–3. It retains the cap after the brief alert ends and releases it when navigation enforcement ends, on early exit, on conflicting limits, or after more than one second of signal loss.

PV5 section control does not calculate average speed or remaining distance. Restarting, losing signals, or re-enabling the setting requires a new section alert, so the cap may not resume immediately within a zone. Recorded driving validates entry, retention within the zone, and early exit; passage through the actual enforcement endpoint remains to be validated. VehicleNaviSchoolZoneControl remains unsupported on the PV5.

This experimental control is off by default. First verify that the displayed event type, limit, and remaining distance match the road, and disable it immediately if they do not.

Stock-navigation camera kinds ​

The current stock warning (0x4A3) carries no camera kind. The kind of the preview received about 2 km ahead (0x4BE) is attached to the warning with the same limit at the same position. A warning starts about 6.1 m per km/h of the limit before its camera (about 366 m at 60 km/h), so only previews at that position match. A warning of unknown kind still decelerates as before.

Preview kindNavigation iconHandling
Fixed speed cameraRed squareAlways decelerates; no skip
Signal-and-speedTraffic-light iconAlways decelerates; no skip
Rear speed, rear signal-and-speed—Always decelerates; no skip (identified by the preview's rear flag)
Mobile enforcement zoneBlue circleDecelerates when AutoNaviSpeedCtrlMode is 3; ignored at 2 or lower
Mobile-camera box—Decelerates; can be cancelled with the deceleration cancel request

A warning that also carries a fixed, signal, or rear camera always decelerates, even inside a mobile zone.

VehicleNaviDecelCancel (deceleration cancel request) ​

When enabled, while engaged and one of the kinds enabled in its details is decelerating, one press of cruise + or a gas tap (accelerator pressed for under 0.4 s) cancels that deceleration. The input does not raise the set speed (neither +1 nor the gas-tap +10), and the cancel applies to that one camera or bump; the next one decelerates again. While disengaged, below about 18 km/h, or when that kind is not actually decelerating, + and the gas tap keep their normal resume/engage/set-speed roles. Fixed, signal and rear cameras, warnings without a preview and section enforcement cannot be cancelled. Off by default.

Per-kind toggles (in the setting's detail screen, on by default so turning on the master enables all):

KeyApplies to
VehicleNaviDecelCancelBoxMobile-camera box
VehicleNaviDecelCancelMobileZoneMobile enforcement zone; matters only when AutoNaviSpeedCtrlMode is 3, so zones decelerate
VehicleNaviDecelCancelUnknown[Experimental] Warnings whose camera kind preview was not received or not understood. It can include signal or speed cameras that send no preview, so off by default and must be turned on separately from the master. Not applied at 30 km/h or below (school and senior zones) or inside a section; if a signal, rear or fixed preview is matched after the cancel, that rule applies
VehicleNaviDecelCancelEarlyWarning[Experimental] For roads/cars where the warning starts earlier than 6.1 m x the limit. Grows the far end of the matching window up to 1.35x so box, fixed and mobile-zone previews are found. Risk: a mobile-zone preview attached to the wrong warning can, with low probability, skip a real enforcement camera when the mobile-zone cancel is on or AutoNaviSpeedCtrlMode is 2 or lower; always verify. Off by default
VehicleNaviDecelCancelBumpStock-navigation speed bump. The input is used only while the bump target (from the speed-bump settings) is below the set speed, i.e. actually decelerating, and cancels the nearest bump only

VehicleNaviSectionAvgControl ​

When enabled, a stock-navigation section (vehicle average-speed signal present) still stays capped at the section limit × AutoNaviSpeedSafetyFactor (for example 117 in a 110 section at 107%). While engaged and with the cruise set speed above that cap, one press of cruise + or a gas tap unlocks the section. Up to the set speed is then allowed only while the average since entering the section stays at or below the section limit. Only time banked by driving slower (for example in congestion) can be spent; without it, or once it is spent, the cap applies. The bank uses the vehicle-speed (vEgo) odometer scaled to true distance (×1.015; vEgo reads about 0.6 % below GPS), and the allowance is passed back through the safety factor and the cluster/actual speed ratio so the car actually drives at it. Without banked time the cap is the same section limit × AutoNaviSpeedSafetyFactor as when locked, so if that is above the limit in true speed (for example 107 %), the average can exceed the limit by that much. The unlocking input does not raise the set speed (neither +1 nor the gas-tap +10). A long press of cruise - locks the section again without changing the set speed (while unlocked, a long - does not do its −10 step; a short press still lowers the set speed as usual). Leaving the section resets it.

Once unlocked, no virtual camera distance is used inside the section, and the end camera decelerates to the spot limit after its preview about 2 km ahead. The average uses the vehicle odometer (vEgo) with no margin. In a recorded drive the navigation-displayed average was 2–3 km/h higher than this calculation, so adjust the cruise set speed yourself if needed. The section start is taken when the average-speed signal appears; experimental.

VehicleSpeedCameraControlMode ​

This setting applies only to camera, average-speed-zone, and 30 km/h zone deceleration received over vehicle CAN. It does not affect camera information from Carrot Navi.

ValueAccelerator behavior
0Disable vehicle-received camera deceleration
1Always apply deceleration regardless of accelerator input
2Once the camera target is below vehicle speed and actual deceleration has begun, a new accelerator press overrides the current event and keeps the highest speed reached during the override as its lower bound
3Suspend vehicle-received camera deceleration while the accelerator is pressed and resume it after release

In mode 2, an accelerator held from before actual deceleration begins does not pre-arm a floor. A new press during actual deceleration is treated as a request to ignore the current event, and the floor rises to the highest speed reached while accelerating. Releasing the pedal does not permit further slowing below that floor during the same event. Braking, stopping, a speed-limit or deceleration-source change, or the end of the event clears it.

On the Kia PV5, a matched camera distance remains active through brief notification pulses only while fresh stock-navigation messages continue to report the same enforcement limit. When enforcement ends, the limit changes, or either message is lost for more than one second, the current and queued camera distances are cleared.

A queued distance alone cannot trigger deceleration, including after the current camera's distance is exhausted. A new valid warning without a newly received matching distance uses the virtual distance below; an unchanged warning for a completed camera cannot restart it. PV5 route departure is not detected independently: cancellation relies on stock navigation ending or changing its enforcement state.

VehicleSpeedCameraDistanceTime ​

When the vehicle supplies only an enforcement speed without an exact camera distance, this setting creates a virtual deceleration distance. At a 50 km/h camera, 6.0 s produces about 300 m and 6.2 s about 310 m. A live change is applied within about one second.

On supported CAN-FD vehicles, this also applies when no nearby camera distance matches the current warning. A new warning or a limit change starts a fresh virtual distance, which decreases with travel. Once the distance is exhausted, the cap remains while the warning is active; the virtual distance does not repeatedly restart at its full length.

AutoNaviRearCameraHoldDistance ​

When external navigation reports a rear speed or rear signal-and-speed camera (TMAP types 75/76), keep the target-speed cap beyond the camera position. The default is 100 m, the range is 0–300 m, and the step is 10 m. 0 disables the extra hold. Increasing the value holds farther beyond the camera; decreasing it releases sooner.

The camera position is captured within the final 50 m and then tracked by traveled distance. The hold survives guidance removal or a switch to the next camera or bump. A lower speed required by another control still takes precedence. Stopping does not consume the hold distance. The display shows the rear-camera hold and remaining distance; the countdown ends at the original camera position.

External disconnection, off-route status, a new navigation session, a traveled-distance reset, or disabling camera deceleration clears the hold. Stock CAN does not identify rear-camera types, so it uses its active warning to retain the cap without this extra distance. The configured distance does not guarantee that measurement by the actual camera has ended.

AutoNaviSpeedSafetyFactor ​

camera target = received limit × safety factor / 100
LimitFactorTarget
60 km/h100%60 km/h
60 km/h105%63 km/h
100 km/h95%95 km/h

This does not guarantee speedometer error or any legal tolerance. A wrong input limit produces a wrong target.

AutoNaviSpeedCtrlEnd ​

This is not time spent decelerating after an event. It creates a distance margin at the target speed:

completion margin = target speed (m/s) × completion time (s)

At a 60 km/h target (about 16.7 m/s), 6 seconds is about 100 m and 10 seconds is about 167 m before the camera. Raising the value aims to finish slowing earlier but can hold the lower speed longer.

AutoNaviSpeedDecelRate ​

The catalog default and initial Params value are both 120, corresponding to 1.20 m/s². Updating the software does not change an existing saved setting.

The stored value is multiplied by 0.01 m/s² to calculate the approach curve for cameras and speed bumps:

Stored valueRate usedPerceived direction
800.80 m/s²Start earlier and more gently
1201.20 m/s²Default
2002.00 m/s²Can start closer and slow more strongly

The important direction is: a lower value starts deceleration earlier. The speed ceiling follows:

allowed_speed² = target_speed² + 2 × rate × (remaining_distance - completion_margin)

If slowing begins too late, lower this value one step. If it begins too early, raise it. Do not change CtrlEnd at the same time.

AutoNaviCountDownMode ​

ValueCountdown display
0Off
1Turn points and speed events, excluding bumps
2Turn points, speed events, and bumps

The countdown uses only external-navigation distances while connected, and stock-navigation distances otherwise. Changing the connection state resets the previous countdown. It estimates seconds from distance and current speed and does not alter the deceleration calculation.

Recommended tuning order: validate event data, set the target with SafetyFactor, set the completion position with CtrlEnd, and finally tune the approach curve with DecelRate.

2. Road speed limit ​

AutoRoadSpeedLimitOffset ​

With an active, valid road limit of at least 30 km/h:

road target = road limit + offset
ValueMeaning as a final-speed candidate
-1Do not use the limit-plus-offset candidate
0Use the limit as received
5Use 5 km/h above the limit

-1 is not a global off switch. CruiseSpeed1=0 and AutoRoadSpeedAdjust=-1 use a negative offset as the condition for a separate safety-factor calculation.

AutoSpeedUptoRoadSpeedLimit ​

While following a lead, cruise set speed can rise in 5 km/h steps up to:

automatic ceiling = road limit × setting / 100

All of these must be true: automatic increase is not paused; a lead is within about 60 m; lead speed plus 5 km/h exceeds set speed; and set speed is below the ceiling. 0 disables this feature. SET/- or braking can pause it; RES/+, accelerator input, or a stopped state can release the pause.

AutoRoadSpeedAdjust ​

IMPORTANT

The current code returns before this setting is evaluated when the ceiling calculated by AutoSpeedUptoRoadSpeedLimit is below 1 km/h. Therefore AutoSpeedUptoRoadSpeedLimit=0 effectively disables AutoRoadSpeedAdjust too.

ValueBehavior when the road limit changes
-1Immediately synchronize to the new road target on either increase or decrease
0Keep the existing set speed
1–99On a decrease only, move to a weighted value between current set speed and new limit
100On a decrease, move directly to the new limit

At 50%, a current set speed of 100 and new limit of 60 produces 80 km/h. This 1–100 branch uses the raw road limit, not the offset or safety factor.

For -1, a non-negative offset selects limit + offset; a negative offset selects limit × camera safety factor. Immediate synchronization is especially sensitive to incorrect road-limit input.

3. Speed bumps ​

Speed-bump control uses AutoNaviSpeedBumpTime, AutoNaviSpeedBumpSpeed, and AutoNaviSpeedBumpEndDistance. It requires AutoNaviSpeedCtrlMode >= 2, a bump event and distance, and a road category that the code does not treat as highway. A stock-navigation CAN bump must also satisfy the route condition selected by VehicleNaviCanControl. With the deceleration cancel request on (VehicleNaviDecelCancel + VehicleNaviDecelCancelBump), + or a gas tap during a bump deceleration cancels the nearest bump.

AutoNaviSpeedBumpSpeed ​

This is the crossing target in km/h. Raise it to cross faster and lower it to cross more slowly. Vehicle height, suspension, and bump shape matter; an unrecognized bump is unaffected.

AutoNaviSpeedBumpTime ​

bump completion margin = bump target (m/s) × setting time (s)

At 36 km/h (10 m/s), 1 second aims to reach target about 10 m before the bump; 3 seconds aims for about 30 m. A larger value finishes earlier. The approach curve still uses AutoNaviSpeedDecelRate.

AutoNaviSpeedBumpEndDistance ​

The speed-bump limit is released when remaining distance is at or below this setting. The stored and displayed unit is cm, so the default 200 releases the limit 2 m before the received bump position. 0 preserves the former behavior through the received point.

This does not move the bump or change its approach curve. Normal longitudinal control restores speed after the bump limit is removed, and the countdown may continue to the received position. Raise the value in 10–50 cm steps when a mapped bump lies behind the physical bump and recovery starts late. Lower it if the vehicle begins accelerating before the actual bump.

As with a camera event, a new accelerator press after a bump signal has begun actual deceleration is treated as a request to ignore that bump. The highest speed reached while accelerating becomes the floor for the rest of the event, and the floor is cleared when the bump event ends. An accelerator held from before deceleration began does not start the override.

If there is no slowing, check mode 2+, event type 22, remaining distance, road category, and the stock-navigation route mode. For late slowing, lower DecelRate or raise BumpTime; for an incorrect crossing speed, adjust only BumpSpeed. If recovery starts late after passing the bump, raise BumpEndDistance; if it starts before the bump, lower it.

4. Curves and turns ​

There are three distinct sources:

  • Vision curve speed from predicted yaw rate and speed
  • Route-turn speed from route/turn input
  • Applied model driving speed from the model's overall desired velocity

AutoCurveSpeedFactor ​

The code divides predicted yaw rate by velocity at the same point to obtain curvature. It divides the 1.9 m/s² reference lateral-acceleration budget by the setting ratio, so a higher factor produces a lower curve target. Predicted future velocity is not used directly as a driving-speed target.

The curve target and remaining path distance determine the speed ceiling at the current position. A distant curve permits a higher approach speed; the ceiling decreases toward the curve target as the vehicle approaches. The calculation reserves time for control response and gradual braking buildup. When consecutive fresh model paths confirm that the turn is easing, vTurn recovers promptly to the lowest ceiling from roughly the last 0.25 seconds. A tighter curve limit applies immediately; repeated frames or missing model input do not justify fast release. Actual acceleration still follows the existing acceleration and jerk limits.

Slow or invalid model predictions and isolated yaw-rate spikes are excluded. Late or inaccurate curve predictions can still lead to late deceleration.

The relationship is approximately inverse-square-root: changing 100% to 120% produces about 1 / √1.2, or 91% of the previous calculated speed. Raise it one step if curves are too fast; lower it if they are too slow.

AutoCurveSpeedLowerLimit ​

This floor applies to vision-curve and route-turn candidates. For vision curves, it applies to the curve target before remaining distance determines the current approach ceiling. Raising it prevents those sources from selecting a lower speed, which can leave insufficient slowing for a sharp curve. It is not an automatically safe minimum.

TurnSpeedControlMode ​

ValueVision curveRoute turn
0OffOff
1OnOff
2OnNear the turn point
3OffAlways included as a candidate

In mode 2, route-turn speed enters only when turn distance is roughly between -500 m and +500 m. Mode 3 can cause unexpected slowing when route data is inaccurate.

IMPORTANT

Mode 0 does not disable every model-derived speed function. ApplyModelSpeed changes cruise set speed separately.

MapTurnSpeedFactor ​

route-turn candidate = route speed × factor / 100

80% lowers the received value; 100% keeps it; 120% raises it. AutoCurveSpeedLowerLimit is then applied as the floor. Valid supported route-speed input is required.

ApplyModelSpeed ​

This is not curve-only. It applies the driving model's desiredVelocity to cruise set speed:

applied model speed = desiredVelocity × abs(setting) / 100
effective ceiling = min(applied model speed, road limit × 110%)
ValueCurrent behavior
0Disabled
PositiveRaise set speed to the ceiling only when currently below it
NegativeDirectly overwrite set speed with the calculated ceiling

WARNING

A negative value is a strong continuous overwrite, not a “deceleration only” switch. Without a valid road limit, the ceiling can become zero. Leave it at 0 unless you fully understand the input path and behavior.

For isolated tuning, start with mode 1 and ApplyModelSpeed=0; adjust the curve factor, then the floor, and then check route-turn control. Test ApplyModelSpeed separately because it changes cruise set speed.

5. Traffic-light detection ​

This uses the model's predicted path end and future speed changes, together with incoming signal events. It is not a simple direct camera color reader.

TrafficLightDetectMode ​

ValueIntended behaviorCurrent-code note
0DisabledDetection state forced off
1Detect stops onlyBlocks automatic departure from a complete stop
2Detect stop and goMay transition to departure on a green decision

IMPORTANT

While decelerating, mode 1 still has a branch that can cancel the stop plan after a green decision. It cannot be interpreted as “never use any departure judgment.”

Detection is disabled or limited in high-speed driving mode (MyDrivingMode=4), above roughly 20 degrees of steering angle, when the model lacks stop-path confidence, during selected strong-deceleration conditions, or when a lead is ahead of the stop target.

TrafficStopDistanceAdjust ​

The stored value is divided by 100 and added to the stop-obstacle position in meters:

Stored valueAdjustmentDirection
-200-2.0 mStop earlier/farther from the line
-150-1.5 mInitial Params value
00 mModel position
100+1.0 mStop later/closer to the line

Near a complete stop, the current code uses a fixed -2.0 m instead of the user value, so the final position may not exactly match the setting.

There is one vehicle-relative exception. During an E2E stop with no active leadOne, a high-probability, low-speed camera-model vehicle must remain 0–3 m ahead of the planned stop endpoint for five frames (about 0.25 s). For that stop only, the planner uses a +2.0 m virtual-obstacle offset instead of the signal adjustment, allowing the MPC to preserve StopDistanceCarrot from the inferred vehicle position. It does not create an SCC/radar object or promote leadOne; if confirmation fails, the existing signal-stop and fixed -2.0 m behavior remain unchanged.

Adjust by 100 (1 m) at a time under comparable no-lead signal stops, because the automatic vehicle-relative correction can take priority when a stopped vehicle is present. If false signal detection is the problem, diagnose the mode/model decision instead of the distance offset.

Quick troubleshooting ​

SymptomCheck first
Slowing starts too late for a cameraEvent distance → lower DecelRate → raise CtrlEnd
Camera target is unexpectedReceived limit, SafetyFactor, other lower candidates
No response to a changed road limitValid limit, auto-increase setting, adjust dependency
No speed-bump slowingMode 2+, event type, road category
Curve slowing on a straight roadWhich of vision, route, or model selected the minimum
Slowing with turn mode 0Future-model speed, applied-model speed, separate ATC
Unwanted traffic-light stop/goDetection mode, driving mode, model decision

Automatic CAN diagnostic logs are generated only when currently received vehicle or radar state from the present onroad session reports an actual error. CAN timeouts from the previous drive's shutdown are not used, and capture occurs five seconds after detection to include the immediate aftermath. When investigating a speed or deceleration issue, upload the affected drive from Carrot Web even if no automatic diagnostic log was generated.

Code references ​

  • Event/limit/bump/turn candidate selection: openpilot/selfdrive/carrot/carrot_serv.py
  • Vision-curve speed: openpilot/selfdrive/carrot/carrot_man.py
  • Future-model speed: openpilot/selfdrive/controls/lib/desire_helper.py
  • Automatic road/model set speed: openpilot/selfdrive/car/cruise.py
  • Traffic-stop state and adjustment: openpilot/selfdrive/carrot/carrot_functions.py
  • Traffic-stop MPC: openpilot/selfdrive/controls/lib/longitudinal_mpc_lib/long_mpc.py
  • Setting ranges/defaults: openpilot/selfdrive/carrot_settings.json, openpilot/common/params_keys.h

Back to Understanding Settings


Source reference ​

Reference checked 2026-10-30 · carrot-wip · 10bf0a56.

docs/user/ko/speed-deceleration.md · openpilot/selfdrive/carrot_settings.json

The development branch continues to change. Check your device’s branch, commit and current settings together.