s o ftw a r e r e q u i r e m e n ts s p e c i fi c a ti o

29
Software Requirements Specification (SRS) Project Cooperative Adaptive Cruise Control++ (CACC) 2 Authors: Brendan Carpio, Jacob DeNell, Colin Heinemann, Joseph Stafford, Yuheng Zhang Customer: Mr. William Milam, Ford Motor Company Instructor: Dr. Betty Cheng 1 Introduction The Software Requirements Specification (SRS) document will outline every requirement of the Cooperative Adaptive Cruise Control System (CACC) in 7 sections. Section 1 will describe the CACC system as a whole and all of its objectives. It will also cover any major terms that need to be reviewed to help understand the CACC system. Section 2 will cover the context of the system and go into further detail on how the system should behave in certain situations and specify what assumptions need to be made for the system to accomplish the desired functionality. Section 3 will go over every requirement of the system and show how it should behave in all situations. Section 4 is all of the modeling requirements of CACC. It will show diagrams of the system and how all of the classes interact with each other. Section 5 will give ample scenarios and step by step instructions on using our prototype. Section 6 is all references needed throughout the SRS document. Section 7 provides a further point of contact for our project, Professor Betty H.C. Cheng. 1.1 Purpose The purpose of the SRS document is to provide all requirements and specifications to the team that will be working on the CACC system. The SRS will use diagrams and definitions about CACC to help everyone further understand every aspect of it. The intended audience is everyone that is involved in the process of building the system in any way. 1 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)t msu.edu)

Upload: others

Post on 17-Nov-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Software Requirements Specification (SRS)

Project Cooperative Adaptive Cruise Control++ (CACC) 2

Authors: Brendan Carpio, Jacob DeNell, Colin Heinemann, Joseph Stafford, Yuheng Zhang

Customer: Mr. William Milam, Ford Motor Company

Instructor: Dr. Betty Cheng

1 Introduction The Software Requirements Specification (SRS) document will outline every

requirement of the Cooperative Adaptive Cruise Control System (CACC) in 7 sections. Section 1 will describe the CACC system as a whole and all of its objectives. It will also cover any major terms that need to be reviewed to help understand the CACC system. Section 2 will cover the context of the system and go into further detail on how the system should behave in certain situations and specify what assumptions need to be made for the system to accomplish the desired functionality. Section 3 will go over every requirement of the system and show how it should behave in all situations. Section 4 is all of the modeling requirements of CACC. It will show diagrams of the system and how all of the classes interact with each other. Section 5 will give ample scenarios and step by step instructions on using our prototype. Section 6 is all references needed throughout the SRS document. Section 7 provides a further point of contact for our project, Professor Betty H.C. Cheng.

1.1 Purpose The purpose of the SRS document is to provide all requirements and

specifications to the team that will be working on the CACC system. The SRS will use diagrams and definitions about CACC to help everyone further understand every aspect of it. The intended audience is everyone that is involved in the process of building the system in any way.

1 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)t msu.edu)

1.2 Scope The system being produced will be called “Cooperative Adaptive Cruise Control”, abbreviated as CACC. CACC is an embedded system for automotive vehicles that automates cruise control in groups of vehicles called “platoons”. The goal of CACC is to make traveling on highways safer and more efficient by creating platoons of vehicles that all travel at the same speed at a close distance to each other. Each vehicle in a platoon will share GPS data with the other vehicles to allow every vehicle to know the correct speed to travel at. If any vehicle in the platoon slows down, all of the trailing vehicles will slow down and if any vehicle speeds up, all of the trailing vehicles will also speed up (to a certain point). CACC will automatically detect platoons and add vehicles to them. If a driver wants to leave the platoon at any time they can simply turn out of the lane that the platoon is using or hit the brakes on the vehicle.

1.3 Definitions, acronyms, and abbreviations ● CACC: Cooperative Adaptive Cruise Control. ● CACC vehicle: Vehicle capable of running the CACC system and currently has it

