moveit2
The MoveIt Motion Planning Framework for ROS 2.
|
Equality constraints on a link's position. More...
#include <ompl_constraints.h>
Public Member Functions | |
EqualityPositionConstraint (const moveit::core::RobotModelConstPtr &robot_model, const std::string &group, const unsigned int num_dofs) | |
void | parseConstraintMsg (const moveit_msgs::msg::Constraints &constraints) override |
Parse bounds on position parameters from MoveIt's constraint message. | |
void | function (const Eigen::Ref< const Eigen::VectorXd > &joint_values, Eigen::Ref< Eigen::VectorXd > out) const override |
void | jacobian (const Eigen::Ref< const Eigen::VectorXd > &joint_values, Eigen::Ref< Eigen::MatrixXd > out) const override |
Public Member Functions inherited from ompl_interface::BaseConstraint | |
BaseConstraint (const moveit::core::RobotModelConstPtr &robot_model, const std::string &group, const unsigned int num_dofs, const unsigned int num_cons=3) | |
Construct a BaseConstraint using 3 num_cons by default because all constraints currently implemented have 3 constraint equations. | |
void | init (const moveit_msgs::msg::Constraints &constraints) |
Initialize constraint based on message content. | |
void | function (const Eigen::Ref< const Eigen::VectorXd > &joint_values, Eigen::Ref< Eigen::VectorXd > out) const override |
void | jacobian (const Eigen::Ref< const Eigen::VectorXd > &joint_values, Eigen::Ref< Eigen::MatrixXd > out) const override |
Jacobian of the constraint function. | |
Eigen::Isometry3d | forwardKinematics (const Eigen::Ref< const Eigen::VectorXd > &joint_values) const |
Wrapper for forward kinematics calculated by MoveIt's Robot State. | |
Eigen::MatrixXd | robotGeometricJacobian (const Eigen::Ref< const Eigen::VectorXd > &joint_values) const |
Calculate the robot's geometric Jacobian using MoveIt's Robot State. | |
virtual Eigen::VectorXd | calcError (const Eigen::Ref< const Eigen::VectorXd > &) const |
For inequality constraints: calculate the value of the parameter that is being constrained by the bounds. | |
virtual Eigen::MatrixXd | calcErrorJacobian (const Eigen::Ref< const Eigen::VectorXd > &) const |
For inequality constraints: calculate the Jacobian for the current parameters that are being constrained.
| |
const std::string & | getLinkName () |
const Eigen::Vector3d | getTargetPosition () |
const Eigen::Quaterniond | getTargetOrientation () |
Additional Inherited Members | |
Protected Attributes inherited from ompl_interface::BaseConstraint | |
TSStateStorage | state_storage_ |
Thread-safe storage of the robot state. | |
const moveit::core::JointModelGroup * | joint_model_group_ |
std::string | link_name_ |
Robot link the constraints are applied to. | |
Bounds | bounds_ |
Upper and lower bounds on constrained variables. | |
Eigen::Vector3d | target_position_ |
target for equality constraints, nominal value for inequality constraints. | |
Eigen::Quaterniond | target_orientation_ |
target for equality constraints, nominal value for inequality constraints. | |
Equality constraints on a link's position.
When you set the name of a constraint to 'use_equality_constraints', all constraints with a dimension lower than EQUALITY_CONSTRAINT_THRESHOLD
will be modelled as equality constraints.
The dimension value for the others are ignored. For example, a box with dimensions [1.0, 1e-5, 1.0] will result in equality constraints on the y-position, and no constraints on the x or z-position.
TODO(jeroendm) We could make this a base class EqualityConstraints
with a specialization for position and orientation constraints in the future. But the direct overriding of function
and jacobian
is probably more performant.
Definition at line 309 of file ompl_constraints.h.
ompl_interface::EqualityPositionConstraint::EqualityPositionConstraint | ( | const moveit::core::RobotModelConstPtr & | robot_model, |
const std::string & | group, | ||
const unsigned int | num_dofs | ||
) |
Definition at line 234 of file ompl_constraints.cpp.
|
override |
|
override |
|
overridevirtual |
Parse bounds on position parameters from MoveIt's constraint message.
This can be non-trivial given the often complex structure of these messages.
Implements ompl_interface::BaseConstraint.
Definition at line 240 of file ompl_constraints.cpp.