-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Bug report
I recently found that while nav2_planner PlannerServer accepts goals in frames other than its global frame, this information is subsequently ignored in planners such as navfn_planneror smac_planner. This leads to strange errors as goal and start frame are silently treated as if they were in the same frame.
I personally would not expect such a behavior for a service taking a PoseStamped as an argument. Is there an obvious reason for this limitation that I am missing?
Required Info:
- Operating System:
- Ubuntu 20.04
- ROS2 Version:
- Foxy binaries
- Version or commit hash:
- navigation2 main sources (d3fc28a)
- DDS implementation:
- CycloneDDS
Steps to reproduce issue
- ensure a valid tf tree exists e.g.
world->map->base_link - initialize navigation2 with
global_frameset tomap - call
compute_path_to_poseaction with a pose inworldframe andnavfn_planner
Expected behavior
Generally, if a PoseStamped is used in ROS, one silently assumes that the frame_id is handled by the underlying function and transformed to the required frame implicitly as long as the frame is part of a valid tf tree. At least I would expect an error message saying that the frame does not match the expected one as for example it is done in the planner plugin tutorial from nav2 docs.
Actual behavior
Both navfn_planner and smac_planner assume that the goal frame matches the global_frame and blindly ignore the frame_id.