engaged. It is able to take part in a platoon, but may or may not be actively in one. ● Platoon: A group of CACC-enabled vehicles sharing GPS data which are all

traveling at the same speed in close proximity to each other. ● Head vehicle: The vehicle at the front of a platoon. ● Lead vehicle: See “Head vehicle”. ● Tail vehicle: The vehicle at the back of a platoon.

1.4 Organization Section 2.1 - Product Perspective

● The overall context of CACC and all of its constraints. Section 2.2 - Product Functions

● The major functions that the software will perform. Section 2.3 - User characteristics

● Expectations about the user (e.g., background, skill level, general expertise). Section 2.4 - Constraints

● Definitions of the constraints of the system. ● Descriptions of safety-critical features. ● Descriptions of properties which if violated will cause the system to not work

properly. Section 2.5 - Assumptions and Dependencies

● Assumptions about the environment and user interactions. Section 2.6 - Approportioning of Requirements

● Requirements which are beyond the scope of this current version of the project which may be addressed in future versions/releases.

2 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Section 3 - Specific Requirements ● An enumerated list of the requirements of the system.

Section 4 - Modeling Requirements ● Specifies bridge between application domain and machine domain. ● Diagrams that show expected behavior of the system and their descriptions.

Section 5.1 - How To Run Prototype ● Instructions on how to properly use the prototype of the system.

Section 5.2 - Sample Scenarios ● Pictures and their descriptions of how CACC will react to certain scenarios.

Section 6 - References ● All referenced documents which were used in the SRS.

Section 7 - Point of Contact ● Provides a further point of contact for our project (Professor Betty H.C. Cheng).

2 Overall Description This section will describe how CACC will work. Section 2.1 will give an

overview of what CACC is and its applications. Section 2.2 will describe the functionality of the system and use a diagram to provide a hierarchical view. Section 2.3 will describe what users should expect when using this system. Section 2.4 will list constraints of the system as well as crucial properties of the system. Section 2.5 describes assumptions that team CACC-2 has made during development, and section 2.6 will address requirements that are not feasible at the given time.

2.1 Product Perspective

Cooperative Adaptive Cruise Control++ (CACC) is a complete system that will replace the cruise control functionality that already exists in vehicles. It is a standalone program that encompasses and implements all of its requirements.

CACC requires several hardware components to be installed on the vehicle. A radar, camera, GPS system and radio will provide information to the system. The Vehicle controller will be the logical processing unit that takes in the data from the aforementioned components and use it to direct the brake by wire and electronic throttle control systems. The latter two systems are in charge of manipulating the vehicles movement.

Drivers will communicate with CACC much in the same was as existing cruise control systems. A toggle button will activate and deactivate the system. The brake pedal will provide an additional method for deactivation. Finally, drivers can indicate their desire to leave a platoon without disengaging CACC by using the turning indicators.

The software will communicate internally to different components by adding wiring between all the components. Wireless communication will take place between CACC vehicles so they may share their states, speed, and location information.

3 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

2.2 Product Functions CACC works as an adaptive cruise control system. The goal of the system is to

have a vehicle match the speed of the vehicle in front of it thus maximizing efficiency and safety. In order to do this, CACC forms vehicle platoons. Platoons are essentially groups of vehicles following each other in the same lane. With platoon logic, CACC is able to maximize speed at a safe distance by taking into account the acceleration and deceleration capability of the platoon as a whole.

With CACC enabled, vehicles will automatically create and join platoons with nearby vehicles also equipped with CACC. Like normal cruise control, the driver will be able to deactivate the system by braking. A turn signal will be used to leave a platoon in the current lane or to join a platoon in an adjacent lane. CACC software will handle various vehicles joining and leaving platoons and will calculate vehicle speeds accordingly.

The overall goals of the software are to provide convenience to the driver and to improve the safety of the vehicle by controlling the vehicle’s speed. A diagram is provided to show how this is broken down into the system’s functionality.

