-
Notifications
You must be signed in to change notification settings - Fork 136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add GeoPoseStamped interface for REP-147 to help clarify geographic orientation #407
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
@@ -134,7 +134,9 @@ A higher level view of the system uses the following abstraction. | |||||||||
Coordinate Frames | ||||||||||
================= | ||||||||||
|
||||||||||
It is expected that users of this interface will also follow the coordinate frame conventions layed out in REP 105 [#rep105]_. | ||||||||||
It is expected that users of this interface will also follow the coordinate frame conventions layed out in REP 105 [#REP105]_. | ||||||||||
As mentioned in REP 103 [#REP103]_, if using the NED convention, the frame ID must end in ``_ned``. | ||||||||||
If unspecified, ENU can be assumed. | ||||||||||
|
||||||||||
Proposed Interfaces | ||||||||||
=================== | ||||||||||
|
@@ -341,6 +343,33 @@ To send a series of goals a list of GlobalPositions can be used. | |||||||||
nav_msgs/GlobalPosition[] waypoints | ||||||||||
|
||||||||||
|
||||||||||
Pose Reporting | ||||||||||
------------------ | ||||||||||
|
||||||||||
An aerial vehicle can share its geographic pose via ``geographic_msgs/GeoPoseStamped`` [#geoposestamped]_. | ||||||||||
The position coordinates should follow WGS-84 [#wgs84]_. | ||||||||||
|
||||||||||
EGM2008 [#egm]_ can be assumed as the altitude datum unless otherwise stated. | ||||||||||
If and when EGM2020 is released, this REP can be updated. | ||||||||||
Take caution integrating GPS data and terrain data as they frequently use different datums. | ||||||||||
|
||||||||||
The orientation field follows REP 103's [#REP103]_ recommendation. The orientation is the transform from the | ||||||||||
local tangent plane [#ltpc]_ to the body frame. | ||||||||||
|
||||||||||
A vehicle in level flight facing east will have a unit identity quaternion for its orientation. | ||||||||||
|
||||||||||
x,y,z=0, w=1 | ||||||||||
|
||||||||||
.. image:: rep-0147/geopose-default-orientation.png | ||||||||||
|
||||||||||
Remember that per REP 103 [#REP103]_, when the orientation is decomposed to its yaw component, | ||||||||||
this yaw value is NOT equal to the traditional compass bearing. | ||||||||||
|
||||||||||
In the situation that the position is known but orientation it not known, or vise versa, | ||||||||||
the unknown fields should be populated with ``NaN`` to avoid Null Island [#null_island]_. | ||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Thoughts on this for addressing accuracy? |
||||||||||
|
||||||||||
TODO add link to ArduPilot test code for orientation. | ||||||||||
|
||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For reference, I would also add the following quaternion transformations, which can be used to convert between Ardupilot's and REP-103 reference frames.
Assuming that we start from vehicle's quaternion
Of course the inverse can be applied: if an orientation is known in RED-103
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This looks good, although I wonder if the maintainers want the REP to be language agnostic. If they prefer code language agnostic, I can write it up in Latex or something. |
||||||||||
Currently Unspecified | ||||||||||
--------------------- | ||||||||||
|
||||||||||
|
@@ -960,6 +989,9 @@ References | |||||||||
.. [#twiststamped] geometry_msgs/TwistStamped | ||||||||||
(http://docs.ros.org/api/geometry_msgs/html/msg/TwistStamped.html) | ||||||||||
|
||||||||||
.. [#rep103] REP 103: Standard Units of Measure and Coordinate Conventions | ||||||||||
(http://www.ros.org/reps/rep-0103.html) | ||||||||||
|
||||||||||
.. [#rep105] REP 105: Coordinate Frames for Mobile Platforms | ||||||||||
(http://www.ros.org/reps/rep-0105.html) | ||||||||||
|
||||||||||
|
@@ -978,6 +1010,20 @@ References | |||||||||
.. [#ss_trigger] ``std_srvs/Trigger`` | ||||||||||
(http://docs.ros.org/melodic/api/std_srvs/html/srv/Trigger.html) | ||||||||||
|
||||||||||
.. [#geoposestamped] odometry | ||||||||||
(https://docs.ros.org/en/api/geographic_msgs/html/msg/GeoPoseStamped.html) | ||||||||||
|
||||||||||
.. [#egm] Earth Gravity Model | ||||||||||
(https://en.wikipedia.org/wiki/Earth_Gravitational_Model) | ||||||||||
|
||||||||||
.. [#wgs84] WGS 84 | ||||||||||
(https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84) | ||||||||||
|
||||||||||
.. [#ltpc] Local Tangent Plane coordinates | ||||||||||
(https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates) | ||||||||||
|
||||||||||
.. [#null_island] Null Island | ||||||||||
(https://en.wikipedia.org/wiki/Null_Island) | ||||||||||
|
||||||||||
Copyright | ||||||||||
========= | ||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there is a more standard way to document the value for the quaternion (perhaps yaml), please supply a reference to the syntax I should use. Or, if we can find an authoritative reference on this definition of
unit identity quaternion
, that would be great. The Wikipedia does not directly mention it.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.