IPB

Welcome Guest ( Log In | Register )

2 Pages V   1 2 >  
Reply to this topicStart new topic
Rover Orientation Data, Where can one find detailed rover orientation data?
CosmicRocker
post May 28 2011, 04:20 AM
Post #1


Senior Member
****

Group: Members
Posts: 2223
Joined: 1-December 04
From: Marble Falls, Texas, USA
Member No.: 116



I am trying to quantify Spirit's final resting orientation, but I would generally like to learn how to determine the orientation of either rover for any particular sol. I'm sure this data is in the MMB files somewhere, but I haven't been able to identify it. Likewise, I am sure it is somewhere in the Analyst's Notebook database and/or the Pancam data tracking database, but again, I can't find it.

Spirit's final orientation is the main thing I am looking for, but any orientation assistance would be greatly appreciated.

Thanks.


--------------------
...Tom
Go to the top of the page
 
+Quote Post
djellison
post May 28 2011, 04:27 AM
Post #2


Administrator
****

Group: Chairman
Posts: 13849
Joined: 8-February 04
Member No.: 1



The PDS label label for just about every image, I think, includes a lot of orientation data. It's huge - but here's a segment of it

CODE
......

ROVER_MOTION_COUNTER             = (138, 1230, 11, 148, 221)
ROVER_MOTION_COUNTER_NAME        = (SITE, DRIVE, IDD, PMA, HGA)

.....

/* COORDINATE SYSTEM STATE: ROVER */

GROUP                            = ROVER_COORDINATE_SYSTEM
  COORDINATE_SYSTEM_INDEX        = (138, 1230, 11, 148, 221)
  COORDINATE_SYSTEM_INDEX_NAME   = (SITE, DRIVE, IDD, PMA, HGA)
  COORDINATE_SYSTEM_NAME         = ROVER_FRAME
  ORIGIN_OFFSET_VECTOR           = (-0.227241, 0.177903, 0.0358358)
  ORIGIN_ROTATION_QUATERNION     = (0.885949, -0.169903, 0.00321267,
                                    -0.431529)
  POSITIVE_AZIMUTH_DIRECTION     = CLOCKWISE
  POSITIVE_ELEVATION_DIRECTION   = UP
  QUATERNION_MEASUREMENT_METHOD  = COARSE
  REFERENCE_COORD_SYSTEM_INDEX   = 138
  REFERENCE_COORD_SYSTEM_NAME    = SITE_FRAME
END_GROUP                        = ROVER_COORDINATE_SYSTEM

/* COORDINATE SYSTEM STATE: INSTRUMENT DEPLOYMENT DEVICE */

GROUP                            = IDD_COORDINATE_SYSTEM
  COORDINATE_SYSTEM_INDEX        = (138, 1230, 11, 148, 221)
  COORDINATE_SYSTEM_INDEX_NAME   = (SITE, DRIVE, IDD, PMA, HGA)
  COORDINATE_SYSTEM_NAME         = MI_FRAME
  ORIGIN_OFFSET_VECTOR           = (0.998908, -0.112816, -0.124504)
  ORIGIN_ROTATION_QUATERNION     = (0.559273, -0.497552, -0.443273, 0.493117)
  POSITIVE_AZIMUTH_DIRECTION     = CLOCKWISE
  POSITIVE_ELEVATION_DIRECTION   = DOWN
  REFERENCE_COORD_SYSTEM_INDEX   = (138, 1230, 11, 148, 221)
  REFERENCE_COORD_SYSTEM_NAME    = ROVER_FRAME
END_GROUP                        = IDD_COORDINATE_SYSTEM

/* ARTICULATION DEVICE STATE: PANCAM MAST ASSEMBLY */

