52  : ompl::base::StateSpace(), spec_(std::move(spec))
 
   63    RCLCPP_ERROR(getLogger(), 
"Joint group '%s' has incorrect bounds specified. Using the default bounds instead.",
 
   84  params_.declareParam<
double>(
 
   85      "tag_snap_to_segment", [
this](
double tag_snap_to_segment) { 
setTagSnapToSegment(tag_snap_to_segment); },
 
 
   98  if (snap < 0.0 || snap > 1.0)
 
  100    RCLCPP_WARN(getLogger(),
 
  101                "Snap to segment for tags is a ratio. It's value must be between 0.0 and 1.0. " 
  102                "Value remains as previously set (%lf)",
 
 
  140  *
reinterpret_cast<int*
>(serialization) = state->as<
StateType>()->
tag;
 
 
  146  state->as<
StateType>()->tag = *
reinterpret_cast<const int*
>(serialization);
 
 
  154    d += i->getStateSpaceDimension();
 
 
  170      m *= bound.max_position_ - bound.min_position_;
 
 
  193        std::numeric_limits<double>::epsilon())
 
 
  207                                                           std::numeric_limits<double>::epsilon());
 
 
  211                                       ompl::base::State* state)
 const 
  214  state->as<
StateType>()->clearKnownInformation();
 
 
  242  return state->as<
StateType>()->values + index;
 
 
  271  class DefaultStateSampler : 
public ompl::base::StateSampler
 
  276      : ompl::base::StateSampler(space), joint_model_group_(group), joint_bounds_(joint_bounds)
 
  280    void sampleUniform(ompl::base::State* state)
 override 
  282      joint_model_group_->getVariableRandomPositions(moveit_rng_, state->as<
StateType>()->
values, *joint_bounds_);
 
  283      state->as<