2.3 User Characteristics Users operating a CACC enabled vehicle must have knowledge in driving that

vehicle as well as basic knowledge in using CACC. Namely, drivers will need to know what controls to manipulate as well as the system’s behavior during joining and exiting a platoon.

Operating a vehicle with CACC will be very similar to operating a vehicle with standard cruise control where only speed adjustments are made. Since CACC will not steer the vehicle, the user will always be driving. CACC will control the speed and the driver must be prepared to brake at any point. The major difference between operating a CACC vehicle will be the turn signal functionality. The driver must be aware of how using the turn signal and changing lanes will affect CACC. If they leave a platoon by

4 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

changing lanes, the driver must be prepared to use the gas pedal to accelerate or maintain speed. Also, the driver must be aware that they may join a platoon by changing lanes, which would automatically enact speed control.

2.4 Constraints ● All vehicle components such as brakes, throttle, and sensors are operational. ● Vehicles are properly networked together

2.5 Assumptions and Dependencies We’ve assumed that platoons are formed in a decentralized nature by having each

vehicle represent itself as well as all platooning vehicles behind it. If there are only two vehicles, the leading vehicle will send its action information (is it accelerating or decelerating) to the vehicle in the back. The vehicle in the back will calculate its appropriate actions based on its weight and performance capabilities. Conversely, the trailing vehicle will send information about its weight and performance forwards. Thus, the leading vehicle is aware of the capabilities of itself and followers. This allows the leading vehicle to adjust its actions so that it may begin braking earlier or have a greater trailing distance.

2.6 Approportioning of Requirements The premise of this project is to implement an advanced version of cruise control.

It should have similar ways of controlling it from the perspective of the driver, but it should take advantage of the platooning, the process of vehicles driving close together to reduce fuel costs. Thus, the driver still has to manage steering and keep the vehicle going in the right direction.

Further development in platooning vehicles would likely involve taking over steering control from the driver. However, this would be out of scope for the current project and increase the level of automation [1]. To implement those features, a new program should be designed with those requirements known from the beginning. Referring to CACC could be beneficial as it would provide guidance on implementation and provide requirements based on events experienced in the wild.

3 Specific Requirements 1. Vehicles must coordinate with each other to achieve and maintain a platoon. 2. Vehicles must be able to leave the platoon at any time. 3. If a vehicle leaves the platoon, the car immediately following it will take its place

or start second platoon.

5 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

4. In the case of an emergency stop, vehicles in the platoon will communicate to ensure all cars can safely slow or stop.

5. Platoons should maintain a distance close enough to reduce the chance of being intersected by another vehicle.

6. Platoon will move in a way to ensure that non-CACC capable vehicles can safely navigate the freeway.

7. Vehicles in the platoon will communicate to coordinate accelerations and decelerations simultaneously, regardless of differences in sizes or class of vehicle.

8. In the event of a mechanical failure, the platoon will split in the location of the malfunctioning vehicle.

9. The platoon will attempt to not exert more than 2Gs of force on the driver. 10. Vehicles initiating CACC will attempt to find nearby platoons before starting a

new one. 11. CACC will negotiate with other automatic systems in the car to ensure the safety

of the driver and passengers. 12. Vehicles should be equally capable of performing leadership duties as a form of

redundant backup. 13. Platoons should be able to be comprised of vehicles of various brands and

companies without major changes of configuration, safety or overall experience. 14. Vehicles must have enough bandwidth to support continuous video streaming and

data exchange 15. The system and the data being exchanged must be designed in a way that it's

backwards compatible should new features be added. 16. Platoons should take advantage of high occupancy vehicle (HOV) lanes and other

infrastructure that would reduce their traffic and need to change speeds. 17. Platoon vehicles should put prioritize the safety of other vehicles. 18. Should take road conditions into account for stopping distance. 19. The system should take road conditions into account when performing

accelerations / decelerations to promote the safety of vehicles. 20. If a vehicle catches up the platoon it will join and slow to the platoon's speed. 21. If a vehicle’s system determines that a collision is imminent it and all following