GROUP                            = PMA_ARTICULATION_STATE
  ARTICULATION_DEVICE_ID         = "PMA"
  ARTICULATION_DEVICE_NAME       = "PANCAM MAST ASSEMBLY"
  ARTICULATION_DEVICE_ANGLE      = (0.553583 <rad>, 0.69753 <rad>,
                                    0.553568 <rad>, 0.69766 <rad>,
                                    1.21798 <rad>, -0.296728 <rad>)
  ARTICULATION_DEVICE_ANGLE_NAME = ("AZIMUTH-MEASURED", "ELEVATION-MEASURED",
                                    "AZIMUTH-REQUESTED",
                                    "ELEVATION-REQUESTED", "AZIMUTH-INITIAL",
                                    "ELEVATION-INITIAL")
  ARTICULATION_DEVICE_MODE       = DEPLOYED
END_GROUP                        = PMA_ARTICULATION_STATE

/* ARTICULATION DEVICE STATE: HIGH GAIN ANTENNA */

GROUP                            = HGA_ARTICULATION_STATE
  ARTICULATION_DEVICE_ID         = "HGA"
  ARTICULATION_DEVICE_NAME       = "HIGH GAIN ANTENNA"
  ARTICULATION_DEVICE_ANGLE      = (2.88001 <rad>, 0.0198442 <rad>)
  ARTICULATION_DEVICE_ANGLE_NAME = (AZIMUTH, ELEVATION)
END_GROUP                        = HGA_ARTICULATION_STATE

/* ARTICULATION DEVICE STATE: FILTER */

