top of page
Search

Passive Perception with Sonar and mmWave Radar



1. Introduction


This is part of the PerceptIn technology blog on how to build your own autonomous vehicles and robots.  The other technical articles on these topics can be found at https://www.perceptin.io/blog.


Figure 1: modular design architecture

In this article we briefly introduce the passive perception technologies, in which we use sonar and mmWave radar for near-field (< 20 meter) object perception.  This distance should be more than enough for low-speed autonomous vehicles with a very short breaking distance. By passive perception we mean that the sensor data gets connected directly to the chassis without going through the main computing pipeline.  This way we minimize the detection latency and make sure the chassis reacts to immediate danger with shortest possible reaction time.  



2. mmWave Radar


Millimeter wave (mmWave) is a special class of radar technology that uses short wavelength electromagnetic waves [1, 2]. Radar systems transmit electromagnetic wave signals that objects in their path then reflect.


By capturing the reflected signal, a radar system can determine the range, velocity and angle of the objects. mmWave radars transmit signals with a wavelength that is in the millimeter range. An mmWave system operating at 76–81 GHz (with a corresponding wavelength of about 4 mm) have the ability to detect movements that are as small as a fraction of a millimeter.


A complete mmWave radar system includes transmit (TX) and receive (RX) radio frequency (RF) components; analog components such as clocking; and digital components such as analog-to-digital converters (ADCs), microcontrollers (MCUs) and digital signal processors (DSPs).


Figure 2 shows a sample configuration of how you can install radar on your vehicle.  In this case, we place the radar device in the middle of the front of the vehicle for it to capture a 15 to 20-meter range in front of the vehicle (Figure 3).  In case of any object entering the detection range, the radar sensor can easily detect these objects and send the detections either to the chassis directly for passive perception, or to the main computing unit for active perception.  Note that for most low-speed autonomous vehicles, the braking distance is less than 1 meter, this allows us to use the detection range of 5 meters out for active perception, and the detection range of within 5 meters for passive perception.  This threshold can be easily configured using our software interface.


Figure 2: sample configuration of mmWave radar

Figure 3: detection range of mmWave radar

Figure 4 shows the hardware test set to enable radar.  Since by default the radar is connected to the CAN bus, we need a USB CAN card to attach the radar to USB device, also we need a power supply to power the radar sensor.  Once the radar sensor gets connected to the CAN card, you can connect the CAN card to your computer through USB and start reading detection data. It should be a very smooth five-minute setup.


Figure 4: hardware set

Figure 5 shows the very easy-to-understand UI of the mmWave Radar, which projects any detected objects with a bird’s eye view, and on the UI we show the distance as well as the orientation of the detected obstacles.  These active perception results are what the planning and control module require to make intelligent motion decisions.  Figure 6 shows the hardware specifications of this device [3].


Figure 5: radar detection UI

Figure 6: radar hardware specifications

The code snippet below shows the simple data structure for radar data, which contains the object index; the range, or distance, of the object; the radial velocity of the object; the radial acceleration of the object; the Azimuth angle; the signal strength or power.  We also provide a very simple software API to capture radar data for you to build your own passive or active perception logics.


struct MWR_Data {

int index; // object index (range: 0 – 63)

float Range; // usually the range is within 30 meters.

float RadialVelocity; // radial velocity

float RadialAcc; // radial acceleration

float Azimuth;  // azimuth angle with clockwise direction.

float Power;  // detection signal strength

MWR_Data(int i, float Rg, float RV, float RA, float Az, float Pw)

      : index(i), Range(Rg), RadialVelocity(RV), RadialAcc(RA), Azimuth(Az),

Power(Pw) {}

};

MWRadar mwr_radar;

std::vector<MWR_Data> data;  // data means the radar's data

// Read the latest 10 frame.

mwr_radar.Read(data,10)  

// Read the latest frame

mwr_radar.Read(data,1)


A video demo of our mmWave radar in action can be found here:




3. Sonar


Sonar sensors emit sound waves at a high frequency (so that humans cannot hear), then wait for the sound to be reflected back, and calculating distance based on the time required. This is similar to how radar measures the time it takes a radio wave to return after hitting an object.


Sonars can detect certain objects that radar and LiDAR may not be able to detect.  For instance, radar, or even light-based sensors, have a difficult time correctly processing clear plastic, sonar sensors have no problem with this. Also sonar sensors are unaffected by the color of the material they are sensing. On the other hand, if an object is made out of a material that absorbs sound or is shaped in such a way that it reflects the sound waves away from the receiver, readings will be unreliable.


Specifically, in our usage scenario, we use sonar sensors for the very last line of defense, guarding a 3-meter range around the car to make sure the chassis can handle any immediate dangers.


Figure 7 shows a sample configuration of how you can install sonar on your vehicle.  In this case, we place the sonar device in the middle of the front of the vehicle for it to capture a 3 to 5-meter range in front of the vehicle (Figure 8).  In case of any object entering the detection range, the sonar sensor can easily detect these objects for passive perception.


Figure 7: sample configuration of sonar

Figure 8: detection range of sonar

Figure 9 shows the hardware test set to enable sonar.  Since by default the sonar sensor is connected to the CAN bus, we need a USB CAN card to attach the sonar to USB device, also we need a power supply to power the sonar sensor.  Once the sonar sensor gets connected to the CAN card, you can connect the CAN card to your computer through USB and start reading detection data. It should be a very smooth five-minute setup.


Figure 9: hardware set

Figure 10 shows the very easy-to-understand UI of the sonar, with two detection units, the UI projects any detected objects with a bird’s eye view, and on the UI we show the distances of the detected obstacles. Figure 11 shows the hardware specifications of this device [3].


Figure 10: sonar detection UI

Figure 11: sonar sensor specifications

The code snippet below shows the simple data structure for sonar data, which contains two detection distance one for the left detection unit and the other for the right detection unit. We also provide a very simple software API to capture sonar data for you to build your own passive perception logics.



struct USR_Data {

unsigned short left_front; // object range detected by "FB" channel, unit in millimeter.

unsigned short right_front; // object range detected by "FC" channel, unit in millimeter.

};

  USR sonar;

  USR_Data usr_data;

  sonar.Read(usr_data);



A video demo of our sonar in action can be found here:




References


  1. Hasch, J., Topak, E., Schnabel, R., Zwick, T., Weigel, R. and Waldschmidt, C., 2012. Millimeter-wave technology for automotive radar sensors in the 77 GHz frequency band. IEEE Transactions on Microwave Theory and Techniques60(3), pp.845-860.

  2. The fundamentals of millimeter wave sensors, accessed 1 Feb 2019, http://www.ti.com/lit/wp/spyy005/spyy005.pdf

  3. PerceptIn Products, accessed 1 Feb 2019, https://www.perceptin.io/products

bottom of page