Team 7 Members:
- Kyle Mielke, mielkek1@udyaton.edu
- Jared Aronson, aronsonj1@udayton.edu
- Ryan Culver culverr1@udayton.edu
- Al Montasir Al Mahruqi almahruqia1@udayton.edu
Project Overview
High Assurance Monitoring of an Autonomous Car Control Simulation
The goal of the project is to create, design, and implement an environment to develop the software components of an autonomous car. The car will need to be capable of driving around a simulated model of a city while obeying trafic laws.
An environment model, a basic cyber phyisical system (CPS) controler, and runtime monitoring will be implemented initially. Then the CPS controller is expected to be capable to be exported to embedded C code that includes the monitors.
Company Information
Galois
- Portland, OR
421 SW 6th Avenue, Suite 300
Portland, Oregon 97204
- Arlington, VA
901 N Stuart Street, Suite 501
Arlington, Virginia 22203
- Dayton, OH
444 E 2nd Street
Dayton, Ohio 45402
Company Mentors
- Matthew Clark, Principal Scientist
- Aaron Miller, Director of Business Strategy and Operations, Dayton, OH
Overview
- Design and implement environment to develop the software components of an autonomous car.
- The car will need to be capable of driving around a simulated model of a city while obeying traffic laws.
- A basic Cyber Physical System (CPS) controller, and runtime monitoring will be implemented initially.
- Then the CPS controller is expected to be capable to be exported to a C implementation that includes the monitors.
Accomplishments
- Monitors(SPEED, TURN, COLLIDE, LIGHTS, STOP)
- Scenarios(Two way stop, Four way Stop, Collision)
- Simple Speed Example with only Matlab and Simulink.
- Docker Container.
Implementation
Scenarios
Matlab Scenarios were created using one of the built in apps that matlab has which is called Driving Scenario Designer which saved time on creating the models and since it has sensors built in, we were able
to export the matlab code and have signals thrown whenever we want to detect something. Examples of what the detection is like is shown below in scrum process.
Three scenarios were created:
- Two way stop scenario.
- Four way stop scenario.
- Collision scenario.
Using the scenarios, we were able to export the sensor data as a matlab function and modify to detect the objects that are in the scenario.
Monitors
Five monitors were created:
- SPEED; ensures modelled vehicle obeys speed limits
- TURN; ensures modelled vehicle uses turn signals properly
- COLLIDE; provides early warning when modelled vehicle is on a collision course with another object
- LIGHTS; ensures modelled vehicle behaves properly around traffic lights
- STOP; ensures modelled vehicle behaves properly around stop signs
Speed Example
- Only needs Matlab and Simulink.
- Matlab function block as the driver.
- Passed to speed.c (wrapper), which then calls the monitor.
- If the speed limit is exceeded, the monitor calls a function in the wrapper throwing a warning.
Docker Integration
- Docker Container Image
- Has all the necessary software to build copilot code
- Has a nodejs server that uses socketio to manage the build evnvionment and connect to the user interface.
- Visual Studio Code Extention
- Adds a backend that connects to the Container to act as a user inerface.
- Adds 'Reify Copilot', 'Make Copilot', and 'Test Copilot' to the list of commands available to the user
- Sends and recives files to the container at the user's request