GROUP                            = FILTER_ARTICULATION_STATE
  ARTICULATION_DEVICE_ID         = "FILTER"
  ARTICULATION_DEVICE_NAME       = "FILTER ACTUATORS"
  ARTICULATION_DEV_POSITION      = (8, 8, 1)
  ARTICULATION_DEV_POSITION_ID   = ("PANCAM_L8_440NM_SOL_ND5",
                                    "PANCAM_R8_880NM_SOL_ND5", "MI_CLOSED")
  ARTICULATION_DEV_POSITION_NAME = ("LEFT PANCAM FILTER", "RIGHT PANCAM
                                    FILTER", "MI DUST COVER")
END_GROUP                        = FILTER_ARTICULATION_STATE

/* ARTICULATION DEVICE STATE: INSTRUMENT DEPLOYMENT DEVICE */

GROUP                            = IDD_ARTICULATION_STATE
  ARTICULATION_DEVICE_ID         = "IDD"
  ARTICULATION_DEVICE_NAME       = "INSTRUMENT DEPLOYMENT DEVICE"
  ARTICULATION_DEVICE_ANGLE      = (-0.118184 <rad>, -0.899982 <rad>,
                                    1.53029 <rad>, 2.38935 <rad>,
                                    1.5708 <rad>, -0.126481 <rad>,
                                    -0.903681 <rad>, 1.53503 <rad>,
                                    2.38834 <rad>, 1.516 <rad>)
  ARTICULATION_DEVICE_ANGLE_NAME = ("JOINT 1 AZIMUTH-ENCODER", "JOINT 2
                                    ELEVATION-ENCODER", "JOINT 3
                                    ELBOW-ENCODER", "JOINT 4 WRIST-ENCODER",
                                    "JOINT 5 TURRET-ENCODER", "JOINT 1
                                    AZIMUTH-POTENTIOMETER", "JOINT 2
                                    ELEVATION-POTENTIOMETER", "JOINT 3
                                    ELBOW-POTENTIOMETER", "JOINT 4
                                    WRIST-POTENTIOMETER", "JOINT 5
                                    TURRET-POTENTIOMETER")
  ARTICULATION_DEVICE_MODE       = "FREE SPACE"
  ARTICULATION_DEVICE_TEMP       = (-23.8068 <degC>, -14.6212 <degC>)
  ARTICULATION_DEVICE_TEMP_NAME  = ("AZIMUTH JOINT 1", "TURRET JOINT 5")
  ARTICULATION_DEV_VECTOR        = (0.140944, -0.303824, 0.942245)
  ARTICULATION_DEV_INSTRUMENT_ID = "MI"
  ARTICULATION_DEV_VECTOR_NAME   = GRAVITY
  CONTACT_SENSOR_STATE           = ("NO CONTACT", "NO CONTACT", CONTACT,
                                    CONTACT, "NO CONTACT", "NO CONTACT", OPEN,
                                    "NO CONTACT")
  CONTACT_SENSOR_STATE_NAME      = ("MI SWITCH 1", "MI SWITCH 2", "RAT SWITCH
                                    1", "RAT SWITCH 2", "MB SWITCH 1", "MB
                                    SWITCH 2", "APXS DOOR SWITCH", "APXS
                                    CONTACT SWITCH")
END_GROUP                        = IDD_ARTICULATION_STATE

/* COORDINATE SYSTEM STATE: PANCAM MAST ASSEMBLY */

GROUP                            = PMA_COORDINATE_SYSTEM
  COORDINATE_SYSTEM_INDEX        = (138, 1230, 11, 148, 221)
  COORDINATE_SYSTEM_INDEX_NAME   = (SITE, DRIVE, IDD, PMA, HGA)
  COORDINATE_SYSTEM_NAME         = MAST_FRAME
  ORIGIN_OFFSET_VECTOR           = (0.45781, 0.02779, -1.09668)
  ORIGIN_ROTATION_QUATERNION     = (0.894388, -0.100912, 0.35272, 0.255881)
  POSITIVE_AZIMUTH_DIRECTION     = CLOCKWISE
  POSITIVE_ELEVATION_DIRECTION   = UP
  REFERENCE_COORD_SYSTEM_INDEX   = (138, 1230, 11, 148, 221)
  REFERENCE_COORD_SYSTEM_NAME    = ROVER_FRAME
END_GROUP                        = PMA_COORDINATE_SYSTEM

/* ARTICULATION DEVICE STATE: MOBILITY CHASSIS */

GROUP                            = CHASSIS_ARTICULATION_STATE
  ARTICULATION_DEVICE_ID         = "CHASSIS"
  ARTICULATION_DEVICE_NAME       = "MOBILITY CHASSIS"
  ARTICULATION_DEVICE_ANGLE      = (-0.0120352 <rad>, 0.00844853 <rad>,
                                    -0.0256182 <rad>, -0.0516135 <rad>,
                                    -0.382922 <rad>, -0.459977 <rad>,
                                    0.158197 <rad>)
  ARTICULATION_DEVICE_ANGLE_NAME = ("LEFT FRONT WHEEL POTENTIOMETER", "RIGHT
                                    FRONT WHEEL POTENTIOMETER", "LEFT REAR
                                    WHEEL POTENTIOMETER", "RIGHT REAR WHEEL
                                    POTENTIOMETER", "LEFT BOGIE
                                    POTENTIOMETER", "RIGHT BOGIE
                                    POTENTIOMETER", "DIFFERENTIAL BOGIE
                                    POTENTIOMETER")
  ARTICULATION_DEVICE_MODE       = DEPLOYED
END_GROUP                        = CHASSIS_ARTICULATION_STATE


....

/* DERIVED GEOMETRY DATA ELEMENTS: ROVER FRAME */

GROUP                            = ROVER_DERIVED_GEOMETRY_PARMS
  INSTRUMENT_AZIMUTH             = 31.9313 <deg>
  INSTRUMENT_ELEVATION           = 43.0455 <deg>
  REFERENCE_COORD_SYSTEM_INDEX   = (138, 1230, 11, 148, 221)
  REFERENCE_COORD_SYSTEM_NAME    = ROVER_FRAME
END_GROUP                        = ROVER_DERIVED_GEOMETRY_PARMS

/* DERIVED GEOMETRY DATA ELEMENTS: SITE FRAME */

GROUP                            = SITE_DERIVED_GEOMETRY_PARMS
  INSTRUMENT_AZIMUTH             = -38.2947 <deg>
  INSTRUMENT_ELEVATION           = 42.3127 <deg>
  REFERENCE_COORD_SYSTEM_INDEX   = 138
  REFERENCE_COORD_SYSTEM_NAME    = SITE_FRAME
  SOLAR_AZIMUTH                  = 326.775 <deg>
  SOLAR_ELEVATION                = 45.0107 <deg>
END_GROUP                        = SITE_DERIVED_GEOMETRY_PARMS


That basically includes the complete 'state' of the vehicle. IDD, PMA, Wheels, Chassis, suspension...everything.
Go to the top of the page
 
+Quote Post
CosmicRocker
post May 28 2011, 04:59 PM
Post #3


Senior Member
****

Group: Members
Posts: 2223
Joined: 1-December 04
From: Marble Falls, Texas, USA
Member No.: 116



Thanks, Doug. I wasn't aware of the label data. If I am understanding this data correctly, it appears that I will need to learn the mathematics of quaternions in order to make any sense of it. I wonder if there is any other source of data where the quaternions have been converted into something more intelligible to me.


--------------------
...Tom
Go to the top of the page
 
+Quote Post
CosmicRocker
post May 29 2011, 06:28 AM
Post #4


Senior Member
****

Group: Members
Posts: 2223
Joined: 1-December 04
From: Marble Falls, Texas, USA
Member No.: 116



I'm just following up on my own question. I found a quaternion calculator on line that supposedly could convert a quaternion into a set of angles in degrees. Using the rover quaternion from Doug's example above, it returned the following results.


CODE
heading     -12.658311877406014    degrees
attitude    -49.970826789740684    degrees
bank        -27.62979515200747     degrees


Heading, attitude, and bank are apparently the equivalent of the aeronautical terms: yaw, pitch, and roll. A heading of about -12.7 degrees is slightly west of north, which seems reasonable. The attitude and bank angles are way too large to be reasonable for Spirit's orientation. I guess I have more work to do.


--------------------
...Tom
Go to the top of the page
 
+Quote Post
nprev
post May 29 2011, 07:35 AM
Post #5


Senior Member
****

Group: Moderator
Posts: 7141
Joined: 8-December 05
From: Los Angeles
Member No.: 602



Tom, I don't know if I'd discard the attitude & bank data just yet. For one thing, what is the reference for those numbers: local vertical or the martian geoid? Given that the source is probably the IMU, I'd bet on the latter. Also, recall that Spirit was already sideways (R side high) on the slope of Home Plate.

IMO, I don't find those numbers necessarily unreasonable. She was in a precarious situation.


--------------------
A few will take this knowledge and use this power of a dream realized as a force for change, an impetus for further discovery to make less ancient dreams real.
Go to the top of the page
 
+Quote Post
CosmicRocker
post May 30 2011, 05:43 AM
Post #6


Senior Member
****

Group: Members
Posts: 2223
Joined: 1-December 04
From: Marble Falls, Texas, USA
Member No.: 116



Thanks for the support, Nick. I haven't given up on them yet, but I am still confused. The converted angles don't seem to jive with the rover model displayed by MMB for the same location. I appreciate what you are saying, and you are probably right in questioning the reference. I'm trying to check that out. It also occurred to me that the reference could be a previous position.

I have no real experience with IMUs. There wouldn't be much difference between local vertical and a normal to the geoid, would there?


--------------------
...Tom
Go to the top of the page
 
+Quote Post
AndyG
post May 30 2011, 10:35 AM
Post #7


Member
***

Group: Members
Posts: 574
Joined: 20-April 05
Member No.: 279



QUOTE (CosmicRocker @ May 28 2011, 05:59 PM) *
...it appears that I will need to learn the mathematics of quaternions in order to make any sense of it.


My maths - a dodgy A-level gained three decades ago - was required to use quaternions about a year ago on a 3d modelling issue in Flash. I "got it" after some struggling, wrote the code and it all worked well. A week later, the code still made some sense to me. When I came back to change some things a fortnight after that, I found it had become utterly unintelligible.

Quaternions, I think, mark my limit! Tough to gain, very easy to lose.

Andy
Go to the top of the page
 
+Quote Post
nprev
post May 30 2011, 01:06 PM
Post #8


Senior Member
****

Group: Moderator
Posts: 7141
Joined: 8-December 05
From: Los Angeles
Member No.: 602



Tom, my experience with inertial nav systems is almost entirely aircraft-related, so within that context the difference between local vertical & the geoid is significant enough to be considered, esp. during initial system alignment on Earth. (Choice of the reference geoid is also important; there are several in current use.) I don't know how refined such data is for Mars yet.

As you pointed out, though that might not matter for the MER INS. All that stuff matters for initial platform alignment on a planetary surface, which works basically like this for aircraft inertial systems:

1. Platform levels out orthogonal to local vertical.
2. Amount & direction of correction required to keep platform level over time (normally, a few minutes) is measured.
3. Correction rate is matched to expected drift rate to find latitude; correction direction used to find north. (Finding exact longitude is usually done by entering an appoximate longitude during the alignment process, which is subsequently refined by the system; there's no real easy way for the system to sense that independently.)

I suspect that the MERs haven't been going through full daily alignments for all this time; after morning wake-up, they might well just spin up to the last stored coordinates. Over time, this will drift (normally at a fixed rate) due to inherent & unavoidable minor mechanical imperfections in the system. Therefore, I wonder if this raw data you're working with might have substantial cumulative errors included that are subtracted during groundside processing @ JPL.

Anyhow. Sorry for the long stream-of-consciousness post; was trying to think this through. smile.gif Good luck!


--------------------
A few will take this knowledge and use this power of a dream realized as a force for change, an impetus for further discovery to make less ancient dreams real.
Go to the top of the page
 
+Quote Post
jamescanvin
post May 30 2011, 01:13 PM
Post #9


Senior Member
****

Group: Moderator
Posts: 2179
Joined: 9-February 04
From: UK
Member No.: 16



Tom, I played around with rover quaternions years ago, I was never totally convinced I had got it working exactly right but comparing my code with the maths on calculator you posted I think you need to swap the last two elements over. Then you get numbers close to what I get from code I've used in the past to automatically generate panoramas with flat horizons.

heading -50.58337307972186 degrees
attitude 8.761900410435159 degrees
bank -17.565753444479686 degrees

I'm not sure what the -50 for heading refers to as Spirt was facing very close to north, I have only every been interested in the pitch (attitude) and roll (bank) numbers which are about right I think.



--------------------
Go to the top of the page
 
+Quote Post
nprev
post May 30 2011, 04:38 PM
Post #10


Senior Member
****

Group: Moderator
Posts: 7141
Joined: 8-December 05
From: Los Angeles
Member No.: 602



James, all I can think is that the heading figure may be expressed in relative terms; maybe -50 deg off of the rover's longitudinal axis at platform alignment? Again, it's extremely important to understand the reference axes & error correction set to interpret this data.


--------------------
A few will take this knowledge and use this power of a dream realized as a force for change, an impetus for further discovery to make less ancient dreams real.
Go to the top of the page
 
+Quote Post
djellison
post May 30 2011, 04:41 PM
Post #11


Administrator
****

Group: Chairman
Posts: 13849
Joined: 8-February 04
Member No.: 1



I could believe a heading of 310 deg. They do fine calibration of the IMU on a regular basis - (normally cited as a 'QFE' I believe) - and I'm sure one would have occurred very close to the final location.
Go to the top of the page
 
+Quote Post
Tesheiner
post May 30 2011, 05:26 PM
Post #12


Senior Member
****

Group: Moderator
Posts: 4275
Joined: 19-April 05
From: .br at .es
Member No.: 253



IIRC the rover's attitude is recalculated whenever a new "site" is declared. The "sun-finding" sequences are used for that purpose.
Go to the top of the page
 
+Quote Post
nprev
post May 30 2011, 05:40 PM
Post #13


Senior Member
****

Group: Moderator
Posts: 7141
Joined: 8-December 05
From: Los Angeles
Member No.: 602



Eduardo, do you mean for heading? I don't think that solar location would help very much for attitude. However, the Sun's position is an excellent reference for both heading & longitude computation.

EDIT: Apologies; upon further reflection, yes, you could indeed derive attitude data via solar observation, although it seems that considerable interpolation of not only the Sun's angle with the horizon but also its orientation within the frame would be required. But the IMU itself would almost certainly have to be the primary data source, so the question again becomes what sorts of references & error corrections are involved for IMU data interpretation.


--------------------
A few will take this knowledge and use this power of a dream realized as a force for change, an impetus for further discovery to make less ancient dreams real.
Go to the top of the page
 
+Quote Post
CosmicRocker
post May 30 2011, 07:45 PM
Post #14


Senior Member
****

Group: Members
Posts: 2223
Joined: 1-December 04
From: Marble Falls, Texas, USA
Member No.: 116



This is turning into quite an interesting topic. I didn't expect to find so many people contributing. That's what I love about this forum. Thanks to all for your contributions. smile.gif

James: I think you may be on to something. Flipping the last two elements in that calculator seems to result in much more reasonable numbers...and, numbers that are agreeing qualitatively with the orientation of the rover model in MMB for the few locations I have tested. I want to do a little more testing, but this could be a breakthrough. smile.gif


--------------------
...Tom
Go to the top of the page
 
+Quote Post
CosmicRocker
post May 31 2011, 05:05 AM
Post #15


Senior Member
****

Group: Members
Posts: 2223
Joined: 1-December 04
From: Marble Falls, Texas, USA
Member No.: 116



Aside from simply wanting to know what Spirit's final orientation is, I started working on this project because I wanted to be able to insert a rover model into the virtual 3D space of Google Mars. Ultimately, I wanted to be able to generate Google Mars anaglyphs similar to the ones I posted for Opportunity's route to Endeavour almost a year ago. Because Google has a high resolution DEM of Spirit's Inner Valley location, I thought it would be interesting to try some close up views of the terrain with a model of Spirit in context. Ultimately, I would like to create an image in tribute to Spirit's historic mission. But, I need to work the bugs out of the process, first. wink.gif

To give you an idea of what I am talking about, here are a couple of preliminary images. The model in these images is using the orientation angles that James posted above, so you can see how they look next to Home Plate.

First, here is a screenshot of a scene from Google Mars.
Attached Image


This is synthesized anaglyph view of Spirit's final location.
Attached Image


--------------------
...Tom
Go to the top of the page
 
+Quote Post

2 Pages V   1 2 >
Reply to this topicStart new topic

 



RSS Lo-Fi Version Time is now: 21st November 2014 - 05:55 PM
RULES AND GUIDELINES
Please read the Forum Rules and Guidelines before posting.

IMAGE COPYRIGHT
Images posted on UnmannedSpaceflight.com may be copyrighted. Do not reproduce without permission. Read here for further information on space images and copyright.

OPINIONS AND MODERATION
Opinions expressed on UnmannedSpaceflight.com are those of the individual posters and do not necessarily reflect the opinions of UnmannedSpaceflight.com or The Planetary Society. The all-volunteer UnmannedSpaceflight.com moderation team is wholly independent of The Planetary Society. The Planetary Society has no influence over decisions made by the UnmannedSpaceflight.com moderators.
SUPPORT THE FORUM
Unmannedspaceflight.com is a project of the Planetary Society and is funded by donations from visitors and members. Help keep this forum up and running by contributing here.