Collision Identification Using Radar: Oakland University School of Engineering and Computer Science
Collision Identification Using Radar: Oakland University School of Engineering and Computer Science
ECE 572
Microcomputer Based Control System
Submitted by
Pranitha Pasunoori
Poojitha Moturi
Sathish rajasekaran
Sujith Janardhanan
Submitted to
Professor Ka C Cheok
Winter 2009
Page 1 of 33
Abstract:
This project is about identifying the objects to avoid collision using Ultra Wide Band
Radar. This system consists of 24 GHz ultra wide band (UWB) radar sensors which provide
object detection and tracking. The main objective of the project is to differentiate the hard
objects and the soft objects. The system should identify the Signal to Noise Ratio of the object
and if it is low it has to pass through it. These sensors can be mounted on a robot/car.
Page 2 of 33
Table of Contents
Acknowledgments ……………................………………………………………………. 4
Introduction ……………………………………………………………………………… 5
Objectives ………………………………………………………………………….....…. 6
Approach …………………………………………………………………………….…... 7
Resources ………………………………………………………………………………..15
Conclusion………………………………………………………………………………18
Appendix
References …………………………………………………………………….…………16
Page 3 of 33
Acknowledgments
As a beginning, the working team would like to gracefully thank Prof. Ka Cheok, Ph.D.
in the Department of Electrical Engineering at Oakland University and the lab assistants Mr.
Pavan, and Mr. Micho.
Page 4 of 33
INTRODUCTION
In recent years, there has been a growing interest towards the development of
intelligent transportation systems (ITS), providing safety and comfort to the passengers and
thereby increasing the efficiency of highway utilization. Headway warning systems and
automatic cruise control systems have received much attention because of their collision
avoidance potential. The performance of the ranging sensor is very critical under such
applications. It needs to be robust under all weather and lighting conditions. It has to provide an
accurate estimate of the range and maintain a track of the objects if necessary. Radar is robust
under all weather conditions and accurately estimates the range and maintains track of objects in
a cost effective manner and is thus a preferred sensor for automotive ranging systems.
Collision Avoidance systems form a part of intelligent vehicle projects.
Automotive radar is expected to be a key technology in ensuring driving safety in the
transportation systems. Several radar sensors have been proposed and developed for collision
avoidance, parking assist, automatic cruise control, road condition recognition, pre-crash
detection and backup warning applications. Narrow beam and long range sensors are preferred
for automatic cruise control and collision avoidance, while short range broad beam sensors are
designed for side impact warning, lane change aid and stop and go operation.
Collision detection radar has to first detect the presence of preceding vehicles and
other objects (targets). Secondly, it has to estimate the range, bearing and the SNR to the targets.
This information can help the driver in maintaining a safe distance from other vehicles and
objects to avoid any collisions.
In our project, we are able to distinguish the hard objects from the soft objects with the
observations we got from the experiments. We have implemented a motor control system using
matlab such that the vehicle can move in other direction when it sees an object in one direction.
Finally, the simulation results show the effectiveness and the validity of the obstacle avoidance
behavior in an unknown environment and velocity control of a wheeled mobile robot motion by
using the skid steering concept.
This project is used to detect relative headings between aircraft or ships at sea and an
object relative to ground.
Page 5 of 33
OBJECTIVES
The team will design collision avoidance model, simulate, develop the required programs, and
test the system with appropriate test cases.
XPC- RADAR
TARGET
Goal 1: To identify the position of different objects taking range, bearing, velocity, yaw rate and
SNR into considerations using the UWB RADAR.
Goal 2: To distinguish Hard and Soft Objects.
Goal 3: To develop accurate positioning using the RADAR and change the orientation according
to the obstacle it detects.
Goal4: Design a Matlab/Simulink model for generating optimized path and drive controller
commands for any number of given waypoints.
Goal5: Allowing the drive controller to change the orientation according to the position of the
obstacle.
Page 6 of 33
Approach
Goal:
Develop accurate positioning algorithms utilizing sensor fusion between the Sensor and
Robot. Using Matlab/Simulink and positioning algorithms, we are designing a control signal to
the path planning system to guide the robot to a waypoint.
Methods:
Using our combined backgrounds from areas of Electrical, Mechanical, and Computer
Engineering, we will apply our acquired knowledge to work towards a goal to effectively create
a system as described in the Goal section above.
Firstly we have identified the position of different objects taking range, bearing, velocity,
yaw rate and SNR into considerations. These factors are determined using a Simulink Model
shown below.
Then according to the range, bearing, SNR of the closest object to the RADAR, We
programmed the motor control system for Skid steering.
Page 7 of 33
SUMMARY OF THE RESULTS
IDENTIFY 3 DIFFERENT OBJECTS INFRONT OF RADAR
This is the experiment with three objects placed at three different places.
Fig: 1
Page 8 of 33
Fig: 2
Page 9 of 33
Fig: 3
Page 10 of 33
SENSOR IDENTIFIACTION OF 10 DIFFERENT OBJECTS
Fig: 4
VEHICLE MOTION WHEN THERE IS NO OBSTACLE
Page 11 of 33
Fig: 5
Page 12 of 33
RAPID PROTOTYPING:
Rapid prototyping is the automatic construction of physical objects using solid freeform
fabrication. The first techniques for rapid prototyping became available in the late 1980s and
were used to produce models and prototype parts. Today, they are used for a much wider range
of applications and are even used to manufacture production quality parts in relatively small
numbers. Some sculptors use the technology to produce complex shapes for fine arts exhibitions.
Rapid prototyping takes virtual designs from computer aided design (CAD) or animation
modeling software, transforms them into thin, virtual, horizontal cross-sections and then creates
each cross-section in physical space, one after the next until the model is finished. It is a
WYSIWYG process where the virtual model and the physical model correspond almost
identically.
With additive fabrication, the machine reads in data from a CAD drawing and lays down
successive layers of liquid, powder, or sheet material, and in this way builds up the model from a
series of cross sections. These layers, which correspond to the virtual cross section from the
CAD model, are joined together or fused automatically to create the final shape. The primary
advantage to additive fabrication is its ability to create almost any shape or geometric feature.
Page 13 of 33
Potential Benefits
Page 14 of 33
Resources
This system will be designed and built in Oakland University, Department of Electrical
Engineering labs, and will be tested and verified inside the campus.
All the necessary equipment will be supplied by OU, the list of the equipments:
1) RC Car/Robot
2) Radar Sensors
3) Other components such as power supplies and hand tools.
4) MATLAB/Simulink Software
Ultra-wideband (aka UWB, ultra-wide band, ultraband, etc.) is a radio technology that can be
used at very low energy levels for short-range high-bandwidth communications by using a large
portion of the radio spectrum. This method is using pulse coded information with sharp carrier
pulses at a bunch of center frequencies in logical connex. UWB has traditional applications in
non cooperative radar imaging. Most recent applications target sensor data collection, precision
locating and tracking applications.
UWB communications transmit in a way that doesn't interfere largely with other more traditional
'narrow band' and continuous carrier wave uses in the same frequency band. However first
studies show that the rise of noise level by a number of UWB transmitters puts a burden on
existing communications services. This may be hard to bear for traditional systems designs and
may affect the stability of such existing systems.
The ultra wideband radar works according to the three messages that are used to have the
communication with the can and the radar. The three messages are
1. Synchronous message.
2. Command message.
3. Target message.
The sync message and the command message is usually sent from RDU to sensors and the target
message is the receiving message, the target message is sent from the sensor to RDU.
Page 15 of 33
24GHz UWB SHORT RANGE RADAR
Specifications:
Page 16 of 33
Yaw-Rate: -3 - +3,
-4 unknown yaw rate
SNR: 10dB + 2dB*SNR (3:0)
CAN:
o Supported Systems
o Window Vista/XP/2000/NT/9x
VxWorks
Linux
xPC Target
Page 17 of 33
CONCLUSION
o Good opportunity to learn about UWB radars in a dynamic system.
o Gained more knowledge about xPC tool in MATLAB/SIMULINK.
Great Team Experience
RECOMMENDATIONS
The SNR should be further checked for color factor particularly for the Black
We got to get stability with the values coming out of UWB.
Connecting multiple UWB to the single CAN case might help us from instable values.
The radar set up should be fixed to a vehicle to check the response for the different scenarios
and compare it with previous data.
Page 18 of 33
APPENDIX A-SIMULINK MODELS
INITIAL MODEL (running in xpc target)
Page 19 of 33
EVERY CAN RECEIVING MESSAGE FROM XPC TARGET
Page 20 of 33
Page 21 of 33
CONTROL SUB-SYSTEM
Page 22 of 33
Page 23 of 33
ENTIRE CONTROL MODEL
Page 24 of 33
STATE FLOW CHARRT FOR THE UWB OUTPUT
Page 25 of 33
STATE FLOW THAT COMMANDS BOTH THE MOTOR
Page 26 of 33
MOTORS AND MOTIONS
Page 27 of 33
OUTPUT RESPONSE
Page 28 of 33
APPENDIX B-MATLAB PROGRAMS
ANIMATION.m
function out= xpc_test_1simxpc(In)
global TrackingFigHandle
global TargetShape TargetHandle TargetShapeLength
TargetVector = In(1:2);
TargetHeading= In(3);
%%TargetVector = Input(1:2);
%%TargetHeading= Input(3);
%%CrossHairVector = Input(4:5);
%-----------------------------------------------------------------------------
---------
% INITIALIZE GRAPHICS
%-----------------------------------------------------------------------------
---------
% Check whether the 3D graphic figure already exists
if isempty(TrackingFigHandle), TrackingFigHandle = figure; end; % Start a
new figure if there is no handle yet.
set(gcf,'position',[10 300 400 300]);
if sum(get(TrackingFigHandle,'name')) ~= 2013,
%% DRAW GRAPHICS for the FIRST TIME ONLY
TargetShape = [0 -2 -2 2 2 ;
4 2 -2 -2 2]*1;
TargetShapeLength=ones(1,max(size(TargetShape)));
TargetPos = TargetShape + TargetVector*TargetShapeLength;
TargetHandle = fill(TargetPos(1,:),TargetPos(2,:),'r');
hold on;
Page 29 of 33
hold off;
PLOT_TEST.M
function [] = xpc_test_1simxpc(In)
global Fig1 Plot1 Plot2 Plot3 Plot4 Plot5 Plot6 Plot7 Plot8 Plot9 Plot10
global Text1 Text2 Text3 Text4 Text5 Text6 Text7 Text8 Text9 Text10
Range1 = In(2)
Bearing1 = In(1)
Clock = In(31);
X1 = Range1*sin(Bearing1*pi/180)
Y1 = Range1*cos(Bearing1*pi/180)
% Fig1 = figure;
figure(1);
if Clock == 0
Plot1 = plot(X1,Y1,'b.','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text1 = text(X1,Y1,'1','fontsize',12)
drawnow;
else
set(Plot1,'xdata',X1,'ydata',Y1);
set(Text1,'position',[X1,Y1 0])
end
Range2 = In(5);
Bearing2 = In(4);
Clock = In(31);
X2 = Range2*sin(Bearing2*pi/180);
Y2 = Range2*cos(Bearing2*pi/180);
if Clock == 0
Plot2 = plot(X2,Y2,'go','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text2 = text(X1,Y1,'2','fontsize',12)
drawnow;
else
set(Plot2,'xdata',X2,'ydata',Y2);
set(Text2,'position',[X2,Y2 0])
end
Range3 = In(8);
Bearing3 = In(7);
Clock = In(31);
X3 = Range3*sin(Bearing3*pi/180);
Y3 = Range3*cos(Bearing3*pi/180);
Page 30 of 33
if Clock == 0
Plot3 = plot(X3,Y3,'rx','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text3 = text(X1,Y1,'3','fontsize',12)
drawnow;
hold on
else
set(Plot3,'xdata',X3,'ydata',Y3);
set(Text3,'position',[X3,Y3 0])
end
Range4 = In(11);
Bearing4 = In(10);
Clock = In(31);
X4 = Range4*sin(Bearing4*pi/180);
Y4 = Range4*cos(Bearing4*pi/180);
if Clock == 0
Plot4 = plot(X4,Y4,'c+','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text4 = text(X4,Y4,'4','fontsize',12)
drawnow;
hold on
else
set(Plot4,'xdata',X4,'ydata',Y4);
set(Text4,'position',[X4,Y4 0])
end
Range5 = In(14);
Bearing5 = In(13);
Clock = In(31);
X5 = Range5*sin(Bearing5*pi/180);
Y5 = Range5*cos(Bearing5*pi/180);
if Clock == 0
Plot5 = plot(X5,Y5,'m*','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text5 = text(X5,Y5,'5','fontsize',12)
drawnow;
hold on
else
set(Plot5,'xdata',X5,'ydata',Y5);
set(Text5,'position',[X5,Y5 0])
end
Range6 = In(17);
Bearing6 = In(16);
Clock = In(31);
X6 = Range6*sin(Bearing6*pi/180);
Page 31 of 33
Y6 = Range6*cos(Bearing6*pi/180);
if Clock == 0
Plot6 = plot(X6,Y6,'kd','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text6 = text(X6,Y6,'6','fontsize',12)
drawnow;
hold on
else
set(Plot6,'xdata',X6,'ydata',Y6);
set(Text6,'position',[X6,Y6 0])
end
Range7 = In(20);
Bearing7 = In(19);
Clock = In(31);
X7 = Range7*sin(Bearing7*pi/180);
Y7 = Range7*cos(Bearing7*pi/180);
if Clock == 0
Plot7 = plot(X7,Y7,'bv','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text7 = text(X7,Y7,'7','fontsize',12)
drawnow;
hold on
else
set(Plot7,'xdata',X7,'ydata',Y7);
set(Text7,'position',[X7,Y7 0])
end
Range8 = In(23);
Bearing8 = In(22);
Clock = In(31);
X8 = Range8*sin(Bearing8*pi/180);
Y8 = Range8*cos(Bearing8*pi/180);
if Clock == 0
Plot8 = plot(X8,Y8,'gp','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text8 = text(X8,Y8,'8','fontsize',12)
drawnow;
hold on
else
set(Plot8,'xdata',X8,'ydata',Y8);
set(Text8,'position',[X8,Y8 0])
end
Page 32 of 33
Range9 = In(26);
Bearing9 = In(25);
Clock = In(31);
X9 = Range9*sin(Bearing9*pi/180);
Y9 = Range9*cos(Bearing9*pi/180);
if Clock == 0
Plot9 = plot(X9,Y9,'rh','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text9 = text(X9,Y9,'9','fontsize',12)
drawnow;
hold on
else
set(Plot9,'xdata',X9,'ydata',Y9);
set(Text9,'position',[X9,Y9 0])
end
Range10 = In(29);
Bearing10 = In(28);
Clock = In(31);
X10 = Range10*sin(Bearing10*pi/180);
Y10 = Range10*cos(Bearing10*pi/180);
if Clock == 0
Plot10 = plot(X10,Y10,'c-','markersize',10)
axis('equal');
axis([-15 15 -7 30]); hold on
Text10 = text(X10,Y10,'10','fontsize',12)
drawnow;
else
set(Plot10,'xdata',X10,'ydata',Y10);
set(Text10,'position',[X10,Y10 0])
end
hold off
Page 33 of 33