# Data Filtering Systems

The purpose of the Data Filtering System is to take in noisy data from the various sensors (via the Data Acquisition System) and to form an accurate and cohesive picture of the robot's surroundings. It will then pass that picture to the Path Planning System.

## Filters

### Kalman Filter

The Kalman filter is a relatively simple method for determining parameters of a system from noisy measurements of that system. It will be a good start for future studies in more complicated methods. It first assumes that all of the noise in the system is Gaussian and then recursively estimates the unknown variables.

## SLAM

Simultaneous localization and mapping (SLAM) uses noisy sensor data to estimate the pose of a robot and its surroundings at the same time. Full SLAM and online SLAM.

### fastSLAM

The noise in landmark measurements is path-dependent, therefore the estimates of landmark positions are covariant given the current position. However, fastSLAM uses the observation that estimates of landmark positions are independent when given the path.

## Models

Bayesian filtering, and probabilistic estimation in general, uses models of the system being studied to approximate unknown variables when given other information (measurements and controls) about the system. For robotics, we usually split these models up into world/control models and measurement models.

State Variables Control Variables Measurement Variables
 Pose (position and angle) Velocity (linear and angular) Accelleration (linear and angular) Coeff. of friction Position of landmarks
 motor speeds/path (from whatever is controlling the robot) wheel encoders motor currents
 GPS compass accelerometers & gyroscopes camera LADAR

### World/Control Models

World models estimate how the system changes between states when no controls are present. Control models estimate how control actions on the system will affect the state. We usually assume that control actions on the system increase uncertainty about the state, which is why controls are included with the world model and not the measurement model (measurements decrease uncertainty about the state) even though controls are usually measurements from our perspective. Note that the distinction is irrelevant so long as the a priori state estimate is determined given the controls up to that next state {${\displaystyle bel(x_{k})=p(x_{k}|x_{1:(k-1)},y_{1:(k-1)},u_{1:k})}$}.

On Candii, we will be testing two different world/control models. One will be a simple kinematic model which assumes there is no slippage and that the wheels are velocity controlled. The other will be a more complicated dynamic model that includes the effects of friction (of drive train and surface), drag (of surface and atmosphere), and gravity and that the wheels are current controlled (current propotional to [c - RPM], torque). See Robot Modeling for more details. This is probably impractical with Kalman-like filters.

### Measurement Models

Measurement models estimate how measurements occur as a function of the state. We usually assume that measurements of the system decrease uncertainty about the state. In SLAM, we usually separate internal models (pertains to the robot) from external models (pertains to the landmarks). We can do this because the errors associated with correlations between the landmarks are mostly independent of errors associated with correlations between the robot and the landmarks. Said another way, where the robot is located doesn't affect how accurately it detects landmarks. When true, it also means that the estimate of the external state (the map) never diverges.

On Candii, the sensors related to the internal model (GPS, compass, accelerometers & gyroscopes) are linear and easy to characterize, the sensors related to the external model however are neither. The quantity and quality of the data coming from these sensor makes it impracticable to use directly in the filter, which is why the Environment Data Processing Systems pre-process the data before it comes to this system. Potential models for this purpose need to be studied in greater detail.

### Initial State and Noise Estimates

The initial state of the robot is unknown in this competition, therefore it is important that we make decent initial state and noise estimates. If the initial estimates are significantly off, it will greatly increase the time it takes for the map to converge.

To characterize the noise in the sensors, we should carefully look at the datasheets and also test each sensor in a reproducible way. This may mean connecting them to lab equipment or just running an automated analysis on the robot.