22 #ifndef KINEMATICSOLVER_H
23 #define KINEMATICSOLVER_H
30 #include <Eigen/Geometry>
33 #include <VirtualRobot/IK/DifferentialIK.h>
34 #include <VirtualRobot/IK/GenericIKSolver.h>
35 #include <VirtualRobot/Robot.h>
36 #include <VirtualRobot/RobotNodeSet.h>
38 #include "MotionPlanning/CSpace/CSpacePath.h"
39 #include "VirtualRobot/IK/AdvancedIKSolver.h"
68 double mediumStepSize;
71 static IKCalibration createIKCalibration(
int smallIterations,
74 double mediumStepSize,
76 double largeStepSize);
119 std::vector<double>
solveIK(VirtualRobot::RobotNodeSetPtr kc,
120 armarx::PoseBasePtr pose,
132 armarx::PoseBasePtr framedPose,
144 std::vector<float> startingPoint,
145 PoseBasePtr globalDestination,
158 std::vector<float> startingPoint,
159 PoseBasePtr framedDestination,
172 std::vector<double> startingPoint,
173 PoseBasePtr globalDestination,
186 std::vector<double> startingPoint,
187 PoseBasePtr framedDestination,
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,
225 VirtualRobot::RobotNodeSetPtr kc,
226 std::vector<double> startingPoint,
227 std::vector<PoseBasePtr> framedDestinations,
228 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections);
256 bool isReachable(VirtualRobot::RobotNodeSetPtr rns,
257 PoseBasePtr globalPose,
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,
275 std::string currentRns;
276 IKCalibration calibrate();
277 double getMaxDistance(Eigen::Vector3f destination,
279 VirtualRobot::RobotNodeSetPtr rns);
280 static int getFurthestNode(VirtualRobot::RobotNodeSetPtr rns,
281 Eigen::VectorXf startConfig,
282 Eigen::VectorXf endConfig);