Terminology =========== General ------- **State**: The state of the vehicle. We define this to be x, y, yaw and speed. **Control Action**: The control action to be executed by the vehicle. We define this to be steering wheel angle and wheel throttle. **Action Trajectory**: An array of control actions, representing a temporal sequence of control actions to be executed every ``controller_period``. **Dynamics Model**: A model that future state after a given time, given the current state and control action. **Cost Function**: A function that evaluates the quality of a given state. The goal is to minimize this function. **Cost-to-go**: The total cost of being in a given state and all the states that follow it. **Controller Period**: The time interval between control actions. **Perturbation**: Brownian noise centered at 0 that we add to a base action trajectory to generate a sample. .. _twist: **twist**: 6-dimensional velocity, 3 for linear velocity and 3 for angular velocity. .. _pose: **pose**: 6-dimensional position, 3 for translation and 3 for orientation. **spline**: The line through the middle of the track boundaries, generated by |Path Planning|'s SVM algorithm. Represented as an array of (x,y,z) points. Currently, the car is always fixed to be at point (0,0,0). **callback** : A function that is called when an event occurs. **Coordinate frames**: - *inertial*: Standard coordinate frame, translated and rotated such that the car is at point (0,0,0) with yaw 0 being the direction the car is facing. Otherwise known as *path planning* frame or erroneously *world* frame. - *curvilinear*: Coordinate frame in relation to the spline. Coordinates represent distance along spline, perpendicular distance from spline, angle with tangent of spline, etc. Needed for cost calculation. **rollout**: In the context of MPPI, refers to state rollout. A sequence of predicted states calculated by repeated application of the model on a given starting state and control action trajectory. CUDA ---- **host**: The CPU **device**: The GPU, or one of many. ``__device__``: Tag for function subroutines to be run exclusively on the GPU, or symbols to be statically allocated in GPU global memory. ``__global__``: Tag for kernels: functions that are called by the host and run on the device. ``__constant__``: Tag for symbols in device memory that are unmodified by kernels . Can still copy to and from the host. Read-only in CUDA code. Allows for better caching. Equivalent of ``const``. Constants for both the host and device should be marked ``__constant__ const``. ROS --- **Node**: A process that performs computation. Nodes can communicate with each other by publishing messages to topics. **Publisher**: A node that sends messages to a topic. **Subscriber**: A node that receives messages from a topic. **Topic**: A channel for sending messages. Nodes can publish messages to a topic or subscribe to a topic to receive messages. Acronyms -------- **MPPI**: Model Predictive Path Integral. See :doc:`here ` for more information. **ROS**: Robot Operating System. We are currently using ROS2 Humble_. **CUDA**: Compute Unified Device Architecture. A toolkit provided by NVIDIA for parallel computing on GPUs. **LIDAR**: Light Detection and Ranging. A sensor that uses laser light to measure distances to objects, in our case track cones. .. _Humble: https://docs.ros.org/en/humble/index.html