Skip to content
Snippets Groups Projects
Commit c212e019 authored by Alejandro Lopez Gestoso's avatar Alejandro Lopez Gestoso
Browse files

Fixed merge conflict

parents ab38c8c4 7baba43a
No related branches found
No related tags found
No related merge requests found
## Description ## Description
This node provides a global localization based on landmarks. On the ADC competition, these landmarks are [ar_track_alvar](http://wiki.ros.org/ar_track_alvar) tags from the traffic signs and from additional localization signs. This node takes the filtered ar tag detections of both cameras and optimizes a landmark based slam problem to get the robot position. A landmarks based slam problem is the problem of optimize a number of robot poses with a map of landmarks. It uses [Ceres Solver](http://ceres-solver.org/index.html) to make the optimization. This node provides a global localization based on landmarks. On the ADC competition, these landmarks are [ar_track_alvar](http://wiki.ros.org/ar_track_alvar) tags from the traffic signs and from additional localization signs. This node takes the [filtered ar tag detections](https://gitlab.iri.upc.edu/mobile_robotics/adc/adc_2021/iri_adc_tag_localization_filter) (features) of both cameras and optimizes a landmark based slam problem to get the robot position. A landmarks based slam problem is the problem of optimize a number of robot poses with a map of landmarks. It uses [Ceres Solver](http://ceres-solver.org/index.html) to make the optimization.
The following image is a skecth of the input and output of the node. The following image is a skecth of the input and output of the node.
...@@ -10,7 +10,7 @@ The following image is a basic representation of the slam problem. Is a sequence ...@@ -10,7 +10,7 @@ The following image is a basic representation of the slam problem. Is a sequence
<img src="doc/images/slam_problem_sketch.png" alt="Image: Slam problem overview"> <img src="doc/images/slam_problem_sketch.png" alt="Image: Slam problem overview">
When searching for new landmarks, there is a landmark time persistence filter that checks that a landmark is seen enough times on the same location before adding it as a mapped landmarks. An orientation filter can be enabled to check that it has a similar orientation on each detection. When searching for new landmarks, there is a time persistence filter that checks that a feature is seen enough times on the same location before adding it as a mapped landmarks. An orientation filter can be enabled to check that it has a similar orientation on each detection.
To match a detection with a landmark the [Mahalanobis distance](https://en.wikipedia.org/wiki/Mahalanobis_distance) is used. Basically, a match between a detection and a landmark is done when the detection is inside an ellipse centered on the landmark. The ellipse is defined by the sensor noise and the mahalanobis distance parameter. To match a detection with a landmark the [Mahalanobis distance](https://en.wikipedia.org/wiki/Mahalanobis_distance) is used. Basically, a match between a detection and a landmark is done when the detection is inside an ellipse centered on the landmark. The ellipse is defined by the sensor noise and the mahalanobis distance parameter.
...@@ -25,7 +25,9 @@ The landmarks information can be loaded in two ways: ...@@ -25,7 +25,9 @@ The landmarks information can be loaded in two ways:
* **yaw** (double): Landmark yaw. * **yaw** (double): Landmark yaw.
* **marker_id** (integer): The ar_track_alvar marker id. * **marker_id** (integer): The ar_track_alvar marker id.
If the lanmarks are loaded from the xodr file, *load_landmarks_from_xodr* parameter must be set to true. The landmarks txt file can be generated loading the landmarks from the xodr file and setting the parameter *write_output_files* on a *Dynamic Reconfigure* window.
If the landmarks are loaded from the xodr file, *load_landmarks_from_xodr* parameter must be set to true.
# ROS Interface # ROS Interface
### Topic publishers ### Topic publishers
...@@ -45,7 +47,7 @@ If the lanmarks are loaded from the xodr file, *load_landmarks_from_xodr* parame ...@@ -45,7 +47,7 @@ If the lanmarks are loaded from the xodr file, *load_landmarks_from_xodr* parame
- ~**global_frame** (String; default: map) Global frame id. - ~**global_frame** (String; default: map) Global frame id.
- ~**odom_frame** (String; default: odom) Odometry frame id. - ~**odom_frame** (String; default: odom) Odometry frame id.
- ~**base_link_frame** (String; default: base_link) Robot's base link frame id. - ~**base_link_frame** (String; default: base_link) Robot's base link frame id.
- ~**opendriveframe** (String; default: opendrive) Opendrive frame id. - ~**opendrive_frame** (String; default: opendrive) Opendrive frame id.
- ~**tf_timeout** (Double; default: 0.2; min: 0.1; max: 2.0) Timeout to find a transform. - ~**tf_timeout** (Double; default: 0.2; min: 0.1; max: 2.0) Timeout to find a transform.
- ~**old_feature_timeout** (Double; default: 0.5; min: 0.1; max: 2.0) Timeout to set a features source as old. - ~**old_feature_timeout** (Double; default: 0.5; min: 0.1; max: 2.0) Timeout to set a features source as old.
- ~**amcl_pose_estimated_sigma** (Double; default: 1.0; min: 0.1; max: 10.0) AMCL pose sigma when using AMCL localization. - ~**amcl_pose_estimated_sigma** (Double; default: 1.0; min: 0.1; max: 10.0) AMCL pose sigma when using AMCL localization.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment