I was interested in trying an automotive radar for collision avoidance on a UGV. Automotive radar should be cheaper than LIDAR due to scale production and no moving parts, and requires less brains than stereo vision.
I got a Bosch sensor for an Audi Q5 (Audi part 8R0907561) off eBay. The magical search term was "Adaptive Cruise Control". There are other radars from other companies, I got that one because it was the cheapest and there was some information about it on the net.
Hooked it up to my laptop using a CAN-USB interface (photo below). It outputs a steady stream of messages, unfortunately those messages don't change when I change the distance to objects in front of the sensor. An example of the stream of packets is attached. I feel there may be some configuration that is sent to the sensor to get it to output range information. It gets a little warm to touch and draws around 180mA@12V, so something is happening.
What would really help is a log of the CAN bus traffic from an operational sensor. I could replay this log back into my sensor and see if it came alive.
* Has anyone tried to use an automotive radar?
* Does anyone have an Audi with adaptive cruise control and could log some data for me?
PS for anyone who is interested, here is some links about Bosch automotive radar:
Nice summary article talking about Bosch's radar development, no details. I think I have LRR2, not LRR3.
A university thesis about how well the radar detects different objects. Has some details about the CAN messages but none of the messages match what I get. Probably the audi part has a different firmware.
Service manual for Adaptive cruise control in an audi a8 (in German) has some CAN bus and state diagrams.
Some more Bosch marketing material with nice detail (shows LRR3 has much wider field of view than LRR2).
Retrofit of ACC to an Audi Q7, this is where I got the pinout from.
The CAN bus log is from a Kvaser leaf using Kvaser's canlib library, data format is
id length messages[0..7] flags time
- time is in milliseconds
- the logs are taken from start up, so step 1 start logging, step 2 turn on sensor.
script sort-log.py shows the unique messages.
This is my first post here, but this question was so far up my alley I had to answer. I'm an automotive systems engineer working on active safety systems (not ACC) for a large automotive supplier.
To get the unit to communicate your best bet is definitely to get CAN logs from a running vehicle with ACC active. The radar will likely need activation signals from the body computer before it does anything (e.g engine running status, activation from the driver, target speed etc.)
Strictly speaking, this unit isn't only a radar though. It's combined with an FPGA for low-level processing of the radar returns and object detection, and an ARM CPU for the higher level cruise control algorithms. Typically, they do all the processing onboard, and send only engine and brake torque commands to other ECU's, so there may not be any distance data on CAN at all (sorry).
Some units (it's different depending on the carmaker and supplier, I'm not sure about the Q5) may send distance data over CAN if the cruise control is done on an external ECU (body computer or engine controller), but this data will be optimised for automotive applications (i.e. detecting large chunks of metal moving at highway speed), not for UAV purposes (slow moving or static targets, which are not metallic).
It may be (theoretically) possible to get at the raw radar data with some hardware hacking, but that's way beyond my experience (I'm a SW guy).
Sorry if my answer isn't particularly helpful, but the high level of integration, and application specific SW makes using these sensors for other applications pretty difficult.
If you have anything else you want to know just ask and I'll do my best to answer.
Thanks for taking the time to reply. I can see that the this is very unlikely to work, but there is still a little hope.
In this article, page 4 and 5 there is a small description of the alignment on the sensor. It mentions a diagnostic mode, which seems to output distance information.
Otherwise, yes the messages are not general purpose ranging. Doing a google translate on the description of J428 from SSP_289.PDF page 38 (CAN information exchange) shows:
J428 Control unit for distance control
- Mode adaptive cruise control (all)
- Torque requirement (1)
- Released for torque requirement (1)
- Delay requirement (2)
- Enable delay requirement (1.2)
- Desired acceleration (3)
- Combined request ads, lighting controls and Gong (8)
- Forced activation ESP (2)
- Defaults (Gong, time gap) (11)
Which seems like all high-level kind of messages. I think the numbers refer to the other boxes in the diagram.
Regarding the types of obstacles detected, I think the alignment stand shown at the end of SSP_289.PDF shows that non-car objects will be detected. The ohio uni thesis showed poles and people detected in stationary settings, but that was with a radar of unknown origin (probably direct from bosch).
Anyway, for the moment I think I've given up.
I am doing the similar thing. I am trying to find the cable. Can you find the can-usb interface that can be applied directly? It seems that you customized the cable with some additional wires.
No cable is available afaik. The wires are power (12v and ground) and CAN-high and CAN-low, connected to CAN-USB interface (twisted pair in photo). The pin numbers are available from the audi forum link given earlier. The twisted pair have 120ohm resistors as shown on CAN bus wike page http://en.wikipedia.org/wiki/CAN_bus
Do you have access to a working vehicle with radar? for me reverse engineering is impossible because I don't have the vehicle side of the communications.
Brilliant idea and great effort! If you come up with any further info, please let us know.
I have a different application for using this same technology -- will investigate and see what I can come up with.
Thanks for your information. I don't have the access to a vehicle yet. I am trying to find one.
Okay; I'm way out of my league on this one, but it's to tempting to resist.....
If installed on a suitable UAV airframe, can this system work with the APM to execute a failsafe function, should the UAV encounter, if I may, "large chunks of metal moving at highway speed"?
The idea of a UAV executing a chute deployment, or emergency altitude scrub maneuver, if a flight path threat is detected, really gets me excited.
Do you know how to differentiate whether it is LRR2 or LRR3 without opening it?
In the IEEE Spectrum article linked earlier ( http://spectrum.ieee.org/green-tech/advanced-cars/longdistance-car-... ) there are exploded views of LRR2 and LRR3 side by side. There are some obvious differences in the housing, particularly around the plug, dome and the backplane.
I am trying to do what you did. But when I power the sensor with 12V with a power supply, there is no current shown in the meter. Therefore, I can not get anything from the CAN bus. What kind of power supply did you use? Is there anything I should pay attention to?
BTW, the sensor at my hand is for BMW. I hope this model is similar to your Audi one.
Thanks a lot.
I used a 12v sealed led acid battery. It' visible on the left in the photo.
I doubt I can help. If you post a photo someone might be able to spot a problem.