I am building an adaptive cruise control module for my 1983 Mercedes.
While it has a factory cruise control (or tempomat in german), the adaptiveness is what really missing. It was made obvious on my last interstate cruise from Brisbane to Sydney and back.
Getting stuck behind a car that goes around a speed limit, but speeds up and slows down all the time is a bit annoying.
I've been researching the possibility for a couple of years now, but I finally decided that it is time.
I've started by researching what radar modules are available, and which can be used without too much hassle.
Most of the modern OEM radar units implement some sort of component protection, and also rely on heavy communication with ecu, tcu, abs, and other systems. Basically, they implement cruise control algorithms internally, and send out requests for acceleration and braking.
After a lot of search effort, I've come across radars used on new Teslas. They hit all of the boxes — no crazy unit protection, it requires just a simple heartbeat from ECU. And also, just as important, they output raw radar data of tracked objects, which is perfect for implementing custom control strategies.
Adaptive Cruise Control using Tesla Radar
-
xtitoris
- Posts: 4
- Joined: Sat Feb 28, 2026 3:12 pm
- Github Username: xtitoris
Adaptive Cruise Control using Tesla Radar
You do not have the required permissions to view the files attached to this post.
-
xtitoris
- Posts: 4
- Joined: Sat Feb 28, 2026 3:12 pm
- Github Username: xtitoris
Re: Adaptive Cruise Control using Tesla Radar
On the other side of the equation is an OEM cruise control module. It holds up surprisingly well for a 40 years old piece of technology, and tracks speed better that some newer cars.
To actuate the throttle it uses what is basically a DWB unit - a dc motor with a resistive position sensor, that pulls on the throttle linkage.
What it extremely important, there are several layers of protections built in. Normally, the module is connected to ground through brake light bulbs, giving it a very strong pull down.
When driver presses on the brake, light bulbs are energised, and ECU input goes to 12V. This in turn makes several things happen
- CC module receives !EN signal on one of its pins, and disengages the control
- But, to be safe, module outputs are routed via LM2901 comparator, and when !EN signal is high, it disables all outputs
- But, to be extra safe, a cruise control actuator clutch solenoid is also grounded via stop lights, so when they are on, low side pulls up to +12V, and it disengages
The actual adaptive control is achieved via intercepting the speed signal to the module, and altering it, so that if the car in front is too close, we send it a speed higher that actual. Module thinks it is going too fast, and backs off. After safe distance is attained, speed goes back to the actual value.
To actuate the throttle it uses what is basically a DWB unit - a dc motor with a resistive position sensor, that pulls on the throttle linkage.
What it extremely important, there are several layers of protections built in. Normally, the module is connected to ground through brake light bulbs, giving it a very strong pull down.
When driver presses on the brake, light bulbs are energised, and ECU input goes to 12V. This in turn makes several things happen
- CC module receives !EN signal on one of its pins, and disengages the control
- But, to be safe, module outputs are routed via LM2901 comparator, and when !EN signal is high, it disables all outputs
- But, to be extra safe, a cruise control actuator clutch solenoid is also grounded via stop lights, so when they are on, low side pulls up to +12V, and it disengages
The actual adaptive control is achieved via intercepting the speed signal to the module, and altering it, so that if the car in front is too close, we send it a speed higher that actual. Module thinks it is going too fast, and backs off. After safe distance is attained, speed goes back to the actual value.
You do not have the required permissions to view the files attached to this post.
-
xtitoris
- Posts: 4
- Joined: Sat Feb 28, 2026 3:12 pm
- Github Username: xtitoris
Re: Adaptive Cruise Control using Tesla Radar
To communicate withe the radar I've connected it to a custom control module that I've designed quite a long time ago for the purpose of controlling the instrument cluster on the Mercedes.
Originally I've used this module for the swap I did of another W126 to OM606 diesel engine + 722.6 gearbox. The dashboard required some control signals to drive a speedo, tach, coolant temperature gauge, glow plugs heating indicator, and as an added bonus, display boost, current gear, and some other parameters. And the best thing is it slots right into the factory location of outside temperature display, for the OEM+ look.
The current iteration is based on ESP32, and has 8 low side protected switches, and 6 analog-capable protected inputs, plenty for what I needed.
Originally I've used this module for the swap I did of another W126 to OM606 diesel engine + 722.6 gearbox. The dashboard required some control signals to drive a speedo, tach, coolant temperature gauge, glow plugs heating indicator, and as an added bonus, display boost, current gear, and some other parameters. And the best thing is it slots right into the factory location of outside temperature display, for the OEM+ look.
The current iteration is based on ESP32, and has 8 low side protected switches, and 6 analog-capable protected inputs, plenty for what I needed.
You do not have the required permissions to view the files attached to this post.
-
xtitoris
- Posts: 4
- Joined: Sat Feb 28, 2026 3:12 pm
- Github Username: xtitoris
Re: Adaptive Cruise Control using Tesla Radar
And finally connecting it all together
To make the test rig more independent, I've hacked together couple more things - I've connected a GPS receiver to the module to get vehicle speed, and an SD card to dump the logs to.
And after some tinkering with can data streams, I've got some first useable data. That was really exiting. Radar tracks up to 40 objects, but as you can see, most of them are of no interest in this particular application — trees, light poles, and oncoming traffic might be useful for a self-driving vehicle, but for a simple cruise control is just some noise.
After doing some modelling on the acquired radar data, I've applied some filtering, and added tracking logic.
green/yellow/red zones are one second of distance at current speed
There are still some issues left to address:
- Due to the suboptimal mounting location, there is some 'ghosting' due to reflections from metal parts of the grille. I would need to relocate the radar to a place with less structure around it, probably behind a plastic bumper.
- When the road curves, from the controller point of view it is indistinguishable from all of the tracked objects moving laterally, so the target may be lost, as if it moved to a next lane. To fix that I need to introduce the steering angle sensor.
To make the test rig more independent, I've hacked together couple more things - I've connected a GPS receiver to the module to get vehicle speed, and an SD card to dump the logs to.
And after some tinkering with can data streams, I've got some first useable data. That was really exiting. Radar tracks up to 40 objects, but as you can see, most of them are of no interest in this particular application — trees, light poles, and oncoming traffic might be useful for a self-driving vehicle, but for a simple cruise control is just some noise.
After doing some modelling on the acquired radar data, I've applied some filtering, and added tracking logic.
green/yellow/red zones are one second of distance at current speed
There are still some issues left to address:
- Due to the suboptimal mounting location, there is some 'ghosting' due to reflections from metal parts of the grille. I would need to relocate the radar to a place with less structure around it, probably behind a plastic bumper.
- When the road curves, from the controller point of view it is indistinguishable from all of the tracked objects moving laterally, so the target may be lost, as if it moved to a next lane. To fix that I need to introduce the steering angle sensor.