vehicles in the platoon will brake up to a point where 2Gs of force is applied to each driver.

22. Vehicles will follow at a gap that CACC determines is far enough to provide safe operation, but close enough to provide drag reduction.

23. The CACC internal system must have adequate security, meaning that no one can easily hack into a computer and tamper with information.

6 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

24. CACC should use economic driving under low fuel driving. For example, using electronic fuel when the vehicle is almost out of gas.

25. CACC will be prepared to operate with limited functionality if there is a loss of sensor/actuator

7 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

4 Modeling Requirements

Use Case Diagram

8 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Use Case Descriptions Use Case: Create Platoon

Actors: Driver

Description: When there is no platoon available to join in a 100 meter distance, when cruise

control is engaged the vehicle will create a new platoon with itself as the lead (primary) vehicle.

This will allow other nearby vehicles to join behind. As the lead vehicle, it will decide how fast

the platoon will travel.

Type: Primary

Includes: None

Extends: None

Cross-Refs: 1, 7, 10, 11, 12, 13, 17, 22, 25, 26

Use Cases: Turn On System, Activate Sensors

Use Case: Join Platoon

Actors: Driver

Description: Having found an already existing platoon of vehicles within 100 meters, the vehicle

will accelerate to catch up and join it.

Type: Primary

Includes: None

Extends: None

Cross-Refs: 1, 5, 7, 10, 11, 13, 16, 18, 20, 22

Use Cases: Turn On System, Activate Sensors

Use Case: Leave Platoon

Actors: Driver

Description: The vehicle will leave the platoon it is currently in by notifying other vehicles in the

platoon. Depending on the scenario, this may result in a vehicle following a new vehicle and

adjusting its speed to match. Finally, the vehicle will deactivate its sensors.

Type: Primary

Includes: Send Message

Extends: None

Cross-Refs: 1, 2, 3, 8

Use Cases: Turn Off System, Deactivate Sensors

9 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Use Case: Send Message

Actors: Driver, Leading Driver, Following Vehicle

Description: When the vehicle is in a platoon it must be continuously sending information to

other members of the platoon. Information should include vehicle ID, weight, speed, braking

ability, acceleration ability, and what actions are being performed (accelerating, braking).

Type: Secondary

Includes: None

Extends: None

Cross-Refs: 7, 14, 15

Use Cases: Leave Platoon

Use Case: Turn On System

Actors: Driver

Description: The system would turn on when the driver has pressed a toggle switch. Turning the

system on would activate the sensors and start a diagnostic test to ensure that all components

are working. Additionally, the system will begin searching for a platoon to join. If it cannot find a

platoon, it will create one for itself.

Type: Primary

Includes: Join Platoon, Create Platoon, Activate Sensors, Receive Message

Extends: None

Cross-Refs: None

Use Cases: Every use case besides Turn Off System, and Leave Platoon.

Use Case: Turn Off System

Actors: Driver

Description: The driver can turn the CACC system off by pressing on the brake pedal or pressing

the toggle button. Turning off the system will have the vehicle leave its platoon, and will disable

its sensors since they are no longer in use. The vehicle would now be a non-CACC vehicle and

will be treated as such by the system.

Type: Primary

Includes: Deactivate Sensors, Leave Platoon.

Extends: None

Cross-Refs: None

Use Cases: Leave Platoon, Deactivate Sensors.

10 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Use Case: Activate Sensors

Actors: Driver

Description: When the system is turned on, the sensors will be activated to detect obstacles

and other vehicles.

Type: Primary

Includes: Detect obstacle, Detect failure

Extends: None

Cross-Refs: 4, 6, 7, 9, 18, 19, 22, 23, 24

Use Cases: Detect Obstacle, Detect Failure

Use Case: Deactivate Sensors

Actors: Driver

Description: When the system turned off, the sensors will deactivate. The vehicle will no longer

be able to detect obstacles or other vehicles.

