80    return is_collision_free_;
 
 
   84  inline double getPotential(
double field_distance, 
double radius, 
double clearance)
 
   86    double d = field_distance - radius;
 
   94      const double diff = (d - clearance);
 
   95      const double gradient_magnitude = diff / clearance;
 
   96      return 0.5 * gradient_magnitude * diff;  
 
  100      return -d + 0.5 * clearance;  
 
  103  template <
typename Derived>
 
  104  void getJacobian(
int trajectoryPoint, Eigen::Vector3d& collision_point_pos, std::string& jointName,
 
  105                   Eigen::MatrixBase<Derived>& jacobian) 
const;
 
  111  void setRobotStateFromPoint(ChompTrajectory& group_trajectory, 
int i);
 
  118  int num_collision_points_;
 
  119  int free_vars_start_;
 
  122  unsigned int collision_free_iteration_;
 
  124  ChompTrajectory* full_trajectory_;
 
  125  const moveit::core::RobotModelConstPtr& robot_model_;
 
  126  std::string planning_group_;
 
  127  const ChompParameters* parameters_;
 
  128  ChompTrajectory group_trajectory_;
 
  129  planning_scene::PlanningSceneConstPtr planning_scene_;
 
  135  std::vector<ChompCost> joint_costs_;
 
  136  collision_detection::GroupStateRepresentationPtr gsr_;
 
  139  std::vector<std::vector<std::string> > collision_point_joint_names_;
 
  140  std::vector<EigenSTL::vector_Vector3d> collision_point_pos_eigen_;
 
  141  std::vector<EigenSTL::vector_Vector3d> collision_point_vel_eigen_;
 
  142  std::vector<EigenSTL::vector_Vector3d> collision_point_acc_eigen_;
 
  143  std::vector<std::vector<double> > collision_point_potential_;
 
  144  std::vector<std::vector<double> > collision_point_vel_mag_;
 
  145  std::vector<EigenSTL::vector_Vector3d> collision_point_potential_gradient_;
 
  146  std::vector<EigenSTL::vector_Vector3d> joint_axes_;
 
  147  std::vector<EigenSTL::vector_Vector3d> joint_positions_;
 
  148  Eigen::MatrixXd group_trajectory_backup_;
 
  149  Eigen::MatrixXd best_group_trajectory_;
 
  150  double best_group_trajectory_cost_;
 
  151  int last_improvement_iteration_;
 
  152  unsigned int num_collision_free_iterations_;
 
  155  Eigen::MatrixXd momentum_;
 
  156  Eigen::MatrixXd random_momentum_;
 
  157  Eigen::VectorXd random_joint_momentum_;  
 
  158  std::vector<MultivariateGaussian> multivariate_gaussian_;
 
  159  double stochasticity_factor_;
 
  161  std::vector<int> state_is_in_collision_; 
 
  163  std::vector<std::vector<int> > point_is_in_collision_;
 
  164  bool is_collision_free_;
 
  165  double worst_collision_cost_state_;
 
  167  Eigen::MatrixXd smoothness_increments_;
 
  168  Eigen::MatrixXd collision_increments_;
 
  169  Eigen::MatrixXd final_increments_;
 
  172  Eigen::VectorXd smoothness_derivative_;
 
  173  Eigen::MatrixXd jacobian_;
 
  174  Eigen::MatrixXd jacobian_pseudo_inverse_;
 
  175  Eigen::MatrixXd jacobian_jacobian_tranpose_;
 
  176  Eigen::VectorXd random_state_;
 
  177  Eigen::VectorXd joint_state_velocities_;
 
  179  std::vector<std::string> joint_names_;
 
  180  std::map<std::string, std::map<std::string, bool> > joint_parent_map_;
 
  182  inline bool isParent(
const std::string& childLink, 
const std::string& parentLink)
 const 
  184    if (childLink == parentLink)
 
  189    if (joint_parent_map_.find(childLink) == joint_parent_map_.end())
 
  194    const std::map<std::string, bool>& parents = joint_parent_map_.at(childLink);
 
  195    return (parents.find(parentLink) != parents.end() && parents.at(parentLink));
 
  200  void calculateSmoothnessIncrements();
 
  201  void calculateCollisionIncrements();
 
  202  void calculateTotalIncrements();
 
  203  void performForwardKinematics();
 
  204  void addIncrementsToTrajectory();
 
  205  void updateFullTrajectory();
 
  207  void handleJointLimits();
 
  208  double getTrajectoryCost();
 
  209  double getSmoothnessCost();
 
  210  double getCollisionCost();
 
  211  void perturbTrajectory();
 
  212  void getRandomMomentum();
 
  213  void updateMomentum();
 
  214  void updatePositionFromMomentum();
 
  215  void calculatePseudoInverse();
 
  216  void computeJointProperties(
int trajectoryPoint);
 
  217  bool isCurrentTrajectoryMeshToMeshCollisionFree() 
const;