WikiBeta

Toggles, guides, and supported cars. If it's in FrogPilot, it's probably in here!

Curve Speed Controller automatically slows your car before and through curves, using a speed target it learns from your own driving style. Instead of relying on map data or fixed speed tables, it watches how you naturally take curves and builds a personalized profile over time. If your car supports openpilot's direct gas and brake control, this feature is on by default and starts working from your very first drive.

What It Is

Curve Speed Controller calculates a safe maximum speed for every upcoming curve, then commands the gas and brakes to slow you down smoothly before you reach it.

Think of it as a co-pilot who remembers every curve you've driven together. The first time you approach a sweeping highway bend, it uses a conservative default. But over the next several drives, it watches the lateral forces your car actually experiences in curves, and gradually refines its speed targets to match your personal comfort level. Someone who likes to carve through curves briskly will end up with higher speed targets than a driver who prefers gentler cornering.

The key innovation is the calibration system: rather than using a one-size-fits-all number for how much sideways force is comfortable, Curve Speed Controller builds a statistical profile from your real driving data. It stores this profile across drives, so each trip benefits from everything it has learned so far.

Before You Start

Curve Speed Controller requires that your car supports openpilot's direct gas and brake control.

This means your car must allow openpilot to directly manage acceleration and braking (not just steering). If your car uses its own factory cruise control for speed while openpilot only handles steering, Curve Speed Controller won't be available, even if the toggle is visible and turned on.

⚠️ Warning: On a fresh install or after resetting curve data, Curve Speed Controller starts with a default lateral acceleration target of 2.0 m/s². This is moderately conservative. The system will gradually refine its targets as you drive more curves, so expect behavior to change over the first several drives.

Calibration data is collected automatically whenever you're driving through a curve above roughly 11 mph (~5 m/s), cruise control isn't actively engaged, and you're not following a lead vehicle. You don't need to do anything special: just drive normally.

Settings

Curve Speed Controller has a main toggle plus several sub-settings that let you monitor and reset the calibration.

SettingDefaultTuning LevelTypeWhat you see
Calibrated Lateral Acceleration2.00 m/s²AdvancedRead-only labelThe learned acceleration target from your driving
Calibration Progress0.00%DeveloperRead-only labelHow much curve data has been collected
Curve Speed ControllerOnStandardToggleEnables or disables automatic curve slowing
Reset Curve DataMinimalButtonClears all learned data and resets to defaults
Status WidgetOnAdvancedToggleShows the target speed on your driving screen

Curve Speed Controller (Main Toggle)

PropertyValue
DefaultOn
RecommendedOn

When On, the system monitors upcoming road curvature and automatically slows your car to a safe cornering speed. When Off, you'll pass through curves at whatever speed cruise control is set to (or whatever the driving model suggests in Experimental Mode).

What this means for you: Leave this on for a hands-off experience where the car manages curve speeds for you. The only reason to turn it off is if you prefer full manual speed control before curves.

Calibrated Lateral Acceleration

PropertyValue
Default2.00 m/s²
RangeDetermined by your driving data (no enforced minimum or maximum)
Unitsm/s²

