Autoware.Auto
|
|
In accordance with REP-105[1] and guided by the design principals laid out in Localization Design, the following localization architecture will be used for the AVP 2020 Demo and will form the basis for future improvements for the Autoware.Auto localization architecture.
The following frames are defined:
/earth
/map
/semantic_map
/odom
/base_link
/nav_base
(optional)/base_link
frame to represent sensor frames/base_link
frame for ease of sensor calibrationREP-105[1] provides enough specificity with regard to most frames for a concrete implementation with the exception of the /base_link
frame and the newly-added /nav_base
frame. For the purposes of this demo, the location of the /base_link
frame shall be defined as:
For the purposes of this demo, the location of the optional /nav_base
frame shall be defined as:
The following assumptions are made for the provided localization architecture:
The final localization stack for the AVP 2020 Demo should have the following components:
sensor_msgs/PoseWithCovarianceStamped
in /earth
framesensor_msgs/PoseWithCovarianceStamped
in source framesensor_msgs/PoseWithCovarianceStamped
sensor_msgs/PoseWithCovarianceStamped
in target framesensor_msgs/PoseWithCovarianceStamped
in /map
frame from Global State Estimator, passed through Pose Transformer to transform from /earth
->/map
sensor_msgs/PoseWithCovarianceStamped
in /map
frame/odom
->/base_link
transform/odom
->/base_link
transformsensor_msgs/PoseWithCovarianceStamped
in /map
frame from Environmental Sensor Localizersensor_msgs/PoseWithCovarianceStamped
in /map
frame from Global State Estimator, passed through Pose Transformer to transform from /earth
->/map
/map
->/odom
transformThe final localization stack for the AVP 2020 Demo should have the following transforms available:
/base_link
-><sensor_frame>
: Static. Published by tf2::static_transform_publisher
or robot_description
when using a URDF file./base_link
is a frame that is defined as being tied to a fixed point on the mobile robot's body, any transform between a sensor and /base_link
would be static./base_link
->/nav_base
: Static. Published by tf2::static_transform_publisher
or robot_description
when using a URDF file./base_link
frame is useful for some vehicle models and longer-term path planning, the center-of-mass of the vehicle is more useful in short-term path planning and for estimating vehicle dynamics. However, in certain operational design domains, measuring the center-of-mass of the vehicle with enough specificity to be useful is not worth the effort which is why this frame is optional./odom
->/base_link
: Dynamic. Published by Odometry State Estimator./map
->/base_link
transform, this estimate can be used for navigation even when a globally-relative or map-relative position is not yet available./map
->/odom
: Dynamic. Published by Map State Estimator./map
->/base_link
relation) as well as the position estimate provided by the Global State Estimator (a /map
->/base_link
relation after being passed through the Pose Transformer using the /earth
->/map
transform) and fuses them into a single /map
->/base_link
estimate. It then relates this estimate to the origin of the odom frame as a /map
->/odom
transform, which it publishes. This allows integration of both the odometry localization data and environmental sensor localization data into a transform tree of /map
->/odom
->/base_link
which should be considered a single transform (i.e. ephemeral /map
->/base_link
) by navigation and planning components./map
->/semantic_map
: Static. Published by tf2::static_transform_publisher
or Map Loader/map
frame is tied to the Sensor Map which avoids a transform lookup in localization but necessitates one in functions that use the Semantic Map such as path planning. Making this transform required rather than optional avoids an unnecessary dependency between the sensor and semantic maps. Additionally, ommitting this transform would necessitate an assumption that both the semantic map and the sensor map have coincident origins which would require either another unnecessary interdependence or run-time verification of this assumption, which causes an order-of-operations dependency./earth
->/map
: If a map server is used, dynamic but non-contiguous and published by the map server. If no map server is used, static and published by tf2::static_transform_publisher
/map
frame) is defined as being globally-fixed, this transform relates the origin of the Sensor Map to the origin of the /earth
frame which is referenced as ECEF. The publication of this transform is necessary for the Environmental Sensor Localizer to create an initial position estimate using the output from the Global State Estimator. This transform is also necessary for the Map State Estimator to be able to utilize the output from the Global State Estimator as a fusion input.The following diagram depicts this architecture: