Project 2-Highway Assistant-Lane Changing Assistant
AIM: Highway Assistant-Lane Changing Assistant
EXPLANATION:
- Lane Keep Assist is a slightly more advanced system that warns the driver and helps keep the car in its lane without any driver input.
Highway Assistant – Lane Changing Assistant
Introduction to the Feature:
The Highway Assistant supports the driver and takes over the longitudinal and lateral guidance of the vehicle in monotonous driving situations on highways. The partially automated function can automatically start, accelerate, brake as well as steer the vehicle to a certain extent. The driver has to permanently supervise the system and be ready to take over the complete control of the vehicle at any time.
Drivers are taught to assess surrounding traffic before changing lanes by checking their rearview and side mirrors and looking over each shoulder. However, even for those who follow this sequence of checks, the vehicle's blind spot – the area alongside and just behind the vehicle – is a constant source of danger and often the cause of serious accidents. Even vehicles approaching quickly from behind can pose a risk. To make changing lanes safer, this feature has been developed.
Basic Working Principle:
Highway Assistant is a partially automated driving function for a speed range of up to 180 km/h (112 mph) on highways. It combines the radar-based longitudinal guidance of Adaptive Cruise Control (ACC) with the video-based lateral guidance of lane keeping support in one system. Highway Assistant can be supplemented by an automatic lane change initiated and monitored by the driver in a speed range of 60 – 130 km/h (35 – 80 mph).
The lane Change Assistant works by using two mid-range radar sensors that are concealed in the rear bumper – one on the left, one on the right. These two sensors monitor the area alongside and behind the car. Powerful control software collates the sensor information to create a complete picture of all traffic in the area behind the vehicle.Whenever another vehicle approaches at speed from behind or is already present in the blind spot, a signal such as a warning light in the side mirror alerts the driver to the hazard. Should the driver still activate the turn signal with the intention of changing lanes, the system issues an additional acoustic and/or haptic warning.
MODEL CONSTRUCTION SIMULINK:
Requirement No 1 [Highway_DisplayUnit]:
Inputs to this particular subsystem are “Highway_Input_Signal”, “Enable_Display”, “Input_Switch”. These three input signals, when assigned to a particular value will give output signals of specific value. The output signals are “Highway_Display_Mode_1”, “Highway_Display_Mode_2”, “Highway_Display_Mode_3”, “Highway_Display_Mode_4”. The requirement must be implemented in the form of a Stateflow logic.
|
Condition |
Action |
|
Highway_Input_Signal = 1 Enable_Display = off Input_Switch = on |
Highway_Display_Mode_1 = 232 Highway_Display_Mode_2 = 183 Highway_Display_Mode_3 = 41 Highway_Display_Mode_4 = 94 |
|
Highway_Input_Signal = 1 Enable_Display = on Input_Switch = on |
Highway_Display_Mode_1 = 213 Highway_Display_Mode_2 = 183 Highway_Display_Mode_3 = 9 Highway_Display_Mode_4 = 94 |
GENERATED MODEL BY USING REQURRIREMENT IN FLOW CHART :

FINALLY :

INPUTS AND OUTS BY USING SYMBOL PANEL:

Requirement No 2 [Lane_DisplayUnit]:
Inputs to this particular subsystem are “Enable_Display”, “Input_Switch”, “Lane_Input_Signal”. These three input signals, when assigned to a particular value will give output signals of a specific value. The output signals are “Lane_Display_Mode_1”, “Lane_Display_Mode_2”, “Lane_Display_Mode_3”, “Lane_Display_Mode_4”. The requirement must be implemented in the form of Stateflow logic.
|
Condition |
Action |
|
Lane_Input_Signal= 6 Enable_Display = off Input_Switch = on |
Lane_Display_Mode_1 = 132 Lane_Display_Mode_2 = 185 Lane_Display_Mode_3 = 54 Lane_Display_Mode_4 = 67 |
|
Lane_Input_Signal= 6 Enable_Display = on Input_Switch = on |
Lane_Display_Mode_1 = 127 Lane_Display_Mode_2 = 248 Lane_Display_Mode_3 = 186 Lane_Display_Mode_4 = 84 |
GENERATED MODEL BY USING REQURRIREMENT IN FLOW CHART :

FINALLY :

INPUTS AND OUTS BY USING SYMBOL PANEL:

