NASA, via Lightstreamer SRL, provides four "quaternion components" for the International Space Station's current attitude. These are labelled USLAB000018–21 and described as "US Current Local Vertical Local Horizontal (LVLH) Attitude Quaternion Component [0-3]" respectively. For example, at roughly 15:01:30 2017-07-26 UTC we saw:
TIME_000001: 17938885000 USLAB000018: 0.999387085437775 "[...] Component 0" USLAB000019: 0.00414502713829279 "[...] Component 1" USLAB000020: -0.00237915641628206 "[...] Component 2" USLAB000021: -0.0346784666180611 "[...] Component 3"
Lightstreamer has a demo website that displays the raw values as received here: http://demos.lightstreamer.com/ISSLive/ - to get to those attitude values, click ADCO on the left, then click on the four USLAB000018–21 subheadings.
const quaternion = new THREE.Quaternion(); quaternion.x = USLAB000018; quaternion.y = USLAB000019; quaternion.z = USLAB000020; quaternion.w = USLAB000021; const euler = new THREE.Euler(); euler.setFromQuaternion(quaternion); const roll = THREE.Math.radToDeg(this.euler.x); const pitch = THREE.Math.radToDeg(this.euler.y); const yaw = THREE.Math.radToDeg(this.euler.z);
Producing this output via JSFiddle:
Roll -176.0264711321606 Pitch -0.28893712359948726 Yaw -0.46525059186533985
Short of getting a HAM license, how can I verify this is right or wrong, and if wrong—as was reasonably suspected by others and myself in another query—how should I convert those USLAB values to roll, pitch, yaw for telemetry.space?