68 double mediumStepSize;
71 static IKCalibration createIKCalibration(
int smallIterations,
74 double mediumStepSize,
76 double largeStepSize);
90 static std::shared_ptr<KinematicSolver>
getInstance(VirtualRobot::ScenePtr scenario,
119 std::vector<double>
solveIK(VirtualRobot::RobotNodeSetPtr kc,
120 armarx::PoseBasePtr pose,
121 VirtualRobot::IKSolver::CartesianSelection selection,
132 armarx::PoseBasePtr framedPose,
133 VirtualRobot::IKSolver::CartesianSelection selection);
144 std::vector<float> startingPoint,
145 PoseBasePtr globalDestination,
146 VirtualRobot::IKSolver::CartesianSelection selection);
158 std::vector<float> startingPoint,
159 PoseBasePtr framedDestination,
160 VirtualRobot::IKSolver::CartesianSelection selection);
172 std::vector<double> startingPoint,
173 PoseBasePtr globalDestination,
174 VirtualRobot::IKSolver::CartesianSelection selection);
186 std::vector<double> startingPoint,
187 PoseBasePtr framedDestination,
188 VirtualRobot::IKSolver::CartesianSelection selection);
198 std::vector<std::vector<double>>
200 std::vector<double> startingPoint,
201 std::vector<PoseBasePtr> globalDestinations,
202 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
205 VirtualRobot::RobotNodeSetPtr kc,
206 std::vector<double> startingPoint,
207 std::vector<PoseBasePtr> globalDestinations,
208 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
210 std::vector<std::vector<double>>
212 std::vector<double> startingPoint,
213 std::vector<PoseBasePtr> globalDestinations,
214 VirtualRobot::IKSolver::CartesianSelection selection);
225 VirtualRobot::RobotNodeSetPtr kc,
226 std::vector<double> startingPoint,
227 std::vector<PoseBasePtr> framedDestinations,
228 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
240 std::vector<double> jointAngles);
249 std::vector<double> jointAngles);
256 bool isReachable(VirtualRobot::RobotNodeSetPtr rns,
257 PoseBasePtr globalPose,
258 VirtualRobot::IKSolver::CartesianSelection cs);
262 static std::shared_ptr<KinematicSolver> singleton;
265 std::map<std::string, IKCalibration> IKCalibrationMap;
268 VirtualRobot::GenericIKSolverPtr IKSetup(
double jacStepSize,
271 double orientationError,
272 VirtualRobot::RobotNodeSetPtr kc);
273 VirtualRobot::RobotNodeSetPtr setupProxy(VirtualRobot::RobotNodeSetPtr kc,
274 std::vector<double> jointAngles);
275 std::string currentRns;
276 IKCalibration calibrate();
277 double getMaxDistance(Eigen::Vector3f destination,
278 std::vector<std::vector<double>> jointAngles,
279 VirtualRobot::RobotNodeSetPtr rns);
280 static int getFurthestNode(VirtualRobot::RobotNodeSetPtr rns,
281 Eigen::VectorXf startConfig,
282 Eigen::VectorXf endConfig);