Requirement No 3:
Signals coming from both subsystems “Highway_Display_Mode_1” & “Lane_Display_Mode_1” are given as inputs to a switch block which will have input signal “Highway_Input_Signal” given as 2nd input to the switch block. Corresponding output from this particular switch block is output signal “Display_Mode_1”.
Signals coming from both subsystems “Highway_Display_Mode_2” & “Lane_Display_Mode_2” are given as inputs to a switch block which will have input signal “Highway_Input_Signal” given as 2nd input to the switch block. Corresponding output from this particular switch block is output signal “Display_Mode_2”.
Signals coming from both subsystems “Highway_Display_Mode_3” & “Lane_Display_Mode_3” are given as inputs to a switch block which will have input signal “Highway_Input_Signal” given as 2nd input to the switch block. Corresponding output from this particular switch block is output signal “Display_Mode_3”.
Signals coming from both subsystems “Highway_Display_Mode_4” & “Lane_Display_Mode_4” are given as inputs to a switch block which will have input signal “Highway_Input_Signal” given as 2nd input to the switch block. Corresponding output from this particular switch block is output signal “Display_Mode_4”.

FORMAT IN COLOUR :

Given as inputs to a switch block which will have input signal “Highway_Input_Signal”
BY using from and goto block

Goto block

Block reader

BY converting the flow chart to subsystem then:
Finally Simulink model

>Creating Data dictionary file and assigning the values :
>Given signals are :
Input Signals:
|
Name of the Signal |
Data Type |
Range |
|
Highway_Input_Signal |
uint8 |
0 - 255 |
|
Enable_Display |
uint8 |
0 – 255 |
|
Input_Switch |
uint8 |
0 – 255 |
|
Lane_Input_Signal |
uint8 |
0 - 255 |
Local Signals:
|
Name of the Signal |
Data Type |
Range |
|
Highway_Display_Mode_1 |
uint8 |
0 - 255 |
|
Highway_Display_Mode_2 |
uint8 |
0 – 255 |
|
Highway_Display_Mode_3 |
uint8 |
0 – 255 |
|
Highway_Display_Mode_4 |
uint8 |
0 – 255 |
|
Lane_Display_Mode_1 |
uint8 |
0 – 255 |
|
Lane_Display_Mode_2 |
uint8 |
0 – 255 |
|
Lane_Display_Mode_3 |
uint8 |
0 – 255 |
|
Lane_Display_Mode_4 |
uint8 |
0 – 255 |
Output Signals:
|
Name of the Signal |
Data Type |
Range |
|
Display_Mode_1 |
uint8 |
0 - 255 |
|
Display_Mode_2 |
uint8 |
0 – 255 |
|
Display_Mode_3 |
uint8 |
0 – 255 |
|
Display_Mode_4 |
uint8 |
0 - 255 |
SLDD FILE :

Problem Statement:
To develop one specific requirement of the Highway Assistant – Lane Changing Assistant algorithm. Please note that the whole Highway Assistant – Lane Changing Assistant is a very huge algorithm & only one small part of the logic is implemented here. Idea is to familiarize with concepts of Autosar Software Component Development in MATLAB Environment by following the Model Based Development guidelines. The Project must be done keeping in mind the following processes & steps.
- This model must be developed in MATLAB Simulink per MBD guidelines.
- Code Generation Profile must be Autosar Coder.
- Simulink Data Dictionary must be created for the model & must be linked to the model.
- All the input & output signals must be mapped into the Autosar Editor.
- Model Advisor Report is mandatory & this will be followed by Code Generation.
- This model must be developed in MATLAB Simulink per MBD guidelines.

- All the input & output signals must be mapped into the Autosar Editor.
- Before mapping changes

- After mapping changes Receiver port

- Before mapping changes Sender ports:

- After mapping changes Sender ports:

- Before mapping changes S-R Interface ports:

- After mapping changes S-R Interface data element ports:

>DATA ELEMENT :
>BEFORE CHANGING :

>AFTER changing :


>OUTPORTS

>After done of all changes now check of validations of autosar
>After changing the data while going to run the Simulink model simulation if it's run ok of its requirement
>Finally check whether the validation is successfully or not if its successfully so is to correct of data change

What is a port in AUTOSAR?
- The AUTOSAR ports: The AUTOSAR Software Components use well-defined ports, which encapsulate certain interfaces as a guarantee for type safety while components are communicating with each other. A port is mapped to a single component and represents a communication point between the components

- A runnable is a sequence of operations provided by the component that can be started by the run-time environment (RTE). The component configures an event to activate each runnable – for example, a timing event, data received, a client request, a mode change, component startup or shutdown, or a trigger.
PROCEDURE:
Firstly import the model and go to modelling>modelsetting>change to code of autosar.atlc
Then go with Apps in that autosar component and click it it will take automatically autosar window
Then now changing the inports and outports signals and data elements

>MODEL SETTING:

>IN APP:


- Code Generation Profile must be Autosar Coder.
>Firstly click on generated code and build code

Code in autosar

>Code developed:
/*
* Trial License - for use to evaluate programs for possible purchase as
* an end-user only.
*
* File: chat12.c
*
* Code generated for Simulink model 'chat12'.
*
* Model version : 1.7
* Simulink Coder version : 9.5 (R2021a) 14-Nov-2020
* C/C++ source code generated on : Wed Oct 27 13:29:24 2021
*
* Target selection: autosar.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "chat12.h"
#include "chat12_private.h"
/* Named constants for Chart: '<S1>/Reqirement 1' */
#define chat12_IN_Condition1 ((uint8)1U)
#define chat12_IN_Condition2 ((uint8)2U)
/* Named constants for Chart: '<S2>/Requriment2' */
#define chat12_IN_Conditio_2 ((uint8)1U)
#define chat12_IN_Condition_1 ((uint8)2U)
/* Block states (default storage) */
DW_chat12_T chat12_DW;
/* Model step function */
void chat12_Step(void)
{
sint32 rtb_Highway_Display_Mode_1;
sint32 rtb_Highway_Display_Mode_3;
sint32 rtb_Lane_Display_Mode_1;
sint32 rtb_Lane_Display_Mode_2;
sint32 rtb_Lane_Display_Mode_3;
sint32 rtb_Lane_Display_Mode_4;
sint32 tmp;
/* Chart: '<S1>/Reqirement 1' incorporates:
* Inport: '<Root>/Enable_Display'
* Inport: '<Root>/Highway_Input_Signal'
* Inport: '<Root>/Input_Switch'
*/
if (chat12_DW.is_active_c1_chat12 == 0U) {
chat12_DW.is_active_c1_chat12 = 1U;
chat12_DW.is_c1_chat12 = chat12_IN_Condition1;
rtb_Highway_Display_Mode_1 = 232;
rtb_Highway_Display_Mode_3 = 41;
} else if (chat12_DW.is_c1_chat12 == chat12_IN_Condition1) {
if ((Rte_IRead_chat12_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal()
== 1) && (Rte_IRead_chat12_Step_Rp_Enable_Display_DE_Enable_Display() ==
0) && (Rte_IRead_chat12_Step_Rp_Input_Switch_DE_Input_Switch()
== 1)) {
chat12_DW.is_c1_chat12 = chat12_IN_Condition2;
rtb_Highway_Display_Mode_1 = 213;
rtb_Highway_Display_Mode_3 = 9;
} else {
rtb_Highway_Display_Mode_1 = 232;
rtb_Highway_Display_Mode_3 = 41;
}
/* case IN_Condition2: */
} else if
((Rte_IRead_chat12_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal() ==
1) && (Rte_IRead_chat12_Step_Rp_Enable_Display_DE_Enable_Display() == 1)
&& (Rte_IRead_chat12_Step_Rp_Input_Switch_DE_Input_Switch() == 1)) {
chat12_DW.is_c1_chat12 = chat12_IN_Condition1;
rtb_Highway_Display_Mode_1 = 232;
rtb_Highway_Display_Mode_3 = 41;
} else {
rtb_Highway_Display_Mode_1 = 213;
rtb_Highway_Display_Mode_3 = 9;
}
/* End of Chart: '<S1>/Reqirement 1' */
/* Chart: '<S2>/Requriment2' incorporates:
* Inport: '<Root>/Enable_Display'
* Inport: '<Root>/Input_Switch'
* Inport: '<Root>/Lane_Input_Signal'
*/
if (chat12_DW.is_active_c3_chat12 == 0U) {
chat12_DW.is_active_c3_chat12 = 1U;
chat12_DW.is_c3_chat12 = chat12_IN_Condition_1;
rtb_Lane_Display_Mode_1 = 132;
rtb_Lane_Display_Mode_2 = 185;
rtb_Lane_Display_Mode_3 = 54;
rtb_Lane_Display_Mode_4 = 67;
} else if (chat12_DW.is_c3_chat12 == chat12_IN_Conditio_2) {
if ((Rte_IRead_chat12_Step_Rp_Lane_Input_Signal_DE_Lane_Input_Signal() == 6)
&& (Rte_IRead_chat12_Step_Rp_Enable_Display_DE_Enable_Display() == 1) &&
(Rte_IRead_chat12_Step_Rp_Input_Switch_DE_Input_Switch() == 1)) {
chat12_DW.is_c3_chat12 = chat12_IN_Condition_1;
rtb_Lane_Display_Mode_1 = 132;
rtb_Lane_Display_Mode_2 = 185;
rtb_Lane_Display_Mode_3 = 54;
rtb_Lane_Display_Mode_4 = 67;
} else {
rtb_Lane_Display_Mode_1 = 127;
rtb_Lane_Display_Mode_2 = 248;
rtb_Lane_Display_Mode_3 = 186;
rtb_Lane_Display_Mode_4 = 84;
}
/* case IN_Condition_1: */
} else if ((Rte_IRead_chat12_Step_Rp_Lane_Input_Signal_DE_Lane_Input_Signal() ==
6) && (Rte_IRead_chat12_Step_Rp_Enable_Display_DE_Enable_Display()
== 0) &&
(Rte_IRead_chat12_Step_Rp_Input_Switch_DE_Input_Switch() == 1)) {
chat12_DW.is_c3_chat12 = chat12_IN_Conditio_2;
rtb_Lane_Display_Mode_1 = 127;
rtb_Lane_Display_Mode_2 = 248;
rtb_Lane_Display_Mode_3 = 186;
rtb_Lane_Display_Mode_4 = 84;
} else {
rtb_Lane_Display_Mode_1 = 132;
rtb_Lane_Display_Mode_2 = 185;
rtb_Lane_Display_Mode_3 = 54;
rtb_Lane_Display_Mode_4 = 67;
}
/* End of Chart: '<S2>/Requriment2' */
/* Switch: '<Root>/Switch' incorporates:
* Inport: '<Root>/Highway_Input_Signal'
* Switch: '<Root>/Switch1'
* Switch: '<Root>/Switch2'
*/
tmp = Rte_IRead_chat12_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal();
if (tmp > 0) {
/* Outport: '<Root>/Display_Mode_1' */
Rte_IWrite_chat12_Step_Pp_Display_Mode_1_DE_Display_Mode_1
(rtb_Highway_Display_Mode_1);
rtb_Lane_Display_Mode_2 = 183;
} else {
/* Outport: '<Root>/Display_Mode_1' */
Rte_IWrite_chat12_Step_Pp_Display_Mode_1_DE_Display_Mode_1
(rtb_Lane_Display_Mode_1);
}
/* End of Switch: '<Root>/Switch' */
/* Outport: '<Root>/Display_Mode_2' */
Rte_IWrite_chat12_Step_Pp_Display_Mode_2_DE_Display_Mode_2
(rtb_Lane_Display_Mode_2);
/* Switch: '<Root>/Switch2' incorporates:
* Switch: '<Root>/Switch3'
*/
if (tmp > 0) {
/* Outport: '<Root>/Display_Mode_3' */
Rte_IWrite_chat12_Step_Pp_Display_Mode_3_DE_Display_Mode_3
(rtb_Highway_Display_Mode_3);
rtb_Lane_Display_Mode_4 = 94;
} else {
/* Outport: '<Root>/Display_Mode_3' */
Rte_IWrite_chat12_Step_Pp_Display_Mode_3_DE_Display_Mode_3
(rtb_Lane_Display_Mode_3);
}
/* Outport: '<Root>/Display_Mode_4' */
Rte_IWrite_chat12_Step_Pp_Display_Mode_4_DE_Display_Mode_4
(rtb_Lane_Display_Mode_4);
}
/* Model initialize function */
void chat12_Init(void)
{
/* (no initialization code required) */
}
/*
* File trailer for generated code.
*
* [EOF]
*/
Model Advisor Report is mandatory
>There are few of warnings occurs

Finally Simulink model:

CONCLUSION:
>By worked on model and understanding all requirements to build Simulink model Lane chang assistant
>Generated all required parameters in the model
- This model must be developed in MATLAB Simulink per MBD guidelines.
- Code Generation Profile must be Autosar Coder.
- Simulink Data Dictionary must be created for the model & must be linked to the model.
- All the input & output signals must be mapped into the Autosar Editor.
- Model Advisor Report is mandatory & this will be followed by Code Generation.