While historically the focus of bluepilot has been on improved lateral control for Ford vehicles, with the primary goal to remove the human-turn windup and then reduce ping pong with a secondary goal of increasing the ability to take sharp curves, lately the topic of adaptive cruise control improvements has been brought up frequently across all media platforms.  I thought it would be good to write some content on the system and what is going on.

Unlike the lateral controls, which are unique to Ford, the adaptive cruise control system is very similar to those of other makes and models, meaning the challenges to achieving optimal control are not technical.  Rather, the challenges are philosophical, and in some cases, safety-related.  Let’s start with understanding how the Ford control is accomplished.  The primary control variable for any cruise control system is acceleration.  Not to try and interject a physics lesson here, but acceleration is the change in velocity.  Velocity is speed, so change in speed is acceleration.  Although in car magazines and shows acceleration is always talked about in positive terms (gaining speed), it is in fact positive and negative. Applying the brakes generates negative acceleration.  The units of speed are distance per time (miles per hour, or in the case of openpilot code, meters per second), and the units of acceleration are the units of speed per time unit.  In terms of openpilot code, we are looking at how many meters per second our speed should change per second.  IE meters per second per second, or meters per second squared (abbreviated m/s2). There are a few key CAN bus signals we should be concerned with:

AccBrkTot_A_Rq (brake): this is the acceleration request sent to the Antilock Brake System

AccPrpl_A_Rq (gas): This is the acceleration request sent to the gas pedal/throttle body

AccBrkDecel_B_Rq (brake actuate): This is a discrete flag (on/off) send to the master cylinder to determine whether to apply the brakes or not.

I will note that all the analysis comes from Ford’s CAN FD vehicles (F150, Lightning, Mach-E, etc.).  There have been some reports of harsh braking from the Ford ACC system on some CAN vehicles, especially hybrid mavericks.  The exact cause of this is unknown, but it could be a bug in the hybrid motor regeneration logic on the Ford side.

When analyzing Ford CAN bus data, the values of AccBrkTot_A_Rq and AccPrpl_A_Rq generally are very close to each other, although sometimes the brake signal is slightly different than the gas signal, most likely to account for potential ABS engagement in some situations.  What we see is that when the signal to the gas signal is less than zero, no throttle is applied to the engine, and the RPMs start to fall as the engine begins to slow down the vehicle with “engine braking”.  Once the brake signal (which almost always tracks the gas signal) gets to about -0.12 m/s2 in value, the brake actuation signal comes on, and the brakes start to grab.  What this means is that between 0 acceleration and -0.12 acceleration, the vehicle is coasting without apply brakes.  The system will keep the brakes applied until the acceleration climbs back above about -0.06, at which point the brakes will release and the vehicle will begin coasting again until the acceleration goes back above 0, at which point the throttle will be applied.  This mostly provides a smooth ride with coasting up to a lead vehicle, and no harsh throttle take-offs.  The primary exception to this tends to be when using intelligent cruise control, and the set speed limit drops by more than 10mph, at which point Ford does get very aggressive with the brakes.  This is driven by a sharp negative acceleration value from the camera module.

This tells us that the stock Ford system is capable of a nice, smooth ACC experience (Hybrid Mavericks not withstanding) in highway conditions.  Many people complain about Ford ACC’s handling of urban situations, specifically red lights, but that is a different issue to be solved (see this article: https://bluepilot.dev/2026/02/19/red-lights-traffic-jams-and-adas-limitations/).  If this is possible, why do users who engage openpilot longitudinal control experience such harsh cruise control?  The root lies in a philosophical difference between the user, and the comma development team.  The control provided by openpilot is very binary, meaning it is either gas or brake, with no coasting.  This is evident in the logic from stock openpilot (at least as of 02.21.2026).  The following logic is how stock openpilot longitudinal control works.  At an acceleration of 0, throttle is no longer applied, and the brakes are immediately actuated. There is no coasting into a small negative amount of acceleration like with Ford logic.  Then, when it is time to speed up, the brakes are held actuated until 0.3 positive acceleration is requested.  This means that from 0.0 to 0.3 acceleration, the throttle is being pressed, but the brake has not been released.  This generates a pulsing sensation inside the car, and then a quick burst of acceleration as the brake is released.  This quick burst of acceleration often results in too much acceleration, and then the brakes being quickly applied again.  Rinse and repate for the pump brakes and jamming gas cycle.

The obvious solution would be simply to change when the brake actuation flag is sent when using openpilot longitudinal control (and that will be incorporated into the next release of bluepilot), but the secondary issue is how the openpilot model generates acceleration signals versus how Ford’s camera module generates them.  Even when adjusting the actuator setpoints within the openpilot longitudinal logic, the acceleration coming from the model is often so aggressive in both directions that it blows right through those activation points and still results in binary control.  And this is where the real philosophical issue comes in.  Comma believes this is the proper control scheme.

At the 9:45 mark of this video, where comma debuted the Mach-E support in official openpilot, the comma employee can clearly be talking about how bad the Mach-E factory ACC is.  Since the Mach-E has a very smooth ACC with lots of coasting, it is clear that the comma employee believes their binary control logic is superior.

The question then becomes what can be done within a fork to improve the behavior, and the answer is: that is pretty limited.  There is just far too much risk in not applying the brakes when the model has asked for them.  While we will be including some logic to try and slow down how aggressively the brakes are being applied if we can clearly detect a lead that has no imminent risk of collision, the consequences of being wrong about the lead and causing a collision is just too high to ignore the brake signals from the model except in very limited circumstances.

Posted in

Discover more from Blue Pilot

Subscribe now to keep reading and get access to the full archive.

Continue reading