44 static const rclcpp::Logger
LOGGER =
45 rclcpp::get_logger(
"moveit.pilz_industrial_motion_planner.joint_limits_aggregator");
50 const rclcpp::Node::SharedPtr& node,
const std::string& param_namespace,
51 const std::vector<const moveit::core::JointModel*>& joint_models)
55 RCLCPP_INFO_STREAM(LOGGER,
"Reading limits from namespace " << param_namespace);
58 for (
auto joint_model : joint_models)
106 container.
addLimit(joint_model->getName(), joint_limit);
119 RCLCPP_WARN_STREAM(LOGGER,
"no bounds set for joint " << joint_model->
getName());
129 RCLCPP_WARN_STREAM(LOGGER,
"Multi-DOF-Joint '" << joint_model->
getName() <<
"' not supported.");
137 RCLCPP_DEBUG_STREAM(LOGGER,
"Limit(" << joint_model->
getName() <<
" min:" << joint_limit.
min_position
148 RCLCPP_WARN_STREAM(LOGGER,
"no bounds set for joint " << joint_model->
getName());
157 RCLCPP_WARN_STREAM(LOGGER,
"Multi-DOF-Joint '" << joint_model->
getName() <<
"' not supported.");
172 " violates min limit from URDF");
179 " violates max limit from URDF");
190 " violates velocity limit from URDF");
A joint from the robot. Models the transform that this joint applies in the kinematic chain....
bool satisfiesVelocityBounds(const double *values, double margin=0.0) const
Check if the set of velocities for the variables of this joint are within bounds.
const std::string & getName() const
Get the name of the joint.
bool satisfiesPositionBounds(const double *values, double margin=0.0) const
Check if the set of values for the variables of this joint are within bounds.
const VariableBounds & getVariableBounds(const std::string &variable) const
Get the bounds for a variable. Throw an exception if the variable was not found.
static void checkPositionBoundsThrowing(const moveit::core::JointModel *joint_model, const JointLimit &joint_limit)
Checks if the position limits from the given joint_limit are stricter than the limits of the joint_mo...
static void updateVelocityLimitFromJointModel(const moveit::core::JointModel *joint_model, JointLimit &joint_limit)
Update the velocity limit with the one from the joint_model.
static JointLimitsContainer getAggregatedLimits(const rclcpp::Node::SharedPtr &node, const std::string ¶m_namespace, const std::vector< const moveit::core::JointModel * > &joint_models)
Aggregates(combines) the joint limits from joint model and node parameters. The rules for the combina...
static void updatePositionLimitFromJointModel(const moveit::core::JointModel *joint_model, JointLimit &joint_limit)
Update the position limits with the ones from the joint_model.
static void checkVelocityBoundsThrowing(const moveit::core::JointModel *joint_model, const JointLimit &joint_limit)
Checks if the velocity limit from the given joint_limit are stricter than the limit of the joint_mode...
Container for JointLimits, essentially a map with convenience functions. Adds the ability to as for l...
bool addLimit(const std::string &joint_name, JointLimit joint_limit)
Add a limit.
bool getJointLimits(const std::string &joint_name, const std::string ¶m_ns, const rclcpp::Node::SharedPtr &node, joint_limits_interface::JointLimits &limits)
bool declareParameters(const std::string &joint_name, const std::string ¶m_ns, const rclcpp::Node::SharedPtr &node)
const rclcpp::Logger LOGGER
bool has_acceleration_limits
Extends joint_limits_interface::JointLimits with a deceleration parameter.
bool has_deceleration_limits
double max_deceleration
maximum deceleration MUST(!) be negative