37 #ifndef MOVEIT_PLANNING_SCENE_PLANNING_SCENE_ 38 #define MOVEIT_PLANNING_SCENE_PLANNING_SCENE_ 50 #include <moveit_msgs/PlanningScene.h> 51 #include <moveit_msgs/RobotTrajectory.h> 52 #include <moveit_msgs/Constraints.h> 53 #include <moveit_msgs/PlanningSceneComponents.h> 54 #include <octomap_msgs/OctomapWithPose.h> 55 #include <boost/noncopyable.hpp> 56 #include <boost/function.hpp> 57 #include <boost/concept_check.hpp> 76 typedef boost::function<bool(const robot_state::RobotState&, const robot_state::RobotState&, bool)>
MotionFeasibilityFn;
82 typedef std::map<std::string, object_recognition_msgs::ObjectType>
ObjectTypeMap;
87 class PlanningScene :
private boost::noncopyable,
public std::enable_shared_from_this<PlanningScene>
128 PlanningScenePtr
diff()
const;
132 PlanningScenePtr
diff(
const moveit_msgs::PlanningScene& msg)
const;
206 return getFrameTransform(static_cast<const robot_state::RobotState&>(state),
id);
259 bool exclusive =
false);
279 const collision_detection::WorldConstPtr&
getWorld()
const 312 const collision_detection::CollisionWorldConstPtr&
316 const collision_detection::CollisionRobotConstPtr&
321 const collision_detection::CollisionRobotConstPtr&
381 bool isStateColliding(
const moveit_msgs::RobotState& state,
const std::string& group =
"",
400 checkCollision(req, res, static_cast<const robot_state::RobotState&>(kstate));
415 checkCollision(req, res, static_cast<const robot_state::RobotState&>(kstate), acm);
505 checkSelfCollision(req, res, static_cast<const robot_state::RobotState&>(kstate), acm);
547 getCollidingLinks(links, static_cast<const robot_state::RobotState&>(kstate), acm);
587 getCollidingPairs(contacts, static_cast<const robot_state::RobotState&>(kstate), acm);
691 void getPlanningSceneMsg(moveit_msgs::PlanningScene& scene,
const moveit_msgs::PlanningSceneComponents& comp)
const;
695 bool getCollisionObjectMsg(moveit_msgs::CollisionObject& collision_obj,
const std::string& ns)
const;
704 const std::string& ns)
const;
738 void processOctomapPtr(
const std::shared_ptr<const octomap::OcTree>& octree,
const Eigen::Affine3d& t);
761 const std_msgs::ColorRGBA&
getObjectColor(
const std::string&
id)
const;
762 void setObjectColor(
const std::string&
id,
const std_msgs::ColorRGBA& color);
768 const object_recognition_msgs::ObjectType&
getObjectType(
const std::string&
id)
const;
769 void setObjectType(
const std::string&
id,
const object_recognition_msgs::ObjectType& type);
780 void pushDiffs(
const PlanningScenePtr& scene);
825 bool isStateConstrained(
const moveit_msgs::RobotState& state,
const moveit_msgs::Constraints& constr,
841 bool isStateValid(
const moveit_msgs::RobotState& state,
const std::string& group =
"",
bool verbose =
false)
const;
848 bool isStateValid(
const moveit_msgs::RobotState& state,
const moveit_msgs::Constraints& constr,
849 const std::string& group =
"",
bool verbose =
false)
const;
854 const std::string& group =
"",
bool verbose =
false)
const;
859 const std::string& group =
"",
bool verbose =
false)
const;
862 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory&
trajectory,
863 const std::string& group =
"",
bool verbose =
false,
864 std::vector<std::size_t>* invalid_index = NULL)
const;
869 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
870 const moveit_msgs::Constraints& path_constraints,
const std::string& group =
"",
871 bool verbose =
false, std::vector<std::size_t>* invalid_index = NULL)
const;
876 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
877 const moveit_msgs::Constraints& path_constraints,
const moveit_msgs::Constraints& goal_constraints,
878 const std::string& group =
"",
bool verbose =
false,
879 std::vector<std::size_t>* invalid_index = NULL)
const;
884 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
885 const moveit_msgs::Constraints& path_constraints,
886 const std::vector<moveit_msgs::Constraints>& goal_constraints,
const std::string& group =
"",
887 bool verbose =
false, std::vector<std::size_t>* invalid_index = NULL)
const;
893 const moveit_msgs::Constraints& path_constraints,
894 const std::vector<moveit_msgs::Constraints>& goal_constraints,
const std::string& group =
"",
895 bool verbose =
false, std::vector<std::size_t>* invalid_index = NULL)
const;
901 const moveit_msgs::Constraints& path_constraints,
const moveit_msgs::Constraints& goal_constraints,
902 const std::string& group =
"",
bool verbose =
false,
903 std::vector<std::size_t>* invalid_index = NULL)
const;
908 const moveit_msgs::Constraints& path_constraints,
const std::string& group =
"",
909 bool verbose =
false, std::vector<std::size_t>* invalid_index = NULL)
const;
913 bool verbose =
false, std::vector<std::size_t>* invalid_index = NULL)
const;
918 std::set<collision_detection::CostSource>& costs,
double overlap_fraction = 0.9)
const;
923 const std::string& group_name, std::set<collision_detection::CostSource>& costs,
924 double overlap_fraction = 0.9)
const;
928 std::set<collision_detection::CostSource>& costs)
const;
933 std::set<collision_detection::CostSource>& costs)
const;
940 static bool isEmpty(
const moveit_msgs::PlanningScene& msg);
944 static bool isEmpty(
const moveit_msgs::PlanningSceneWorld& msg);
947 static bool isEmpty(
const moveit_msgs::RobotState& msg);
950 static PlanningScenePtr
clone(
const PlanningSceneConstPtr& scene);
961 static robot_model::RobotModelPtr
createRobotModel(
const urdf::ModelInterfaceSharedPtr& urdf_model,
969 collision_detection::CollisionDetectorAllocatorPtr
alloc_;
972 collision_detection::CollisionRobotPtr
crobot_;
975 collision_detection::CollisionWorldPtr
cworld_;
982 return crobot_const_ ? crobot_const_ : parent_->getCollisionRobot();
986 return crobot_unpadded_const_ ? crobot_unpadded_const_ : parent_->getCollisionRobotUnpadded();
1020 collision_detection::AllowedCollisionMatrixPtr
acm_;
bool isPathValid(const moveit_msgs::RobotState &start_state, const moveit_msgs::RobotTrajectory &trajectory, const std::string &group="", bool verbose=false, std::vector< std::size_t > *invalid_index=NULL) const
Check if a given path is valid. Each state is checked for validity (collision avoidance and feasibili...
bool isStateColliding(robot_state::RobotState &state, const std::string &group="", bool verbose=false) const
Check if a given state is in collision (with the environment or self collision) If a group name is sp...
const collision_detection::CollisionRobotConstPtr & getCollisionRobot() const
Get the active collision detector for the robot.
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res) const
Check whether the current state is in collision, but use a collision_detection::CollisionRobot instan...
double distanceToCollisionUnpadded(robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state kstate to the nearest collision, ignoring self-collisio...
MOVEIT_CLASS_FORWARD(PlanningScene)
bool knowsFrameTransform(const std::string &id) const
Check if a transform to the frame id is known. This will be known if id is a link name...
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (kstate) is in collision, with respect to a given allowed collision m...
Representation of a collision checking request.
collision_detection::CollisionWorldConstPtr cworld_const_
void checkCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (kstate) is in collision, with respect to a given allowed collision m...
void setStateFeasibilityPredicate(const StateFeasibilityFn &fn)
Specify a predicate that decides whether states are considered valid or invalid for reasons beyond on...
Core components of MoveIt!
bool getAttachedCollisionObjectMsg(moveit_msgs::AttachedCollisionObject &attached_collision_obj, const std::string &ns) const
Construct a message (attached_collision_object) with the attached collision object data from the plan...
double distanceToCollisionUnpadded(const robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state kstate to the nearest collision, ignoring self-collisio...
robot_state::RobotState & getCurrentStateNonConst()
Get the state at which the robot is assumed to be.
double distanceToCollision(robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state kstate to the nearest collision, ignoring self-collisio...
void checkCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &kstate) const
Check whether a specified state (kstate) is in collision. This variant of the function takes a non-co...
robot_state::TransformsPtr ftf_
const collision_detection::CollisionRobotConstPtr & getCollisionRobotUnpadded() const
void setObjectType(const std::string &id, const object_recognition_msgs::ObjectType &type)
void decoupleParent()
Make sure that all the data maintained in this scene is local. All unmodified data is copied from the...
void processOctomapMsg(const octomap_msgs::OctomapWithPose &map)
const std::string & getName() const
Get the name of the planning scene. This is empty by default.
MotionFeasibilityFn motion_feasibility_
bool hasObjectType(const std::string &id) const
const collision_detection::AllowedCollisionMatrix & getAllowedCollisionMatrix() const
Get the allowed collision matrix.
static bool isEmpty(const moveit_msgs::PlanningScene &msg)
Check if a message includes any information about a planning scene, or it is just a default...
bool isStateValid(const moveit_msgs::RobotState &state, const std::string &group="", bool verbose=false) const
Check if a given state is valid. This means checking for collisions and feasibility.
void removeObjectColor(const std::string &id)
double distanceToCollisionUnpadded(const robot_state::RobotState &kstate) const
The distance between the robot model at state kstate to the nearest collision (ignoring self-collisio...
robot_state::RobotStatePtr kstate_
StateFeasibilityFn state_feasibility_
PlanningScene(const robot_model::RobotModelConstPtr &robot_model, collision_detection::WorldPtr world=collision_detection::WorldPtr(new collision_detection::World()))
construct using an existing RobotModel
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res)
Check whether the current state is in self collision.
void getAttachedCollisionObjectMsgs(std::vector< moveit_msgs::AttachedCollisionObject > &attached_collision_objs) const
Construct a vector of messages (attached_collision_objects) with the attached collision object data f...
static const std::string DEFAULT_SCENE_NAME
Maintain a representation of the environment.
const Eigen::Affine3d & getFrameTransform(const std::string &id) const
Get the transform corresponding to the frame id. This will be known if id is a link name...
bool isStateColliding(const std::string &group="", bool verbose=false) const
Check if the current state is in collision (with the environment or self collision). If a group name is specified, collision checking is done for that group only. It is expected the current state transforms are up to date.
bool processAttachedCollisionObjectMsg(const moveit_msgs::AttachedCollisionObject &object)
A class that contains many different constraints, and can check RobotState *versus the full set...
robot_model::RobotModelConstPtr kmodel_
bool processPlanningSceneWorldMsg(const moveit_msgs::PlanningSceneWorld &world)
const StateFeasibilityFn & getStateFeasibilityPredicate() const
Get the predicate that decides whether states are considered valid or invalid for reasons beyond ones...
const MotionFeasibilityFn & getMotionFeasibilityPredicate() const
Get the predicate that decides whether motion segments are considered valid or invalid for reasons be...
Representation of a collision checking result.
bool getCollisionObjectMsg(moveit_msgs::CollisionObject &collision_obj, const std::string &ns) const
Construct a message (collision_object) with the collision object data from the planning_scene for the...
void removeObjectType(const std::string &id)
const collision_detection::CollisionRobotPtr & getCollisionRobotNonConst()
Get the representation of the collision robot This can be used to set padding and link scale on the a...
std::map< std::string, CollisionDetectorPtr >::const_iterator CollisionDetectorConstIterator
void setObjectColor(const std::string &id, const std_msgs::ColorRGBA &color)
collision_detection::CollisionRobotPtr crobot_
static const std::string OCTOMAP_NS
bool processCollisionObjectMsg(const moveit_msgs::CollisionObject &object)
const std_msgs::ColorRGBA & getObjectColor(const std::string &id) const
void copyPadding(const CollisionDetector &src)
collision_detection::AllowedCollisionMatrixPtr acm_
collision_detection::CollisionWorldPtr cworld_
static robot_model::RobotModelPtr createRobotModel(const urdf::ModelInterfaceSharedPtr &urdf_model, const srdf::ModelConstSharedPtr &srdf_model)
void setCollisionObjectUpdateCallback(const collision_detection::World::ObserverCallbackFn &callback)
Set the callback to be triggered when changes are made to the current scene world.
void printKnownObjects(std::ostream &out) const
Outputs debug information about the planning scene contents.
void update(const std::string &key, const XmlRpc::XmlRpcValue &v)
collision_detection::WorldConstPtr world_const_
const collision_detection::WorldPtr & getWorldNonConst()
static PlanningScenePtr clone(const PlanningSceneConstPtr &scene)
Clone a planning scene. Even if the scene scene depends on a parent, the cloned scene will not...
std::unique_ptr< ObjectColorMap > object_colors_
std::map< std::pair< std::string, std::string >, std::vector< Contact > > ContactMap
MOVEIT_STRUCT_FORWARD(CollisionDetector)
PlanningScenePtr diff() const
Return a new child PlanningScene that uses this one as parent.
boost::function< void(const ObjectConstPtr &, Action)> ObserverCallbackFn
std::map< std::string, object_recognition_msgs::ObjectType > ObjectTypeMap
A map from object names (e.g., attached bodies, collision objects) to their types.
std::unique_ptr< ObjectTypeMap > object_types_
void setMotionFeasibilityPredicate(const MotionFeasibilityFn &fn)
Specify a predicate that decides whether motion segments are considered valid or invalid for reasons ...
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, const robot_state::RobotState &kstate) const
Check whether a specified state (kstate) is in collision, but use a collision_detection::CollisionRob...
robot_state::Transforms & getTransformsNonConst()
Get the set of fixed transforms from known frames to the planning frame.
void getKnownObjectColors(ObjectColorMap &kc) const
void getCollidingLinks(std::vector< std::string > &links, robot_state::RobotState &kstate) const
Get the names of the links that are involved in collisions for the state kstate. Update the link tran...
robot_state::AttachedBodyCallback current_state_attached_body_callback_
collision_detection::CollisionDetectorAllocatorPtr alloc_
boost::function< void(AttachedBody *body, bool attached)> AttachedBodyCallback
This class maintains the representation of the environment as seen by a planning instance. The environment geometry, the robot geometry and state are maintained.
void findParent(const PlanningScene &scene)
const robot_model::RobotModelConstPtr & getRobotModel() const
Get the kinematic model for which the planning scene is maintained.
void getCollidingLinks(std::vector< std::string > &links)
Get the names of the links that are involved in collisions for the current state. ...
Definition of a structure for the allowed collision matrix. All elements in the collision world are r...
const robot_state::Transforms & getTransforms() const
Get the set of fixed transforms from known frames to the planning frame.
robot_trajectory::RobotTrajectory trajectory(rmodel,"right_arm")
void propogateRobotPadding()
Copy scale and padding from active CollisionRobot to other CollisionRobots. This should be called aft...
std::map< std::string, std_msgs::ColorRGBA > ObjectColorMap
A map from object names (e.g., attached bodies, collision objects) to their colors.
void checkCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res)
Check whether the current state is in collision, and if needed, updates the collision transforms of t...
collision_detection::CollisionRobotPtr crobot_unpadded_
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (kstate) is in self collision, with respect to a given allowed collis...
const robot_state::RobotState & getCurrentState() const
Get the state at which the robot is assumed to be.
void setAttachedBodyUpdateCallback(const robot_state::AttachedBodyCallback &callback)
Set the callback to be triggered when changes are made to the current scene state.
Maintain a sequence of waypoints and the time durations between these waypoints.
void getCollidingLinks(std::vector< std::string > &links) const
Get the names of the links that are involved in collisions for the current state. ...
const Eigen::Affine3d & getFrameTransform(robot_state::RobotState &state, const std::string &id) const
Get the transform corresponding to the frame id. This will be known if id is a link name...
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts)
Get the names of the links that are involved in collisions for the current state. Update the link tra...
void setActiveCollisionDetector(const collision_detection::CollisionDetectorAllocatorPtr &allocator, bool exclusive=false)
Set the type of collision detector to use. Calls addCollisionDetector() to add it if it has not alrea...
bool isStateFeasible(const moveit_msgs::RobotState &state, bool verbose=false) const
Check if a given state is feasible, in accordance to the feasibility predicate specified by setStateF...
double distanceToCollision(robot_state::RobotState &kstate) const
The distance between the robot model at state kstate to the nearest collision (ignoring self-collisio...
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res) const
Check whether the current state is in self collision.
bool setPlanningSceneMsg(const moveit_msgs::PlanningScene &scene)
Set this instance of a planning scene to be the same as the one serialized in the scene message...
void getObjectColorMsgs(std::vector< moveit_msgs::ObjectColor > &object_colors) const
Construct a vector of messages (object_colors) with the colors of the objects from the planning_scene...
const std::string & getPlanningFrame() const
Get the frame in which planning is performed.
const collision_detection::CollisionRobotConstPtr & getCollisionRobotUnpadded() const
Get the active collision detector for the robot.
void allocateCollisionDetectors()
void getCostSources(const robot_trajectory::RobotTrajectory &trajectory, std::size_t max_costs, std::set< collision_detection::CostSource > &costs, double overlap_fraction=0.9) const
Get the top max_costs cost sources for a specified trajectory. The resulting costs are stored in cost...
This namespace includes the central class for representing planning contexts.
void getKnownObjectTypes(ObjectTypeMap &kc) const
collision_detection::AllowedCollisionMatrix & getAllowedCollisionMatrixNonConst()
Get the allowed collision matrix.
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, const robot_state::RobotState &kstate) const
Check whether a specified state (kstate) is in self collision.
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts) const
Get the names of the links that are involved in collisions for the current state. ...
void removeAllCollisionObjects()
Clear all collision objects in planning scene.
CollisionDetectorPtr active_collision_
collision_detection::World::ObserverCallbackFn current_world_object_update_callback_
collision_detection::WorldDiffPtr world_diff_
void addCollisionDetector(const collision_detection::CollisionDetectorAllocatorPtr &allocator)
Add a new collision detector type.
std::map< std::string, CollisionDetectorPtr > collision_
void setName(const std::string &name)
Set the name of the planning scene.
void pushDiffs(const PlanningScenePtr &scene)
If there is a parent specified for this scene, then the diffs with respect to that parent are applied...
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts, const robot_state::RobotState &kstate) const
Get the names of the links that are involved in collisions for the state kstate.
const std::string & getActiveCollisionDetectorName() const
bool hasObjectColor(const std::string &id) const
const object_recognition_msgs::ObjectType & getObjectType(const std::string &id) const
robot_state::RobotStatePtr getCurrentStateUpdated(const moveit_msgs::RobotState &update) const
Get a copy of the current state with components overwritten by the state message update.
double distanceToCollision(const robot_state::RobotState &kstate) const
The distance between the robot model at state kstate to the nearest collision (ignoring self-collisio...
bool isStateConstrained(const moveit_msgs::RobotState &state, const moveit_msgs::Constraints &constr, bool verbose=false) const
Check if a given state satisfies a set of constraints.
bool usePlanningSceneMsg(const moveit_msgs::PlanningScene &scene)
Call setPlanningSceneMsg() or setPlanningSceneDiffMsg() depending on how the is_diff member of the me...
void clearDiffs()
Clear the diffs accumulated for this planning scene, with respect to the parent. This function is a n...
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts, robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
Get the names of the links that are involved in collisions for the state kstate given the allowed col...
collision_detection::World::ObserverHandle current_world_object_update_observer_handle_
void setCurrentState(const moveit_msgs::RobotState &state)
Set the current robot state to be state. If not all joint values are specified, the previously mainta...
void processOctomapPtr(const std::shared_ptr< const octomap::OcTree > &octree, const Eigen::Affine3d &t)
std::map< std::string, CollisionDetectorPtr >::iterator CollisionDetectorIterator
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &kstate) const
Check whether a specified state (kstate) is in self collision.
collision_detection::WorldPtr world_
void updateCollisionBodyTransforms()
Update the transforms for the collision bodies. This call is needed before calling collision checking...
void getCollisionObjectMsgs(std::vector< moveit_msgs::CollisionObject > &collision_objs) const
Construct a vector of messages (collision_objects) with the collision object data for all objects in ...
double distanceToCollisionUnpadded(robot_state::RobotState &kstate) const
The distance between the robot model at state kstate to the nearest collision (ignoring self-collisio...
Representation of a robot's state. This includes position, velocity, acceleration and effort...
void updateLinkTransforms()
Update the reference frame transforms for links. This call is needed before using the transforms of l...
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &kstate) const
Check whether a specified state (kstate) is in collision, but use a collision_detection::CollisionRob...
void getCollisionDetectorNames(std::vector< std::string > &names) const
get the types of collision detector that have already been added. These are the types which can be pa...
void checkCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res) const
Check whether the current state is in collision. The current state is expected to be updated...
void getPlanningSceneDiffMsg(moveit_msgs::PlanningScene &scene) const
Fill the message scene with the differences between this instance of PlanningScene with respect to th...
const collision_detection::CollisionRobotConstPtr & getCollisionRobot() const
const PlanningSceneConstPtr & getParent() const
Get the parent scene (whith respect to which the diffs are maintained). This may be empty...
collision_detection::CollisionRobotConstPtr crobot_const_
void loadGeometryFromStream(std::istream &in)
Load the geometry of the planning scene from a stream.
double distanceToCollision(const robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state kstate to the nearest collision, ignoring self-collisio...
bool getOctomapMsg(octomap_msgs::OctomapWithPose &octomap) const
Construct a message (octomap) with the octomap data from the planning_scene.
void getCollidingLinks(std::vector< std::string > &links, robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
Get the names of the links that are involved in collisions for the state kstate given the allowed col...
PlanningSceneConstPtr parent_
void getPlanningSceneMsg(moveit_msgs::PlanningScene &scene) const
Construct a message (scene) with all the necessary data so that the scene can be later reconstructed ...
boost::function< bool(const robot_state::RobotState &, const robot_state::RobotState &, bool)> MotionFeasibilityFn
This is the function signature for additional feasibility checks to be imposed on motions segments be...
void getCollidingLinks(std::vector< std::string > &links, const robot_state::RobotState &kstate) const
Get the names of the links that are involved in collisions for the state kstate.
boost::function< bool(const robot_state::RobotState &, bool)> StateFeasibilityFn
This is the function signature for additional feasibility checks to be imposed on states (in addition...
void saveGeometryToStream(std::ostream &out) const
Save the geometry of the planning scene to a stream, as plain text.
bool isStateColliding(const std::string &group="", bool verbose=false)
Check if the current state is in collision (with the environment or self collision). If a group name is specified, collision checking is done for that group only. Since the function is non-const, the current state transforms are updated before the collision check.
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts, robot_state::RobotState &kstate) const
Get the names of the links that are involved in collisions for the state kstate. Update the link tran...
const collision_detection::CollisionWorldConstPtr & getCollisionWorld() const
Get the active collision detector for the world.
const collision_detection::WorldConstPtr & getWorld() const
Get the representation of the world.
CollisionDetectorConstPtr parent_
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, const robot_state::RobotState &kstate, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (kstate) is in self collision, with respect to a given allowed collis...
bool setPlanningSceneDiffMsg(const moveit_msgs::PlanningScene &scene)
Apply changes to this planning scene as diffs, even if the message itself is not marked as being a di...
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res)
Check whether the current state is in collision, but use a collision_detection::CollisionRobot instan...
collision_detection::CollisionRobotConstPtr crobot_unpadded_const_