# a2pr

Pitch and roll estimation from triaxial accelerometer data.

## Syntax

#### Matlab & Octave

[p,r] = a2pr(A) % A is a sensor structure or matrix or [p,r] = a2pr(A,fc) % A is a sensor structure or [p,r] = a2pr(A,fs,fc) % A is a matrix

#### R

list <- a2pr(A) # A is a sensor list or matrix or list <- a2pr(A,fc) # A is a sensor list or list <- a2pr(A,fs,fc) # A is a matrix

## Description

Pitch and roll estimation from triaxial accelerometer data. This is non-iterative estimator with |pitch| constrained to ⇐ 90 degrees. The pitch and roll estimates give the least-square-norm error between A and the A-vector that would be measured at the estimated pitch and roll. If A is in the animal frame, the resulting pitch and roll define the orientation of the animal with respect to its navigation frame. If A is in the tag frame, the pitch and roll will define the tag orientation with respect to its navigation frame.

## Inputs

Input var | Description | Units |
---|---|---|

A | is a nx3 acceleration matrix with columns [ax ay az]. Acceleration can be in any consistent unit, e.g., g or m/s^{2}. | g or m/s^{2} |

fs | is the sampling rate of the sensor data in Hz (samples per second). This is only needed if A is not a sensor structure and filtering is required. | Hz |

fc (optional) | specifies the cut-off frequency of a low-pass filter to apply to A before computing pitch and roll. The filter cut-off frequency is with respect to 1=Nyquist frequency. The filter length is 8/fc. Filtering adds no group delay. If fc is not specified, no filtering is performed. | Hz |

## Outputs

Output var | Description | Units |
---|---|---|

p | is the pitch estimate in radians | Radians |

r | is the roll estimate in radians | Radians |

## Notes & assumptions

- Output sampling rate is the same as the input sampling rate.
- Frame: This function assumes a [north,east,up] navigation frame and a [forward,right,up] local frame. In these frames, a positive pitch angle is an anti-clockwise rotation around the y-axis. A positive roll angle is a clockwise rotation around the x-axis. A descending animal will have a negative pitch angle while an animal rolled with its right side up will have a positive roll angle.

## Example

### Matlab & Octave

[p,r] = a2pr([0.77 -0.6 -0.22]) p=0.87806 %radians r=-1.9222 %radians

### R

samplematrix <- matrix(c(0.77, -0.6, -0.22, 0.45, -0.32, 0.99, 0.2, -0.56, 0.5), byrow = TRUE, nrow = 3) list <- a2pr(samplematrix) list$p = c(0.8780579, 0.4082165, 0.2603593) #radians list$r = c(-1.9222411, -0.3126323, -0.8419416) #radians

## About

bugs@animaltags.org Last modified: 10 May 2017