> For the complete documentation index, see [llms.txt](https://docs.ceruleansonar.com/c/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ceruleansonar.com/c/surveyor-240-16/application-programming-interface/attitude_report.md).

# ATTITUDE\_REPORT

### ID: 504

### Payload Definition

<table><thead><tr><th width="188">Data Type</th><th width="164">Name</th><th>Description</th></tr></thead><tbody><tr><td>vec3</td><td>up_vec</td><td>world up vector (x,y,z) in the device coordinate system (x forward, y port, z up).</td></tr><tr><td>vec3</td><td>reserved</td><td>reserved for future magnetic field vector</td></tr><tr><td>u64</td><td>utc_msec</td><td>utc msec (1970 epoc). Will be 0 if not available.</td></tr><tr><td>u32</td><td>pwr_up_msec</td><td>msec since power up </td></tr></tbody></table>

To compute pitch and roll from the up\_vec (assuming cable end of Surveyor is aft):

Pitch (positive bow up) = asin(up\_vec.x);

Roll (positive port side up) = atan2(up\_vec.y, up\_vec.z);

We may support a calibrated magnetic vector in the future, but currently a heading signal from another source is required.&#x20;