StateType>()->clearKnownInformation();
 
  286    void sampleUniformNear(ompl::base::State* state, 
const ompl::base::State* near, 
const double distance)
 override 
  288      joint_model_group_->getVariableRandomPositionsNearBy(moveit_rng_, state->as<
StateType>()->
values, *joint_bounds_,
 
  290      state->as<
StateType>()->clearKnownInformation();
 
  293    void sampleGaussian(ompl::base::State* state, 
const ompl::base::State* mean, 
const double stdDev)
 override 
  295      sampleUniformNear(state, mean, rng_.gaussian(0.0, stdDev));
 
  299    random_numbers::RandomNumberGenerator moveit_rng_;
 
  304  return ompl::base::StateSamplerPtr(
static_cast<ompl::base::StateSampler*
>(
 
 
  310  out << 
"ModelBasedStateSpace '" << getName() << 
"' at " << 
this << 
'\n';
 
 
  317    out << j->getName() << 
" = ";
 
  319    const int vc = j->getVariableCount();
 
  320    for (
int i = 0; i < vc; ++i)
 
  326    out << 
"* start state \n";
 
  328    out << 
"* goal state \n";
 
  333      out << 
"* valid state \n";
 
  337      out << 
"* invalid state \n";
 
  340  out << 
"Tag: " << state->as<
StateType>()->tag << 
'\n';
 
 
  353  state->as<
StateType>()->clearKnownInformation();
 
 
  358                                                int ompl_state_joint_index)
 const 
  366  state->as<
StateType>()->clearKnownInformation();
 
 
const JointBoundsVector & getActiveJointModelsBounds() const
Get the bounds for all the active joints.
 
double distance(const double *state1, const double *state2) const
 
const std::string & getName() const
Get the name of the joint group.
 
bool enforcePositionBounds(double *state) const
 
const std::vector< const JointModel * > & getActiveJointModels() const
Get the active joints in this group (that have controllable DOF). This does not include mimic joints.
 
void interpolate(const double *from, const double *to, double t, double *state) const
 
bool satisfiesPositionBounds(const double *state, double margin=0.0) const
 
unsigned int getVariableCount() const
Get the number of variables that describe this joint group. This includes variables necessary for mim...
 
double getMaximumExtent() const
 
int getVariableGroupIndex(const std::string &variable) const
Get the index of a variable within the group. Return -1 on error.
 
A joint from the robot. Models the transform that this joint applies in the kinematic chain....
 
std::vector< VariableBounds > Bounds
The datatype for the joint bounds.
 
size_t getFirstVariableIndex() const
Get the index of this joint's first variable within the full robot state.
 
std::size_t getVariableCount() const
Get the number of variables that describe this joint.
 
Representation of a robot's state. This includes position, velocity, acceleration and effort.
 
void setJointGroupPositions(const std::string &joint_group_name, const double *gstate)
Given positions for the variables that make up a group, in the order found in the group (including va...
 
void copyJointGroupPositions(const std::string &joint_group_name, std::vector< double > &gstate) const
For a given group, copy the position values of the variables that make up the group into another loca...
 
double * getVariablePositions()
Get a raw pointer to the positions of the variables stored in this state. Use carefully....
 
void update(bool force=false)
Update all transforms.
 
bool isValidityKnown() const
 
bool isStartState() const
 
bool isMarkedValid() const
 
double tag_snap_to_segment_
 
double tag_snap_to_segment_complement_
 
unsigned int getDimension() const override
 
bool satisfiesBounds(const ompl::base::State *state) const override
 
double getMeasure() const override
 
virtual void copyJointToOMPLState(ompl::base::State *state, const moveit::core::RobotState &robot_state, const moveit::core::JointModel *joint_model, int ompl_state_joint_index) const
Copy a single joint's values (which might have multiple variables) from a MoveIt robot_state to an OM...
 
bool equalStates(const ompl::base::State *state1, const ompl::base::State *state2) const override
 
void serialize(void *serialization, const ompl::base::State *state) const override
 
double * getValueAddressAtIndex(ompl::base::State *state, const unsigned int index) const override
 
size_t state_values_size_
 
DistanceFunction distance_function_
 
double getMaximumExtent() const override
 
std::vector< const moveit::core::JointModel * > joint_model_vector_
 
void deserialize(ompl::base::State *state, const void *serialization) const override
 
std::vector< moveit::core::JointModel::Bounds > joint_bounds_storage_
 
ModelBasedStateSpaceSpecification spec_
 
unsigned int getSerializationLength() const override
 
ompl::base::State * allocState() const override
 
virtual void setPlanningVolume(double minX, double maxX, double minY, double maxY, double minZ, double maxZ)
Set the planning volume for the possible SE2 and/or SE3 components of the state space.
 
ompl::base::StateSamplerPtr allocDefaultStateSampler() const override
 
InterpolationFunction interpolation_function_
 
virtual void copyToRobotState(moveit::core::RobotState &rstate, const ompl::base::State *state) const
Copy the data from an OMPL state to a set of joint states.
 
double getTagSnapToSegment() const
 
void setTagSnapToSegment(double snap)
 
void interpolate(const ompl::base::State *from, const ompl::base::State *to, const double t, ompl::base::State *state) const override
 
void printState(const ompl::base::State *state, std::ostream &out) const override
 
ModelBasedStateSpace(ModelBasedStateSpaceSpecification spec)
 
void freeState(ompl::base::State *state) const override
 
void copyState(ompl::base::State *destination, const ompl::base::State *source) const override
 
virtual void copyToOMPLState(ompl::base::State *state, const moveit::core::RobotState &rstate) const
Copy the data from a set of joint states to an OMPL state.
 
unsigned int variable_count_
 
~ModelBasedStateSpace() override
 
void printSettings(std::ostream &out) const override
 
void enforceBounds(ompl::base::State *state) const override
 
double distance(const ompl::base::State *state1, const ompl::base::State *state2) const override
 
rclcpp::Logger getLogger()
 
std::vector< const JointModel::Bounds * > JointBoundsVector
 
rclcpp::Logger getLogger(const std::string &name)
Creates a namespaced logger.
 
The MoveIt interface to OMPL.
 
moveit::core::JointBoundsVector joint_bounds_
 
const moveit::core::JointModelGroup * joint_model_group_