All Courses
All Courses
Courses by Software
Courses by Semester
Courses by Domain
Tool-focused Courses
Machine learning
POPULAR COURSES
Success Stories
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…
Racha Pavan Kumar
updated on 29 Jul 2022
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.
Problem Statement:
To develop one specific requirement of 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.
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 |
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 |
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 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 |
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”.
What is Highway Driving Assist and How Does It Work
Highway Driving Assist is a Level 2 advanced driving assistance system (ADAS) designed for limited-access highways. It combines adaptive cruise control with stop-and-go capability, leading vehicle distance maintenance technology, a lane-centering assistance system, GPS data, and route information from the navigation system to reduce driver stress and fatigue.
a next-generation version of the system is called Highway Driving Assist II. It adds a lane-change assistance function and a machine learning capability to better match the adaptive cruise control system’s behavior to your driving style.
How Does Highway Driving Assist Work?
Highway Driving Assist uses a forward-facing radar unit and camera, GPS technology, and the navigation system’s map database to provide Level 2 driving assistance on divided, restricted-access highways, such as Interstates. Unless the vehicle is traveling on an approved road,
The radar unit informs adaptive cruise control operation, maintaining a safe following distance to traffic ahead. For automatic speed governing, drivers can choose to set the adaptive cruise control for the posted speed limit. Alternatively, you can set a lower or higher speed and adjust the velocity manually.
After the driver sets the speed, the adaptive cruise control automatically adjusts the vehicle’s following distance to shrink or expand the gap between it and traffic ahead.
If another vehicle cuts into the gap, the adaptive cruise control automatically slows the Vehicle down to re-establish a safe following distance. If the vehicle ahead changes lanes or exits the road, Highway Drive Assist will automatically accelerate back up to the posted speed limit or a different pre-set speed.
Highway Drive Assist can also automatically reduce the vehicle’s speed if the posted limit changes and slow the vehicle down to more safely navigate freeway transition ramps or curves in the highway.
To keep a Vehicle centered in its intended lane of travel, a camera identifies the road’s lane markings, and the steering automatically makes minor corrections to keep the vehicle as close to the center of the lane as is possible. The driver must separately activate this technology using a button on the steering wheel or dashboard, or a menu within the infotainment system.
With Highway Drive Assist II, steering assistance can also support a lane change as long as the driver signals that intention. This next-generation version of the technology also includes machine learning capability that attempts to match adaptive cruise control operation with the driver’s typical habits.
Drivers can tell when Highway Driving Assist is working by reviewing icons in the instrument cluster or the head-up display. If the “HDA,” steering wheel, and lane-keeping assistance icons are green, the system is operational.
Highway Driving Assist is not a Level 2+ hands-free technology, like General Motors Super Cruise or Ford Active Drive Assist. You must keep your hands on the steering wheel at all times, and if you don’t, after three attempts to request that you retake control of the vehicle, Highway Driving Assist will automatically turn itself off.
Also, Highway Driving Assist does not work in certain driving conditions, such as heavy rain or snow.
First we have to create Simulink data dictionary file (sldd) as per the requirement
Next, we have to develop the model according to the input requirements
There are three requirements models they are
Requirement No 1 [Highway_DisplayUnit]
Requirement No 2 [Lane_DisplayUnit]
Requirement No 3
Requirement No 1 [Highway_DisplayUnit]
In requirement 1 there are 3 inputs and 4 outputs
Inputs:
Outputs:
When this 3 inputs are assigned to particular value output signals will give specified value
Inside the requirement 1 subsystem the inputs and outputs are connected to an state flow chart as shown in below figure and named it as Highway_DisplayUnit
The chart consist of two states and each state consist four 4 Highway_Display_Mode's as shown in the below figure. the state will change from Action_1 to Action_2 when the condition is [(Highway_Input_Signal==1)&&(Enable_Display==1)&&(Input_Switch==1)] is given to the state 1. In order to change from Action_2 to Action_1 we have to give the conition [(Highway_Input_Signal==1)&&(Enable_Display==0)&&(Input_Switch==1)] to the state 2.
Requirement No 2 [Lane_DisplayUnit]
In requirement 2 there are 3 inputs and 4 outputs same as requirement 1
Inputs
Where enable display and input switchs are the same inputs given to requirement 1
Outputs
Inside the requirement 2 subsystem the inputs and outputs are connected to an state flow chart as shown in below figure and named it as Lane_DisplayUnit
The chart consist of two states and each state consist four 4 Lane_Display_Mode's as shown in the below figure. the state will change from Action_1 to Action_2 when the condition is [(Lane_Input_Signal==6)&&(Enable_Display==1)&&(Input_Switch==1)] is given to the state 1.
In order to change from Action_2 to Action_1 we have to give the conition [(Lane_Input_Signal==6)&&(Enable_Display==0)&&(Input_Switch==1)] to the state 2.
Requirement_3
In requirement_3 subsystem, there are 3 inputs and 4 outputs
The inputs to this subsystem are from requirement_1 & requirement_2 & Highway_Input_Signal
i.e. they are Highway_Display_Mode 1 to 4 & Lane_Display_Mode 1 to 4
Outputs are Display_Mode 1 to 4
Inside the requirement_3 subsystem, there are 4 switches
Signals coming from both subsystems “Highway_Display_Modes” & “Lane_Display_Modes” are given as inputs to a 4 switch blocks which will have input signal “Highway_Input_Signal” given as 2nd input to the every switch block. Corresponding outputs from this particular switch blocks are output signals “Display_Mode_1 to Display_Mode_4”.as shown in below figure
After modelling the state flow logic, we have to resolve the signals in requirement 1 & 2. The below figure shows the tick mark at Resolve Signals.
Next, we have to change code generation settings and solver settings
In code generation we have to set system target file as autosar.tlc
Solver as fixed-step and discrite(no-continuous)
To open mapped view of Autosar in Simulink Environment below steps are required
In Apps option select Down Arrow
Next select Autosar Component Designer app in code generation settings then Autosar Dictionary and Mapped view of Autosar SW Component opens as shown in below fig:
Now go to Code Mapping- AUTOSAR SW Component and select AUTOSAR Dictionary the below page will open.
For S-R Interface of the model, we have to rename the port with the prefix "SRIf_" as shown below.
In S-R Interfaces, Each DataElement has to be renamed with prefix "DE_" as shown below.
Now in the ReceiverPorts of the model, the inputs will be renamed with the prefix "Rp_".
Similarly, the SenderPorts of the model, the outputs will be renamed with the prefix "Pp_" as shown below.
After port mapping, we have to check Model Advisory for MAAB guidlines,
then we have to generate C code
code was generated after succesfully after running the model.
/*
* File: highwayy.c
*
* Code generated for Simulink model 'highwayy'.
*
* Model version : 1.46
* Simulink Coder version : 9.5 (R2021a) 14-Nov-2020
* C/C++ source code generated on : Thu Jul 28 22:36:24 2022
*
* Target selection: autosar.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "highwayy.h"
#include "highwayy_private.h"
/* Named constants for Chart: '/Highway_DisplayUnit' */
#define highwayy_IN_Condition_1 ((uint8)1U)
#define highwayy_IN_Condition_2 ((uint8)2U)
/* Named constants for Chart: '/Lane_DisplayUnit' */
#define highwayy_IN_Mode_1 ((uint8)1U)
#define highwayy_IN_Mode_2 ((uint8)2U)
/* Block states (default storage) */
DW_highwayy_T highwayy_DW;
/* Model step function */
void highway_Step(void)
{
uint8 rtb_Lane_Display_Mode_1;
uint8 rtb_Lane_Display_Mode_2;
uint8 rtb_Lane_Display_Mode_3;
uint8 rtb_Lane_Display_Mode_4;
/* Chart: '/Lane_DisplayUnit' incorporates:
* Inport: '/Enable_Display'
* Inport: '/Input_Switch'
* Inport: '/Lane_Input_Signal'
*/
if (highwayy_DW.is_active_c1_highwayy == 0U) {
highwayy_DW.is_active_c1_highwayy = 1U;
highwayy_DW.is_c1_highwayy = highwayy_IN_Mode_1;
rtb_Lane_Display_Mode_1 = 132U;
rtb_Lane_Display_Mode_2 = 185U;
rtb_Lane_Display_Mode_3 = 54U;
rtb_Lane_Display_Mode_4 = 67U;
} else if (highwayy_DW.is_c1_highwayy == highwayy_IN_Mode_1) {
if ((Rte_IRead_highway_Step_Rp_Lane_Input_Signal_DE_Lane_Input_Signal() ==
6.0) && (Rte_IRead_highway_Step_Rp_Enable_Display_DE_Enable_Display() ==
1.0) &&
(Rte_IRead_highway_Step_Rp_Input_Switch_DE_Input_Switch() == 1.0)) {
highwayy_DW.is_c1_highwayy = highwayy_IN_Mode_2;
rtb_Lane_Display_Mode_1 = 127U;
rtb_Lane_Display_Mode_2 = 248U;
rtb_Lane_Display_Mode_3 = 186U;
rtb_Lane_Display_Mode_4 = 84U;
} else {
rtb_Lane_Display_Mode_1 = 132U;
rtb_Lane_Display_Mode_2 = 185U;
rtb_Lane_Display_Mode_3 = 54U;
rtb_Lane_Display_Mode_4 = 67U;
}
/* case IN_Mode_2: */
} else if ((Rte_IRead_highway_Step_Rp_Lane_Input_Signal_DE_Lane_Input_Signal()
== 6.0) &&
(Rte_IRead_highway_Step_Rp_Enable_Display_DE_Enable_Display() ==
0.0) && (Rte_IRead_highway_Step_Rp_Input_Switch_DE_Input_Switch() ==
1.0)) {
highwayy_DW.is_c1_highwayy = highwayy_IN_Mode_1;
rtb_Lane_Display_Mode_1 = 132U;
rtb_Lane_Display_Mode_2 = 185U;
rtb_Lane_Display_Mode_3 = 54U;
rtb_Lane_Display_Mode_4 = 67U;
} else {
rtb_Lane_Display_Mode_1 = 127U;
rtb_Lane_Display_Mode_2 = 248U;
rtb_Lane_Display_Mode_3 = 186U;
rtb_Lane_Display_Mode_4 = 84U;
}
/* End of Chart: '/Lane_DisplayUnit' */
/* Outport: '/Lane_Display_Mode_1' */
Rte_IWrite_highway_Step_Pp_Lane_Display_Mode_1_DE_Lane_Display_Mode_1
(rtb_Lane_Display_Mode_1);
/* Outport: '/Lane_Display_Mode_2' */
Rte_IWrite_highway_Step_Pp_Lane_Display_Mode_2_DE_Lane_Display_Mode_2
(rtb_Lane_Display_Mode_2);
/* Outport: '/Lane_Display_Mode_3' */
Rte_IWrite_highway_Step_Pp_Lane_Display_Mode_3_DE_Lane_Display_Mode_3
(rtb_Lane_Display_Mode_3);
/* Outport: '/Lane_Display_Mode_4' */
Rte_IWrite_highway_Step_Pp_Lane_Display_Mode_4_DE_Lane_Display_Mode_4
(rtb_Lane_Display_Mode_4);
/* Chart: '/Highway_DisplayUnit' incorporates:
* Inport: '/Enable_Display'
* Inport: '/Highway_Input_Signal'
* Inport: '/Input_Switch'
*/
if (highwayy_DW.is_active_c3_highwayy == 0U) {
highwayy_DW.is_active_c3_highwayy = 1U;
highwayy_DW.is_c3_highwayy = highwayy_IN_Condition_1;
rtb_Lane_Display_Mode_1 = 232U;
rtb_Lane_Display_Mode_2 = 41U;
} else if (highwayy_DW.is_c3_highwayy == highwayy_IN_Condition_1) {
if ((Rte_IRead_highway_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal()
== 1.0) && (Rte_IRead_highway_Step_Rp_Enable_Display_DE_Enable_Display()
== 1.0) &&
(Rte_IRead_highway_Step_Rp_Input_Switch_DE_Input_Switch() == 1.0)) {
highwayy_DW.is_c3_highwayy = highwayy_IN_Condition_2;
rtb_Lane_Display_Mode_1 = 213U;
rtb_Lane_Display_Mode_2 = 9U;
} else {
rtb_Lane_Display_Mode_1 = 232U;
rtb_Lane_Display_Mode_2 = 41U;
}
/* case IN_Condition_2: */
} else if
((Rte_IRead_highway_Step_Rp_Highway_Input_Signal_DE_Highway_Input_Signal()
== 1.0) && (Rte_IRead_highway_Step_Rp_Enable_Display_DE_Enable_Display()
== 0.0) &&
(Rte_IRead_highway_Step_Rp_Input_Switch_DE_Input_Switch() == 1.0)) {
highwayy_DW.is_c3_highwayy = highwayy_IN_Condition_1;
rtb_Lane_Display_Mode_1 = 232U;
rtb_Lane_Display_Mode_2 = 41U;
} else {
rtb_Lane_Display_Mode_1 = 213U;
rtb_Lane_Display_Mode_2 = 9U;
}
/* End of Chart: '/Highway_DisplayUnit' */
/* Outport: '/Display_Mode_1' */
Rte_IWrite_highway_Step_Pp_Display_Mode_1_DE_Display_Mode_1(true);
/* Outport: '/Display_Mode_2' */
Rte_IWrite_highway_Step_Pp_Display_Mode_2_DE_Display_Mode_2(true);
/* Outport: '/Display_Mode_3' */
Rte_IWrite_highway_Step_Pp_Display_Mode_3_DE_Display_Mode_3(true);
/* Outport: '/Display_Mode_4' */
Rte_IWrite_highway_Step_Pp_Display_Mode_4_DE_Display_Mode_4(true);
/* Outport: '/Highway_Display_Mode_1' */
Rte_IWrite_highway_Step_Pp_Highway_Display_Mode_1_DE_Highway_Display_Mode_1
(rtb_Lane_Display_Mode_1);
/* Outport: '/Highway_Display_Mode_2' */
Rte_IWrite_highway_Step_Pp_Highway_Display_Mode_2_DE_Highway_Display_Mode_2
(183U);
/* Outport: '/Highway_Display_Mode_3' */
Rte_IWrite_highway_Step_Pp_Highway_Display_Mode_3_DE_Highway_Display_Mode_3
(rtb_Lane_Display_Mode_2);
/* Outport: '/Highway_Display_Mode_4' */
Rte_IWrite_highway_Step_Pp_Highway_Display_Mode_4_DE_Highway_Display_Mode_4
(94U);
}
/* Model initialize function */
void highway_Init(void)
{
/* (no initialization code required) */
}
/*
* File trailer for generated code.
*
* [EOF]
*/
Conclusion:
As per the requirement we developed the Simulink model High lane changing Assistant as per MBD guideline, Simulink data dictionary is created and linked to the model
Input and output runnable are mapped to the model and Code is generated by using autosar.tlc
Leave a comment
Thanks for choosing to leave a comment. Please keep in mind that all the comments are moderated as per our comment policy, and your email will not be published for privacy reasons. Please leave a personal & meaningful conversation.
Other comments...
Week 1 Understanding Different Battery Chemistry
Week 1 Understanding Different Battery Chemistry 1.Prepare a table which includes materials & chemical reactions occurring at the anode and cathode of LCO, LMO, NCA,…
01 Aug 2022 04:43 PM IST
Project 2-Highway Assistant-Lane Changing Assistant
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…
29 Jul 2022 05:52 PM IST
Project 1- Traffic Jam Assistant Feature
Traffic Jam Assistant Feature Aim: - Development of a single feature of Traffic Jam Assist Model using MATLAB &…
14 Jun 2022 05:12 PM IST
Project 2 Adaptive Cruise Control
AIM: Adaptive cruise control (ACC) is an available cruise control advanced driver-assistance system for road vehicles that automatically adjusts the vehicle speed to maintain a safe distance from vehicles ahead. As of 2019, it is also called by 20 unique names that describe that basic functionality. This is also known…
26 Apr 2022 03:59 PM IST
Related Courses
8 Hours of Content
Skill-Lync offers industry relevant advanced engineering courses for engineering students by partnering with industry experts.
© 2025 Skill-Lync Inc. All Rights Reserved.