37 #ifndef MOVEIT_PLANNING_SCENE_PLANNING_SCENE_ 38 #define MOVEIT_PLANNING_SCENE_PLANNING_SCENE_ 49 #include <moveit_msgs/PlanningScene.h> 50 #include <moveit_msgs/RobotTrajectory.h> 51 #include <moveit_msgs/Constraints.h> 52 #include <moveit_msgs/PlanningSceneComponents.h> 53 #include <octomap_msgs/OctomapWithPose.h> 54 #include <boost/noncopyable.hpp> 55 #include <boost/function.hpp> 56 #include <boost/concept_check.hpp> 75 typedef boost::function<bool(const robot_state::RobotState&, const robot_state::RobotState&, bool)>
MotionFeasibilityFn;
81 typedef std::map<std::string, object_recognition_msgs::ObjectType>
ObjectTypeMap;
86 class PlanningScene :
private boost::noncopyable,
public std::enable_shared_from_this<PlanningScene>
127 PlanningScenePtr
diff()
const;
131 PlanningScenePtr
diff(
const moveit_msgs::PlanningScene& msg)
const;
179 return parent_->getTransforms();
210 return getFrameTransform(static_cast<const robot_state::RobotState&>(state),
id);
263 bool exclusive =
false);
283 const collision_detection::WorldConstPtr&
getWorld()
const 316 const collision_detection::CollisionWorldConstPtr&
getCollisionWorld(
const std::string& collision_detector_name)
const;
319 const collision_detection::CollisionRobotConstPtr&
getCollisionRobot(
const std::string& collision_detector_name)
const;
323 const collision_detection::CollisionRobotConstPtr&
382 bool isStateColliding(
const moveit_msgs::RobotState& state,
const std::string& group =
"",
bool verbose =
false)
const;
400 checkCollision(req, res, static_cast<const robot_state::RobotState&>(robot_state));
417 checkCollision(req, res, static_cast<const robot_state::RobotState&>(robot_state), acm);
510 checkSelfCollision(req, res, static_cast<const robot_state::RobotState&>(robot_state), acm);
552 getCollidingLinks(links, static_cast<const robot_state::RobotState&>(robot_state), acm);
593 getCollidingPairs(contacts, static_cast<const robot_state::RobotState&>(robot_state), acm);
703 void getPlanningSceneMsg(moveit_msgs::PlanningScene& scene,
const moveit_msgs::PlanningSceneComponents& comp)
const;
707 bool getCollisionObjectMsg(moveit_msgs::CollisionObject& collision_obj,
const std::string& ns)
const;
716 const std::string& ns)
const;
750 void processOctomapPtr(
const std::shared_ptr<const octomap::OcTree>& octree,
const Eigen::Isometry3d&
t);
773 const std_msgs::ColorRGBA&
getObjectColor(
const std::string&
id)
const;
774 void setObjectColor(
const std::string&
id,
const std_msgs::ColorRGBA& color);
780 const object_recognition_msgs::ObjectType&
getObjectType(
const std::string&
id)
const;
781 void setObjectType(
const std::string&
id,
const object_recognition_msgs::ObjectType& type);
792 void pushDiffs(
const PlanningScenePtr& scene);
837 bool isStateConstrained(
const moveit_msgs::RobotState& state,
const moveit_msgs::Constraints& constr,
853 bool isStateValid(
const moveit_msgs::RobotState& state,
const std::string& group =
"",
bool verbose =
false)
const;
860 bool isStateValid(
const moveit_msgs::RobotState& state,
const moveit_msgs::Constraints& constr,
861 const std::string& group =
"",
bool verbose =
false)
const;
866 const std::string& group =
"",
bool verbose =
false)
const;
871 const std::string& group =
"",
bool verbose =
false)
const;
874 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
875 const std::string& group =
"",
bool verbose =
false,
876 std::vector<std::size_t>* invalid_index =
nullptr)
const;
881 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
882 const moveit_msgs::Constraints& path_constraints,
const std::string& group =
"",
883 bool verbose =
false, std::vector<std::size_t>* invalid_index =
nullptr)
const;
888 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
889 const moveit_msgs::Constraints& path_constraints,
const moveit_msgs::Constraints& goal_constraints,
890 const std::string& group =
"",
bool verbose =
false,
891 std::vector<std::size_t>* invalid_index =
nullptr)
const;
896 bool isPathValid(
const moveit_msgs::RobotState& start_state,
const moveit_msgs::RobotTrajectory& trajectory,
897 const moveit_msgs::Constraints& path_constraints,
898 const std::vector<moveit_msgs::Constraints>& goal_constraints,
const std::string& group =
"",
899 bool verbose =
false, std::vector<std::size_t>* invalid_index =
nullptr)
const;
905 const moveit_msgs::Constraints& path_constraints,
906 const std::vector<moveit_msgs::Constraints>& goal_constraints,
const std::string& group =
"",
907 bool verbose =
false, std::vector<std::size_t>* invalid_index =
nullptr)
const;
913 const moveit_msgs::Constraints& path_constraints,
const moveit_msgs::Constraints& goal_constraints,
914 const std::string& group =
"",
bool verbose =
false,
915 std::vector<std::size_t>* invalid_index =
nullptr)
const;
920 const moveit_msgs::Constraints& path_constraints,
const std::string& group =
"",
921 bool verbose =
false, std::vector<std::size_t>* invalid_index =
nullptr)
const;
925 bool verbose =
false, std::vector<std::size_t>* invalid_index =
nullptr)
const;
930 std::set<collision_detection::CostSource>& costs,
double overlap_fraction = 0.9)
const;
935 const std::string& group_name, std::set<collision_detection::CostSource>& costs,
936 double overlap_fraction = 0.9)
const;
940 std::set<collision_detection::CostSource>& costs)
const;
945 std::set<collision_detection::CostSource>& costs)
const;
952 static bool isEmpty(
const moveit_msgs::PlanningScene& msg);
956 static bool isEmpty(
const moveit_msgs::PlanningSceneWorld& msg);
959 static bool isEmpty(
const moveit_msgs::RobotState& msg);
962 static PlanningScenePtr
clone(
const PlanningSceneConstPtr& scene);
973 static robot_model::RobotModelPtr
createRobotModel(
const urdf::ModelInterfaceSharedPtr& urdf_model,
982 static void poseMsgToEigen(
const geometry_msgs::Pose& msg, Eigen::Isometry3d& out);
989 collision_detection::CollisionDetectorAllocatorPtr
alloc_;
992 collision_detection::CollisionRobotPtr
crobot_;
995 collision_detection::CollisionWorldPtr
cworld_;
1002 return crobot_const_ ?
crobot_const_ : parent_->getCollisionRobot();
1043 collision_detection::AllowedCollisionMatrixPtr
acm_;
const collision_detection::AllowedCollisionMatrix & getAllowedCollisionMatrix() const
Get the allowed collision matrix.
MOVEIT_CLASS_FORWARD(PlanningScene)
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.
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &robot_state) const
Check whether a specified state (robot_state) is in collision, but use a collision_detection::Collisi...
bool hasObjectColor(const std::string &id) const
Representation of a collision checking request.
collision_detection::CollisionWorldConstPtr cworld_const_
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!
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (robot_state) is in collision, with respect to a given allowed collis...
robot_state::RobotState & getCurrentStateNonConst()
Get the state at which the robot is assumed to be.
bool loadGeometryFromStream(std::istream &in)
Load the geometry of the planning scene from a stream.
const PlanningSceneConstPtr & getParent() const
Get the parent scene (whith respect to which the diffs are maintained). This may be empty...
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)
MotionFeasibilityFn motion_feasibility_
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts, robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
Get the names of the links that are involved in collisions for the state robot_state given the allowe...
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...
double distanceToCollisionUnpadded(const robot_state::RobotState &robot_state) const
The distance between the robot model at state robot_state to the nearest collision (ignoring self-col...
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &robot_state) const
Check whether a specified state (robot_state) is in self collision.
void removeObjectColor(const std::string &id)
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...
StateFeasibilityFn state_feasibility_
double distanceToCollision(robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state robot_state to the nearest collision, ignoring self-collisions and elements that are allowed to collide.
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 checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, const robot_state::RobotState &robot_state) const
Check whether a specified state (robot_state) is in self collision.
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res)
Check whether the current state is in self collision.
const robot_state::Transforms & getTransforms() const
Get the set of fixed transforms from known frames to the planning frame.
static const std::string DEFAULT_SCENE_NAME
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 getPlanningSceneDiffMsg(moveit_msgs::PlanningScene &scene) const
Fill the message scene with the differences between this instance of PlanningScene with respect to th...
bool hasObjectType(const std::string &id) const
bool processCollisionObjectAdd(const moveit_msgs::CollisionObject &object)
const collision_detection::CollisionRobotConstPtr & getCollisionRobot() const
void getKnownObjectColors(ObjectColorMap &kc) const
Maintain a representation of the environment.
void saveGeometryToStream(std::ostream &out) const
Save the geometry of the planning scene to a stream, as plain text.
const StateFeasibilityFn & getStateFeasibilityPredicate() const
Get the predicate that decides whether states are considered valid or invalid for reasons beyond ones...
bool processAttachedCollisionObjectMsg(const moveit_msgs::AttachedCollisionObject &object)
A class that contains many different constraints, and can check RobotState *versus the full set...
bool processPlanningSceneWorldMsg(const moveit_msgs::PlanningSceneWorld &world)
void getCollidingLinks(std::vector< std::string > &links, const robot_state::RobotState &robot_state) const
Get the names of the links that are involved in collisions for the state robot_state.
void printKnownObjects(std::ostream &out=std::cout) const
Outputs debug information about the planning scene contents.
Representation of a collision checking result.
void getCollidingLinks(std::vector< std::string > &links, robot_state::RobotState &robot_state) const
Get the names of the links that are involved in collisions for the state robot_state. Update the link transforms for robot_state if needed.
void getCollidingLinks(std::vector< std::string > &links, robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
Get the names of the links that are involved in collisions for the state robot_state given the allowe...
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
const object_recognition_msgs::ObjectType & getObjectType(const std::string &id) const
void setObjectColor(const std::string &id, const std_msgs::ColorRGBA &color)
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...
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...
collision_detection::CollisionRobotPtr crobot_
static const std::string OCTOMAP_NS
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...
bool processCollisionObjectMsg(const moveit_msgs::CollisionObject &object)
geometry_msgs::TransformStamped t
void copyPadding(const CollisionDetector &src)
void getKnownObjectTypes(ObjectTypeMap &kc) const
collision_detection::AllowedCollisionMatrixPtr acm_
collision_detection::CollisionWorldPtr cworld_
static robot_model::RobotModelPtr createRobotModel(const urdf::ModelInterfaceSharedPtr &urdf_model, const srdf::ModelConstSharedPtr &srdf_model)
PlanningScene(const robot_model::RobotModelConstPtr &robot_model, const collision_detection::WorldPtr &world=collision_detection::WorldPtr(new collision_detection::World()))
construct using an existing RobotModel
const robot_model::RobotModelConstPtr & getRobotModel() const
Get the kinematic model for which the planning scene is maintained.
const std::string & getName() const
Get the name of the planning scene. This is empty by default.
void setCollisionObjectUpdateCallback(const collision_detection::World::ObserverCallbackFn &callback)
Set the callback to be triggered when changes are made to the current scene world.
robot_model::RobotModelConstPtr robot_model_
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)
void processOctomapPtr(const std::shared_ptr< const octomap::OcTree > &octree, const Eigen::Isometry3d &t)
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 ...
robot_state::Transforms & getTransformsNonConst()
Get the set of fixed transforms from known frames to the planning frame.
robot_state::RobotStatePtr robot_state_
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 ...
std::shared_ptr< const Model > ModelConstSharedPtr
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)
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...
double distanceToCollisionUnpadded(const robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state robot_state to the nearest collision, ignoring self-collisions and elements that always allowed to collide, if the robot has no padding.
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 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.
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.
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 getPlanningSceneMsg(moveit_msgs::PlanningScene &scene) const
Construct a message (scene) with all the necessary data so that the scene can be later reconstructed ...
void checkCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &robot_state) const
Check whether a specified state (robot_state) is in collision. This variant of the function takes a n...
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...
double distanceToCollision(const robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state robot_state to the nearest collision, ignoring self-collisions and elements that are allowed to collide.
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=nullptr) const
Check if a given path is valid. Each state is checked for validity (collision avoidance and feasibili...
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...
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.
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 allocateCollisionDetectors()
void checkCollisionUnpadded(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, const robot_state::RobotState &robot_state) const
Check whether a specified state (robot_state) is in collision, but use a collision_detection::Collisi...
This namespace includes the central class for representing planning contexts.
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (robot_state) is in self collision, with respect to a given allowed c...
bool getOctomapMsg(octomap_msgs::OctomapWithPose &octomap) const
Construct a message (octomap) with the octomap data from the planning_scene.
collision_detection::AllowedCollisionMatrix & getAllowedCollisionMatrixNonConst()
Get the allowed collision matrix.
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts) const
Get the names of the links that are involved in collisions for the current state. ...
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, const robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (robot_state) is in self collision, with respect to a given allowed c...
void removeAllCollisionObjects()
Clear all collision objects in planning scene.
CollisionDetectorPtr active_collision_
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.
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_
PlanningScenePtr diff() const
Return a new child PlanningScene that uses this one as parent.
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...
const std_msgs::ColorRGBA & getObjectColor(const std::string &id) const
bool processCollisionObjectRemove(const moveit_msgs::CollisionObject &object)
const std::string & getActiveCollisionDetectorName() const
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.
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...
robot_state::TransformsPtr scene_transforms_
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...
double distanceToCollision(const robot_state::RobotState &robot_state) const
The distance between the robot model at state robot_state to the nearest collision (ignoring self-col...
std::map< std::string, CollisionDetectorPtr >::iterator CollisionDetectorIterator
collision_detection::WorldPtr world_
static void poseMsgToEigen(const geometry_msgs::Pose &msg, Eigen::Isometry3d &out)
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts, robot_state::RobotState &robot_state) const
Get the names of the links that are involved in collisions for the state robot_state. Update the link transforms for robot_state if needed.
void updateCollisionBodyTransforms()
Update the transforms for the collision bodies. This call is needed before calling collision checking...
double distanceToCollisionUnpadded(robot_state::RobotState &robot_state) const
The distance between the robot model at state robot_state to the nearest collision (ignoring self-col...
void getCollidingPairs(collision_detection::CollisionResult::ContactMap &contacts, const robot_state::RobotState &robot_state) const
Get the names of the links that are involved in collisions for the state robot_state.
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...
bool processCollisionObjectMove(const moveit_msgs::CollisionObject &object)
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...
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...
const MotionFeasibilityFn & getMotionFeasibilityPredicate() const
Get the predicate that decides whether motion segments are considered valid or invalid for reasons be...
const collision_detection::CollisionRobotConstPtr & getCollisionRobotUnpadded() const
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 getCollidingLinks(std::vector< std::string > &links) const
Get the names of the links that are involved in collisions for the current state. ...
void checkCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res, robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
Check whether a specified state (robot_state) is in collision, with respect to a given allowed collis...
collision_detection::CollisionRobotConstPtr crobot_const_
const collision_detection::CollisionRobotConstPtr & getCollisionRobot() const
Get the active collision detector for the robot.
double distanceToCollisionUnpadded(robot_state::RobotState &robot_state, const collision_detection::AllowedCollisionMatrix &acm) const
The distance between the robot model at state robot_state to the nearest collision, ignoring self-collisions and elements that are allowed to collide, if the robot has no padding.
const robot_state::RobotState & getCurrentState() const
Get the state at which the robot is assumed to be.
const Eigen::Isometry3d & 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...
const collision_detection::WorldConstPtr & getWorld() const
Get the representation of the world.
void checkSelfCollision(const collision_detection::CollisionRequest &req, collision_detection::CollisionResult &res) const
Check whether the current state is in self collision.
PlanningSceneConstPtr parent_
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...
const collision_detection::CollisionWorldConstPtr & getCollisionWorld() const
Get the active collision detector for the world.
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...
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.
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...
double distanceToCollision(robot_state::RobotState &robot_state) const
The distance between the robot model at state robot_state to the nearest collision (ignoring self-col...
CollisionDetectorConstPtr parent_
const Eigen::Isometry3d & 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 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_