MoveIt Pro API
Core Behaviors for MoveIt Pro
Loading...
Searching...
No Matches
moveit_pro::behaviors::SetCollisionRule Class Referencefinal

Allows or forbids collisions between two entities in the planning scene's Allowed Collision Matrix, without an MTC task. More...

#include <set_collision_rule.hpp>

Inheritance diagram for moveit_pro::behaviors::SetCollisionRule:
Collaboration diagram for moveit_pro::behaviors::SetCollisionRule:

Public Member Functions

 SetCollisionRule (const std::string &name, const BT::NodeConfiguration &config, const std::shared_ptr< BehaviorContext > &shared_resources)
 
 SetCollisionRule (const std::string &name, const BT::NodeConfiguration &config, const std::shared_ptr< BehaviorContext > &shared_resources, std::unique_ptr< PlanningSceneBridge > bridge)
 
- Public Member Functions inherited from moveit_pro::behaviors::AsyncBehaviorBase
 AsyncBehaviorBase (const std::string &name, const BT::NodeConfiguration &config, const std::shared_ptr< BehaviorContext > &shared_resources)
 
 ~AsyncBehaviorBase () override=default
 
BT::NodeStatus onStart () override
 Required implementation of BT::StatefulActionNode::onStart().
 
BT::NodeStatus onRunning () override
 Required implementation of BT::StatefulActionNode::onRunning().
 
void onHalted () override
 Required implementation of BT::StatefulActionNode::onHalted().
 
void resetStatus ()
 Resets the internal status of this node.
 
virtual tl::expected< void, std::string > doHalt ()
 Optionally implement additional work needed to cleanly interrupt the async process.
 
void notifyCanHalt ()
 Called when runAsync() finishes to notify onHalted() that the async process has finished.
 
- Public Member Functions inherited from moveit_pro::behaviors::SharedResourcesNode< BT::StatefulActionNode >
 SharedResourcesNode (const std::string &name, const BT::NodeConfiguration &config, const std::shared_ptr< BehaviorContext > &behavior_context)
 Constructor for SharedResourcesNode. Called by BT::BehaviorTreeFactory when creating a new behavior tree containing this node.
 
const std::shared_ptr< BehaviorContext > & getBehaviorContext () const
 

Static Public Member Functions

static BT::PortsList providedPorts ()
 
static BT::KeyValueVector metadata ()
 

Static Public Attributes

static constexpr auto kPortIDNameA = "name_a"
 
static constexpr auto kPortIDNameB = "name_b"
 
static constexpr auto kPortIDAllowCollision = "allow_collision"
 
static constexpr auto kPortIDPlanningScene = "planning_scene"
 

Detailed Description

Allows or forbids collisions between two entities in the planning scene's Allowed Collision Matrix, without an MTC task.

Each of name_a and name_b is resolved against planning groups, collision object ids, and robot links; a planning group expands to its links with collision geometry. The Behavior fails with a descriptive error if a name is ambiguous (matches more than one category) or matches nothing, because a silent no-op is not acceptable for a collision-rule change. Collision rules are symmetric, so the ports are named name_a / name_b rather than directional.

The Behavior has two operating modes selected by the planning_scene port:

  • Live scene mode (port unwired): the Behavior fetches the current scene from /get_planning_scene, updates the ACM, and commits it via /apply_planning_scene. Service names are hard-coded; they are not exposed as ports. This is the default behavior.
  • Supplied scene mode (port wired): the Behavior reads the moveit_msgs::PlanningScene supplied on the port, updates its ACM, and writes the result back to the same port. No service calls are made.
Data Port Name Port Type Object Type
name_a input std::string
name_b input std::string
allow_collision input bool
planning_scene bidirectional moveit_msgs::msg::PlanningScene

Constructor & Destructor Documentation

◆ SetCollisionRule() [1/2]

moveit_pro::behaviors::SetCollisionRule::SetCollisionRule ( const std::string &  name,
const BT::NodeConfiguration &  config,
const std::shared_ptr< BehaviorContext > &  shared_resources 
)

◆ SetCollisionRule() [2/2]

moveit_pro::behaviors::SetCollisionRule::SetCollisionRule ( const std::string &  name,
const BT::NodeConfiguration &  config,
const std::shared_ptr< BehaviorContext > &  shared_resources,
std::unique_ptr< PlanningSceneBridge bridge 
)

Member Function Documentation

◆ metadata()

BT::KeyValueVector moveit_pro::behaviors::SetCollisionRule::metadata ( )
static

◆ providedPorts()

BT::PortsList moveit_pro::behaviors::SetCollisionRule::providedPorts ( )
static

Member Data Documentation

◆ kPortIDAllowCollision

constexpr auto moveit_pro::behaviors::SetCollisionRule::kPortIDAllowCollision = "allow_collision"
staticconstexpr

◆ kPortIDNameA

constexpr auto moveit_pro::behaviors::SetCollisionRule::kPortIDNameA = "name_a"
staticconstexpr

◆ kPortIDNameB

constexpr auto moveit_pro::behaviors::SetCollisionRule::kPortIDNameB = "name_b"
staticconstexpr

◆ kPortIDPlanningScene

constexpr auto moveit_pro::behaviors::SetCollisionRule::kPortIDPlanningScene = "planning_scene"
staticconstexpr

The documentation for this class was generated from the following files: