I'm using a [SimpleActionClient](http://wiki.ros.org/actionlib_tutorials/Tutorials/Writing%20a%20Simple%20Action%20Client%20(Python)) to issue MoveBaseGoals to an instance of [/move_base](http://wiki.ros.org/move_base) in a flat outdoor environment. If I have the "xy_tolerance" parameter for [base_local_planner](http://wiki.ros.org/base_local_planner?distro=kinetic) set to ~0.35m or larger then everything works well without any problems. However, If I reduce the tolerance to 0.25m in an effort to improve navigational accuracy, actionlib stops recognising that it has successfully reached the goal - even if it is repeatably within this tolerance in both the X,Y and Z axis (not that there is a vertical tolerance from what I understand). See below for an example bag file
In this case, the state of the goal remains stuck on '1' (labelled as ACTIVE) and will remain that way indefinitely until I manually cancel it.
So my question is: since all I have changed to cause this behaviour is "xy_tolerance", are there any hidden conditions that must be fulfilled for actionlib to move the state from 1 (ACTIVE) to 3 (SUCCEEDED) other than getting the robot within this distance of the goal point? Or am I likely just hitting the limit on how accurate ROS can be in an outdoor environment? The GPS I'm using is accurate to 20mm, as is the global fused data (verified experimentally).
I'm aware that there are a few other questions that address this issue. However, for the most part they seem to experience this problem regardless, whereas I only see it if I lower "xy_tolerance". So I believe the causes may be different.
Any help or advice is appreciated.
## System Information ##
- **OS:** Ubuntu 14.04 (laptop), ROS Indigo Igloo (robot)
- **Robot:** Clearpath Robotics Jackal UGV (real, not simulated)
- **Sensors:** IMU, wheel encoders, high accuracy RTK GPS
- **Localization:** package used is [robot_localization](http://wiki.ros.org/robot_localization). IMU and encoder data is fused in the /odom frame. IMU, encoder and GPS data is fused in the /map frame - this is the frame /move_base uses for navigation. I can provide the specific launch files if requested.
- **Navigation:** I use the [jackal_navigation](http://wiki.ros.org/jackal_navigation) package (version 2.2.2) to set up my navigation stack. I use the [odom_navigation_demo.launch](https://github.com/jackal/jackal/blob/indigo-devel/jackal_navigation/launch/odom_navigation_demo.launch) file with the only changes being that I've changed "xy_tolerance" as described above, and increased the size of my costmap to 120x120m. I've also written my own SimpleActionClient which I use to issue move goals in the /map frame.
- **Frame tree:** [tree](https://drive.google.com/open?id=0B1KZT92BcdVNYlZTT1JUc0VBYW8)
- **Example of error:** [example_data.bag](https://drive.google.com/open?id=0B1KZT92BcdVNSGRiNEpTeUFmelE), I can provide an example of working data if requested.
↧