All Courses
All Courses
Courses by Software
Courses by Semester
Courses by Domain
Tool-focused Courses
Machine learning
POPULAR COURSES
Success Stories
EV BATCH - 17 Aim: To desing and Simulate Adaptive Cruise Control in matlab Simulink To developing Adaptive Cruise Control feature as per the Requirement Document using MATLAB Simulink. To Follow all the…
pothala mohansai
updated on 11 Jul 2022
EV BATCH - 17
Aim:
Theory:
>> Adaptive Cruise Control (ACC):
Adaptive Cruise Control Feature for passenger cars allows the host vehicle to adapt to the speed in line with the flow of traffic. Driving in heavy traffic or keeping a safe distance to the preceding vehicle calls for a high level of concentration. The Adaptive Cruise Control feature can reduce the stress on the driver by automatically controlling the vehicle speed & maintaining a predefined minimum distance to the preceding vehicle. As a consequence, the driver enjoys more comfort & can concentrate on the road little better.
Explanation:
>> Requirement 1– Lead Vehicle:
>> Requirement 2 – Drive Vehicle:
>> Requirement 3 – Adaptive Cruise Control Algorithm:
>> Requirement 3a – ACC OFF MODE state logic:
>> Requirement 3b – ACC STANDBY MODE state logic:
>> Requirement 3c – ACC ON MODE state logic:
This state will be activated when input signal SetSwitch is equal to 1. There are 6 sub states to this state logic: They are:
>> Requirement 3c (i) – LeadVehicle_Detected_Follow (ACC ON MODE):
>> Requirement 3c (ii) – LeadVehicle_Not_Detected (ACC ON MODE):
>> Requirement 3c (iii) – LeadVehicle_Detected_Resume (ACC ON MODE):
>> Requirement 3c (iv) - LeadVehicle_Not_Detected_Resume (ACC ON MODE):
>> Requirement 3c (v) - LeadVehicle_Speed_lessthan_Set_Speed (ACC ON MODE):
>> Requirement 3c (vi) - LeadVehicle_Speed_equal_Set_Speed (ACC ON MODE):
Results:
/*
* Academic License - for use in teaching, academic research, and meeting
* course requirements at degree granting institutions only. Not for
* government, commercial, or other organizational use.
* File: m4final_proj.c
* Code generated for Simulink model 'm4final_proj'.
* Model version : 1.14
* Simulink Coder version : 9.7 (R2022a) 13-Nov-2021
* C/C++ source code generated on : Sun Jun 26 18:59:01 2022
* Target selection: ert.tlc
* Embedded hardware selection: Intel->x86-64 (Windows64)
* Code generation objectives: Unspecified
* Validation result: Not run
*/
#include "m4final_proj.h"
#include "rtwtypes.h"
/* Named constants for Chart: '
#define IN_LeadVehicle_Detected_Follow ((uint8_T)1U)
#define IN_LeadVehicle_Detected_Resume ((uint8_T)2U)
#define IN_LeadVehicle_Not_Detected_Res ((uint8_T)4U)
#define IN_LeadVehicle_Speed_equal_Set_ ((uint8_T)5U)
#define IN_LeadVehicle_Speed_lessthan_S ((uint8_T)6U)
#define m4f_IN_LeadVehicle_Not_Detected ((uint8_T)3U)
#define m4final_pro_IN_ACC_STANDBY_MODE ((uint8_T)3U)
#define m4final_proj_IN_ACC_OFF_MODE ((uint8_T)1U)
#define m4final_proj_IN_ACC_ON_MODE ((uint8_T)2U)
#define m4final_proj_IN_NO_ACTIVE_CHILD ((uint8_T)0U)
/* Block states (default storage) */
DW_m4final_proj_T m4final_proj_DW;
/* External inputs (root inport signals with default storage) */
ExtU_m4final_proj_T m4final_proj_U;
/* External outputs (root outports fed by signals with default storage) */
ExtY_m4final_proj_T m4final_proj_Y;
/* Real-time model */
static RT_MODEL_m4final_proj_T m4final_proj_M_;
RT_MODEL_m4final_proj_T *const m4final_proj_M = &m4final_proj_M_;
/* Model step function */
void m4final_proj_step(void)
{
real_T rtb_DriveVehicle_Speed;
uint8_T rtb_LeadVehicle_Speed;
/* Outputs for Atomic SubSystem: '
/* Sum: '
* Inport: '
* Inport: '
*/
rtb_LeadVehicle_Speed = (uint8_T)(m4final_proj_U.CameraInput_LeadVehicle +
m4final_proj_U.RadarInput_LeadVehicle);
/* End of Outputs for SubSystem: '
/* Outputs for Atomic SubSystem: '
/* Sum: '
* Inport: '
* Inport: '
* UnitDelay: '
*/
rtb_DriveVehicle_Speed = ((real_T)m4final_proj_U.CameraInput_DriveVehicle +
m4final_proj_Y.Acceleration_Mode) + (real_T)
m4final_proj_U.RadarInput_DriveVehicle;
/* End of Outputs for SubSystem: '
/* Chart: '
* Inport: '
* Inport: '
* Inport: '
* Inport: '
* Inport: '
* Inport: '
* UnitDelay: '
*/
if (m4final_proj_DW.is_active_c3_m4final_proj == 0U) {
m4final_proj_DW.is_active_c3_m4final_proj = 1U;
m4final_proj_DW.is_c3_m4final_proj = m4final_proj_IN_ACC_OFF_MODE;
m4final_proj_Y.Acceleration_Mode = 0.0;
} else {
switch (m4final_proj_DW.is_c3_m4final_proj) {
case m4final_proj_IN_ACC_OFF_MODE:
m4final_proj_Y.Acceleration_Mode = 0.0;
if (m4final_proj_U.CruiseSwitch) {
m4final_proj_DW.is_c3_m4final_proj = m4final_pro_IN_ACC_STANDBY_MODE;
m4final_proj_Y.Acceleration_Mode = 1.0;
}
break;
case m4final_proj_IN_ACC_ON_MODE:
if (!m4final_proj_U.CruiseSwitch) {
m4final_proj_DW.is_ACC_ON_MODE = m4final_proj_IN_NO_ACTIVE_CHILD;
m4final_proj_DW.is_c3_m4final_proj = m4final_proj_IN_ACC_OFF_MODE;
m4final_proj_Y.Acceleration_Mode = 0.0;
} else if (!m4final_proj_U.SetSwitch) {
m4final_proj_DW.is_ACC_ON_MODE = m4final_proj_IN_NO_ACTIVE_CHILD;
m4final_proj_DW.is_c3_m4final_proj = m4final_pro_IN_ACC_STANDBY_MODE;
m4final_proj_Y.Acceleration_Mode = 1.0;
} else {
switch (m4final_proj_DW.is_ACC_ON_MODE) {
case IN_LeadVehicle_Detected_Follow:
m4final_proj_Y.Acceleration_Mode = 2.0;
if (((m4final_proj_U.RadarInput_DriveVehicle == 1) &&
(rtb_LeadVehicle_Speed < m4final_proj_U.Set_Speed)) ||
(m4final_proj_U.Time_Gap < m4final_proj_U.Set_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Speed_lessthan_S;
m4final_proj_Y.Acceleration_Mode = 4.0;
} else if (m4final_proj_U.RadarInput_DriveVehicle == 0) {
m4final_proj_DW.is_ACC_ON_MODE = m4f_IN_LeadVehicle_Not_Detected;
m4final_proj_Y.Acceleration_Mode = 1.0;
}
break;
case IN_LeadVehicle_Detected_Resume:
m4final_proj_Y.Acceleration_Mode = 3.0;
if ((rtb_DriveVehicle_Speed == m4final_proj_U.Set_Speed) &&
(rtb_LeadVehicle_Speed >= m4final_proj_U.Set_Speed) &&
(m4final_proj_U.Time_Gap >= m4final_proj_U.Set_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Detected_Follow;
m4final_proj_Y.Acceleration_Mode = 2.0;
} else if (m4final_proj_U.RadarInput_DriveVehicle == 0) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Not_Detected_Res;
m4final_proj_Y.Acceleration_Mode = 1.0;
} else if ((rtb_DriveVehicle_Speed < m4final_proj_U.Set_Speed) &&
(rtb_LeadVehicle_Speed > rtb_DriveVehicle_Speed) &&
(m4final_proj_U.Time_Gap >= m4final_proj_U.Set_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Speed_equal_Set_;
m4final_proj_Y.Acceleration_Mode = 5.0;
}
break;
case m4f_IN_LeadVehicle_Not_Detected:
m4final_proj_Y.Acceleration_Mode = 1.0;
if ((m4final_proj_U.RadarInput_DriveVehicle == 1) &&
(rtb_DriveVehicle_Speed == m4final_proj_U.Set_Speed) &&
(rtb_LeadVehicle_Speed >= m4final_proj_U.Set_Speed) &&
(m4final_proj_U.Time_Gap >= m4final_proj_U.Set_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Detected_Follow;
m4final_proj_Y.Acceleration_Mode = 2.0;
} else if (((m4final_proj_U.RadarInput_DriveVehicle == 1) &&
(rtb_LeadVehicle_Speed < m4final_proj_U.Set_Speed)) ||
(m4final_proj_U.Time_Gap < m4final_proj_U.Set_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Speed_lessthan_S;
m4final_proj_Y.Acceleration_Mode = 4.0;
}
break;
case IN_LeadVehicle_Not_Detected_Res:
m4final_proj_Y.Acceleration_Mode = 1.0;
break;
case IN_LeadVehicle_Speed_equal_Set_:
m4final_proj_Y.Acceleration_Mode = 5.0;
if (((rtb_DriveVehicle_Speed < m4final_proj_U.Set_Speed) &&
(rtb_LeadVehicle_Speed > rtb_DriveVehicle_Speed)) ||
(m4final_proj_U.Time_Gap >= m4final_proj_U.Set_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Detected_Resume;
m4final_proj_Y.Acceleration_Mode = 3.0;
} else if (((real_T)rtb_LeadVehicle_Speed * 1.25 >=
rtb_DriveVehicle_Speed) && ((real_T)rtb_LeadVehicle_Speed *
0.75 <= rtb_DriveVehicle_Speed) && (rtb_DriveVehicle_Speed
< m4final_proj_U.Set_Speed) && ((m4final_proj_U.Time_Gap <=
1.25 * (real_T)m4final_proj_U.Set_Gap) && (m4final_proj_U.Time_Gap >=
0.75 * (real_T)m4final_proj_U.Set_Gap))) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Speed_lessthan_S;
m4final_proj_Y.Acceleration_Mode = 4.0;
} else if ((m4final_proj_U.RadarInput_DriveVehicle == 0) ||
(rtb_DriveVehicle_Speed <= m4final_proj_U.Set_Speed)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Not_Detected_Res;
m4final_proj_Y.Acceleration_Mode = 1.0;
}
break;
default:
/* case IN_LeadVehicle_Speed_lessthan_Set_Speed: */
m4final_proj_Y.Acceleration_Mode = 4.0;
if (((rtb_LeadVehicle_Speed < m4final_proj_U.Set_Speed) &&
(rtb_LeadVehicle_Speed < rtb_DriveVehicle_Speed)) || (0.75 *
(real_T)m4final_proj_U.Set_Gap == m4final_proj_U.Time_Gap)) {
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Speed_equal_Set_;
m4final_proj_Y.Acceleration_Mode = 5.0;
} else if ((m4final_proj_U.RadarInput_DriveVehicle == 0) &&
(rtb_DriveVehicle_Speed == m4final_proj_U.Set_Speed)) {
m4final_proj_DW.is_ACC_ON_MODE = m4f_IN_LeadVehicle_Not_Detected;
m4final_proj_Y.Acceleration_Mode = 1.0;
}
break;
}
}
break;
default:
/* case IN_ACC_STANDBY_MODE: */
m4final_proj_Y.Acceleration_Mode = 1.0;
if (!m4final_proj_U.CruiseSwitch) {
m4final_proj_DW.is_c3_m4final_proj = m4final_proj_IN_ACC_OFF_MODE;
m4final_proj_Y.Acceleration_Mode = 0.0;
} else if (m4final_proj_U.SetSwitch) {
m4final_proj_DW.is_c3_m4final_proj = m4final_proj_IN_ACC_ON_MODE;
m4final_proj_DW.is_ACC_ON_MODE = IN_LeadVehicle_Detected_Follow;
m4final_proj_Y.Acceleration_Mode = 2.0;
}
break;
}
}
/* End of Chart: '
}
/* Model initialize function */
void m4final_proj_initialize(void)
{
/* (no initialization code required) */
}
/* Model terminate function */
void m4final_proj_terminate(void)
{
/* (no terminate code required) */
}
/*
* File trailer for generated code.
* [EOF]
*/
Conclusion:
Hence the Adaptive Cruise Control model is desinged and did all the necessary requirements and achive the requirements and observe the model
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...
Project 1 (Mini Project on Vehicle Direction Detection
…
18 Aug 2022 07:26 PM IST
Week-3 Challenge: ADVISOR Tool
EV BATCH - 17 Use ADVISOR tool and simulate INTRODUCTION : ADVISOR tool, developed in November 1994 by the National Renewable Energy Laboratory (NREL), allows users to simulate and analyze conventional,…
19 Jul 2022 08:53 AM IST
Project 2 Adaptive Cruise Control
EV BATCH - 17 Aim: To desing and Simulate Adaptive Cruise Control in matlab Simulink To developing Adaptive Cruise Control feature as per the Requirement Document using MATLAB Simulink. To Follow all the…
11 Jul 2022 05:15 PM IST
Week 7 State of charge estimation
…
08 Jul 2022 07:33 AM 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.