This is a read-only display showing the current lateral acceleration target that Curve Speed Controller uses when calculating curve speeds. A higher value means the system allows faster cornering (it "thinks" you're comfortable with more sideways force). A lower value means it slows down more aggressively for curves.

The value is automatically calculated as the 90th percentile of all curve samples you've driven. You can't edit it directly, but you can reset it using the Reset Curve Data button.

What this means for you: Check this number periodically to understand how the system sees your driving style. If it feels like the car brakes too hard for curves, the number may be lower than your comfort level. Driving more curves naturally will help it converge to your actual preference.

Calibration Progress

PropertyValue
Default0.00%
Units%

This read-only meter shows how much of the possible curvature range has been sampled. It's normal for this value to stay low and rarely reach 100%, because it tracks coverage across 100 different curvature levels (from very gentle bends to tight turns). You'd need to drive a wide variety of curve types for the number to climb significantly.

What this means for you: Don't worry if this stays in the single digits. Even a small amount of calibration data improves the system's accuracy. The calibrated lateral acceleration value is more meaningful than this percentage for judging readiness.

Reset Curve Data

PropertyValue
Default
TypeButton

Pressing this button completely erases all stored curve data and resets the calibrated lateral acceleration back to the default of 2.00 m/s². The calibration progress also returns to 0.00%.

What this means for you: Use this if you've changed vehicles (and the device moved to a car with very different handling), or if you want a fresh start after experimenting. After resetting, the system behaves as if it's your first drive.

💡 Tip: You don't need to reset curve data when the system updates. Calibration persists across software updates and reboots.

Status Widget

PropertyValue
DefaultOn
RecommendedOn

When On, a status indicator appears on your driving screen showing when Curve Speed Controller is active and what speed it's targeting. When Off, the feature still works in the background, but you won't see any on-screen feedback.

What this means for you: Keep this on so you can see when and why the car is slowing for a curve. It's especially helpful during the early calibration period when you're learning to trust the system.

How It Works

Curve Speed Controller uses the driving model's curvature predictions combined with a learned acceleration limit to compute a safe curve speed, then smoothly decelerates your car to that speed.

The Physics of Curve Speed

When your car goes around a curve, it experiences a sideways force called lateral acceleration. The tighter the curve and the faster you're going, the stronger this force. The relationship follows a simple physics rule:

alat=v2ra_{lat} = \frac{v^2}{r}

where vv is your speed (in meters per second) and rr is the curve's radius (in meters).

In plain English: If you double your speed through the same curve, the sideways force quadruples. That's why high-speed curves feel much more intense than slow ones.

By rearranging this formula, Curve Speed Controller calculates the maximum safe speed for any curve:

vmax=alat,target×rv_{max} = \sqrt{a_{lat,target} \times r}

In plain English: Given how much sideways force you're comfortable with (the learned target) and how tight the curve is (detected by the driving model), the system calculates the fastest you should be going.

For example, with the default target of 2.0 m/s² and a curve with a 100-meter radius, the maximum speed would be 2.0×10014.1\sqrt{2.0 \times 100} \approx 14.1 m/s, or about 32 mph.

How the Driving Model Detects Curves

The driving model predicts the road's curvature up to about 10 seconds ahead by analyzing the camera image. It calculates the orientation rate and velocity at each point along the predicted path, then identifies the point with the highest lateral acceleration. The system extracts both the predicted curvature and how far ahead (in time) that curvature occurs.

The system considers a curve "detected" when the predicted curve speed at the measured curvature would be lower than your current speed, you're above roughly 11 mph, and neither turn signal is active. Turn signals suppress curve detection to avoid interfering with intentional lane changes.

How Calibration Works

Curve Speed Controller builds its personalized speed profile through a training process that runs whenever you're driving through a curve but cruise control isn't actively engaged:

  1. Data collection: When you drive through a curve above roughly 11 mph, without following a lead vehicle and without cruise control actively managing speed, the system records the actual lateral acceleration your car experienced and the road curvature at that moment.

  2. Running average: For each curvature level (from gentle bends to tight turns, across 100 discrete levels), the system maintains a running average of the lateral accelerations observed at that curvature.

  3. Target calculation: The calibrated target is set to the 90th percentile of all averaged samples. This means the system picks a value that covers 90% of your natural curve-taking behavior, filtering out the occasional aggressive or cautious outlier.

  4. Persistence: Calibration data is saved to your device and survives reboots. It's only cleared if you manually press the Reset Curve Data button.

Speed Target Application

Once Curve Speed Controller detects an upcoming curve, it calculates a deceleration rate based on the difference between your current speed and the curve's target speed, divided by the time remaining before you reach the curve. It then smoothly reduces the speed target each control cycle (every 0.05 seconds), never dropping below roughly 11 mph.

The final speed your car follows is the lowest of: the Curve Speed Controller target, your set speed, and the Speed Limit Controller target (if active). This ensures the most conservative speed always wins.

Weather Adjustment

If Weather Condition Offsets is enabled and detects rain, snow, or low visibility, Curve Speed Controller automatically reduces its lateral acceleration target by the percentage you've configured. For example, a 20% reduction in rain would lower a 2.0 m/s² target to 1.6 m/s², resulting in slower curve speeds in wet conditions.

Status Indicators

Curve Speed Controller shows two distinct on-screen states: a training indicator when collecting data, and an active speed indicator when controlling your speed through a curve.

IconStatusWhat it means
Curve speed icon with pulsing blue glow and "Training..." labelTrainingThe system is actively recording curve data for calibration. You're driving through a curve without cruise control engaged.
Curve speed icon with blue speed labelActiveCurve Speed Controller is actively slowing the car. The blue label shows the target speed.

The status indicator appears to the right of the set speed display, near the top of the driving screen. The curve icon flips horizontally to match the curve direction (left or right).

When the system is actively controlling speed, the blue rounded rectangle below the icon displays the target speed in your preferred units (mph or km/h). This is the speed the system is working to reach before or during the curve.

The training indicator has a pulsing glow animation that cycles every 2 seconds, making it easy to distinguish from the active control state.

💡 Tip: If you see "Training..." frequently during your daily commute, that's a good sign. It means the system is actively collecting calibration data from the curves on your regular routes.

Feature Interactions

Curve Speed Controller works alongside several other FrogPilot features that affect speed and driving mode decisions.

Conditional Experimental Mode (Enhances)

Conditional Experimental Mode and Curve Speed Controller both respond to detected curves, but they do completely different things. Curve Speed Controller calculates a specific speed target and commands the gas and brakes to slow your car. Conditional Experimental Mode separately decides whether to switch from standard driving to Experimental Mode when curves are detected, which changes how the driving model makes overall decisions.

Both features can be active at the same time. When Conditional Experimental Mode's "Curve Detected Ahead" option is enabled, it switches to Experimental Mode when it detects a curve, while Curve Speed Controller independently sets the speed target. The curve detection logic they use is related but not identical: Conditional Experimental Mode uses a smoothed filter that combines both predicted road curvature and current lateral acceleration, while Curve Speed Controller activates specifically when the predicted curve speed is lower than your current speed.

Speed Limit Controller (Works alongside)

When both Curve Speed Controller and Speed Limit Controller are active, the system takes the minimum of all speed targets. If the speed limit says 35 mph but the curve requires slowing to 28 mph, Curve Speed Controller's lower target wins. Conversely, if the curve allows 50 mph but Speed Limit Controller has you at 45 mph, the speed limit target wins. This conservative approach ensures neither feature is overridden by the other.

Weather Condition Offsets (Enhances)

When Weather Condition Offsets detects active weather, it directly reduces Curve Speed Controller's lateral acceleration target by the configured percentage. This means curves are taken more slowly in rain, snow, or low visibility. The reduction is applied before the speed calculation, so it affects all curve speed targets uniformly.

Limitations & Known Issues

Curve Speed Controller is vision-based and subject to the same limitations as the driving model's road predictions.

  • Requires openpilot's direct gas and brake control. Cars where the factory cruise control handles speed (while openpilot only steers) cannot use this feature. This is the most common reason the feature appears to do nothing.

  • Calibration needs accumulated driving data. On a fresh install, the system uses the 2.0 m/s² default target. How many drives are needed before calibration stabilizes depends on how many different curve types you encounter. ⚠️ The exact number of drives required is not specified in the source code and varies by driving habits.

  • Vision-only curvature detection. Curve Speed Controller relies entirely on what the driving model's camera predicts, not map data. Very sudden curves that appear with little visual warning (like sharp switchbacks obscured by terrain) may not be predicted far enough in advance for a smooth deceleration.

  • Curvature range limits. The system tracks curvatures between 0.001 and 0.1. Curvatures outside this range (extremely gentle highway sweeps or extremely tight hairpins) may not be well represented in the calibration data.

  • Suppressed during lane changes. When either turn signal is active, curve detection is suppressed to avoid interference with intentional lane changes or turns.

  • Training only without cruise control active. Calibration data is only collected when cruise control is not actively engaged and you're not following a lead vehicle. This means the system learns from your manual driving, not from its own curve-taking behavior.

  • Roundabouts and non-standard geometries. The driving model's curvature prediction may behave unpredictably on roundabouts, track-style circuits, or roads with unusual geometries where the visual prediction doesn't match the actual road shape.

  • Minimum speed floor. Curve Speed Controller never targets a speed below roughly 11 mph (5 m/s). Very tight curves that would ideally require slower speeds will still get a target of about 11 mph.

Setup Recommendations

For most drivers, the default settings work well out of the box. Here are suggestions for common scenarios.

ScenarioRecommendation
Daily commuter with familiar curvesLeave all defaults. The calibration will quickly learn your regular routes.
Mountain or canyon drivingLeave defaults, but monitor the Calibrated Lateral Acceleration value. If the car brakes too hard, drive a few curves manually at your preferred pace to raise the calibration.
New device or vehicle swapPress Reset Curve Data to start calibration fresh for the new car's handling characteristics.
Rainy or snowy climateEnable Weather Condition Offsets under Quality of Life to automatically reduce curve speeds in bad weather.
Want visual confirmationKeep Status Widget on (the default) to see when and why the car is slowing.

Q: Curve Speed Controller is toggled on, but my car doesn't slow for curves.

A: The most common cause is that your car doesn't support openpilot's direct gas and brake control. Curve Speed Controller requires this. Check whether your car's cruise control is handled by openpilot or by the car's factory system. If you see "Stock longitudinal" in your car's compatibility listing, Curve Speed Controller won't work. Also verify that you're driving above roughly 11 mph and that neither turn signal is active.

Q: The Status Widget isn't showing on my driving screen.

A: First, check that the Status Widget toggle is on (under Curve Speed Controller's settings). It requires your tuning level to be set to Advanced or higher to be visible in the settings. Also, the widget only appears when the system is either training or actively slowing for a curve. If you're on a straight road, there's nothing to display. The widget is also hidden when the map is open in full-screen mode or when a Speed Limit Controller speed change is pending.

Q: The car brakes too hard for curves. How do I make it more relaxed?

A: Curve Speed Controller automatically calibrates to your driving style, but this takes time. The system learns from how YOU drive curves when cruise control is off. To raise the calibrated lateral acceleration (allowing faster cornering), drive through curves at a pace you're comfortable with while cruise control is not engaged. Over several drives, the 90th percentile calculation will shift upward. You can monitor the Calibrated Lateral Acceleration value in the settings to track this change.

Q: The car doesn't brake enough for curves and I feel uncomfortable.

A: If the calibrated value is higher than your comfort level, you can reset the curve data using the Reset Curve Data button. This returns the target to the default 2.0 m/s². Then drive curves at your preferred pace (without cruise control engaged) to let it recalibrate. Over several drives, the 90th percentile calculation will shift to match your more cautious cornering style.

Q: What does the "Training..." indicator mean?

A: This means Curve Speed Controller is actively collecting data about how your car handles the current curve. Training occurs when you're driving through a curve above roughly 11 mph, cruise control isn't actively engaged, you're not following a lead vehicle, and neither turn signal is on. It's a normal part of calibration and doesn't affect your driving.

Q: I already have Conditional Experimental Mode handling curves. Do I need Curve Speed Controller too?

A: They solve different problems. Conditional Experimental Mode's "Curve Detected Ahead" setting switches your driving mode to Experimental Mode when a curve is detected, letting the driving model make broader decisions about the approach. Curve Speed Controller specifically calculates and enforces a speed target for the curve. You can use both together: Conditional Experimental Mode handles the driving mode, while Curve Speed Controller provides precise speed control. Many drivers find the combination works better than either alone.

Q: Does Curve Speed Controller work on highway sweeping curves?

A: Yes, but the effect depends on how tight the curve is relative to your speed. On gentle highway sweeps where your speed is already within the safe range, the system won't intervene. It only activates when the predicted curve speed is lower than your current speed. Very gentle curves may fall at the edge of or below the minimum tracked curvature (0.001), in which case they won't trigger any speed reduction.

Q: The car seems to re-accelerate before I'm fully through a curve.

A: Curve Speed Controller calculates its target based on the driving model's prediction of the curvature ahead. If the model predicts the curve is about to end (the road straightens), the target speed will begin rising. This can occasionally feel premature on long curves where the model's 10-second prediction window doesn't capture the full curve length. Driving more of these curves will help the calibration account for this pattern over time.

Q: How do I reset the calibration?

A: Go to FrogPilot → Driving Controls → Gas / Brake → Curve Speed Controller and tap the Reset Curve Data button. This clears all stored curvature data, resets the calibrated lateral acceleration to 2.00 m/s², and sets the calibration progress back to 0.00%. The system will immediately begin learning again on your next drive.

Q: Does Curve Speed Controller use map data for curves?

A: No. Curve Speed Controller is entirely vision-based, relying on the driving model's camera predictions of road curvature ahead. It doesn't use downloaded map data, navigation, or GPS for curve detection. This makes it work on any road, even ones not in your maps, but it also means it can only see curves as far ahead as the driving model can predict (roughly 10 seconds of travel).

Q: Does Curve Speed Controller interfere with my lane changes?

A: No. Curve Speed Controller only controls gas and braking, not steering. Additionally, curve detection is explicitly suppressed whenever a turn signal is active, preventing the system from misinterpreting a lane change as an upcoming curve and braking unexpectedly.

Curve Speed Controller integrates with features that affect driving mode, speed limits, and weather awareness.

FeatureRelationshipHow it interacts
Conditional Experimental ModeEnhancesBoth detect curves independently. Conditional Experimental Mode switches driving modes while Curve Speed Controller sets speed targets. Using both provides mode-appropriate driving AND precise curve speed control.
Speed Limit ControllerWorks alongsideWhen both are active, the lowest speed target wins. Neither feature overrides the other.
Weather Condition OffsetsEnhancesAutomatically reduces Curve Speed Controller's lateral acceleration target based on detected weather, resulting in slower curve speeds in rain, snow, or low visibility.
Was this helpful?
Curve Speed Controller | FrogPilot