dynamic_robot_localization
dynamic_robot_localization copied to clipboard
localization result unstable
Hello :)
I am sorry, I only noticed this issue now.
Unstable localization usually happens due to:
- Odometry with low accuracy, drift or sudden jumps
- Suggestion: recalibrate odometry or try without odometry, with a static tf between odom and base_footprint
- Map with filled walls which causes the matching algorithm to match inside the walls
- Suggestion: edit the map (in gimp or using opencv) and ensure that the walls are composed of a single pixel layer, one for each side of the wall | alternatively, increase the voxel grid size used in drl for the map and eventually, the sensor data in the filters yaml (after changing the yaml, reload drl and check the parameter server to ensure that the values changed and check the drl reference point cloud in rviz). This will likely reduce the localization accuracy, but it will increase its stability
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/launch/dynamic_robot_localization_system.launch#L26
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/yaml/configs/filters/filters_large_map_2d.yaml#L5
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/yaml/configs/filters/filters_large_map_2d.yaml#L16
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/yaml/schema/drl_configs.yaml#L86
- Suggestion: edit the map (in gimp or using opencv) and ensure that the walls are composed of a single pixel layer, one for each side of the wall | alternatively, increase the voxel grid size used in drl for the map and eventually, the sensor data in the filters yaml (after changing the yaml, reload drl and check the parameter server to ensure that the values changed and check the drl reference point cloud in rviz). This will likely reduce the localization accuracy, but it will increase its stability
For filtering the drl pose, the use_ukf_filtering can be enabled, but the result is highly dependent on the covariance estimation and configuration of the kalman filter.
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/launch/dynamic_robot_localization_system.launch#L20
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/yaml/configs/covariance_estimation/covariance_estimation.yaml
- https://github.com/carlosmccosta/dynamic_robot_localization/blob/noetic-devel/launch/ukf.launch
- https://github.com/cra-ros-pkg/robot_localization
Have a nice day,