Type: Primary

Includes: None

Extends: None

Cross-Refs: 2, 10, 25

Use Cases: None

Use Case: Detect Obstacles

Actors: Driver

Description: When the radar turned on, the vehicle can detect obstacles that may cause

collisions. Additionally, the radar can detect the distance to another vehicle.

Type: Primary

Includes: None

Extends: None

Cross-Refs: 17, 21, 22, 25

Use Cases: None

Use Case: Adjust Speed

Actors: Driver

Description: The system will adjust the vehicle’s speed to follow the vehicle in front of it at a

safe distance. This change in speed will give adequate time for and vehicles behind to adjust and

will not irritate the driver by being too fast.

Type: Primary

Includes: None

Extends: None

Cross-Refs: 5, 6, 7, 9, 19, 21, 23

Use Cases: None

11 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Use Case: Receive Message

Actors: Driver

Description: The system will receive messages from other vehicles in the same platoon. These

messages should include vehicle ID, weight, speed, braking ability, acceleration ability, and what

actions are being performed (accelerating, braking).

Type: Primary

Includes: Adjust Speed

Extends: None

Cross-Refs: 1, 7, 14

Use Cases: Adjust Speed

Use Case: Detect Failure

Actors: Driver

Description: The system must be able to recognize when it is malfunctioning in order to act

accordingly. If there is a failure in sensors or actuators, CACC will detect the failure and disable

the system to allow the platoon to respond.

Type: Primary

Includes: Turn Off System

Extends: None

Cross-Refs: 4, 8, 26

Use Cases: Turn Off System

Use Case: Split Platoon

Actors: Driver

Description: This occurs if a non-CACC vehicle gets in between two platooning CACC vehicles,

there is an obstruction the slows a following CACC vehicle, or a Platooning vehicle in between

platooning vehicles leaves the platoon.The vehicle in front of the split will become the tail end of

the platoon in front. The vehicle behind the split will become the new leader of the platoon

created in the back. This new leader will set the speed of it’s platoon allowing it to match the

speed of a slow moving car that cut-in or completely stopping if there is an obstruction.

Type: Primary

Includes: Create Platoon, Leave Platoon

Extends: Detect Obstacle

Cross-Refs: 1, 2, 6, 7

Use Cases: Create Platoon, Leave Platoon, Detect Obstacle

12 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Domain Model

Element Name Description

BrakeByWire Braking system used to slow the vehicle.

Attributes Operations setDegree(x: Integer): void Sets the value of the degree to “x”.

Specifically, sets how much braking power is being applied

getDegree(): Integer Gets the value of the degree -- braking power -- being applied.

getType: String Returns the value of the Type. Relationships BrakeByWire will inherit attributes and operations from

ControlSurface UML Extensions

13 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Element Name Description

Cooperative Adaptive Cruise Control++ (CACC)

Root object of the diagram. Represents the whole system.

Attributes Operations Relationships CACC is made up of Platoon objects since the system as a whole

manages different platoons. UML Extensions

Element Name Description ControlSurface Abstract class for actuators that

control the vehicle’s movement such as Electronic Throttle Control and Brake by Wire

Attributes Degree: Integer

Determines if the Control surface is active and how much of the capability is being used. Integers represent range of 0% to 100%. 0% means the surface is off or not being applied. 100% means the surface is being applied to the fullest extent of its capability. Other values mean that the Control Surface is active to a but only outputting a fraction of the available performance.

Type: Enum[“Brake”, “Throttle”]

Used to identify what type of control surface this is so that it can be used appropriately. Brakes would be used to slow down the vehicle while throttles would speed up the vehicle.

Operations setDegree(x:Integer): Void Set the value of Degree to “x”. getDegree(): Integer Return the value of Degree. getType(): String Return the value of the Type. Relationships Inherited by BrakeByWire and ElectronicThrottleControl. Contains

functions that are called by VehicleController to coordinate child objects.

UML Extensions

14 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Element Name Description ElectronicThrottleControl Throttle system used to accelerate the

vehicle Attributes Operations setDegree(x: Integer): void Sets the value of the degree to “x”.

Specifically, sets how much throttle is being applied to propel the vehicle.

getDegree(): Integer Gets the value of the degree -- throttle -- being applied

getType: String Returns the value of the Type. Relationships ElectronicThrottleControl will inherit attributes and operations

from ControlSurface UML Extensions

Element Name Description ForwardLookingCamera Type of sensor that is able to visually

detect target vehicle, estimate distance, and relative speed.

Attributes Operations Enable(): void Activates the sensor so it generates

data based on light. Disable(): void Deactivates the sensor so it is no

longer generating data based on light. GetReading(): String Retrieves the reading from the sensor

describing vehicles it has identified, estimated distance from the object in front and an estimated speed.

Relationships ForwardLookingCamera will inherit attributes and operations from Sensor

UML Extensions

Element Name Description GPSSystem Type of sensor that is able to get

vehicle position, speed, and direction

15 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

information. Aids in differentiating vehicle targets and distancing.

Attributes Operations Enable(): void Activates the sensor so it generates

data based on what satellites transmit Disable(): void Deactivates the sensor so it is no

longer generating data. GetReading(): String Retrieves the reading from the sensor

describing vehicle position, speed, and direction information.

Relationships GPSSystem will inherit attributes and operations from Sensor UML Extensions

16 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Element Name Description Message Data being sent between the platoon

vehicles to be used for adjusting speed.

Attributes Sender: VehicleController Which vehicle sent the message Recipient: VehicleController Which vehicle should receive the

message State: Enum[“accelerating”,

“deaccelerating”, “maintaining speed”]

What the current state of the sender is. Made to represent what actions are currently being taken by the ControlSurfaces

Location: Pair[Double] A pair of doubles made to represent Latitude and Longitude

Operations GetSender() Retrieves the sender of the message. GetRecipient() Retrieves who should be the recipient

of the message GetState() Retrieves the state of the sender from

the message GetLocation() Retrieves the location of the sender

from the message Relationships Messages will be created and managed by Radios on the vehicle. UML Extensions

Element Name Description Radio Component to transmit and receive

messages to and from other vehicles as well as infrastructure.

Attributes Operations SendMessage(): void Gets information from the Vehicle

controller and packages it into a Message packet then transmits it.

ReceiveMessage(): Message Receives a message Relationships Radio will create and retrieve messages so that they may be

processed by the VehicleController. UML Extensions

17 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Element Name Description Radar Type of sensor that is able to detect,

id, and track target vehicles Attributes Operations Enable(): void Activates the sensor so it generates

data based physical waves Disable(): void Deactivates the sensor so it is no

longer generating data based physical waves.

GetReading(): String Retrieves the reading from the sensor describing vehicles it has identified and tracks their relative position.

Relationships Radar will inherit attributes and operations from Sensor UML Extensions

Element Name Description Sensor Abstract class that provides a

common interface for all types of sensors used in this system.

Attributes Type: string The name of the sensor type, for

example “radar” Reading: String The current output of a sensor

depicting all the parameters that it could return.

Operations Enable(): void Activates the sensor so it may begin

generating data. Disable(): void Deactivates the sensor so it is no

longer generating data. GetReading(): String Retrieves the reading from the sensor Relationships ForwardLookingCamera, Radar, and GPSSystem all inherit from this

class. UML Extensions

18 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Element Name Description VehicleController Primary Module of the vehicle that

maintains overall information and coordinates the other components such as Sensors and Control Surfaces.

Attributes Speed: Int Speed of the vehicle in miles per hour Weight: Double Weight of the vehicle in tons Latitude: Double Latitude of the vehicle. This

information is updated by the GPS system

Longitude: Double Longitude of the vehicle. This information is updated by the GPS system.

Operations RunSystemTest(): Boolean Check all components to see if they

