|
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/PoseWithCovarianceStampedsensor_msgs/PoseWithCovarianceStamped in target framesensor_msgs/PoseWithCovarianceStamped in /map frame from Global State Estimator, passed through Pose Transformer to transform from /earth->/mapsensor_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: