Goals/Sub-projects
Loop specifics (What actions for the driver to take and when)
Binary decision (on whether or not we should do the loop)
Notes:
The loop specifics sub-project is basically a simulation of the loop (think of something like an analytical way of solving a differential equation, but instead of a differential equation, we use our model)
The binary decision sub-project requires data from the loop + external data. This makes this sub-project dependent on the loop specifics sub-project
Driver Inputs
Driver inputs are all actions that the driver can take:
Drive at x speed
Accelerate/Decelerate to x speed
Coast (Keep current velocity) → May require the driver to accelerate/decelerate to keep a constant velocity
Stop
Turn x degrees → Use a 360 model for the turning degree to quantify data for the algorithm. 0°/360° is forward/straight, 90° is turn right, 180° is turn around, 270° is turn left, etc…
Algorithm Design
Assume that we have a segment that has a start point and an endpoint that is separated by some distance. The start point and end point can be represented by some coordinates. A route is composed of many smaller segments (but for now, we focus on the smaller segments).
This means we have 5 types of data that we have to consider:
Input data: Data that we have when at the “start” of the segment. This includes things like initial velocity, initial battery charge
Segment data: This is constant data about the segment itself. This includes the elevation gain, speed limit, expected charge from solar panels, etc. This data is constant for the segment itself, but may not be constant for the route (since a route is composed of many segments). For example, the segment will always have the same weather conditions but this is not true for the route weather conditions. Using a programming analogy, this is basically a local constant
Route data: This is constant data about the route. This data will not change for the route and each segment “inherits” this data. Using a programming analogy, this is basically a global constant
Variable data: These are the variables that we want to optimize (or calculate for) using some model. Types of variable data that we would want to optimize for include minimal/minimum energy use, maximal/maximum velocity, etc.
Output data: This data is calculated using our variable data. This includes things like final velocity, final battery charge, etc. This output data would be the new input data for the next segment