Project 1 (Mini Project on Vehicle Direction Detection
Objective:
The primary objective of this project is to build a Simulink model which will send us the output of the direction of the vehicle, identifying the direction the vehicle is going to turn.
Requirement - 1:
- Steering wheel input as yaw rate (Signal name: SteeringWheel_YawDegreeInput) is the input for this system.
- This is compared against 3 angular values, one each for the left turn, right turn & straight drive (Calibration Values: Right_Turn_AngularLimit, Left_Turn_AngularLimit, Straight_Drive_Steering_Angle) to say which specific direction the steering wheel is turning towards.
- Use switch blocks to compare & develop this requirement. Keep this requirement in a subsystem & output of this requirement is a local signal (Signal Name: Vehicle_Turn_Status).
Requirement – 2:
- Keep this requirement as a separate subsystem. Inputs to this requirement are local signal from requirement 1 (Signal Name: Vehicle_Turn_Status) & an input signal from camera (Signal Name: CameraInput_RoadSign), which confirms the occurrence of a road sign.
- Signal Vehicle_Turn_Status is compared against calibration values (Calibration Values: RightTurn_RoadSign, LeftTurn_RoadSign, Straight_RoadSign), if each of them is found equal, then each of the three corresponding output is compared against the camera input signal,
- Using a logical operator block, only one among them is finally given as output signal (Signal Name: Vehicle_Direction_Indicator).
Signals & Calibration Data List:
|
Signal / Calibration Name |
Signal Type |
Data Type |
Dimension |
Min |
Max |
Initial Value |
Units |
|
SteeringWheel_YawDegreeInput |
Input |
Int16 |
1 |
-180 |
180 |
- |
Deg |
|
CameraInput_RoadSign |
Input |
Boolean |
1 |
0 |
1 |
- |
- |
|
Vehicle_Turn_Status |
Local |
Int16 |
1 |
-180 |
180 |
- |
Deg |
|
Right_Turn_AngularLimit |
Calibration |
Int16 |
[1 1] |
-180 |
180 |
30 |
Deg |
|
Left_Turn_AngularLimit |
Calibration |
Int16 |
[1 1] |
-180 |
180 |
-120 |
Deg |
|
Straight_Drive_Steering_Angle |
Calibration |
Int16 |
[1 1] |
-180 |
180 |
0 |
Deg |
|
RightTurn_RoadSign |
Calibration |
Int16 |
[1 1] |
-180 |
180 |
30 |
|
|
LeftTurn_RoadSign |
Calibration |
Int16 |
[1 1] |
-180 |
180 |
-120 |
|
|
Straight_RoadSign |
Calibration |
Int16 |
[1 1] |
-180 |
180 |
0 |
|
|
Vehicle_Direction_Indicator |
Output |
Boolean |
1 |
0 |
1 |
- |
- |
Blocks used:
1) Constant Block : This is used to define the calibaration values.
2) Input blocks: Provides the inputs signals
3) Output Block : Provides output signals
4) Logic Block: This is used to assign OR block used to compare the signals from the camera with the boolean signals.
5) Switch Blocks: This is used to compare the input signals to the calibration signals
6) Mux Block: To compile the signals
7) Display Block: To display the results
Simulink model:
1) Main model

2) requirement sub-system

3) Requirement 1

4) Requirement 2

5) Data Dictionary

Procedure:
1) Requirement 1: if the input is (>=30) as the initial value is 30, the vehicle will be instructed to take a right turn, if the signal is non zero the vehicle will take a left turn else it will follow the straight line. the second input is given as a false condition to the first switch.
2) Requirement 2: This requirement is used to compare the signals from requirement 1 with the input signals from the camera.
If the signals are found to be equal to the (Vehicle_turn_status) , then the three corresponding signals are compared with the camera input by using the logical OR block will get true, and mux block is used to compile the outputs.
Result:
The turns are described as Right, left and straight.
the following output indicates the following results
- right turn = (1,0,0)
-left turn = (1,0,1)
- straight = (0,0,1)

from the display block attached to the output, we can observe that the vehicle is following a straight line.