# State Estimators

## Contents

# State Estimators#

In robotics, one thing that we are going to battle with is the uncertainty in estimating states. That also applies to estimating the robotâ€™s internal states such as joint positions, end effector poses, etc. While empirically we found the raw data of robot states from libfranka api is good enough for most purposes, we still allow state estimator implementations in case you need it due to various resons.

## Exponential Smoothing (Lowpass Filtering)#

Currently we implemented one state estimator. We name it ```
Exponential
Smoothing
```

instead of `lowpass filtering`

as we want to explicitly state
how the math is done in this filtering.

Overall, what exponential smoothing does is that given raw data observation of robot states \(o_{t}\), the current estimated robot state \(x_{t}\) is:

When \(\alpha=1\), the controller directly uses the raw state
observation. Notice that \(+\) in this equation is a general addition,
and in the case of orientation, it is implemented using `slerp`

function instead of direct numerical addition.

This state estimator provides estimation over the following three
states, which can be found in `state_estimator_cfg`

in the configs such as osc-pose-controller.yml:

joint positions:

`alpha_q`

joint velocities:

`alhpa_dq`

end effector poses:

`alpha_eef`