00001
00002
00003
00004
00005
00006
00007
00008
00009 #include <stdio.h>
00010 #include <iostream>
00011 #include <vector>
00012 #include <string>
00013 #include <sbpl_arm_planner/sbpl_collision_space.h>
00014
00015 #ifndef _ORIENTATION_SOLVER_
00016 #define _ORIENTATION_SOLVER_
00017
00018 using namespace std;
00019
00020
00021 namespace sbpl_arm_planner
00022 {
00023
00024 class RPYSolver
00025 {
00026 public:
00027
00028 RPYSolver(SBPLArmModel *arm,SBPLCollisionSpace *cspace);
00029
00030 ~RPYSolver(){};
00031
00039 void orientationSolver(double*, double, double, double, double, double, double, double, double, double, int);
00040
00042 bool isOrientationFeasible(const double* rpy, std::vector<double> &start, std::vector<double> &prefinal, std::vector<double> &final);
00043
00045 void printStats();
00046
00048 void getStats(std::vector<double> &stats);
00049
00050 private:
00051
00052 SBPLArmModel *arm_;
00053
00054 SBPLCollisionSpace *cspace_;
00055
00056 bool verbose_;
00057
00058 bool try_both_directions_;
00059
00060 int num_calls_;
00061
00062 int num_invalid_predictions_;
00063
00064 int num_invalid_solution_;
00065
00066 int num_invalid_path_to_solution_;
00067 };
00068
00069 }
00070
00071 #endif
00072