FindValidPose
This is a ROS service definition.
Source
# Find the closest free pose to the given one, within the given linear and angular tolerances.
#
# A pose is considered free if the robot footprint there is entirely inside the map and neither in
# collision nor unknown space.
#
# If no free pose can be found, but we find one partially in unknown space, or partially outside the map,
# we will return it and set state to the corresponding option (unknown space takes precedence).
# Otherwise state will be set to LETHAL.
#
# You can also instruct this service to use current robot's pose, instead of providing one.
uint8 LOCAL_COSTMAP = 1
uint8 GLOBAL_COSTMAP = 2
geometry_msgs/PoseStamped pose # the starting pose from which we start the search
float32 safety_dist # minimum distance allowed to the closest obstacle
float32 dist_tolerance # maximum distance we can deviate from the given pose during the search
float32 angle_tolerance # maximum angle we can rotate the given pose during the search
uint8 costmap # costmap in which to check the pose
bool current_pose # check current robot pose instead (ignores pose field)
bool use_padded_fp # include footprint padding when checking cost; note that safety distance
# will be measured from the padded footprint
---
uint8 FREE = 0 # found pose is completely in traversable space
uint8 INSCRIBED = 1 # found pose is partially in inscribed space
uint8 LETHAL = 2 # found pose is partially in collision
uint8 UNKNOWN = 3 # found pose is partially in unknown space
uint8 OUTSIDE = 4 # found pose is partially outside the map
uint8 state # found pose's state: FREE, INSCRIBED, LETHAL, UNKNOWN or OUTSIDE
uint32 cost # found pose's cost (sum of costs over all cells covered by the footprint)
geometry_msgs/PoseStamped pose # the pose found (filled only if state is not set to LETHAL)