From 74a30974edb9d5c08eb6b7c72786eff1b1b7e30b Mon Sep 17 00:00:00 2001 From: Reynaldo Morillo Date: Thu, 3 May 2018 00:55:52 -0400 Subject: [PATCH] Added the README --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++ simulation_example.png | Bin 0 -> 16259 bytes 2 files changed, 47 insertions(+) create mode 100644 README.md create mode 100644 simulation_example.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..120c5fa --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +Self-Driving Race Car Simulation +======================================== + +This is an attempt to model a self-driving race car on a track. + + +### Dependencies + +* Java (tested with version 1.7) +* [Processing 3](https://processing.org/download/) + +## How to run code + +Download/clone the project. You can download a zip if that's easier. Otherwise, you can clone it like so: + +```bash +git clone https://github.uconn.edu/CarSimClassProj/RaceCarSim.git +``` + +Once you have processing installed, and you have downloaded the project. Open processing, and navigate to the folder containing our project. Open the `simulation.pde` file (it's the main file of our project). + +When the project is open just press run and you should see something like this: + +![simulation example](simulation_example.png) + + +## What's Happening? + +#### The Track + +The track is defined as a series of nodes in a graph. The black line you see defines a path through the track, which the is the middle line of the track. It's a path that avoid collisions, but is not the optimal path through the course. + +#### The Cars + +The cars (`vehicle.pde`) are defined by the bicycle model. We took into consideration forces on the vehicle, and limitations to their capabilities. Such as applying a maxspeed and maxforce to each. + +The cars follow a path they're given, and try not to deviate from that path. The cars are controlled by the pure pursuit controller. This algorithm uses a notion of look-ahead points that the car tries to pursue. So a path for each car is defined as a series of look-ahead points. + +### The setup (i.e. the experiment) + +What you currently see on the track is two cars, both assigned the same path, which is the center line through the track. Both are initially placed near the center line, and the only differential factors between them is their **maxforce**. The **maxforce** is essentially the acceleration of the vehicle, and this influences the car's steering behavior. Having a higher **maxforce** will cause the car to respond sooner to turns so it can make the turn. Ideally we would model the full kinematics of the vehicle to account for slipping, but for now, a car with a **maxforce** can noticeably move faster around the track. + +#### Why does it do something weird during the first lap half way around the track? + +We wanted to introduce some noise into the experiment. By that we mean to purposely move the cars off course of their path and see how well they respond to this disturbance. You'll find that the pure pursuit algorithm goes a good job of getting them back on track. + +> Note: because we're not modeling all the kinematics and dynamics of the car, the car does not oscillate about the set point (i.e. the path). So you can think of it in the most ideal conditions without friction and other complex forces acting on the car diff --git a/simulation_example.png b/simulation_example.png new file mode 100644 index 0000000000000000000000000000000000000000..f03993359f9ff5259fa108359a6914ce2acde44f GIT binary patch literal 16259 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 sD@zv1e|&Lg6x5R;kpF#-H6??nl73V$