are working. Return false if any components aren’t working properly.

ObstacleFound(): Boolean Getting the data from the sensors, checking the distance from the obstacles inorder to adjust speed

AdjustSpeed(int speed): Void

Calculate the distance from the vehicle to the obstacles and get the result of how much speed should adjust

CreatePlatoon(int ID): Void Creates a platoon if one does not already exist

JoinPlatoon(int ID): Boolean Joins a platoon if one is available nearby

LeavePlatoon(): Void Leaves a platoon which the vehicle belongs to

Activate(): Void Turn on the vehicle’s CACC system Deactivate(): Void Turn off the vehicle’s CACC system Relationships VehicleController coordinates the Radio, ControlSurfaces, and

Sensors. It is the representation of the vehicle and is a part of the CACC system

UML Extensions

19 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Sequence Diagram Description

Scenario1: The driver is the actor that will initiate the sequence. The three messages that the driver will send are pressing buttons, pressing braking pedal and using the steering wheel. The button can toggle the system on and off, braking will halt the system entirely, and steering/signaling will leave the platoon. Scenario2: After the driver performs the action, the system needs to react appropriately. After getting the command from the driver, the system will send a message to the sensors to either activate or deactivate based on how the sensor relates to the CACC system. When the system turns on, the sensors activate and vice versa. Scenario3: When the sensors activate they will send two messages, which enable detection of both obstacles and failures. When the system turns off, the sensors should be deactivated which will, in turn, disable obstacle and failure detection. Scenario4: Detect Obstacles will use radar sensing and a forward-looking camera to do the distance measurement from the obstacles to the vehicles. It will send a message to adjust the speed when finding obstacles that require the vehicles to accelerate or decelerate. If detect obstacles gets a message from the sensors needing to disable, it will then reply to the sensors a message that the function is already disabled. Scenario5:

20 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Detect Failure checks that the GPS system, radio communication, radar sensing, and forward-looking camera are working normally. It will send a message back to the system when finding a failure and will shut down. After this, if detect failure gets a message from the sensors that it needs to disable, it will then reply that it already is disabled. Scenario6: If Detected Obstacles needs to change speed in order to avoid the obstacles, it will send a message to Speed Adjust and will adjust the speed accordingly. Scenario7: Join Platoon and Create Platoon capabilities turn on after the vehicle activates the CACC system. The vehicles then have the ability to use radio to connect with each other. If there is a platoon that already exists, the system will allow the vehicle to join the platoon. If there isn’t a platoon, the vehicle will create a platoon and be the leading car. Scenario8: If the CACC system turns off the vehicle should leave the platoon and send messages to notify other cars in the platoon. Scenario9: Leave Platoon, Join Platoon and Create Platoon will all lead to notifying all vehicles in the platoon. The notification will be sent to the following vehicle, and the following vehicle will continue to pass it back. Scenario10: Non-CACC vehicle driver is another actor that participates in the sequence. Non-CACC vehicle is able to cut inside the platoon, causing the platoon to split in half.

21 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Scenario11: When a Non-CACC vehicle cuts off a platoon, the following vehicle will use the detect obstacle functionality to split the platoon, creating a new platoon for the following vehicles.

22 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Sequence Diagram

23

Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

