22 #ifndef KINEMATICSOLVER_H
23 #define KINEMATICSOLVER_H
30 #include <Eigen/Geometry>
33 #include <VirtualRobot/RobotNodeSet.h>
34 #include <VirtualRobot/Robot.h>
35 #include <VirtualRobot/IK/GenericIKSolver.h>
36 #include <VirtualRobot/IK/DifferentialIK.h>
37 #include "VirtualRobot/IK/AdvancedIKSolver.h"
38 #include "MotionPlanning/CSpace/CSpacePath.h"
67 double mediumStepSize;
70 static IKCalibration createIKCalibration(
int smallIterations,
double smallStepSize,
int mediumIterations,
double mediumStepSize,
int largeIterations,
double largeStepSize);
173 std::vector<std::vector<double>>
solveRecursiveIK(VirtualRobot::RobotNodeSetPtr kc, std::vector<double> startingPoint, std::vector<PoseBasePtr> globalDestinations, std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
175 std::vector<std::vector<double>>
solveRecursiveIKNoMotionPlanning(VirtualRobot::RobotNodeSetPtr kc, std::vector<double> startingPoint, std::vector<PoseBasePtr> globalDestinations, std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
187 std::vector<std::vector<double>>
solveRecursiveIKRelative(VirtualRobot::RobotNodeSetPtr kc, std::vector<double> startingPoint, std::vector<PoseBasePtr> framedDestinations, std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
217 static std::shared_ptr<KinematicSolver> singleton;
220 std::map<std::string, IKCalibration> IKCalibrationMap;
223 VirtualRobot::GenericIKSolverPtr IKSetup(
double jacStepSize,
int IKIterations,
double vectorError,
double orientationError, VirtualRobot::RobotNodeSetPtr kc);
224 VirtualRobot::RobotNodeSetPtr setupProxy(VirtualRobot::RobotNodeSetPtr kc, std::vector<double>
jointAngles);
225 std::string currentRns;
226 IKCalibration calibrate();
227 double getMaxDistance(Eigen::Vector3f destination, std::vector<std::vector<double>>
jointAngles, VirtualRobot::RobotNodeSetPtr rns);
228 static int getFurthestNode(VirtualRobot::RobotNodeSetPtr rns, Eigen::VectorXf startConfig, Eigen::VectorXf endConfig);