10 #define CHOMPOPTIMIZER
12 #include "chompMultivariateGaussian.hpp"
13 #include "chompParameters.hpp"
14 #include "chompCost.hpp"
15 #include "chompTrajectory.hpp"
16 #include "chompPlanningGroup.hpp"
18 #include "planner/Greedy/CollisionSpace.hpp"
41 void runDeformation(
int nbIteration ,
int idRun=0 );
49 int num_collision_points_;
53 int collision_free_iteration_;
61 std::vector<ChompCost> joint_costs_;
63 std::vector<int> planner_p3d_joints_;
64 std::vector<int> group_joint_to_move3d_joint_index_;
74 std::vector<std::vector<std::vector<double> > > segment_frames_;
75 std::vector<std::vector<Eigen::Vector3d> > joint_axis_eigen_;
76 std::vector<std::vector<Eigen::Vector3d> > joint_pos_eigen_;
77 std::vector<std::vector<Eigen::Vector3d> > collision_point_pos_eigen_;
78 std::vector<std::vector<Eigen::Vector3d> > collision_point_vel_eigen_;
79 std::vector<std::vector<Eigen::Vector3d> > collision_point_acc_eigen_;
81 Eigen::MatrixXd collision_point_potential_;
82 Eigen::MatrixXd collision_point_vel_mag_;
83 std::vector<std::vector<Eigen::Vector3d> > collision_point_potential_gradient_;
85 Eigen::MatrixXd group_trajectory_backup_;
86 Eigen::MatrixXd best_group_trajectory_;
87 double best_group_trajectory_cost_;
88 int last_improvement_iteration_;
91 Eigen::MatrixXd momentum_;
92 Eigen::MatrixXd random_momentum_;
93 Eigen::VectorXd random_joint_momentum_;
94 std::vector<MultivariateGaussian> multivariate_gaussian_;
95 double stochasticity_factor_;
97 std::vector<int> state_is_in_collision_;
98 std::vector<std::vector<int> > point_is_in_collision_;
99 bool is_collision_free_;
100 double worst_collision_cost_state_;
102 Eigen::MatrixXd smoothness_increments_;
103 Eigen::MatrixXd collision_increments_;
104 Eigen::MatrixXd final_increments_;
107 Eigen::VectorXd smoothness_derivative_;
109 Eigen::MatrixXd jacobian_;
110 Eigen::MatrixXd jacobian_pseudo_inverse_;
111 Eigen::MatrixXd jacobian_jacobian_tranpose_;
112 Eigen::VectorXd random_state_;
113 Eigen::VectorXd joint_state_velocities_;
117 int animate_endeffector_segment_number_;
120 void createEigenMapsFromP3dRobot();
121 void calculateSmoothnessIncrements();
122 void calculateCollisionIncrements();
123 void calculateTotalIncrements();
124 void getFrames(
int i,
const Eigen::VectorXd& joint_array);
125 void performForwardKinematics();
126 void addIncrementsToTrajectory();
127 void updateFullTrajectory();
130 void handleJointLimits();
132 void animateEndeffector();
134 double getTrajectoryCost();
135 double getSmoothnessCost();
136 double getCollisionCost();
137 void perturbTrajectory();
138 void getRandomMomentum();
139 void updateMomentum();
140 void updatePositionFromMomentum();
141 void calculatePseudoInverse();
142 confPtr_t getConfigurationOnGroupTraj(
int ith);
Contains information about a planning group.
Definition: chompPlanningGroup.hpp:38
Definition: chompParameters.hpp:42
Represents a discretized joint-space trajectory for CHOMP.
Definition: chompTrajectory.hpp:60
Definition: chompOptimizer.hpp:26
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
Definition: CollisionSpace.hpp:27