State Diagram Description Drivers will drive their vehicles onto the highway and get their vehicles up to speed, roughly that of traffic. From there they can decide if they want to keep driving or give control over to Cooperative Adaptive Cruise Control++ (CACC or the “system”). The system is initially turned off until the driver has pressed the toggle button. The driver may disengage the system at any time by pressing the toggle button again or pressing the brake pedal. Once the system is on, it begins by activating the sensors and running a diagnostic scan to ensure the system’s components are working and able to satisfy their duties reliably. Should the system decide that it cannot operate correctly it will shut itself down returning full control to the driver. When successful, the system will begin passively scanning the area around the vehicle looking for obstacles. During the time where CACC is engaged, sensors are constantly generating data and sending it to a processing unit. This unit will interpret sensor data and determine if changes to the vehicle's speed, braking amount, or throttle amount should be made. If no actions are required, it will simply go idle until it receives new data to process. Otherwise, actions to be taken will be sent to the throttle and brakes (Control Surfaces). CACC will by default set the control surfaces to maintain their speed. When the Control Surfaces receive a command to adjust their speed, they’ll adjust their degrees of activity. During acceleration, the brakes shouldn’t be active and thus will be set to a degree of 0%, but the throttle would be set to a degree that would give gentle acceleration. Once the vehicle at the desired speed, the logic processor will send another signal of the desired speed, so that control surfaces will hold their standing. Likewise, during deceleration the throttle would be set to 0% and the brake degree would be calculated to give gentle acceleration while still meeting the requirements of ensuring no collision. Communications between vehicles in a platoon will be initially gathered with the communications unit. Upon receiving a new message it will send that message to the logic processing unit which will decide what to do with the information. Additionally, the logic processing unit will send its decision back to the communications so that it can be sent out.

24 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

State Diagram

25 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

5 Prototype

The prototype displays an overhead view of a highway. On this model are various vehicles, shown as rectangles, which the system will interact with. The car we are following is the one colored red. A green car is one that is currently using CACC capabilities. When our red car activates CACC, it will be wrapped in a green rectangle. Blue cars are the ones that do not have CACC capabilities or are not currently using them. The buttons on the side correlate to possible actions that can be taken by the driver. When a button is clicked, the appropriate action will be taken on-screen by our vehicle and others around it.

5.1 How to Run Prototype The prototype is based on the canvas API that is supported in all modern

browsers as part of the HTML5 specification (IE 9+, Edge, Firefox 3.6+, Chrome 4+, Safari 4+, Opera 10+). It requires Javascript to be enabled on the web page and can be accessed from our team’s website. After the entire page has been loaded it should no longer require an internet connection to function

The simulation will be available on our website (https://cse.msu.edu/~denellja/simulation)[2].

5.2 Sample Scenarios Scenario 1:

This scenario begins with our car driving along the highway.

The driver activates CACC. The system starts searching for an already created platoon. Having found none, our car becomes the lead vehicle in a new platoon.

26 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

Soon after, the car behind decides to also activate CACC and it finds our platoon. The car moves forward and attempts to join.

After driving for a while, the rear vehicle disengages CACC and leaves the platoon.

This leaves our vehicle as the leader of its own platoon.

Scenario 2:

This scenario begins with an already formed platoon like that described in Scenario 1.

27 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

This time, the non-CACC vehicle attempts to enter the left lane, separating the platoon.

When this occurs, the system will detect the incoming obstacle and split the platoon.

The cars ahead of the obstacle will then continue on as normal. The cars behind the obstacle will then form a new platoon and take any evasive actions if necessary. Once the system is sure the obstacle is no longer a problem, the rear platoon will continue normally, with a new vehicle at the head.

6 References

[1] “J3016B: Taxonomy And Definitions For Terms Related To Driving Automation Systems For On-Road Motor Vehicles - SAE International,” SAE International,

28 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)

15-Jun-2018. [Online]. Available: https://www.sae.org/standards/content/j3016_201806/. [Accessed: 21-Nov-2019].

[2] J. DeNell, B. Carpio, C. Heinemann, J. Stafford, and Y. Zhang, “Cooperative Adaptive Cruise Control (CACC).” [Online]. Available: https://cse.msu.edu/~denellja/. [Accessed: 22-Nov-2019].

7 Point of Contact For further information regarding this document and project, please contact Prof. Betty H.C. Cheng at Michigan State University (chengb at msu.edu). All materials in this document have been sanitized for proprietary data. The students and the instructor gratefully acknowledge the participation of our industrial collaborators.

29 Template based on IEEE Std 830-1998 for SRS. Modifications (content and ordering of information) have been made by Betty H.C. Cheng, Michigan State University (chengb at msu.edu)