From b94c9fabd65d1450d481a8a79a51d0d51daa9048 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 21:50:16 +0000 Subject: [PATCH] Deploy to GitHub pages --- AsibotConfiguration_8hpp_source.html | 224 ++ AsibotSolver_8hpp_source.html | 195 ++ BasicCartesianControl_8hpp_source.html | 263 +++ CartesianControlClient_8hpp_source.html | 192 ++ CartesianControlServer_8hpp_source.html | 239 +++ CentroidTransform_8hpp_source.html | 137 ++ ChainFkSolverPos__ST_8hpp_source.html | 134 ++ ChainIkSolverPos__ID_8hpp_source.html | 141 ++ ChainIkSolverPos__ST_8hpp_source.html | 143 ++ ConfigurationSelector_8hpp_source.html | 264 +++ FtCompensation_8hpp_source.html | 169 ++ GrabberResponder_8hpp_source.html | 131 ++ HaarDetectionController_8hpp_source.html | 136 ++ ICartesianControl_8h.html | 284 +++ ICartesianControl_8h_source.html | 271 +++ ICartesianSolver_8h.html | 108 + ICartesianSolver_8h_source.html | 165 ++ KdlSolver_8hpp_source.html | 192 ++ KdlTreeSolver_8hpp_source.html | 190 ++ KdlVectorConverter_8hpp_source.html | 119 ++ KeyboardController_8hpp_source.html | 185 ++ KinematicRepresentation_8hpp_source.html | 185 ++ LeapMotionSensorDevice_8hpp_source.html | 150 ++ LinearTrajectoryThread_8hpp_source.html | 132 ++ MatrixExponential_8hpp_source.html | 142 ++ ProductOfExponentials_8hpp_source.html | 159 ++ ScrewTheoryIkProblem_8hpp_source.html | 237 +++ ScrewTheoryIkSubproblems_8hpp_source.html | 279 +++ ScrewTheoryTools_8hpp_source.html | 131 ++ SpnavSensorDevice_8hpp_source.html | 142 ++ StreamingDeviceController_8hpp_source.html | 151 ++ StreamingDevice_8hpp_source.html | 215 ++ TrajGen_8hpp_source.html | 260 +++ TrajectoryThread_8hpp_source.html | 137 ++ WiimoteSensorDevice_8hpp_source.html | 146 ++ YarpTinyMath_8hpp_source.html | 126 ++ annotated.html | 153 ++ bc_s.png | Bin 0 -> 676 bytes bdwn.png | Bin 0 -> 147 bytes citelist.html | 88 + classOrderOneTraj-members.html | 98 + classOrderOneTraj.html | 145 ++ classOrderOneTraj.png | Bin 0 -> 434 bytes classOrderThreeTraj-members.html | 100 + classOrderThreeTraj.html | 452 +++++ classOrderThreeTraj.png | Bin 0 -> 439 bytes classTraj-members.html | 94 + classTraj.html | 133 ++ classTraj.png | Bin 0 -> 645 bytes classTrajectoryThread-members.html | 94 + classTrajectoryThread.html | 136 ++ classTrajectoryThread.png | Bin 0 -> 635 bytes classes.html | 132 ++ ...icslab_1_1AsibotConfiguration-members.html | 102 + classroboticslab_1_1AsibotConfiguration.html | 365 ++++ classroboticslab_1_1AsibotConfiguration.png | Bin 0 -> 1139 bytes ...1_1AsibotConfigurationFactory-members.html | 93 + ...ticslab_1_1AsibotConfigurationFactory.html | 204 ++ ...oticslab_1_1AsibotConfigurationFactory.png | Bin 0 -> 1298 bytes ...astOverallAngularDisplacement-members.html | 104 + ...rationLeastOverallAngularDisplacement.html | 254 +++ ...urationLeastOverallAngularDisplacement.png | Bin 0 -> 1137 bytes ...allAngularDisplacementFactory-members.html | 94 + ...eastOverallAngularDisplacementFactory.html | 204 ++ ...LeastOverallAngularDisplacementFactory.png | Bin 0 -> 1294 bytes classroboticslab_1_1AsibotSolver-members.html | 118 ++ classroboticslab_1_1AsibotSolver.html | 732 +++++++ classroboticslab_1_1AsibotSolver.png | Bin 0 -> 1099 bytes ...slab_1_1BasicCartesianControl-members.html | 160 ++ ...sroboticslab_1_1BasicCartesianControl.html | 1152 +++++++++++ classroboticslab_1_1BasicCartesianControl.png | Bin 0 -> 1533 bytes ...tesianControl_1_1StateWatcher-members.html | 92 + ...BasicCartesianControl_1_1StateWatcher.html | 109 + ...lab_1_1CartesianControlClient-members.html | 120 ++ ...roboticslab_1_1CartesianControlClient.html | 938 +++++++++ ...sroboticslab_1_1CartesianControlClient.png | Bin 0 -> 1166 bytes ...lab_1_1CartesianControlServer-members.html | 102 + ...roboticslab_1_1CartesianControlServer.html | 151 ++ ...sroboticslab_1_1CartesianControlServer.png | Bin 0 -> 1120 bytes ...oticslab_1_1CentroidTransform-members.html | 99 + classroboticslab_1_1CentroidTransform.html | 144 ++ ...cslab_1_1ChainFkSolverPos__ST-members.html | 98 + classroboticslab_1_1ChainFkSolverPos__ST.html | 353 ++++ classroboticslab_1_1ChainFkSolverPos__ST.png | Bin 0 -> 779 bytes ...cslab_1_1ChainIkSolverPos__ID-members.html | 102 + classroboticslab_1_1ChainIkSolverPos__ID.html | 327 +++ classroboticslab_1_1ChainIkSolverPos__ID.png | Bin 0 -> 740 bytes ...cslab_1_1ChainIkSolverPos__ST-members.html | 100 + classroboticslab_1_1ChainIkSolverPos__ST.html | 320 +++ classroboticslab_1_1ChainIkSolverPos__ST.png | Bin 0 -> 746 bytes ...slab_1_1ConfigurationSelector-members.html | 97 + ...sroboticslab_1_1ConfigurationSelector.html | 295 +++ classroboticslab_1_1ConfigurationSelector.png | Bin 0 -> 1770 bytes ...1ConfigurationSelectorFactory-members.html | 93 + ...cslab_1_1ConfigurationSelectorFactory.html | 205 ++ ...icslab_1_1ConfigurationSelectorFactory.png | Bin 0 -> 1804 bytes ...igurationSelectorHumanoidGait-members.html | 103 + ..._1_1ConfigurationSelectorHumanoidGait.html | 254 +++ ...b_1_1ConfigurationSelectorHumanoidGait.png | Bin 0 -> 1773 bytes ...onSelectorHumanoidGaitFactory-members.html | 94 + ...figurationSelectorHumanoidGaitFactory.html | 204 ++ ...nfigurationSelectorHumanoidGaitFactory.png | Bin 0 -> 1113 bytes ...astOverallAngularDisplacement-members.html | 101 + ...lectorLeastOverallAngularDisplacement.html | 250 +++ ...electorLeastOverallAngularDisplacement.png | Bin 0 -> 1775 bytes ...allAngularDisplacementFactory-members.html | 94 + ...eastOverallAngularDisplacementFactory.html | 204 ++ ...LeastOverallAngularDisplacementFactory.png | Bin 0 -> 1294 bytes ...tionSelector_1_1Configuration-members.html | 96 + ...onfigurationSelector_1_1Configuration.html | 135 ++ ...oticslab_1_1FkStreamResponder-members.html | 96 + classroboticslab_1_1FkStreamResponder.html | 132 ++ classroboticslab_1_1FkStreamResponder.png | Bin 0 -> 1029 bytes ...roboticslab_1_1FtCompensation-members.html | 123 ++ classroboticslab_1_1FtCompensation.html | 222 ++ classroboticslab_1_1FtCompensation.png | Bin 0 -> 977 bytes ...boticslab_1_1GrabberResponder-members.html | 95 + classroboticslab_1_1GrabberResponder.html | 129 ++ classroboticslab_1_1GrabberResponder.png | Bin 0 -> 1012 bytes ...ab_1_1HaarDetectionController-members.html | 101 + ...oboticslab_1_1HaarDetectionController.html | 147 ++ ...roboticslab_1_1HaarDetectionController.png | Bin 0 -> 716 bytes ...oticslab_1_1ICartesianControl-members.html | 108 + classroboticslab_1_1ICartesianControl.html | 904 +++++++++ classroboticslab_1_1ICartesianControl.png | Bin 0 -> 1027 bytes ...boticslab_1_1ICartesianSolver-members.html | 104 + classroboticslab_1_1ICartesianSolver.html | 760 +++++++ classroboticslab_1_1ICartesianSolver.png | Bin 0 -> 1248 bytes ...sroboticslab_1_1InvalidDevice-members.html | 106 + classroboticslab_1_1InvalidDevice.html | 258 +++ classroboticslab_1_1InvalidDevice.png | Bin 0 -> 1063 bytes classroboticslab_1_1KdlSolver-members.html | 115 ++ classroboticslab_1_1KdlSolver.html | 761 +++++++ classroboticslab_1_1KdlSolver.png | Bin 0 -> 1085 bytes ...sroboticslab_1_1KdlTreeSolver-members.html | 114 ++ classroboticslab_1_1KdlTreeSolver.html | 706 +++++++ classroboticslab_1_1KdlTreeSolver.png | Bin 0 -> 1109 bytes ...ticslab_1_1KeyboardController-members.html | 145 ++ classroboticslab_1_1KeyboardController.html | 263 +++ classroboticslab_1_1KeyboardController.png | Bin 0 -> 703 bytes ...lab_1_1LeapMotionSensorDevice-members.html | 118 ++ ...roboticslab_1_1LeapMotionSensorDevice.html | 395 ++++ ...sroboticslab_1_1LeapMotionSensorDevice.png | Bin 0 -> 1190 bytes ...lab_1_1LinearTrajectoryThread-members.html | 102 + ...roboticslab_1_1LinearTrajectoryThread.html | 154 ++ ...sroboticslab_1_1LinearTrajectoryThread.png | Bin 0 -> 771 bytes ...oticslab_1_1MatrixExponential-members.html | 101 + classroboticslab_1_1MatrixExponential.html | 365 ++++ ...sroboticslab_1_1PadenKahanOne-members.html | 100 + classroboticslab_1_1PadenKahanOne.html | 270 +++ classroboticslab_1_1PadenKahanOne.png | Bin 0 -> 815 bytes ...oboticslab_1_1PadenKahanThree-members.html | 101 + classroboticslab_1_1PadenKahanThree.html | 280 +++ classroboticslab_1_1PadenKahanThree.png | Bin 0 -> 823 bytes ...sroboticslab_1_1PadenKahanTwo-members.html | 106 + classroboticslab_1_1PadenKahanTwo.html | 309 +++ classroboticslab_1_1PadenKahanTwo.png | Bin 0 -> 810 bytes ...oboticslab_1_1PardosGotorFour-members.html | 103 + classroboticslab_1_1PardosGotorFour.html | 293 +++ classroboticslab_1_1PardosGotorFour.png | Bin 0 -> 816 bytes ...roboticslab_1_1PardosGotorOne-members.html | 99 + classroboticslab_1_1PardosGotorOne.html | 267 +++ classroboticslab_1_1PardosGotorOne.png | Bin 0 -> 815 bytes ...boticslab_1_1PardosGotorThree-members.html | 100 + classroboticslab_1_1PardosGotorThree.html | 277 +++ classroboticslab_1_1PardosGotorThree.png | Bin 0 -> 811 bytes ...roboticslab_1_1PardosGotorTwo-members.html | 103 + classroboticslab_1_1PardosGotorTwo.html | 293 +++ classroboticslab_1_1PardosGotorTwo.png | Bin 0 -> 807 bytes ...sroboticslab_1_1PoeExpression-members.html | 103 + classroboticslab_1_1PoeExpression.html | 541 +++++ classroboticslab_1_1RpcResponder-members.html | 107 + classroboticslab_1_1RpcResponder.html | 244 +++ classroboticslab_1_1RpcResponder.png | Bin 0 -> 1155 bytes ...slab_1_1RpcTransformResponder-members.html | 111 + ...sroboticslab_1_1RpcTransformResponder.html | 147 ++ classroboticslab_1_1RpcTransformResponder.png | Bin 0 -> 1147 bytes ...cslab_1_1ScrewTheoryIkProblem-members.html | 112 + classroboticslab_1_1ScrewTheoryIkProblem.html | 283 +++ ..._1ScrewTheoryIkProblemBuilder-members.html | 103 + ...icslab_1_1ScrewTheoryIkProblemBuilder.html | 215 ++ ...ab_1_1ScrewTheoryIkSubproblem-members.html | 95 + ...oboticslab_1_1ScrewTheoryIkSubproblem.html | 212 ++ ...roboticslab_1_1ScrewTheoryIkSubproblem.png | Bin 0 -> 2220 bytes ...oticslab_1_1SpnavSensorDevice-members.html | 112 + classroboticslab_1_1SpnavSensorDevice.html | 405 ++++ classroboticslab_1_1SpnavSensorDevice.png | Bin 0 -> 1127 bytes ...oboticslab_1_1StreamResponder-members.html | 95 + classroboticslab_1_1StreamResponder.html | 140 ++ classroboticslab_1_1StreamResponder.png | Bin 0 -> 1014 bytes ...oboticslab_1_1StreamingDevice-members.html | 105 + classroboticslab_1_1StreamingDevice.html | 453 +++++ classroboticslab_1_1StreamingDevice.png | Bin 0 -> 2342 bytes ..._1_1StreamingDeviceController-members.html | 109 + ...oticslab_1_1StreamingDeviceController.html | 175 ++ ...boticslab_1_1StreamingDeviceController.png | Bin 0 -> 1495 bytes ...lab_1_1StreamingDeviceFactory-members.html | 90 + ...roboticslab_1_1StreamingDeviceFactory.html | 149 ++ ...icslab_1_1WiimoteSensorDevice-members.html | 116 ++ classroboticslab_1_1WiimoteSensorDevice.html | 384 ++++ classroboticslab_1_1WiimoteSensorDevice.png | Bin 0 -> 1141 bytes ...t_1_1AsibotSolverTestFromFile-members.html | 94 + ...b_1_1test_1_1AsibotSolverTestFromFile.html | 130 ++ ...ab_1_1test_1_1AsibotSolverTestFromFile.png | Bin 0 -> 730 bytes ..._1_1BasicCartesianControlTest-members.html | 92 + ..._1_1test_1_1BasicCartesianControlTest.html | 120 ++ ...b_1_1test_1_1BasicCartesianControlTest.png | Bin 0 -> 733 bytes ...slab_1_1test_1_1KdlSolverTest-members.html | 93 + ...sroboticslab_1_1test_1_1KdlSolverTest.html | 127 ++ classroboticslab_1_1test_1_1KdlSolverTest.png | Bin 0 -> 668 bytes ...test_1_1KdlSolverTestFromFile-members.html | 92 + ...slab_1_1test_1_1KdlSolverTestFromFile.html | 120 ++ ...cslab_1_1test_1_1KdlSolverTestFromFile.png | Bin 0 -> 731 bytes ...test_1_1KinRepresentationTest-members.html | 91 + ...slab_1_1test_1_1KinRepresentationTest.html | 117 ++ ...cslab_1_1test_1_1KinRepresentationTest.png | Bin 0 -> 731 bytes ...ab_1_1test_1_1ScrewTheoryTest-members.html | 109 + ...oboticslab_1_1test_1_1ScrewTheoryTest.html | 181 ++ ...roboticslab_1_1test_1_1ScrewTheoryTest.png | Bin 0 -> 696 bytes closed.png | Bin 0 -> 132 bytes dir_1309cee196689adea45d11f37b8ed78d.html | 85 + dir_15768b185b6e8b816adf0c89b30bfe65.html | 85 + dir_17d4fdefd982442a79427fe9d98568ae.html | 85 + dir_1d6bf2fb1d016ec6b197455d198424da.html | 85 + dir_25c7435138c3ee6ac4c9babe8db7ecf9.html | 85 + dir_387a94d47062d4e808cee3de63065fcd.html | 85 + dir_487dfb5d6e3e441bbdba0aef32150596.html | 85 + dir_49e6bd22918cee17ddc14df5c827b459.html | 85 + dir_4e03118d576dd8e71b5dbe7081ce822d.html | 85 + dir_4f22d2c14b4bbce8870d40d37a8ebee2.html | 85 + dir_51393f38608496e2be890df69ecb13f1.html | 85 + dir_59425e443f801f1f2fd8bbe4959a3ccf.html | 85 + dir_75b15c0a6e736aa4482428563186dcc3.html | 85 + dir_7b0a5d1507c7f681cbfa1deb5990c6ea.html | 89 + dir_8976e5d03119516083eaca3ddca61311.html | 89 + dir_a52c22a8b79e169194d9c4bbc7c46367.html | 85 + dir_af0bcd1d9c8bf0be37b473fa7c916aed.html | 85 + dir_bbdaf73c7839257653cfce0d61f80663.html | 85 + dir_bc0718b08fb2015b8e59c47b2805f60c.html | 89 + dir_bfeb62c1259859bb2c79e7bf678570c2.html | 85 + dir_d050070cc3e4bbd91d897ff8856046e0.html | 85 + dir_d28a4824dc47e487b107a5db32ef43c4.html | 91 + dir_dfab584b716eccfc00a175735f16fb62.html | 85 + dir_e68e8157741866f444e17edd764ebbae.html | 85 + dir_f528a5afad561ac522bac3a41785be2e.html | 85 + dir_f98f57c538677273d6e3d52c55355c28.html | 98 + doc.png | Bin 0 -> 746 bytes doxygen.css | 1793 +++++++++++++++++ doxygen.svg | 26 + dynsections.js | 121 ++ files.html | 149 ++ folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 130 ++ functions_b.html | 87 + functions_c.html | 154 ++ functions_d.html | 100 + functions_e.html | 111 + functions_enum.html | 91 + functions_eval.html | 91 + functions_f.html | 105 + functions_func.html | 130 ++ functions_func_b.html | 84 + functions_func_c.html | 151 ++ functions_func_d.html | 100 + functions_func_e.html | 87 + functions_func_f.html | 102 + functions_func_g.html | 144 ++ functions_func_h.html | 86 + functions_func_i.html | 116 ++ functions_func_j.html | 84 + functions_func_l.html | 84 + functions_func_m.html | 119 ++ functions_func_p.html | 117 ++ functions_func_r.html | 109 + functions_func_s.html | 169 ++ functions_func_t.html | 103 + functions_func_u.html | 86 + functions_func_v.html | 84 + functions_func_w.html | 94 + functions_func_~.html | 105 + functions_g.html | 144 ++ functions_h.html | 86 + functions_i.html | 116 ++ functions_j.html | 96 + functions_l.html | 84 + functions_m.html | 125 ++ functions_o.html | 87 + functions_p.html | 117 ++ functions_r.html | 115 ++ functions_s.html | 180 ++ functions_t.html | 112 + functions_type.html | 98 + functions_u.html | 86 + functions_v.html | 87 + functions_vars.html | 118 ++ functions_w.html | 94 + functions_~.html | 105 + globals.html | 195 ++ globals_vars.html | 195 ++ group__AsibotSolver.html | 106 + group__BasicCartesianControl.html | 122 ++ group__CartesianControlClient.html | 97 + group__CartesianControlServer.html | 103 + group__KdlSolver.html | 103 + group__KdlTreeSolver.html | 94 + group__KdlVectorConverterLib.html | 84 + group__KinematicRepresentationLib.html | 84 + group__ScrewTheoryLib.html | 229 +++ group__TinyMath.html | 84 + group__TrajGen.html | 101 + group__YarpPlugins.html | 119 ++ group__cartesianControlExample.html | 86 + group__exampleYarpTinyMath.html | 97 + group__ftCompensation.html | 94 + group__haarDetectionController.html | 97 + group__keyboardController.html | 97 + group__kinematics-dynamics-applications.html | 84 + group__kinematics-dynamics-examples.html | 95 + group__kinematics-dynamics-libraries.html | 109 + group__kinematics-dynamics-programs.html | 103 + group__kinematics-dynamics-tests.html | 109 + group__screwTheoryTrajectoryExample.html | 91 + group__streamingDeviceController.html | 115 ++ hierarchy.html | 169 ++ index.html | 197 ++ jquery.js | 35 + ...ewTheoryLib_2LogComponent_8hpp_source.html | 93 + ...sibotSolver_2LogComponent_8hpp_source.html | 93 + ...sianControl_2LogComponent_8hpp_source.html | 93 + ...ntrolClient_2LogComponent_8hpp_source.html | 93 + ...ntrolServer_2LogComponent_8hpp_source.html | 93 + ..._2KdlSolver_2LogComponent_8hpp_source.html | 94 + ...lTreeSolver_2LogComponent_8hpp_source.html | 93 + md_doc_kinematics_dynamics_install.html | 128 ++ md_doc_teo_post_install.html | 123 ++ menu.js | 51 + menudata.js | 93 + modules.html | 109 + namespacemembers.html | 157 ++ namespacemembers_enum.html | 88 + namespacemembers_func.html | 148 ++ namespaceroboticslab.html | 478 +++++ ...paceroboticslab_1_1KdlVectorConverter.html | 263 +++ ...spaceroboticslab_1_1KinRepresentation.html | 863 ++++++++ namespaceroboticslab_1_1test.html | 323 +++ namespaces.html | 153 ++ nav_f.png | Bin 0 -> 153 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes open.png | Bin 0 -> 123 bytes pages.html | 88 + ...nController_2LogComponent_8hpp_source.html | 93 + ...dController_2LogComponent_8hpp_source.html | 93 + ...eController_2LogComponent_8hpp_source.html | 93 + search/all_0.html | 37 + search/all_0.js | 22 + search/all_1.html | 37 + search/all_1.js | 8 + search/all_10.html | 37 + search/all_10.js | 21 + search/all_11.html | 37 + search/all_11.js | 35 + search/all_12.html | 37 + search/all_12.js | 18 + search/all_13.html | 37 + search/all_13.js | 4 + search/all_14.html | 37 + search/all_14.js | 47 + search/all_15.html | 37 + search/all_15.js | 7 + search/all_16.html | 37 + search/all_16.js | 4 + search/all_17.html | 37 + search/all_17.js | 4 + search/all_18.html | 37 + search/all_18.js | 11 + search/all_2.html | 37 + search/all_2.js | 32 + search/all_3.html | 37 + search/all_3.js | 11 + search/all_4.html | 37 + search/all_4.js | 21 + search/all_5.html | 37 + search/all_5.js | 12 + search/all_6.html | 37 + search/all_6.js | 20 + search/all_7.html | 37 + search/all_7.js | 6 + search/all_8.html | 37 + search/all_8.js | 15 + search/all_9.html | 37 + search/all_9.js | 8 + search/all_a.html | 37 + search/all_a.js | 18 + search/all_b.html | 37 + search/all_b.js | 5 + search/all_c.html | 37 + search/all_c.js | 15 + search/all_d.html | 37 + search/all_d.js | 5 + search/all_e.html | 37 + search/all_e.js | 8 + search/all_f.html | 37 + search/all_f.js | 17 + search/classes_0.html | 37 + search/classes_0.js | 10 + search/classes_1.html | 37 + search/classes_1.js | 5 + search/classes_2.html | 37 + search/classes_2.js | 17 + search/classes_3.html | 37 + search/classes_3.js | 5 + search/classes_4.html | 37 + search/classes_4.js | 4 + search/classes_5.html | 37 + search/classes_5.js | 4 + search/classes_6.html | 37 + search/classes_6.js | 6 + search/classes_7.html | 37 + search/classes_7.js | 9 + search/classes_8.html | 37 + search/classes_8.js | 5 + search/classes_9.html | 37 + search/classes_9.js | 4 + search/classes_a.html | 37 + search/classes_a.js | 5 + search/classes_b.html | 37 + search/classes_b.js | 13 + search/classes_c.html | 37 + search/classes_c.js | 5 + search/classes_d.html | 37 + search/classes_d.js | 13 + search/classes_e.html | 37 + search/classes_e.js | 5 + search/classes_f.html | 37 + search/classes_f.js | 4 + search/close.svg | 31 + search/enums_0.html | 37 + search/enums_0.js | 4 + search/enums_1.html | 37 + search/enums_1.js | 4 + search/enums_2.html | 37 + search/enums_2.js | 4 + search/enums_3.html | 37 + search/enums_3.js | 4 + search/enums_4.html | 37 + search/enums_4.js | 5 + search/enums_5.html | 37 + search/enums_5.js | 4 + search/enumvalues_0.html | 37 + search/enumvalues_0.js | 5 + search/enumvalues_1.html | 37 + search/enumvalues_1.js | 4 + search/enumvalues_2.html | 37 + search/enumvalues_2.js | 5 + search/enumvalues_3.html | 37 + search/enumvalues_3.js | 4 + search/enumvalues_4.html | 37 + search/enumvalues_4.js | 5 + search/enumvalues_5.html | 37 + search/enumvalues_5.js | 4 + search/enumvalues_6.html | 37 + search/enumvalues_6.js | 4 + search/enumvalues_7.html | 37 + search/enumvalues_7.js | 6 + search/enumvalues_8.html | 37 + search/enumvalues_8.js | 4 + search/enumvalues_9.html | 37 + search/enumvalues_9.js | 5 + search/files_0.html | 37 + search/files_0.js | 5 + search/functions_0.html | 37 + search/functions_0.js | 16 + search/functions_1.html | 37 + search/functions_1.js | 4 + search/functions_10.html | 37 + search/functions_10.js | 11 + search/functions_11.html | 37 + search/functions_11.js | 4 + search/functions_12.html | 37 + search/functions_12.js | 8 + search/functions_13.html | 37 + search/functions_13.js | 7 + search/functions_14.html | 37 + search/functions_14.js | 4 + search/functions_15.html | 37 + search/functions_15.js | 11 + search/functions_2.html | 37 + search/functions_2.js | 22 + search/functions_3.html | 37 + search/functions_3.js | 10 + search/functions_4.html | 37 + search/functions_4.js | 10 + search/functions_5.html | 37 + search/functions_5.js | 8 + search/functions_6.html | 37 + search/functions_6.js | 19 + search/functions_7.html | 37 + search/functions_7.js | 4 + search/functions_8.html | 37 + search/functions_8.js | 11 + search/functions_9.html | 37 + search/functions_9.js | 4 + search/functions_a.html | 37 + search/functions_a.js | 4 + search/functions_b.html | 37 + search/functions_b.js | 13 + search/functions_c.html | 37 + search/functions_c.js | 4 + search/functions_d.html | 37 + search/functions_d.js | 15 + search/functions_e.html | 37 + search/functions_e.js | 11 + search/functions_f.html | 37 + search/functions_f.js | 21 + search/groups_0.html | 37 + search/groups_0.js | 4 + search/groups_1.html | 37 + search/groups_1.js | 4 + search/groups_2.html | 37 + search/groups_2.js | 6 + search/groups_3.html | 37 + search/groups_3.js | 4 + search/groups_4.html | 37 + search/groups_4.js | 4 + search/groups_5.html | 37 + search/groups_5.js | 4 + search/groups_6.html | 37 + search/groups_6.js | 13 + search/groups_7.html | 37 + search/groups_7.js | 6 + search/groups_8.html | 37 + search/groups_8.js | 5 + search/groups_9.html | 37 + search/groups_9.js | 4 + search/mag_sel.svg | 74 + search/namespaces_0.html | 37 + search/namespaces_0.js | 7 + search/nomatches.html | 13 + search/pages_0.html | 37 + search/pages_0.js | 4 + search/pages_1.html | 37 + search/pages_1.js | 4 + search/pages_2.html | 37 + search/pages_2.js | 4 + search/search.css | 257 +++ search/search.js | 816 ++++++++ search/search_l.png | Bin 0 -> 567 bytes search/search_m.png | Bin 0 -> 158 bytes search/search_r.png | Bin 0 -> 553 bytes search/searchdata.js | 45 + search/typedefs_0.html | 37 + search/typedefs_0.js | 7 + search/typedefs_1.html | 37 + search/typedefs_1.js | 5 + search/variables_0.html | 37 + search/variables_0.js | 4 + search/variables_1.html | 37 + search/variables_1.js | 10 + search/variables_2.html | 37 + search/variables_2.js | 4 + search/variables_3.html | 37 + search/variables_3.js | 4 + search/variables_4.html | 37 + search/variables_4.js | 4 + search/variables_5.html | 37 + search/variables_5.js | 4 + search/variables_6.html | 37 + search/variables_6.js | 42 + splitbar.png | Bin 0 -> 314 bytes ..._1AsibotConfiguration_1_1Pose-members.html | 107 + ...icslab_1_1AsibotConfiguration_1_1Pose.html | 163 ++ ...sibotSolver_1_1AsibotTcpFrame-members.html | 90 + ...lab_1_1AsibotSolver_1_1AsibotTcpFrame.html | 101 + ...ryIkProblemBuilder_1_1PoeTerm-members.html | 91 + ...crewTheoryIkProblemBuilder_1_1PoeTerm.html | 106 + ...oryTest_1_1compare__solutions-members.html | 89 + ...ScrewTheoryTest_1_1compare__solutions.html | 98 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_b.png | Bin 0 -> 169 bytes tab_h.png | Bin 0 -> 177 bytes tab_s.png | Bin 0 -> 184 bytes tabs.css | 1 + 586 files changed, 55586 insertions(+) create mode 100644 AsibotConfiguration_8hpp_source.html create mode 100644 AsibotSolver_8hpp_source.html create mode 100644 BasicCartesianControl_8hpp_source.html create mode 100644 CartesianControlClient_8hpp_source.html create mode 100644 CartesianControlServer_8hpp_source.html create mode 100644 CentroidTransform_8hpp_source.html create mode 100644 ChainFkSolverPos__ST_8hpp_source.html create mode 100644 ChainIkSolverPos__ID_8hpp_source.html create mode 100644 ChainIkSolverPos__ST_8hpp_source.html create mode 100644 ConfigurationSelector_8hpp_source.html create mode 100644 FtCompensation_8hpp_source.html create mode 100644 GrabberResponder_8hpp_source.html create mode 100644 HaarDetectionController_8hpp_source.html create mode 100644 ICartesianControl_8h.html create mode 100644 ICartesianControl_8h_source.html create mode 100644 ICartesianSolver_8h.html create mode 100644 ICartesianSolver_8h_source.html create mode 100644 KdlSolver_8hpp_source.html create mode 100644 KdlTreeSolver_8hpp_source.html create mode 100644 KdlVectorConverter_8hpp_source.html create mode 100644 KeyboardController_8hpp_source.html create mode 100644 KinematicRepresentation_8hpp_source.html create mode 100644 LeapMotionSensorDevice_8hpp_source.html create mode 100644 LinearTrajectoryThread_8hpp_source.html create mode 100644 MatrixExponential_8hpp_source.html create mode 100644 ProductOfExponentials_8hpp_source.html create mode 100644 ScrewTheoryIkProblem_8hpp_source.html create mode 100644 ScrewTheoryIkSubproblems_8hpp_source.html create mode 100644 ScrewTheoryTools_8hpp_source.html create mode 100644 SpnavSensorDevice_8hpp_source.html create mode 100644 StreamingDeviceController_8hpp_source.html create mode 100644 StreamingDevice_8hpp_source.html create mode 100644 TrajGen_8hpp_source.html create mode 100644 TrajectoryThread_8hpp_source.html create mode 100644 WiimoteSensorDevice_8hpp_source.html create mode 100644 YarpTinyMath_8hpp_source.html create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bdwn.png create mode 100644 citelist.html create mode 100644 classOrderOneTraj-members.html create mode 100644 classOrderOneTraj.html create mode 100644 classOrderOneTraj.png create mode 100644 classOrderThreeTraj-members.html create mode 100644 classOrderThreeTraj.html create mode 100644 classOrderThreeTraj.png create mode 100644 classTraj-members.html create mode 100644 classTraj.html create mode 100644 classTraj.png create mode 100644 classTrajectoryThread-members.html create mode 100644 classTrajectoryThread.html create mode 100644 classTrajectoryThread.png create mode 100644 classes.html create mode 100644 classroboticslab_1_1AsibotConfiguration-members.html create mode 100644 classroboticslab_1_1AsibotConfiguration.html create mode 100644 classroboticslab_1_1AsibotConfiguration.png create mode 100644 classroboticslab_1_1AsibotConfigurationFactory-members.html create mode 100644 classroboticslab_1_1AsibotConfigurationFactory.html create mode 100644 classroboticslab_1_1AsibotConfigurationFactory.png create mode 100644 classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement-members.html create mode 100644 classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html create mode 100644 classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.png create mode 100644 classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory-members.html create mode 100644 classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html create mode 100644 classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.png create mode 100644 classroboticslab_1_1AsibotSolver-members.html create mode 100644 classroboticslab_1_1AsibotSolver.html create mode 100644 classroboticslab_1_1AsibotSolver.png create mode 100644 classroboticslab_1_1BasicCartesianControl-members.html create mode 100644 classroboticslab_1_1BasicCartesianControl.html create mode 100644 classroboticslab_1_1BasicCartesianControl.png create mode 100644 classroboticslab_1_1BasicCartesianControl_1_1StateWatcher-members.html create mode 100644 classroboticslab_1_1BasicCartesianControl_1_1StateWatcher.html create mode 100644 classroboticslab_1_1CartesianControlClient-members.html create mode 100644 classroboticslab_1_1CartesianControlClient.html create mode 100644 classroboticslab_1_1CartesianControlClient.png create mode 100644 classroboticslab_1_1CartesianControlServer-members.html create mode 100644 classroboticslab_1_1CartesianControlServer.html create mode 100644 classroboticslab_1_1CartesianControlServer.png create mode 100644 classroboticslab_1_1CentroidTransform-members.html create mode 100644 classroboticslab_1_1CentroidTransform.html create mode 100644 classroboticslab_1_1ChainFkSolverPos__ST-members.html create mode 100644 classroboticslab_1_1ChainFkSolverPos__ST.html create mode 100644 classroboticslab_1_1ChainFkSolverPos__ST.png create mode 100644 classroboticslab_1_1ChainIkSolverPos__ID-members.html create mode 100644 classroboticslab_1_1ChainIkSolverPos__ID.html create mode 100644 classroboticslab_1_1ChainIkSolverPos__ID.png create mode 100644 classroboticslab_1_1ChainIkSolverPos__ST-members.html create mode 100644 classroboticslab_1_1ChainIkSolverPos__ST.html create mode 100644 classroboticslab_1_1ChainIkSolverPos__ST.png create mode 100644 classroboticslab_1_1ConfigurationSelector-members.html create mode 100644 classroboticslab_1_1ConfigurationSelector.html create mode 100644 classroboticslab_1_1ConfigurationSelector.png create mode 100644 classroboticslab_1_1ConfigurationSelectorFactory-members.html create mode 100644 classroboticslab_1_1ConfigurationSelectorFactory.html create mode 100644 classroboticslab_1_1ConfigurationSelectorFactory.png create mode 100644 classroboticslab_1_1ConfigurationSelectorHumanoidGait-members.html create mode 100644 classroboticslab_1_1ConfigurationSelectorHumanoidGait.html create mode 100644 classroboticslab_1_1ConfigurationSelectorHumanoidGait.png create mode 100644 classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory-members.html create mode 100644 classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html create mode 100644 classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.png create mode 100644 classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement-members.html create mode 100644 classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html create mode 100644 classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.png create mode 100644 classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory-members.html create mode 100644 classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html create mode 100644 classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.png create mode 100644 classroboticslab_1_1ConfigurationSelector_1_1Configuration-members.html create mode 100644 classroboticslab_1_1ConfigurationSelector_1_1Configuration.html create mode 100644 classroboticslab_1_1FkStreamResponder-members.html create mode 100644 classroboticslab_1_1FkStreamResponder.html create mode 100644 classroboticslab_1_1FkStreamResponder.png create mode 100644 classroboticslab_1_1FtCompensation-members.html create mode 100644 classroboticslab_1_1FtCompensation.html create mode 100644 classroboticslab_1_1FtCompensation.png create mode 100644 classroboticslab_1_1GrabberResponder-members.html create mode 100644 classroboticslab_1_1GrabberResponder.html create mode 100644 classroboticslab_1_1GrabberResponder.png create mode 100644 classroboticslab_1_1HaarDetectionController-members.html create mode 100644 classroboticslab_1_1HaarDetectionController.html create mode 100644 classroboticslab_1_1HaarDetectionController.png create mode 100644 classroboticslab_1_1ICartesianControl-members.html create mode 100644 classroboticslab_1_1ICartesianControl.html create mode 100644 classroboticslab_1_1ICartesianControl.png create mode 100644 classroboticslab_1_1ICartesianSolver-members.html create mode 100644 classroboticslab_1_1ICartesianSolver.html create mode 100644 classroboticslab_1_1ICartesianSolver.png create mode 100644 classroboticslab_1_1InvalidDevice-members.html create mode 100644 classroboticslab_1_1InvalidDevice.html create mode 100644 classroboticslab_1_1InvalidDevice.png create mode 100644 classroboticslab_1_1KdlSolver-members.html create mode 100644 classroboticslab_1_1KdlSolver.html create mode 100644 classroboticslab_1_1KdlSolver.png create mode 100644 classroboticslab_1_1KdlTreeSolver-members.html create mode 100644 classroboticslab_1_1KdlTreeSolver.html create mode 100644 classroboticslab_1_1KdlTreeSolver.png create mode 100644 classroboticslab_1_1KeyboardController-members.html create mode 100644 classroboticslab_1_1KeyboardController.html create mode 100644 classroboticslab_1_1KeyboardController.png create mode 100644 classroboticslab_1_1LeapMotionSensorDevice-members.html create mode 100644 classroboticslab_1_1LeapMotionSensorDevice.html create mode 100644 classroboticslab_1_1LeapMotionSensorDevice.png create mode 100644 classroboticslab_1_1LinearTrajectoryThread-members.html create mode 100644 classroboticslab_1_1LinearTrajectoryThread.html create mode 100644 classroboticslab_1_1LinearTrajectoryThread.png create mode 100644 classroboticslab_1_1MatrixExponential-members.html create mode 100644 classroboticslab_1_1MatrixExponential.html create mode 100644 classroboticslab_1_1PadenKahanOne-members.html create mode 100644 classroboticslab_1_1PadenKahanOne.html create mode 100644 classroboticslab_1_1PadenKahanOne.png create mode 100644 classroboticslab_1_1PadenKahanThree-members.html create mode 100644 classroboticslab_1_1PadenKahanThree.html create mode 100644 classroboticslab_1_1PadenKahanThree.png create mode 100644 classroboticslab_1_1PadenKahanTwo-members.html create mode 100644 classroboticslab_1_1PadenKahanTwo.html create mode 100644 classroboticslab_1_1PadenKahanTwo.png create mode 100644 classroboticslab_1_1PardosGotorFour-members.html create mode 100644 classroboticslab_1_1PardosGotorFour.html create mode 100644 classroboticslab_1_1PardosGotorFour.png create mode 100644 classroboticslab_1_1PardosGotorOne-members.html create mode 100644 classroboticslab_1_1PardosGotorOne.html create mode 100644 classroboticslab_1_1PardosGotorOne.png create mode 100644 classroboticslab_1_1PardosGotorThree-members.html create mode 100644 classroboticslab_1_1PardosGotorThree.html create mode 100644 classroboticslab_1_1PardosGotorThree.png create mode 100644 classroboticslab_1_1PardosGotorTwo-members.html create mode 100644 classroboticslab_1_1PardosGotorTwo.html create mode 100644 classroboticslab_1_1PardosGotorTwo.png create mode 100644 classroboticslab_1_1PoeExpression-members.html create mode 100644 classroboticslab_1_1PoeExpression.html create mode 100644 classroboticslab_1_1RpcResponder-members.html create mode 100644 classroboticslab_1_1RpcResponder.html create mode 100644 classroboticslab_1_1RpcResponder.png create mode 100644 classroboticslab_1_1RpcTransformResponder-members.html create mode 100644 classroboticslab_1_1RpcTransformResponder.html create mode 100644 classroboticslab_1_1RpcTransformResponder.png create mode 100644 classroboticslab_1_1ScrewTheoryIkProblem-members.html create mode 100644 classroboticslab_1_1ScrewTheoryIkProblem.html create mode 100644 classroboticslab_1_1ScrewTheoryIkProblemBuilder-members.html create mode 100644 classroboticslab_1_1ScrewTheoryIkProblemBuilder.html create mode 100644 classroboticslab_1_1ScrewTheoryIkSubproblem-members.html create mode 100644 classroboticslab_1_1ScrewTheoryIkSubproblem.html create mode 100644 classroboticslab_1_1ScrewTheoryIkSubproblem.png create mode 100644 classroboticslab_1_1SpnavSensorDevice-members.html create mode 100644 classroboticslab_1_1SpnavSensorDevice.html create mode 100644 classroboticslab_1_1SpnavSensorDevice.png create mode 100644 classroboticslab_1_1StreamResponder-members.html create mode 100644 classroboticslab_1_1StreamResponder.html create mode 100644 classroboticslab_1_1StreamResponder.png create mode 100644 classroboticslab_1_1StreamingDevice-members.html create mode 100644 classroboticslab_1_1StreamingDevice.html create mode 100644 classroboticslab_1_1StreamingDevice.png create mode 100644 classroboticslab_1_1StreamingDeviceController-members.html create mode 100644 classroboticslab_1_1StreamingDeviceController.html create mode 100644 classroboticslab_1_1StreamingDeviceController.png create mode 100644 classroboticslab_1_1StreamingDeviceFactory-members.html create mode 100644 classroboticslab_1_1StreamingDeviceFactory.html create mode 100644 classroboticslab_1_1WiimoteSensorDevice-members.html create mode 100644 classroboticslab_1_1WiimoteSensorDevice.html create mode 100644 classroboticslab_1_1WiimoteSensorDevice.png create mode 100644 classroboticslab_1_1test_1_1AsibotSolverTestFromFile-members.html create mode 100644 classroboticslab_1_1test_1_1AsibotSolverTestFromFile.html create mode 100644 classroboticslab_1_1test_1_1AsibotSolverTestFromFile.png create mode 100644 classroboticslab_1_1test_1_1BasicCartesianControlTest-members.html create mode 100644 classroboticslab_1_1test_1_1BasicCartesianControlTest.html create mode 100644 classroboticslab_1_1test_1_1BasicCartesianControlTest.png create mode 100644 classroboticslab_1_1test_1_1KdlSolverTest-members.html create mode 100644 classroboticslab_1_1test_1_1KdlSolverTest.html create mode 100644 classroboticslab_1_1test_1_1KdlSolverTest.png create mode 100644 classroboticslab_1_1test_1_1KdlSolverTestFromFile-members.html create mode 100644 classroboticslab_1_1test_1_1KdlSolverTestFromFile.html create mode 100644 classroboticslab_1_1test_1_1KdlSolverTestFromFile.png create mode 100644 classroboticslab_1_1test_1_1KinRepresentationTest-members.html create mode 100644 classroboticslab_1_1test_1_1KinRepresentationTest.html create mode 100644 classroboticslab_1_1test_1_1KinRepresentationTest.png create mode 100644 classroboticslab_1_1test_1_1ScrewTheoryTest-members.html create mode 100644 classroboticslab_1_1test_1_1ScrewTheoryTest.html create mode 100644 classroboticslab_1_1test_1_1ScrewTheoryTest.png create mode 100644 closed.png create mode 100644 dir_1309cee196689adea45d11f37b8ed78d.html create mode 100644 dir_15768b185b6e8b816adf0c89b30bfe65.html create mode 100644 dir_17d4fdefd982442a79427fe9d98568ae.html create mode 100644 dir_1d6bf2fb1d016ec6b197455d198424da.html create mode 100644 dir_25c7435138c3ee6ac4c9babe8db7ecf9.html create mode 100644 dir_387a94d47062d4e808cee3de63065fcd.html create mode 100644 dir_487dfb5d6e3e441bbdba0aef32150596.html create mode 100644 dir_49e6bd22918cee17ddc14df5c827b459.html create mode 100644 dir_4e03118d576dd8e71b5dbe7081ce822d.html create mode 100644 dir_4f22d2c14b4bbce8870d40d37a8ebee2.html create mode 100644 dir_51393f38608496e2be890df69ecb13f1.html create mode 100644 dir_59425e443f801f1f2fd8bbe4959a3ccf.html create mode 100644 dir_75b15c0a6e736aa4482428563186dcc3.html create mode 100644 dir_7b0a5d1507c7f681cbfa1deb5990c6ea.html create mode 100644 dir_8976e5d03119516083eaca3ddca61311.html create mode 100644 dir_a52c22a8b79e169194d9c4bbc7c46367.html create mode 100644 dir_af0bcd1d9c8bf0be37b473fa7c916aed.html create mode 100644 dir_bbdaf73c7839257653cfce0d61f80663.html create mode 100644 dir_bc0718b08fb2015b8e59c47b2805f60c.html create mode 100644 dir_bfeb62c1259859bb2c79e7bf678570c2.html create mode 100644 dir_d050070cc3e4bbd91d897ff8856046e0.html create mode 100644 dir_d28a4824dc47e487b107a5db32ef43c4.html create mode 100644 dir_dfab584b716eccfc00a175735f16fb62.html create mode 100644 dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 dir_f528a5afad561ac522bac3a41785be2e.html create mode 100644 dir_f98f57c538677273d6e3d52c55355c28.html create mode 100644 doc.png create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_e.html create mode 100644 functions_enum.html create mode 100644 functions_eval.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_g.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_j.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_p.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_t.html create mode 100644 functions_func_u.html create mode 100644 functions_func_v.html create mode 100644 functions_func_w.html create mode 100644 functions_func_~.html create mode 100644 functions_g.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_j.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_r.html create mode 100644 functions_s.html create mode 100644 functions_t.html create mode 100644 functions_type.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_vars.html create mode 100644 functions_w.html create mode 100644 functions_~.html create mode 100644 globals.html create mode 100644 globals_vars.html create mode 100644 group__AsibotSolver.html create mode 100644 group__BasicCartesianControl.html create mode 100644 group__CartesianControlClient.html create mode 100644 group__CartesianControlServer.html create mode 100644 group__KdlSolver.html create mode 100644 group__KdlTreeSolver.html create mode 100644 group__KdlVectorConverterLib.html create mode 100644 group__KinematicRepresentationLib.html create mode 100644 group__ScrewTheoryLib.html create mode 100644 group__TinyMath.html create mode 100644 group__TrajGen.html create mode 100644 group__YarpPlugins.html create mode 100644 group__cartesianControlExample.html create mode 100644 group__exampleYarpTinyMath.html create mode 100644 group__ftCompensation.html create mode 100644 group__haarDetectionController.html create mode 100644 group__keyboardController.html create mode 100644 group__kinematics-dynamics-applications.html create mode 100644 group__kinematics-dynamics-examples.html create mode 100644 group__kinematics-dynamics-libraries.html create mode 100644 group__kinematics-dynamics-programs.html create mode 100644 group__kinematics-dynamics-tests.html create mode 100644 group__screwTheoryTrajectoryExample.html create mode 100644 group__streamingDeviceController.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 jquery.js create mode 100644 libraries_2ScrewTheoryLib_2LogComponent_8hpp_source.html create mode 100644 libraries_2YarpPlugins_2AsibotSolver_2LogComponent_8hpp_source.html create mode 100644 libraries_2YarpPlugins_2BasicCartesianControl_2LogComponent_8hpp_source.html create mode 100644 libraries_2YarpPlugins_2CartesianControlClient_2LogComponent_8hpp_source.html create mode 100644 libraries_2YarpPlugins_2CartesianControlServer_2LogComponent_8hpp_source.html create mode 100644 libraries_2YarpPlugins_2KdlSolver_2LogComponent_8hpp_source.html create mode 100644 libraries_2YarpPlugins_2KdlTreeSolver_2LogComponent_8hpp_source.html create mode 100644 md_doc_kinematics_dynamics_install.html create mode 100644 md_doc_teo_post_install.html create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 modules.html create mode 100644 namespacemembers.html create mode 100644 namespacemembers_enum.html create mode 100644 namespacemembers_func.html create mode 100644 namespaceroboticslab.html create mode 100644 namespaceroboticslab_1_1KdlVectorConverter.html create mode 100644 namespaceroboticslab_1_1KinRepresentation.html create mode 100644 namespaceroboticslab_1_1test.html create mode 100644 namespaces.html create mode 100644 nav_f.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 open.png create mode 100644 pages.html create mode 100644 programs_2haarDetectionController_2LogComponent_8hpp_source.html create mode 100644 programs_2keyboardController_2LogComponent_8hpp_source.html create mode 100644 programs_2streamingDeviceController_2LogComponent_8hpp_source.html create mode 100644 search/all_0.html create mode 100644 search/all_0.js create mode 100644 search/all_1.html create mode 100644 search/all_1.js create mode 100644 search/all_10.html create mode 100644 search/all_10.js create mode 100644 search/all_11.html create mode 100644 search/all_11.js create mode 100644 search/all_12.html create mode 100644 search/all_12.js create mode 100644 search/all_13.html create mode 100644 search/all_13.js create mode 100644 search/all_14.html create mode 100644 search/all_14.js create mode 100644 search/all_15.html create mode 100644 search/all_15.js create mode 100644 search/all_16.html create mode 100644 search/all_16.js create mode 100644 search/all_17.html create mode 100644 search/all_17.js create mode 100644 search/all_18.html create mode 100644 search/all_18.js create mode 100644 search/all_2.html create mode 100644 search/all_2.js create mode 100644 search/all_3.html create mode 100644 search/all_3.js create mode 100644 search/all_4.html create mode 100644 search/all_4.js create mode 100644 search/all_5.html create mode 100644 search/all_5.js create mode 100644 search/all_6.html create mode 100644 search/all_6.js create mode 100644 search/all_7.html create mode 100644 search/all_7.js create mode 100644 search/all_8.html create mode 100644 search/all_8.js create mode 100644 search/all_9.html create mode 100644 search/all_9.js create mode 100644 search/all_a.html create mode 100644 search/all_a.js create mode 100644 search/all_b.html create mode 100644 search/all_b.js create mode 100644 search/all_c.html create mode 100644 search/all_c.js create mode 100644 search/all_d.html create mode 100644 search/all_d.js create mode 100644 search/all_e.html create mode 100644 search/all_e.js create mode 100644 search/all_f.html create mode 100644 search/all_f.js create mode 100644 search/classes_0.html create mode 100644 search/classes_0.js create mode 100644 search/classes_1.html create mode 100644 search/classes_1.js create mode 100644 search/classes_2.html create mode 100644 search/classes_2.js create mode 100644 search/classes_3.html create mode 100644 search/classes_3.js create mode 100644 search/classes_4.html create mode 100644 search/classes_4.js create mode 100644 search/classes_5.html create mode 100644 search/classes_5.js create mode 100644 search/classes_6.html create mode 100644 search/classes_6.js create mode 100644 search/classes_7.html create mode 100644 search/classes_7.js create mode 100644 search/classes_8.html create mode 100644 search/classes_8.js create mode 100644 search/classes_9.html create mode 100644 search/classes_9.js create mode 100644 search/classes_a.html create mode 100644 search/classes_a.js create mode 100644 search/classes_b.html create mode 100644 search/classes_b.js create mode 100644 search/classes_c.html create mode 100644 search/classes_c.js create mode 100644 search/classes_d.html create mode 100644 search/classes_d.js create mode 100644 search/classes_e.html create mode 100644 search/classes_e.js create mode 100644 search/classes_f.html create mode 100644 search/classes_f.js create mode 100644 search/close.svg create mode 100644 search/enums_0.html create mode 100644 search/enums_0.js create mode 100644 search/enums_1.html create mode 100644 search/enums_1.js create mode 100644 search/enums_2.html create mode 100644 search/enums_2.js create mode 100644 search/enums_3.html create mode 100644 search/enums_3.js create mode 100644 search/enums_4.html create mode 100644 search/enums_4.js create mode 100644 search/enums_5.html create mode 100644 search/enums_5.js create mode 100644 search/enumvalues_0.html create mode 100644 search/enumvalues_0.js create mode 100644 search/enumvalues_1.html create mode 100644 search/enumvalues_1.js create mode 100644 search/enumvalues_2.html create mode 100644 search/enumvalues_2.js create mode 100644 search/enumvalues_3.html create mode 100644 search/enumvalues_3.js create mode 100644 search/enumvalues_4.html create mode 100644 search/enumvalues_4.js create mode 100644 search/enumvalues_5.html create mode 100644 search/enumvalues_5.js create mode 100644 search/enumvalues_6.html create mode 100644 search/enumvalues_6.js create mode 100644 search/enumvalues_7.html create mode 100644 search/enumvalues_7.js create mode 100644 search/enumvalues_8.html create mode 100644 search/enumvalues_8.js create mode 100644 search/enumvalues_9.html create mode 100644 search/enumvalues_9.js create mode 100644 search/files_0.html create mode 100644 search/files_0.js create mode 100644 search/functions_0.html create mode 100644 search/functions_0.js create mode 100644 search/functions_1.html create mode 100644 search/functions_1.js create mode 100644 search/functions_10.html create mode 100644 search/functions_10.js create mode 100644 search/functions_11.html create mode 100644 search/functions_11.js create mode 100644 search/functions_12.html create mode 100644 search/functions_12.js create mode 100644 search/functions_13.html create mode 100644 search/functions_13.js create mode 100644 search/functions_14.html create mode 100644 search/functions_14.js create mode 100644 search/functions_15.html create mode 100644 search/functions_15.js create mode 100644 search/functions_2.html create mode 100644 search/functions_2.js create mode 100644 search/functions_3.html create mode 100644 search/functions_3.js create mode 100644 search/functions_4.html create mode 100644 search/functions_4.js create mode 100644 search/functions_5.html create mode 100644 search/functions_5.js create mode 100644 search/functions_6.html create mode 100644 search/functions_6.js create mode 100644 search/functions_7.html create mode 100644 search/functions_7.js create mode 100644 search/functions_8.html create mode 100644 search/functions_8.js create mode 100644 search/functions_9.html create mode 100644 search/functions_9.js create mode 100644 search/functions_a.html create mode 100644 search/functions_a.js create mode 100644 search/functions_b.html create mode 100644 search/functions_b.js create mode 100644 search/functions_c.html create mode 100644 search/functions_c.js create mode 100644 search/functions_d.html create mode 100644 search/functions_d.js create mode 100644 search/functions_e.html create mode 100644 search/functions_e.js create mode 100644 search/functions_f.html create mode 100644 search/functions_f.js create mode 100644 search/groups_0.html create mode 100644 search/groups_0.js create mode 100644 search/groups_1.html create mode 100644 search/groups_1.js create mode 100644 search/groups_2.html create mode 100644 search/groups_2.js create mode 100644 search/groups_3.html create mode 100644 search/groups_3.js create mode 100644 search/groups_4.html create mode 100644 search/groups_4.js create mode 100644 search/groups_5.html create mode 100644 search/groups_5.js create mode 100644 search/groups_6.html create mode 100644 search/groups_6.js create mode 100644 search/groups_7.html create mode 100644 search/groups_7.js create mode 100644 search/groups_8.html create mode 100644 search/groups_8.js create mode 100644 search/groups_9.html create mode 100644 search/groups_9.js create mode 100644 search/mag_sel.svg create mode 100644 search/namespaces_0.html create mode 100644 search/namespaces_0.js create mode 100644 search/nomatches.html create mode 100644 search/pages_0.html create mode 100644 search/pages_0.js create mode 100644 search/pages_1.html create mode 100644 search/pages_1.js create mode 100644 search/pages_2.html create mode 100644 search/pages_2.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/search_l.png create mode 100644 search/search_m.png create mode 100644 search/search_r.png create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.html create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.html create mode 100644 search/typedefs_1.js create mode 100644 search/variables_0.html create mode 100644 search/variables_0.js create mode 100644 search/variables_1.html create mode 100644 search/variables_1.js create mode 100644 search/variables_2.html create mode 100644 search/variables_2.js create mode 100644 search/variables_3.html create mode 100644 search/variables_3.js create mode 100644 search/variables_4.html create mode 100644 search/variables_4.js create mode 100644 search/variables_5.html create mode 100644 search/variables_5.js create mode 100644 search/variables_6.html create mode 100644 search/variables_6.js create mode 100644 splitbar.png create mode 100644 structroboticslab_1_1AsibotConfiguration_1_1Pose-members.html create mode 100644 structroboticslab_1_1AsibotConfiguration_1_1Pose.html create mode 100644 structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame-members.html create mode 100644 structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame.html create mode 100644 structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm-members.html create mode 100644 structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm.html create mode 100644 structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions-members.html create mode 100644 structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_b.png create mode 100644 tab_h.png create mode 100644 tab_s.png create mode 100644 tabs.css diff --git a/AsibotConfiguration_8hpp_source.html b/AsibotConfiguration_8hpp_source.html new file mode 100644 index 000000000..5f44fd82a --- /dev/null +++ b/AsibotConfiguration_8hpp_source.html @@ -0,0 +1,224 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/AsibotSolver/AsibotConfiguration.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AsibotConfiguration.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __ASIBOT_CONFIGURATION_HPP__
+
4 #define __ASIBOT_CONFIGURATION_HPP__
+
5 
+
6 #include <vector>
+
7 #include <string>
+
8 
+
9 namespace roboticslab
+
10 {
+
11 
+ +
20 {
+
21 public:
+
23  using JointsIn = const std::vector<double> &;
+
24 
+
26  using JointsOut = std::vector<double> &;
+
27 
+ +
34  : _qMin(qMin), _qMax(qMax)
+
35  {}
+
36 
+
38  virtual ~AsibotConfiguration() = default;
+
39 
+
57  virtual bool configure(double q1, double q2u, double q2d, double q3, double q4u, double q4d, double q5);
+
58 
+
64  virtual bool findOptimalConfiguration(JointsIn qGuess) = 0;
+
65 
+
70  virtual void retrieveAngles(JointsOut q) const
+
71  {
+
72  optimalPose.retrieveAngles(q);
+
73  }
+
74 
+
75 protected:
+
79  struct Pose
+
80  {
+
82  enum orientation { FORWARD, REVERSED };
+
83 
+
85  enum elbow { UP, DOWN };
+
86 
+
88  Pose()
+
89  : _q1(0.0), _q2(0.0), _q3(0.0), _q4(0.0), _q5(0.0), valid(true), _orient(FORWARD), _elb(UP)
+
90  {}
+
91 
+
93  void storeAngles(double q1, double q2, double q3, double q4, double q5, orientation orient, elbow elb);
+
94 
+
96  bool checkJointsInLimits(JointsIn qMin, JointsIn qMax) const;
+
97 
+
99  void retrieveAngles(JointsOut q) const;
+
100 
+
102  std::string toString() const;
+
103 
+
104  double _q1, _q2, _q3, _q4, _q5;
+
105  bool valid;
+
106 
+
107  orientation _orient;
+
108  elbow _elb;
+
109  };
+
110 
+
111  JointsIn _qMin, _qMax;
+
112 
+
113  Pose optimalPose;
+
114 
+
115  Pose forwardElbowUp;
+
116  Pose forwardElbowDown;
+
117  Pose reversedElbowUp;
+
118  Pose reversedElbowDown;
+
119 };
+
120 
+ +
132 {
+
133 public:
+ +
140  : AsibotConfiguration(qMin, qMax)
+
141  {}
+
142 
+
143  bool findOptimalConfiguration(JointsIn qGuess) override;
+
144 
+
145 private:
+
147  std::vector<double> getDiffs(JointsIn qGuess, const Pose & pose);
+
148 };
+
149 
+ +
158 {
+
159 public:
+
164  virtual AsibotConfiguration * create() const = 0;
+
165  virtual ~AsibotConfigurationFactory() = default;
+
166 
+
167 protected:
+ +
174  : _qMin(qMin), _qMax(qMax)
+
175  {}
+
176 
+
177  AsibotConfiguration::JointsIn _qMin, _qMax;
+
178 };
+
179 
+ +
187 {
+
188 public:
+ +
195  : AsibotConfigurationFactory(qMin, qMax)
+
196  {}
+
197 
+
198  AsibotConfiguration * create() const override
+
199  {
+ +
201  }
+
202 };
+
203 
+
204 } // namespace roboticslab
+
205 
+
206 #endif // __ASIBOT_CONFIGURATION_HPP__
+
Base factory class for AsibotConfiguration.
Definition: AsibotConfiguration.hpp:158
+
AsibotConfigurationFactory(AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)
Constructor.
Definition: AsibotConfiguration.hpp:173
+
virtual AsibotConfiguration * create() const =0
Creates an instance of the concrete class.
+
Implementation factory class for AsibotConfigurationLeastOverallAngularDisplacement.
Definition: AsibotConfiguration.hpp:187
+
AsibotConfiguration * create() const override
Creates an instance of the concrete class.
Definition: AsibotConfiguration.hpp:198
+
AsibotConfigurationLeastOverallAngularDisplacementFactory(AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)
Constructor.
Definition: AsibotConfiguration.hpp:194
+
IK solver configuration strategy selector based on the overall angle displacement of all joints.
Definition: AsibotConfiguration.hpp:132
+
std::vector< double > getDiffs(JointsIn qGuess, const Pose &pose)
Obtains vector of differences between current and desired joint angles [deg].
Definition: AsibotConfigurationLeastOverallAngularDisplacement.cpp:85
+
AsibotConfigurationLeastOverallAngularDisplacement(JointsIn qMin, JointsIn qMax)
Constructor.
Definition: AsibotConfiguration.hpp:139
+
bool findOptimalConfiguration(JointsIn qGuess) override
Analyzes available configurations and selects the optimal one.
Definition: AsibotConfigurationLeastOverallAngularDisplacement.cpp:16
+
Abstract base class for a robot configuration strategy selector.
Definition: AsibotConfiguration.hpp:20
+
virtual ~AsibotConfiguration()=default
Destructor.
+
virtual bool findOptimalConfiguration(JointsIn qGuess)=0
Analyzes available configurations and selects the optimal one.
+
AsibotConfiguration(JointsIn qMin, JointsIn qMax)
Constructor.
Definition: AsibotConfiguration.hpp:33
+
virtual bool configure(double q1, double q2u, double q2d, double q3, double q4u, double q4d, double q5)
Stores initial values for a specific pose.
Definition: AsibotConfiguration.cpp:47
+
virtual void retrieveAngles(JointsOut q) const
Queries computed angles for the optimal configuration.
Definition: AsibotConfiguration.hpp:70
+
const std::vector< double > & JointsIn
Const vector of joint angles (input parameter).
Definition: AsibotConfiguration.hpp:23
+
std::vector< double > & JointsOut
Vector of joint angles (output parameter).
Definition: AsibotConfiguration.hpp:26
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
Helper class to store a specific robot configuration.
Definition: AsibotConfiguration.hpp:80
+
void retrieveAngles(JointsOut q) const
Returns stored angles.
Definition: AsibotConfiguration.cpp:126
+
bool checkJointsInLimits(JointsIn qMin, JointsIn qMax) const
Checks whether current configuration is reachable.
Definition: AsibotConfiguration.cpp:107
+
void storeAngles(double q1, double q2, double q3, double q4, double q5, orientation orient, elbow elb)
Initializes angle values (in degrees).
Definition: AsibotConfiguration.cpp:95
+
orientation
Orientation of axis 1 ('forward' or 180ยบ offset).
Definition: AsibotConfiguration.hpp:82
+
Pose()
Constructor.
Definition: AsibotConfiguration.hpp:88
+
elbow
Orientation of axes 2-3 (elbow up/down).
Definition: AsibotConfiguration.hpp:85
+
std::string toString() const
Serializes stored data.
Definition: AsibotConfiguration.cpp:131
+
+ + + + diff --git a/AsibotSolver_8hpp_source.html b/AsibotSolver_8hpp_source.html new file mode 100644 index 000000000..b84c4c18c --- /dev/null +++ b/AsibotSolver_8hpp_source.html @@ -0,0 +1,195 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/AsibotSolver/AsibotSolver.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AsibotSolver.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __ASIBOT_SOLVER_HPP__
+
4 #define __ASIBOT_SOLVER_HPP__
+
5 
+
6 #include <mutex>
+
7 #include <vector>
+
8 
+
9 #include <yarp/os/Searchable.h>
+
10 #include <yarp/dev/DeviceDriver.h>
+
11 #include <yarp/sig/Matrix.h>
+
12 
+
13 #include "AsibotConfiguration.hpp"
+
14 #include "ICartesianSolver.h"
+
15 
+
16 namespace roboticslab
+
17 {
+
18 
+
30 class AsibotSolver : public yarp::dev::DeviceDriver,
+
31  public ICartesianSolver
+
32 {
+
33 public:
+
34  // -------- ICartesianSolver declarations. Implementation in ICartesianSolverImpl.cpp --------
+
35 
+
36  // Get number of joints for which the solver has been configured.
+
37  int getNumJoints() override;
+
38 
+
39  // Get number of TCPs for which the solver has been configured.
+
40  int getNumTcps() override;
+
41 
+
42  // Append an additional link.
+
43  bool appendLink(const std::vector<double> &x) override;
+
44 
+
45  // Restore original kinematic chain.
+
46  bool restoreOriginalChain() override;
+
47 
+
48  // Change reference frame.
+
49  bool changeOrigin(const std::vector<double> &x_old_obj,
+
50  const std::vector<double> &x_new_old,
+
51  std::vector<double> &x_new_obj) override;
+
52 
+
53  // Perform forward kinematics.
+
54  bool fwdKin(const std::vector<double> &q, std::vector<double> &x) override;
+
55 
+
56  // Obtain difference between supplied pose inputs.
+
57  bool poseDiff(const std::vector<double> &xLhs, const std::vector<double> &xRhs, std::vector<double> &xOut) override;
+
58 
+
59  // Perform inverse kinematics.
+
60  bool invKin(const std::vector<double> &xd, const std::vector<double> &qGuess, std::vector<double> &q,
+
61  reference_frame frame) override;
+
62 
+
63  // Perform differential inverse kinematics.
+
64  bool diffInvKin(const std::vector<double> &q, const std::vector<double> &xdot, std::vector<double> &qdot,
+
65  reference_frame frame) override;
+
66 
+
67  // Perform inverse dynamics.
+
68  bool invDyn(const std::vector<double> &q, std::vector<double> &t) override;
+
69 
+
70  // Perform inverse dynamics.
+
71  bool invDyn(const std::vector<double> &q, const std::vector<double> &qdot, const std::vector<double> &qdotdot,
+
72  const std::vector<double> &ftip, std::vector<double> &t, reference_frame frame) override;
+
73 
+
74  // -------- DeviceDriver declarations. Implementation in DeviceDriverImpl.cpp --------
+
75  bool open(yarp::os::Searchable& config) override;
+
76  bool close() override;
+
77 
+
78 private:
+ +
80  {
+
81  bool hasFrame;
+
82  yarp::sig::Matrix frameTcp;
+
83  };
+
84 
+
85  AsibotConfiguration * getConfiguration() const;
+
86 
+
87  AsibotTcpFrame getTcpFrame() const;
+
88  void setTcpFrame(const AsibotTcpFrame & tcpFrameStruct);
+
89 
+
90  double A0, A1, A2, A3; // link lengths
+
91 
+
92  std::vector<double> qMin, qMax;
+
93 
+
94  AsibotConfigurationFactory * confFactory {nullptr};
+
95 
+
96  AsibotTcpFrame tcpFrameStruct;
+
97 
+
98  mutable std::mutex mtx;
+
99 };
+
100 
+
101 } // namespace roboticslab
+
102 
+
103 #endif // __ASIBOT_SOLVER_HPP__
+
Contains roboticslab::ICartesianSolver.
+
Base factory class for AsibotConfiguration.
Definition: AsibotConfiguration.hpp:158
+
Abstract base class for a robot configuration strategy selector.
Definition: AsibotConfiguration.hpp:20
+
The AsibotSolver implements ICartesianSolver.
Definition: AsibotSolver.hpp:32
+
bool diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) override
Perform differential inverse kinematics.
Definition: ICartesianSolverImpl.cpp:421
+
bool fwdKin(const std::vector< double > &q, std::vector< double > &x) override
Perform forward kinematics.
Definition: ICartesianSolverImpl.cpp:240
+
bool restoreOriginalChain() override
Restore original kinematic chain.
Definition: ICartesianSolverImpl.cpp:216
+
int getNumTcps() override
Get number of TCPs for which the solver has been configured.
Definition: ICartesianSolverImpl.cpp:195
+
bool poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) override
Obtain difference between supplied pose inputs.
Definition: ICartesianSolverImpl.cpp:288
+
bool invDyn(const std::vector< double > &q, std::vector< double > &t) override
Perform inverse dynamics.
Definition: ICartesianSolverImpl.cpp:487
+
bool invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) override
Perform inverse kinematics.
Definition: ICartesianSolverImpl.cpp:314
+
bool changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) override
Change origin in which a pose is expressed.
Definition: ICartesianSolverImpl.cpp:227
+
int getNumJoints() override
Get number of joints for which the solver has been configured.
Definition: ICartesianSolverImpl.cpp:188
+
bool appendLink(const std::vector< double > &x) override
Append an additional link.
Definition: ICartesianSolverImpl.cpp:202
+
Abstract base class for a cartesian solver.
Definition: ICartesianSolver.h:23
+
reference_frame
Lists supported reference frames.
Definition: ICartesianSolver.h:27
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
Definition: AsibotSolver.hpp:80
+
+ + + + diff --git a/BasicCartesianControl_8hpp_source.html b/BasicCartesianControl_8hpp_source.html new file mode 100644 index 000000000..112607312 --- /dev/null +++ b/BasicCartesianControl_8hpp_source.html @@ -0,0 +1,263 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/BasicCartesianControl/BasicCartesianControl.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BasicCartesianControl.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __BASIC_CARTESIAN_CONTROL_HPP__
+
4 #define __BASIC_CARTESIAN_CONTROL_HPP__
+
5 
+
6 #include <atomic>
+
7 #include <functional>
+
8 #include <memory>
+
9 #include <mutex>
+
10 #include <utility>
+
11 #include <vector>
+
12 
+
13 #include <yarp/os/PeriodicThread.h>
+
14 
+
15 #include <yarp/dev/DeviceDriver.h>
+
16 #include <yarp/dev/PolyDriver.h>
+
17 #include <yarp/dev/ControlBoardInterfaces.h>
+
18 #include <yarp/dev/IPreciselyTimed.h>
+
19 
+
20 #include <kdl/trajectory.hpp>
+
21 
+
22 #include "ICartesianSolver.h"
+
23 #include "ICartesianControl.h"
+
24 
+
25 namespace roboticslab
+
26 {
+
27 
+
107 class BasicCartesianControl : public yarp::dev::DeviceDriver,
+
108  public yarp::os::PeriodicThread,
+
109  public ICartesianControl
+
110 {
+
111 public:
+
112  BasicCartesianControl() : yarp::os::PeriodicThread(1.0, yarp::os::PeriodicThreadClock::Absolute)
+
113  {}
+
114 
+
115  // -- ICartesianControl declarations. Implementation in ICartesianControlImpl.cpp--
+
116  bool stat(std::vector<double> & x, int * state = nullptr, double * timestamp = nullptr) override;
+
117  bool inv(const std::vector<double> & xd, std::vector<double> & q) override;
+
118  bool movj(const std::vector<double> & xd) override;
+
119  bool relj(const std::vector<double> & xd) override;
+
120  bool movl(const std::vector<double> & xd) override;
+
121  bool movv(const std::vector<double> & xdotd) override;
+
122  bool gcmp() override;
+
123  bool forc(const std::vector<double> & fd) override;
+
124  bool stopControl() override;
+
125  bool wait(double timeout) override;
+
126  bool tool(const std::vector<double> & x) override;
+
127  bool act(int command) override;
+
128  void movi(const std::vector<double> & x) override;
+
129  void twist(const std::vector<double> & xdot) override;
+
130  void wrench(const std::vector<double> & w) override;
+
131  bool setParameter(int vocab, double value) override;
+
132  bool getParameter(int vocab, double * value) override;
+
133  bool setParameters(const std::map<int, double> & params) override;
+
134  bool getParameters(std::map<int, double> & params) override;
+
135 
+
136  // -------- PeriodicThread declarations. Implementation in PeriodicThreadImpl.cpp --------
+
137  void run() override;
+
138 
+
139  // -------- DeviceDriver declarations. Implementation in IDeviceImpl.cpp --------
+
140  bool open(yarp::os::Searchable & config) override;
+
141  bool close() override;
+
142 
+
143 private:
+ +
145  {
+
146  public:
+
147  template <typename Fn>
+
148  StateWatcher(Fn && fn) : handler(std::move(fn))
+
149  {}
+
150 
+
151  ~StateWatcher()
+
152  { if (handler) handler(); }
+
153 
+
154  void suppress() const
+
155  { handler = nullptr; }
+
156 
+
157  private:
+
158  mutable std::function<void()> handler;
+
159  };
+
160 
+
161  int getCurrentState() const;
+
162  void setCurrentState(int value);
+
163 
+
164  bool checkJointLimits(const std::vector<double> & q);
+
165  bool checkJointLimits(const std::vector<double> & q, const std::vector<double> & qdot);
+
166  bool checkJointVelocities(const std::vector<double> & qdot);
+
167  bool doFailFastChecks(const std::vector<double> & initialQ);
+
168  bool checkControlModes(int mode);
+
169  bool setControlModes(int mode);
+
170  bool presetStreamingCommand(int command);
+
171  bool computeIsocronousSpeeds(const std::vector<double> & q, const std::vector<double> & qd, std::vector<double> & qdot);
+
172 
+
173  void handleMovj(const std::vector<double> & q, const StateWatcher & watcher);
+
174  void handleMovlVel(const std::vector<double> & q, const StateWatcher & watcher);
+
175  void handleMovlPosd(const std::vector<double> & q, const StateWatcher & watcher);
+
176  void handleMovv(const std::vector<double> & q, const StateWatcher & watcher);
+
177  void handleGcmp(const std::vector<double> & q, const StateWatcher & watcher);
+
178  void handleForc(const std::vector<double> & q, const std::vector<double> & qdot, const std::vector<double> & qdotdot, const StateWatcher & watcher);
+
179 
+
180  yarp::dev::PolyDriver solverDevice;
+
181  ICartesianSolver * iCartesianSolver {nullptr};
+
182 
+
183  yarp::dev::PolyDriver robotDevice;
+
184  yarp::dev::IControlMode * iControlMode {nullptr};
+
185  yarp::dev::IEncoders * iEncoders {nullptr};
+
186  yarp::dev::IPositionControl * iPositionControl {nullptr};
+
187  yarp::dev::IPositionDirect * iPositionDirect {nullptr};
+
188  yarp::dev::IPreciselyTimed * iPreciselyTimed {nullptr};
+
189  yarp::dev::ITorqueControl * iTorqueControl {nullptr};
+
190  yarp::dev::IVelocityControl * iVelocityControl {nullptr};
+
191 
+
192  ICartesianSolver::reference_frame referenceFrame;
+
193 
+
194  double gain;
+
195  double duration; // [s]
+
196 
+
197  int cmcPeriodMs;
+
198  int waitPeriodMs;
+
199  int numJoints;
+
200  int currentState;
+
201  int streamingCommand;
+
202 
+
203  bool usePosdMovl;
+
204  bool enableFailFast;
+
205 
+
206  mutable std::mutex stateMutex;
+
207 
+
209  std::vector<double> vmoStored;
+
210 
+ +
213 
+
215  std::vector<std::unique_ptr<KDL::Trajectory>> trajectories;
+
216 
+
218  std::vector<double> fd;
+
219 
+
220  int encoderErrors {0};
+
221  std::atomic_bool cmcSuccess;
+
222 
+
223  std::vector<double> qMin, qMax;
+
224  std::vector<double> qdotMin, qdotMax;
+
225  std::vector<double> qRefSpeeds;
+
226 };
+
227 
+
228 } // namespace roboticslab
+
229 
+
230 #endif // __BASIC_CARTESIAN_CONTROL_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
Contains roboticslab::ICartesianSolver.
+
Definition: BasicCartesianControl.hpp:145
+
The BasicCartesianControl class implements ICartesianControl.
Definition: BasicCartesianControl.hpp:110
+
bool act(int command) override
Actuate tool.
Definition: ICartesianControlImpl.cpp:421
+
bool movl(const std::vector< double > &xd) override
Linear move to target position.
Definition: ICartesianControlImpl.cpp:175
+
void wrench(const std::vector< double > &w) override
Exert force.
Definition: ICartesianControlImpl.cpp:513
+
std::vector< std::unique_ptr< KDL::Trajectory > > trajectories
Definition: BasicCartesianControl.hpp:215
+
bool tool(const std::vector< double > &x) override
Change tool.
Definition: ICartesianControlImpl.cpp:402
+
bool wait(double timeout) override
Wait until completion.
Definition: ICartesianControlImpl.cpp:373
+
std::vector< double > fd
Definition: BasicCartesianControl.hpp:218
+
double movementStartTime
Definition: BasicCartesianControl.hpp:212
+
bool stopControl() override
Stop control.
Definition: ICartesianControlImpl.cpp:348
+
void movi(const std::vector< double > &x) override
Achieve pose.
Definition: ICartesianControlImpl.cpp:429
+
bool getParameters(std::map< int, double > &params) override
Retrieve multiple configuration parameters.
Definition: ICartesianControlImpl.cpp:691
+
bool getParameter(int vocab, double *value) override
Retrieve a configuration parameter.
Definition: ICartesianControlImpl.cpp:639
+
std::vector< double > vmoStored
Definition: BasicCartesianControl.hpp:209
+
void twist(const std::vector< double > &xdot) override
Instantaneous velocity steps.
Definition: ICartesianControlImpl.cpp:473
+
bool movj(const std::vector< double > &xd) override
Move in joint space, absolute coordinates.
Definition: ICartesianControlImpl.cpp:89
+
bool stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) override
Current state and position.
Definition: ICartesianControlImpl.cpp:37
+
bool forc(const std::vector< double > &fd) override
Force control.
Definition: ICartesianControlImpl.cpp:320
+
bool movv(const std::vector< double > &xdotd) override
Linear move with given velocity.
Definition: ICartesianControlImpl.cpp:251
+
bool gcmp() override
Gravity compensation.
Definition: ICartesianControlImpl.cpp:306
+
bool relj(const std::vector< double > &xd) override
Move in joint space, relative coordinates.
Definition: ICartesianControlImpl.cpp:150
+
bool setParameters(const std::map< int, double > &params) override
Set multiple configuration parameters.
Definition: ICartesianControlImpl.cpp:671
+
bool setParameter(int vocab, double value) override
Set a configuration parameter.
Definition: ICartesianControlImpl.cpp:571
+
bool inv(const std::vector< double > &xd, std::vector< double > &q) override
Inverse kinematics.
Definition: ICartesianControlImpl.cpp:68
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
Abstract base class for a cartesian solver.
Definition: ICartesianSolver.h:23
+
reference_frame
Lists supported reference frames.
Definition: ICartesianSolver.h:27
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/CartesianControlClient_8hpp_source.html b/CartesianControlClient_8hpp_source.html new file mode 100644 index 000000000..34a66e9cd --- /dev/null +++ b/CartesianControlClient_8hpp_source.html @@ -0,0 +1,192 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/CartesianControlClient/CartesianControlClient.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CartesianControlClient.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __CARTESIAN_CONTROL_CLIENT_HPP__
+
4 #define __CARTESIAN_CONTROL_CLIENT_HPP__
+
5 
+
6 #include <mutex>
+
7 
+
8 #include <yarp/os/Bottle.h>
+
9 #include <yarp/os/BufferedPort.h>
+
10 #include <yarp/os/PortReaderBuffer.h>
+
11 #include <yarp/os/RpcClient.h>
+
12 
+
13 #include <yarp/dev/Drivers.h>
+
14 
+
15 #include <vector>
+
16 
+
17 #include "ICartesianControl.h"
+
18 
+
19 namespace roboticslab
+
20 {
+
21 
+
33 class FkStreamResponder : public yarp::os::TypedReaderCallback<yarp::os::Bottle>
+
34 {
+
35 public:
+ +
37  void onRead(yarp::os::Bottle& b) override;
+
38  bool getLastStatData(std::vector<double> &x, int *state, double * timestamp, double timeout);
+
39 
+
40 private:
+
41  double localArrivalTime;
+
42  int state;
+
43  double timestamp;
+
44  std::vector<double> x;
+
45  mutable std::mutex mtx;
+
46 };
+
47 
+
52 class CartesianControlClient : public yarp::dev::DeviceDriver,
+
53  public ICartesianControl
+
54 {
+
55 public:
+
56  // -- ICartesianControl declarations. Implementation in ICartesianControlImpl.cpp--
+
57  bool stat(std::vector<double> &x, int * state = nullptr, double * timestamp = nullptr) override;
+
58  bool inv(const std::vector<double> &xd, std::vector<double> &q) override;
+
59  bool movj(const std::vector<double> &xd) override;
+
60  bool relj(const std::vector<double> &xd) override;
+
61  bool movl(const std::vector<double> &xd) override;
+
62  bool movv(const std::vector<double> &xdotd) override;
+
63  bool gcmp() override;
+
64  bool forc(const std::vector<double> &fd) override;
+
65  bool stopControl() override;
+
66  bool wait(double timeout) override;
+
67  bool tool(const std::vector<double> &x) override;
+
68  bool act(int command) override;
+
69  void movi(const std::vector<double> &x) override;
+
70  void twist(const std::vector<double> &xdot) override;
+
71  void wrench(const std::vector<double> &w) override;
+
72  bool setParameter(int vocab, double value) override;
+
73  bool getParameter(int vocab, double * value) override;
+
74  bool setParameters(const std::map<int, double> & params) override;
+
75  bool getParameters(std::map<int, double> & params) override;
+
76 
+
77  // -------- DeviceDriver declarations. Implementation in IDeviceImpl.cpp --------
+
78  bool open(yarp::os::Searchable& config) override;
+
79  bool close() override;
+
80 
+
81 private:
+
82  bool handleRpcRunnableCmd(int vocab);
+
83  bool handleRpcConsumerCmd(int vocab, const std::vector<double>& in);
+
84  bool handleRpcFunctionCmd(int vocab, const std::vector<double>& in, std::vector<double>& out);
+
85 
+
86  void handleStreamingConsumerCmd(int vocab, const std::vector<double>& in);
+
87  void handleStreamingBiConsumerCmd(int vocab, const std::vector<double>& in1, double in2);
+
88 
+
89  yarp::os::RpcClient rpcClient;
+
90  yarp::os::BufferedPort<yarp::os::Bottle> fkInPort, commandPort;
+
91 
+
92  FkStreamResponder fkStreamResponder;
+
93  double fkStreamTimeoutSecs;
+
94 };
+
95 
+
96 } // namespace roboticslab
+
97 
+
98 #endif // __CARTESIAN_CONTROL_CLIENT_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
The CartesianControlClient class implements ICartesianControl client side.
Definition: CartesianControlClient.hpp:54
+
bool stopControl() override
Stop control.
Definition: ICartesianControlImpl.cpp:237
+
bool forc(const std::vector< double > &fd) override
Force control.
Definition: ICartesianControlImpl.cpp:230
+
bool tool(const std::vector< double > &x) override
Change tool.
Definition: ICartesianControlImpl.cpp:258
+
void movi(const std::vector< double > &x) override
Achieve pose.
Definition: ICartesianControlImpl.cpp:286
+
bool movl(const std::vector< double > &xd) override
Linear move to target position.
Definition: ICartesianControlImpl.cpp:209
+
bool inv(const std::vector< double > &xd, std::vector< double > &q) override
Inverse kinematics.
Definition: ICartesianControlImpl.cpp:188
+
bool stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) override
Current state and position.
Definition: ICartesianControlImpl.cpp:141
+
void twist(const std::vector< double > &xdot) override
Instantaneous velocity steps.
Definition: ICartesianControlImpl.cpp:279
+
bool gcmp() override
Gravity compensation.
Definition: ICartesianControlImpl.cpp:223
+
bool setParameter(int vocab, double value) override
Set a configuration parameter.
Definition: ICartesianControlImpl.cpp:300
+
bool relj(const std::vector< double > &xd) override
Move in joint space, relative coordinates.
Definition: ICartesianControlImpl.cpp:202
+
void wrench(const std::vector< double > &w) override
Exert force.
Definition: ICartesianControlImpl.cpp:293
+
bool getParameter(int vocab, double *value) override
Retrieve a configuration parameter.
Definition: ICartesianControlImpl.cpp:315
+
bool movv(const std::vector< double > &xdotd) override
Linear move with given velocity.
Definition: ICartesianControlImpl.cpp:216
+
bool movj(const std::vector< double > &xd) override
Move in joint space, absolute coordinates.
Definition: ICartesianControlImpl.cpp:195
+
bool setParameters(const std::map< int, double > &params) override
Set multiple configuration parameters.
Definition: ICartesianControlImpl.cpp:336
+
bool getParameters(std::map< int, double > &params) override
Retrieve multiple configuration parameters.
Definition: ICartesianControlImpl.cpp:357
+
bool act(int command) override
Actuate tool.
Definition: ICartesianControlImpl.cpp:265
+
bool wait(double timeout) override
Wait until completion.
Definition: ICartesianControlImpl.cpp:244
+
Responds to streaming FK messages.
Definition: CartesianControlClient.hpp:34
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/CartesianControlServer_8hpp_source.html b/CartesianControlServer_8hpp_source.html new file mode 100644 index 000000000..a3b73c372 --- /dev/null +++ b/CartesianControlServer_8hpp_source.html @@ -0,0 +1,239 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/CartesianControlServer/CartesianControlServer.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CartesianControlServer.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __CARTESIAN_CONTROL_SERVER_HPP__
+
4 #define __CARTESIAN_CONTROL_SERVER_HPP__
+
5 
+
6 #include <vector>
+
7 
+
8 #include <yarp/os/Bottle.h>
+
9 #include <yarp/os/BufferedPort.h>
+
10 #include <yarp/os/PeriodicThread.h>
+
11 #include <yarp/os/RpcServer.h>
+
12 
+
13 #include <yarp/dev/Drivers.h>
+
14 #include <yarp/dev/PolyDriver.h>
+
15 
+
16 #include "ICartesianControl.h"
+
17 #include "KinematicRepresentation.hpp"
+
18 
+
19 namespace roboticslab
+
20 {
+
21 
+
29 class RpcResponder;
+
30 class RpcTransformResponder;
+
31 class StreamResponder;
+
32 
+
37 class CartesianControlServer : public yarp::dev::DeviceDriver,
+
38  public yarp::os::PeriodicThread
+
39 {
+
40 public:
+
41  CartesianControlServer() : yarp::os::PeriodicThread(1.0)
+
42  {}
+
43 
+
44  // -------- DeviceDriver declarations. Implementation in IDeviceImpl.cpp --------
+
45 
+
46  bool open(yarp::os::Searchable & config) override;
+
47  bool close() override;
+
48 
+
49  // -------- PeriodicThread declarations. Implementation in PeriodicThreadImpl.cpp --------
+
50  void run() override;
+
51 
+
52 protected:
+
53  yarp::dev::PolyDriver cartesianControlDevice;
+
54 
+
55  yarp::os::RpcServer rpcServer, rpcTransformServer;
+
56  yarp::os::BufferedPort<yarp::os::Bottle> fkOutPort, commandPort;
+
57 
+
58  roboticslab::ICartesianControl * iCartesianControl {nullptr};
+
59 
+
60  RpcResponder * rpcResponder {nullptr};
+
61  RpcResponder * rpcTransformResponder {nullptr};
+
62  StreamResponder * streamResponder {nullptr};
+
63 
+
64  bool fkStreamEnabled;
+
65 };
+
66 
+
71 class RpcResponder : public yarp::dev::DeviceResponder
+
72 {
+
73 public:
+
74  RpcResponder(roboticslab::ICartesianControl * _iCartesianControl)
+
75  : iCartesianControl(_iCartesianControl)
+
76  {
+
77  // shadows DeviceResponder::makeUsage(), which was already called by the base constructor
+
78  makeUsage();
+
79  }
+
80 
+
87  bool respond(const yarp::os::Bottle & in, yarp::os::Bottle & out) override;
+
88 
+
92  void makeUsage();
+
93 
+
94 protected:
+
95  virtual bool transformIncomingData(std::vector<double> & vin)
+
96  { return true; }
+
97 
+
98  virtual bool transformOutgoingData(std::vector<double> & vout)
+
99  { return true; }
+
100 
+
101 private:
+
102  using RunnableFun = bool (ICartesianControl::*)();
+
103  using ConsumerFun = bool (ICartesianControl::*)(const std::vector<double> &);
+
104  using FunctionFun = bool (ICartesianControl::*)(const std::vector<double> &, std::vector<double> &);
+
105 
+
106  bool handleStatMsg(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
107  bool handleWaitMsg(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
108  bool handleActMsg(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
109 
+
110  bool handleRunnableCmdMsg(const yarp::os::Bottle & in, yarp::os::Bottle & out, RunnableFun cmd);
+
111  bool handleConsumerCmdMsg(const yarp::os::Bottle & in, yarp::os::Bottle & out, ConsumerFun cmd);
+
112  bool handleFunctionCmdMsg(const yarp::os::Bottle & in, yarp::os::Bottle & out, FunctionFun cmd);
+
113 
+
114  bool handleParameterSetter(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
115  bool handleParameterGetter(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
116 
+
117  bool handleParameterSetterGroup(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
118  bool handleParameterGetterGroup(const yarp::os::Bottle & in, yarp::os::Bottle & out);
+
119 
+
120  roboticslab::ICartesianControl * iCartesianControl;
+
121 };
+
122 
+ +
128 {
+
129 public:
+ + + + +
134  : RpcResponder(iCartesianControl),
+
135  coord(coord),
+
136  orient(orient),
+
137  units(units)
+
138  {}
+
139 
+
140 private:
+
141  bool transformIncomingData(std::vector<double> & vin) override;
+
142  bool transformOutgoingData(std::vector<double> & vout) override;
+
143 
+ + + +
147 };
+
148 
+
153 class StreamResponder : public yarp::os::TypedReaderCallback<yarp::os::Bottle>
+
154 {
+
155 public:
+
156  StreamResponder(roboticslab::ICartesianControl * _iCartesianControl)
+
157  : iCartesianControl(_iCartesianControl)
+
158  {}
+
159 
+
160  void onRead(yarp::os::Bottle & b) override;
+
161 
+
162 private:
+
163  using ConsumerFun = void (ICartesianControl::*)(const std::vector<double> &);
+
164  using BiConsumerFun = void (ICartesianControl::*)(const std::vector<double> &, double);
+
165 
+
166  void handleConsumerCmdMsg(const yarp::os::Bottle & in, ConsumerFun cmd);
+
167  void handleBiConsumerCmdMsg(const yarp::os::Bottle & in, BiConsumerFun cmd);
+
168 
+
169  roboticslab::ICartesianControl * iCartesianControl;
+
170 };
+
171 
+
172 } // namespace roboticslab
+
173 
+
174 #endif // __CARTESIAN_CONTROL_SERVER_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
The CartesianControlServer class implements ICartesianControl server side.
Definition: CartesianControlServer.hpp:39
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
Responds to RPC command messages.
Definition: CartesianControlServer.hpp:72
+
void makeUsage()
Definition: RpcResponder.cpp:91
+
bool respond(const yarp::os::Bottle &in, yarp::os::Bottle &out) override
Definition: RpcResponder.cpp:52
+
Responds to RPC command messages, transforms incoming data.
Definition: CartesianControlServer.hpp:128
+
Responds to streaming command messages.
Definition: CartesianControlServer.hpp:154
+
coordinate_system
Lists available translational representations.
Definition: KinematicRepresentation.hpp:27
+
orientation_system
Lists available rotational representations.
Definition: KinematicRepresentation.hpp:36
+
angular_units
Lists recognized angular units.
Definition: KinematicRepresentation.hpp:48
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/CentroidTransform_8hpp_source.html b/CentroidTransform_8hpp_source.html new file mode 100644 index 000000000..2cd0059fa --- /dev/null +++ b/CentroidTransform_8hpp_source.html @@ -0,0 +1,137 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/CentroidTransform.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CentroidTransform.hpp
+
+
+
1 #ifndef __CENTROID_TRANSFORM_HPP__
+
2 #define __CENTROID_TRANSFORM_HPP__
+
3 
+
4 #include <yarp/os/Bottle.h>
+
5 #include <yarp/os/Stamp.h>
+
6 
+
7 #include <kdl/frames.hpp>
+
8 
+
9 #include "StreamingDevice.hpp"
+
10 
+
11 namespace roboticslab
+
12 {
+
13 
+
14 class StreamingDevice;
+
15 
+ +
22 {
+
23 public:
+ +
26 
+
28  void registerStreamingDevice(StreamingDevice * streamingDevice)
+
29  { this->streamingDevice = streamingDevice; }
+
30 
+
32  bool setTcpToCameraRotation(yarp::os::Bottle * b);
+
33 
+
35  void setPermanenceTime(double permanenceTime)
+
36  { this->permanenceTime = permanenceTime; }
+
37 
+
39  bool acceptBottle(yarp::os::Bottle * b);
+
40 
+
42  bool processStoredBottle() const;
+
43 
+
44 private:
+
45  StreamingDevice * streamingDevice;
+
46  double permanenceTime;
+
47  yarp::os::Bottle lastBottle;
+
48  yarp::os::Stamp lastAcquisition;
+
49  KDL::Rotation rot_tcp_camera;
+
50 };
+
51 
+
52 } // namespace roboticslab
+
53 
+
54 #endif // __CENTROID_TRANSFORM_HPP__
+
...
Definition: CentroidTransform.hpp:22
+
void setPermanenceTime(double permanenceTime)
Set new permanence time.
Definition: CentroidTransform.hpp:35
+
void registerStreamingDevice(StreamingDevice *streamingDevice)
Register handle to device.
Definition: CentroidTransform.hpp:28
+
bool setTcpToCameraRotation(yarp::os::Bottle *b)
Set TCP to camera frame.
Definition: CentroidTransform.cpp:23
+
bool acceptBottle(yarp::os::Bottle *b)
Register or dismiss incoming bottle.
Definition: CentroidTransform.cpp:42
+
CentroidTransform()
Constructor.
Definition: CentroidTransform.cpp:18
+
bool processStoredBottle() const
Process last stored bottle.
Definition: CentroidTransform.cpp:60
+
Abstract class for a YARP streaming device.
Definition: StreamingDevice.hpp:46
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ChainFkSolverPos__ST_8hpp_source.html b/ChainFkSolverPos__ST_8hpp_source.html new file mode 100644 index 000000000..be09109c4 --- /dev/null +++ b/ChainFkSolverPos__ST_8hpp_source.html @@ -0,0 +1,134 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlSolver/ChainFkSolverPos_ST.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ChainFkSolverPos_ST.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __CHAIN_FK_SOLVER_POS_ST_HPP__
+
4 #define __CHAIN_FK_SOLVER_POS_ST_HPP__
+
5 
+
6 #include <kdl/chainfksolver.hpp>
+
7 
+
8 #include "ProductOfExponentials.hpp"
+
9 
+
10 namespace roboticslab
+
11 {
+
12 
+
21 class ChainFkSolverPos_ST : public KDL::ChainFkSolverPos
+
22 {
+
23 public:
+
33  int JntToCart(const KDL::JntArray & q_in, KDL::Frame & p_out, int segmentNr = -1) override;
+
34 
+
46  int JntToCart(const KDL::JntArray & q_in, std::vector<KDL::Frame> & p_out, int segmentNr = -1) override;
+
47 
+
55  void updateInternalDataStructures() override;
+
56 
+
65  const char * strError(const int error) const override;
+
66 
+
74  static KDL::ChainFkSolverPos * create(const KDL::Chain & chain);
+
75 
+
77  static const int E_OPERATION_NOT_SUPPORTED = -100;
+
78 
+
80  static const int E_ILLEGAL_ARGUMENT_SIZE = -101;
+
81 
+
82 private:
+
83  ChainFkSolverPos_ST(const KDL::Chain & chain);
+
84 
+
85  const KDL::Chain & chain;
+
86 
+
87  PoeExpression poe;
+
88 };
+
89 
+
90 } // namespace roboticslab
+
91 
+
92 #endif // __CHAIN_FK_SOLVER_POS_ST_HPP__
+
FK solver using Screw Theory.
Definition: ChainFkSolverPos_ST.hpp:22
+
void updateInternalDataStructures() override
Update the internal data structures.
Definition: ChainFkSolverPos_ST.cpp:40
+
static const int E_ILLEGAL_ARGUMENT_SIZE
Return code, input vector size does not match expected output vector size.
Definition: ChainFkSolverPos_ST.hpp:80
+
static const int E_OPERATION_NOT_SUPPORTED
Return code, operation not supported.
Definition: ChainFkSolverPos_ST.hpp:77
+
static KDL::ChainFkSolverPos * create(const KDL::Chain &chain)
Create an instance of ChainFkSolverPos_ST.
Definition: ChainFkSolverPos_ST.cpp:62
+
const char * strError(const int error) const override
Return a description of the last error.
Definition: ChainFkSolverPos_ST.cpp:47
+
int JntToCart(const KDL::JntArray &q_in, KDL::Frame &p_out, int segmentNr=-1) override
Perform FK on the selected segment.
Definition: ChainFkSolverPos_ST.cpp:16
+
Abstraction of a product of exponentials (POE) formula.
Definition: ProductOfExponentials.hpp:28
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ChainIkSolverPos__ID_8hpp_source.html b/ChainIkSolverPos__ID_8hpp_source.html new file mode 100644 index 000000000..c4e21e05d --- /dev/null +++ b/ChainIkSolverPos__ID_8hpp_source.html @@ -0,0 +1,141 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlSolver/ChainIkSolverPos_ID.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ChainIkSolverPos_ID.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __CHAIN_IK_SOLVER_POS_ID_HPP__
+
4 #define __CHAIN_IK_SOLVER_POS_ID_HPP__
+
5 
+
6 #include <kdl/chain.hpp>
+
7 #include <kdl/chainfksolver.hpp>
+
8 #include <kdl/chainiksolver.hpp>
+
9 #include <kdl/chainjnttojacsolver.hpp>
+
10 #include <kdl/jacobian.hpp>
+
11 #include <kdl/jntarray.hpp>
+
12 
+
13 namespace roboticslab
+
14 {
+
15 
+
24 class ChainIkSolverPos_ID : public KDL::ChainIkSolverPos
+
25 {
+
26 public:
+
36  ChainIkSolverPos_ID(const KDL::Chain & chain, const KDL::JntArray & q_min, const KDL::JntArray & q_max, KDL::ChainFkSolverPos & fksolver);
+
37 
+
48  int CartToJnt(const KDL::JntArray & q_init, const KDL::Frame & p_in, KDL::JntArray & q_out) override;
+
49 
+
57  void updateInternalDataStructures() override;
+
58 
+
67  const char * strError(const int error) const override;
+
68 
+
70  static const int E_FKSOLVERPOS_FAILED = -100;
+
71 
+
73  static const int E_JACSOLVER_FAILED = -101;
+
74 
+
75 private:
+
76  KDL::JntArray computeDiffInvKin(const KDL::Twist & delta_twist);
+
77 
+
78  const KDL::Chain & chain;
+
79  unsigned int nj;
+
80 
+
81  KDL::JntArray qMin;
+
82  KDL::JntArray qMax;
+
83 
+
84  KDL::ChainFkSolverPos & fkSolverPos;
+
85  KDL::ChainJntToJacSolver jacSolver;
+
86 
+
87  KDL::Jacobian jacobian;
+
88 };
+
89 
+
90 } // namespace roboticslab
+
91 
+
92 #endif // __CHAIN_IK_SOLVER_POS_ID_HPP__
+
IK solver using infinitesimal displacement twists.
Definition: ChainIkSolverPos_ID.hpp:25
+
void updateInternalDataStructures() override
Update the internal data structures.
Definition: ChainIkSolverPos_ID.cpp:107
+
static const int E_FKSOLVERPOS_FAILED
Return code, internal FK position solver failed.
Definition: ChainIkSolverPos_ID.hpp:70
+
static const int E_JACSOLVER_FAILED
Return code, internal Jacobian solver failed.
Definition: ChainIkSolverPos_ID.hpp:73
+
ChainIkSolverPos_ID(const KDL::Chain &chain, const KDL::JntArray &q_min, const KDL::JntArray &q_max, KDL::ChainFkSolverPos &fksolver)
Constructor.
Definition: ChainIkSolverPos_ID.cpp:16
+
int CartToJnt(const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) override
Calculate inverse position kinematics.
Definition: ChainIkSolverPos_ID.cpp:29
+
const char * strError(const int error) const override
Return a description of the last error.
Definition: ChainIkSolverPos_ID.cpp:119
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ChainIkSolverPos__ST_8hpp_source.html b/ChainIkSolverPos__ST_8hpp_source.html new file mode 100644 index 000000000..d010dbc3c --- /dev/null +++ b/ChainIkSolverPos__ST_8hpp_source.html @@ -0,0 +1,143 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlSolver/ChainIkSolverPos_ST.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ChainIkSolverPos_ST.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __CHAIN_IK_SOLVER_POS_ST_HPP__
+
4 #define __CHAIN_IK_SOLVER_POS_ST_HPP__
+
5 
+
6 #include <kdl/chainiksolver.hpp>
+
7 
+
8 #include "ScrewTheoryIkProblem.hpp"
+
9 #include "ConfigurationSelector.hpp"
+
10 
+
11 namespace roboticslab
+
12 {
+
13 
+
23 class ChainIkSolverPos_ST : public KDL::ChainIkSolverPos
+
24 {
+
25 public:
+
27  virtual ~ChainIkSolverPos_ST();
+
28 
+
39  int CartToJnt(const KDL::JntArray & q_init, const KDL::Frame & p_in, KDL::JntArray & q_out) override;
+
40 
+
48  void updateInternalDataStructures() override;
+
49 
+
58  const char * strError(const int error) const override;
+
59 
+
69  static KDL::ChainIkSolverPos * create(const KDL::Chain & chain, const ConfigurationSelectorFactory & configFactory);
+
70 
+
72  static const int E_SOLUTION_NOT_FOUND = -100;
+
73 
+
75  static const int E_OUT_OF_LIMITS = -101;
+
76 
+
78  static const int E_NOT_REACHABLE = 100;
+
79 
+
80 private:
+
81  ChainIkSolverPos_ST(const KDL::Chain & chain, ScrewTheoryIkProblem * problem, ConfigurationSelector * config);
+
82 
+
83  const KDL::Chain & chain;
+
84 
+
85  ScrewTheoryIkProblem * problem;
+
86 
+
87  ConfigurationSelector * config;
+
88 };
+
89 
+
90 } // namespace roboticslab
+
91 
+
92 #endif // __CHAIN_IK_SOLVER_POS_ST_HPP__
+
IK solver using Screw Theory.
Definition: ChainIkSolverPos_ST.hpp:24
+
static KDL::ChainIkSolverPos * create(const KDL::Chain &chain, const ConfigurationSelectorFactory &configFactory)
Create an instance of ChainIkSolverPos_ST.
Definition: ChainIkSolverPos_ST.cpp:82
+
static const int E_SOLUTION_NOT_FOUND
Return code, IK solution not found.
Definition: ChainIkSolverPos_ST.hpp:72
+
void updateInternalDataStructures() override
Update the internal data structures.
Definition: ChainIkSolverPos_ST.cpp:64
+
int CartToJnt(const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) override
Calculate inverse position kinematics.
Definition: ChainIkSolverPos_ST.cpp:36
+
static const int E_OUT_OF_LIMITS
Return code, target pose out of robot limits.
Definition: ChainIkSolverPos_ST.hpp:75
+
virtual ~ChainIkSolverPos_ST()
Destructor.
Definition: ChainIkSolverPos_ST.cpp:25
+
static const int E_NOT_REACHABLE
Return code, solution out of reach.
Definition: ChainIkSolverPos_ST.hpp:78
+
const char * strError(const int error) const override
Return a description of the last error.
Definition: ChainIkSolverPos_ST.cpp:106
+
Base factory class for ConfigurationSelector.
Definition: ConfigurationSelector.hpp:183
+
Abstract base class for a robot configuration strategy selector.
Definition: ConfigurationSelector.hpp:20
+
Proxy IK problem solver class that iterates over a sequence of subproblems.
Definition: ScrewTheoryIkProblem.hpp:95
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ConfigurationSelector_8hpp_source.html b/ConfigurationSelector_8hpp_source.html new file mode 100644 index 000000000..0aaf40390 --- /dev/null +++ b/ConfigurationSelector_8hpp_source.html @@ -0,0 +1,264 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/ConfigurationSelector.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ConfigurationSelector.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __CONFIGURATION_SELECTOR_HPP__
+
4 #define __CONFIGURATION_SELECTOR_HPP__
+
5 
+
6 #include <vector>
+
7 
+
8 #include <kdl/frames.hpp>
+
9 #include <kdl/jntarray.hpp>
+
10 
+
11 namespace roboticslab
+
12 {
+
13 
+ +
20 {
+
21 public:
+
28  ConfigurationSelector(const KDL::JntArray & qMin, const KDL::JntArray & qMax)
+
29  : _qMin(qMin),
+
30  _qMax(qMax)
+
31  {}
+
32 
+
34  virtual ~ConfigurationSelector() = default;
+
35 
+
44  virtual bool configure(const std::vector<KDL::JntArray> & solutions);
+
45 
+
53  virtual bool findOptimalConfiguration(const KDL::JntArray & qGuess) = 0;
+
54 
+
60  virtual void retrievePose(KDL::JntArray & q) const
+
61  {
+
62  q = *optimalConfig.retrievePose();
+
63  }
+
64 
+
65 protected:
+ +
70  {
+
71  public:
+ +
74  : q(nullptr),
+
75  valid(false)
+
76  {}
+
77 
+
79  void store(const KDL::JntArray * q)
+
80  { this->q = q; }
+
81 
+
83  void validate(const KDL::JntArray & qMin, const KDL::JntArray & qMax);
+
84 
+
86  const KDL::JntArray * retrievePose() const
+
87  { return q; }
+
88 
+
90  bool isValid() const
+
91  { return valid; }
+
92 
+
94  void invalidate()
+
95  { valid = false; }
+
96 
+
97  private:
+
98  const KDL::JntArray * q;
+
99  bool valid;
+
100  };
+
101 
+
102  KDL::JntArray _qMin, _qMax;
+
103 
+
104  Configuration optimalConfig;
+
105 
+
106  std::vector<Configuration> configs;
+
107 };
+
108 
+ +
122 {
+
123 public:
+
130  ConfigurationSelectorLeastOverallAngularDisplacement(const KDL::JntArray & qMin, const KDL::JntArray & qMax)
+
131  : ConfigurationSelector(qMin, qMax),
+
132  lastValid(INVALID_CONFIG)
+
133  {}
+
134 
+
135  bool findOptimalConfiguration(const KDL::JntArray & qGuess) override;
+
136 
+
137 protected:
+
139  std::vector<double> getDiffs(const KDL::JntArray & qGuess, const Configuration & config);
+
140 
+
141  int lastValid;
+
142 
+
143  static const int INVALID_CONFIG = -1;
+
144 };
+
145 
+ +
155 {
+
156 public:
+
163  ConfigurationSelectorHumanoidGait(const KDL::JntArray & qMin, const KDL::JntArray & qMax)
+ +
165  {}
+
166 
+
167  bool findOptimalConfiguration(const KDL::JntArray & qGuess) override;
+
168 
+
169 private:
+
171  bool applyConstraints(const Configuration & config);
+
172 };
+
173 
+ +
183 {
+
184 public:
+
190  virtual ConfigurationSelector * create() const = 0;
+
191  virtual ~ConfigurationSelectorFactory() = default;
+
192 
+
193 protected:
+
200  ConfigurationSelectorFactory(const KDL::JntArray & qMin, const KDL::JntArray & qMax)
+
201  : _qMin(qMin), _qMax(qMax)
+
202  {}
+
203 
+
204  KDL::JntArray _qMin, _qMax;
+
205 };
+
206 
+ +
215 {
+
216 public:
+
223  ConfigurationSelectorLeastOverallAngularDisplacementFactory(const KDL::JntArray & qMin, const KDL::JntArray & qMax)
+
224  : ConfigurationSelectorFactory(qMin, qMax)
+
225  {}
+
226 
+
227  ConfigurationSelector * create() const override
+
228  {
+ +
230  }
+
231 };
+
232 
+ +
241 {
+
242 public:
+
249  ConfigurationSelectorHumanoidGaitFactory(const KDL::JntArray & qMin, const KDL::JntArray & qMax)
+
250  : ConfigurationSelectorFactory(qMin, qMax)
+
251  {}
+
252 
+
253  ConfigurationSelector * create() const override
+
254  {
+
255  if (_qMin.rows() == 6 && _qMax.rows() == 6)
+
256  {
+
257  return new ConfigurationSelectorHumanoidGait(_qMin, _qMax);
+
258  }
+
259  else
+
260  {
+
261  return nullptr;
+
262  }
+
263  }
+
264 };
+
265 
+
266 } // namespace roboticslab
+
267 
+
268 #endif // __CONFIGURATION_SELECTOR_HPP__
+
Base factory class for ConfigurationSelector.
Definition: ConfigurationSelector.hpp:183
+
ConfigurationSelectorFactory(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Constructor.
Definition: ConfigurationSelector.hpp:200
+
virtual ConfigurationSelector * create() const =0
Creates an instance of the concrete class.
+
Implementation factory class for ConfigurationSelectorHumanoidGait.
Definition: ConfigurationSelector.hpp:241
+
ConfigurationSelectorHumanoidGaitFactory(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Constructor.
Definition: ConfigurationSelector.hpp:249
+
ConfigurationSelector * create() const override
Creates an instance of the concrete class.
Definition: ConfigurationSelector.hpp:253
+
IK solver configuration strategy selector based on human walking.
Definition: ConfigurationSelector.hpp:155
+
bool applyConstraints(const Configuration &config)
Determines whether the configuration is valid according to this selector's premises.
Definition: ConfigurationSelectorHumanoidGait.cpp:29
+
bool findOptimalConfiguration(const KDL::JntArray &qGuess) override
Analyzes available configurations and selects the optimal one.
Definition: ConfigurationSelectorHumanoidGait.cpp:11
+
ConfigurationSelectorHumanoidGait(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Constructor.
Definition: ConfigurationSelector.hpp:163
+
Implementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement.
Definition: ConfigurationSelector.hpp:215
+
ConfigurationSelector * create() const override
Creates an instance of the concrete class.
Definition: ConfigurationSelector.hpp:227
+
ConfigurationSelectorLeastOverallAngularDisplacementFactory(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Constructor.
Definition: ConfigurationSelector.hpp:223
+
IK solver configuration strategy selector based on the overall displacement of all joints.
Definition: ConfigurationSelector.hpp:122
+
ConfigurationSelectorLeastOverallAngularDisplacement(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Constructor.
Definition: ConfigurationSelector.hpp:130
+
std::vector< double > getDiffs(const KDL::JntArray &qGuess, const Configuration &config)
Obtains vector of differences between current and desired joint values.
Definition: ConfigurationSelectorLeastOverallAngularDisplacement.cpp:58
+
bool findOptimalConfiguration(const KDL::JntArray &qGuess) override
Analyzes available configurations and selects the optimal one.
Definition: ConfigurationSelectorLeastOverallAngularDisplacement.cpp:12
+
Helper class to store a specific robot configuration.
Definition: ConfigurationSelector.hpp:70
+
const KDL::JntArray * retrievePose() const
Retrieves stored joint values.
Definition: ConfigurationSelector.hpp:86
+
Configuration()
Constructor.
Definition: ConfigurationSelector.hpp:73
+
void validate(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Checks reachability against provided joint limits.
Definition: ConfigurationSelector.cpp:39
+
void store(const KDL::JntArray *q)
Initializes joint values.
Definition: ConfigurationSelector.hpp:79
+
bool isValid() const
Whether this configuration is attainable or not.
Definition: ConfigurationSelector.hpp:90
+
void invalidate()
Mark this configuration as invalid.
Definition: ConfigurationSelector.hpp:94
+
Abstract base class for a robot configuration strategy selector.
Definition: ConfigurationSelector.hpp:20
+
ConfigurationSelector(const KDL::JntArray &qMin, const KDL::JntArray &qMax)
Constructor.
Definition: ConfigurationSelector.hpp:28
+
virtual bool findOptimalConfiguration(const KDL::JntArray &qGuess)=0
Analyzes available configurations and selects the optimal one.
+
virtual ~ConfigurationSelector()=default
Destructor.
+
virtual bool configure(const std::vector< KDL::JntArray > &solutions)
Stores initial values for a specific pose.
Definition: ConfigurationSelector.cpp:21
+
virtual void retrievePose(KDL::JntArray &q) const
Queries computed joint values for the optimal configuration.
Definition: ConfigurationSelector.hpp:60
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/FtCompensation_8hpp_source.html b/FtCompensation_8hpp_source.html new file mode 100644 index 000000000..d6b2abfee --- /dev/null +++ b/FtCompensation_8hpp_source.html @@ -0,0 +1,169 @@ + + + + + + + +kinematics-dynamics: programs/ftCompensation/FtCompensation.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FtCompensation.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __FT_COMPENSATION_HPP__
+
4 #define __FT_COMPENSATION_HPP__
+
5 
+
6 #include <yarp/os/PeriodicThread.h>
+
7 #include <yarp/os/RFModule.h>
+
8 
+
9 #include <yarp/dev/MultipleAnalogSensorsInterfaces.h>
+
10 #include <yarp/dev/PolyDriver.h>
+
11 
+
12 #include <kdl/frames.hpp>
+
13 
+
14 #include "ICartesianControl.h"
+
15 
+
16 namespace roboticslab
+
17 {
+
18 
+
26 class FtCompensation : public yarp::os::RFModule,
+
27  public yarp::os::PeriodicThread
+
28 {
+
29 public:
+ +
31  : yarp::os::PeriodicThread(1.0, yarp::os::ShouldUseSystemClock::Yes, yarp::os::PeriodicThreadClock::Absolute)
+
32  {}
+
33 
+
34  ~FtCompensation() override
+
35  { close(); }
+
36 
+
37  bool configure(yarp::os::ResourceFinder & rf) override;
+
38  bool updateModule() override;
+
39  bool interruptModule() override;
+
40  double getPeriod() override;
+
41  bool close() override;
+
42 
+
43 protected:
+
44  void run() override;
+
45 
+
46 private:
+
47  bool readSensor(KDL::Wrench & wrench) const;
+
48  bool compensateTool(KDL::Wrench & wrench) const;
+
49  bool applyImpedance(KDL::Wrench & wrench);
+
50 
+
51  yarp::dev::PolyDriver cartesianDevice;
+
52  ICartesianControl * iCartesianControl;
+
53 
+
54  int sensorIndex;
+
55  yarp::dev::PolyDriver sensorDevice;
+
56  yarp::dev::ISixAxisForceTorqueSensors * sensor;
+
57 
+
58  KDL::Rotation R_N_sensor;
+
59  KDL::Vector toolCoM_N;
+
60  KDL::Wrench toolWeight_0;
+
61  KDL::Wrench initialOffset;
+
62  KDL::Frame initialPose;
+
63  KDL::Frame previousPose;
+
64 
+
65  using cartesian_cmd = void (ICartesianControl::*)(const std::vector<double> &);
+
66  cartesian_cmd command;
+
67 
+
68  bool dryRun;
+
69  bool usingTool;
+
70  bool enableImpedance;
+
71 
+
72  double linGain;
+
73  double rotGain;
+
74 
+
75  double linStiffness;
+
76  double rotStiffness;
+
77 
+
78  double linDamping;
+
79  double rotDamping;
+
80 
+
81  double forceDeadband;
+
82  double torqueDeadband;
+
83 };
+
84 
+
85 } // namespace roboticslab
+
86 
+
87 #endif // __FT_COMPENSATION_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
Produces motion in the direction of an externally applied force measured by a force-torque sensor (pr...
Definition: FtCompensation.hpp:28
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/GrabberResponder_8hpp_source.html b/GrabberResponder_8hpp_source.html new file mode 100644 index 000000000..fc8c1b35c --- /dev/null +++ b/GrabberResponder_8hpp_source.html @@ -0,0 +1,131 @@ + + + + + + + +kinematics-dynamics: programs/haarDetectionController/GrabberResponder.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
GrabberResponder.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __GRABBER_RESPONDER_HPP__
+
4 #define __GRABBER_RESPONDER_HPP__
+
5 
+
6 #include <yarp/os/Bottle.h>
+
7 #include <yarp/os/PortReaderBuffer.h>
+
8 
+
9 #include "ICartesianControl.h"
+
10 
+
11 namespace roboticslab
+
12 {
+
13 
+
20 class GrabberResponder : public yarp::os::TypedReaderCallback<yarp::os::Bottle>
+
21 {
+
22 public:
+
23  GrabberResponder() : iCartesianControl(nullptr),
+
24  isStopped(true),
+
25  noApproach(false)
+
26  {}
+
27 
+
28  void onRead(yarp::os::Bottle &b) override;
+
29 
+
30  void setICartesianControlDriver(roboticslab::ICartesianControl *iCartesianControl)
+
31  {
+
32  this->iCartesianControl = iCartesianControl;
+
33  }
+
34 
+
35  void setNoApproachSetting(bool noApproach)
+
36  {
+
37  this->noApproach = noApproach;
+
38  }
+
39 
+
40 private:
+
41  roboticslab::ICartesianControl *iCartesianControl;
+
42 
+
43  bool isStopped, noApproach;
+
44 };
+
45 
+
46 } // namespace roboticslab
+
47 
+
48 #endif // __GRABBER_RESPONDER_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
Callback class for dealing with incoming grabber data streams.
Definition: GrabberResponder.hpp:21
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/HaarDetectionController_8hpp_source.html b/HaarDetectionController_8hpp_source.html new file mode 100644 index 000000000..f237c9f4c --- /dev/null +++ b/HaarDetectionController_8hpp_source.html @@ -0,0 +1,136 @@ + + + + + + + +kinematics-dynamics: programs/haarDetectionController/HaarDetectionController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HaarDetectionController.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __HAAR_DETECTION_CONTROLLER_HPP__
+
4 #define __HAAR_DETECTION_CONTROLLER_HPP__
+
5 
+
6 #include <yarp/os/BufferedPort.h>
+
7 #include <yarp/os/RFModule.h>
+
8 
+
9 #include <yarp/dev/PolyDriver.h>
+
10 
+
11 #include "ICartesianControl.h"
+
12 #include "IProximitySensors.h"
+
13 
+
14 #include "GrabberResponder.hpp"
+
15 
+
16 namespace roboticslab
+
17 {
+
18 
+
25 class HaarDetectionController : public yarp::os::RFModule
+
26 {
+
27 public:
+
28  ~HaarDetectionController() override
+
29  { close(); }
+
30 
+
31  bool configure(yarp::os::ResourceFinder & rf) override;
+
32  bool updateModule() override;
+
33  bool interruptModule() override;
+
34  bool close() override;
+
35  double getPeriod() override;
+
36 
+
37 private:
+
38  GrabberResponder grabberResponder;
+
39  yarp::os::BufferedPort<yarp::os::Bottle> grabberPort;
+
40 
+
41  yarp::dev::PolyDriver cartesianControlDevice;
+
42  roboticslab::ICartesianControl * iCartesianControl;
+
43 
+
44  yarp::dev::PolyDriver sensorsClientDevice;
+
45  roboticslab::IProximitySensors * iProximitySensors;
+
46 
+
47  double period;
+
48 };
+
49 
+
50 } // namespace roboticslab
+
51 
+
52 #endif // __HAAR_DETECTION_CONTROLLER_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
Callback class for dealing with incoming grabber data streams.
Definition: GrabberResponder.hpp:21
+
Create seek-and-follow trajectories based on Haar detection algorithms.
Definition: HaarDetectionController.hpp:26
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ICartesianControl_8h.html b/ICartesianControl_8h.html new file mode 100644 index 000000000..7d682979c --- /dev/null +++ b/ICartesianControl_8h.html @@ -0,0 +1,284 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/ICartesianControl.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes | +Namespaces
+
+
ICartesianControl.h File Reference
+
+
+ +

Contains roboticslab::ICartesianControl and related vocabs. +More...

+
#include <map>
+#include <vector>
+#include <yarp/os/Vocab.h>
+#include <ICartesianSolver.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  roboticslab::ICartesianControl
 Abstract base class for a cartesian controller. More...
 
+ + + + +

+Namespaces

 roboticslab
 The main, catch-all namespace for Robotics Lab UC3M.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

General-purpose vocabs

Used in acknowledge responses, configuration accessors, etc..

+
+constexpr int VOCAB_CC_OK = yarp::os::createVocab32('o','k')
 Success.
 
+constexpr int VOCAB_CC_FAILED = yarp::os::createVocab32('f','a','i','l')
 Failure.
 
+constexpr int VOCAB_CC_SET = yarp::os::createVocab32('s','e','t')
 Setter.
 
+constexpr int VOCAB_CC_GET = yarp::os::createVocab32('g','e','t')
 Getter.
 
+constexpr int VOCAB_CC_NOT_SET = yarp::os::createVocab32('n','s','e','t')
 State: not set.
 
RPC vocabs
+constexpr int VOCAB_CC_STAT = yarp::os::createVocab32('s','t','a','t')
 Current state and position.
 
+constexpr int VOCAB_CC_INV = yarp::os::createVocab32('i','n','v')
 Inverse kinematics.
 
+constexpr int VOCAB_CC_MOVJ = yarp::os::createVocab32('m','o','v','j')
 Move in joint space, absolute coordinates.
 
+constexpr int VOCAB_CC_RELJ = yarp::os::createVocab32('r','e','l','j')
 Move in joint space, relative coordinates.
 
+constexpr int VOCAB_CC_MOVL = yarp::os::createVocab32('m','o','v','l')
 Linear move to target position.
 
+constexpr int VOCAB_CC_MOVV = yarp::os::createVocab32('m','o','v','v')
 Linear move with given velocity.
 
+constexpr int VOCAB_CC_GCMP = yarp::os::createVocab32('g','c','m','p')
 Gravity compensation.
 
+constexpr int VOCAB_CC_FORC = yarp::os::createVocab32('f','o','r','c')
 Force control.
 
+constexpr int VOCAB_CC_STOP = yarp::os::createVocab32('s','t','o','p')
 Stop control.
 
+constexpr int VOCAB_CC_WAIT = yarp::os::createVocab32('w','a','i','t')
 Wait motion done.
 
+constexpr int VOCAB_CC_TOOL = yarp::os::createVocab32('t','o','o','l')
 Change tool.
 
+constexpr int VOCAB_CC_ACT = yarp::os::createVocab32('a','c','t')
 Actuate tool.
 
Streaming vocabs
+constexpr int VOCAB_CC_MOVI = yarp::os::createVocab32('m','o','v','i')
 Achieve pose (position control)
 
+constexpr int VOCAB_CC_TWIST = yarp::os::createVocab32('t','w','s','t')
 Instantaneous velocity steps.
 
+constexpr int VOCAB_CC_WRENCH = yarp::os::createVocab32('w','r','n','c')
 Exert force.
 
Control state vocabs

Used by roboticslab::ICartesianControl::stat to reflect current control state.

+
+constexpr int VOCAB_CC_NOT_CONTROLLING = yarp::os::createVocab32('c','c','n','c')
 Not controlling.
 
+constexpr int VOCAB_CC_MOVJ_CONTROLLING = yarp::os::createVocab32('c','c','j','c')
 Controlling MOVJ commands.
 
+constexpr int VOCAB_CC_MOVL_CONTROLLING = yarp::os::createVocab32('c','c','l','c')
 Controlling MOVL commands.
 
+constexpr int VOCAB_CC_MOVV_CONTROLLING = yarp::os::createVocab32('c','c','v','c')
 Controlling MOVV commands.
 
+constexpr int VOCAB_CC_GCMP_CONTROLLING = yarp::os::createVocab32('c','c','g','c')
 Controlling GCMP commands.
 
+constexpr int VOCAB_CC_FORC_CONTROLLING = yarp::os::createVocab32('c','c','f','c')
 Controlling FORC commands.
 
Actuator control vocabs

+

Used by roboticslab::ICartesianControl::act to control the actuator.

+
+constexpr int VOCAB_CC_ACTUATOR_NONE = yarp::os::createVocab32('a','c','n')
 No actuator or no action.
 
+constexpr int VOCAB_CC_ACTUATOR_CLOSE_GRIPPER = yarp::os::createVocab32('a','c','c','g')
 Close gripper.
 
+constexpr int VOCAB_CC_ACTUATOR_OPEN_GRIPPER = yarp::os::createVocab32('a','c','o','g')
 Open gripper.
 
+constexpr int VOCAB_CC_ACTUATOR_STOP_GRIPPER = yarp::os::createVocab32('a','c','s','g')
 Stop gripper.
 
+constexpr int VOCAB_CC_ACTUATOR_GENERIC = yarp::os::createVocab32('a','c','g')
 Generic actuator.
 
Controller configuration vocabs
+constexpr int VOCAB_CC_CONFIG_PARAMS = yarp::os::createVocab32('p','r','m','s')
 Parameter group.
 
+constexpr int VOCAB_CC_CONFIG_GAIN = yarp::os::createVocab32('c','p','c','g')
 Controller gain.
 
+constexpr int VOCAB_CC_CONFIG_TRAJ_DURATION = yarp::os::createVocab32('c','p','t','d')
 Trajectory duration.
 
+constexpr int VOCAB_CC_CONFIG_CMC_PERIOD = yarp::os::createVocab32('c','p','c','p')
 CMC period [ms].
 
+constexpr int VOCAB_CC_CONFIG_WAIT_PERIOD = yarp::os::createVocab32('c','p','w','p')
 Check period of 'wait' command [ms].
 
+constexpr int VOCAB_CC_CONFIG_FRAME = yarp::os::createVocab32('c','p','f')
 Reference frame.
 
+constexpr int VOCAB_CC_CONFIG_STREAMING_CMD = yarp::os::createVocab32('c','p','s','c')
 Preset streaming command.
 
+
+ + + + diff --git a/ICartesianControl_8h_source.html b/ICartesianControl_8h_source.html new file mode 100644 index 000000000..9908afa97 --- /dev/null +++ b/ICartesianControl_8h_source.html @@ -0,0 +1,271 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/ICartesianControl.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ICartesianControl.h
+
+
+Go to the documentation of this file.
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __I_CARTESIAN_CONTROL__
+
4 #define __I_CARTESIAN_CONTROL__
+
5 
+
6 #include <map>
+
7 #include <vector>
+
8 
+
9 #include <yarp/os/Vocab.h>
+
10 
+
11 #include <ICartesianSolver.h>
+
12 
+
20 //---------------------------------------------------------------------------------------------------------------
+
21 // KEEP VOCAB LIST AND DOCUMENTATION IN SYNC WITH roboticslab::RpcResponder::makeUsage AT CartesianControlServer/
+
22 //-----------------------------------------------------------------------------------------------------------------------------------
+
23 // USING `int` INSTEAD OF `yarp::conf::vocab32_t` BECAUSE OF SWIG: https://github.com/roboticslab-uc3m/kinematics-dynamics/issues/180
+
24 //-----------------------------------------------------------------------------------------------------------------------------------
+
25 
+
34 // General-purpose vocabs
+
35 constexpr int VOCAB_CC_OK = yarp::os::createVocab32('o','k');
+
36 constexpr int VOCAB_CC_FAILED = yarp::os::createVocab32('f','a','i','l');
+
37 constexpr int VOCAB_CC_SET = yarp::os::createVocab32('s','e','t');
+
38 constexpr int VOCAB_CC_GET = yarp::os::createVocab32('g','e','t');
+
39 constexpr int VOCAB_CC_NOT_SET = yarp::os::createVocab32('n','s','e','t');
+
40 
+
51 // RPC commands
+
52 constexpr int VOCAB_CC_STAT = yarp::os::createVocab32('s','t','a','t');
+
53 constexpr int VOCAB_CC_INV = yarp::os::createVocab32('i','n','v');
+
54 constexpr int VOCAB_CC_MOVJ = yarp::os::createVocab32('m','o','v','j');
+
55 constexpr int VOCAB_CC_RELJ = yarp::os::createVocab32('r','e','l','j');
+
56 constexpr int VOCAB_CC_MOVL = yarp::os::createVocab32('m','o','v','l');
+
57 constexpr int VOCAB_CC_MOVV = yarp::os::createVocab32('m','o','v','v');
+
58 constexpr int VOCAB_CC_GCMP = yarp::os::createVocab32('g','c','m','p');
+
59 constexpr int VOCAB_CC_FORC = yarp::os::createVocab32('f','o','r','c');
+
60 constexpr int VOCAB_CC_STOP = yarp::os::createVocab32('s','t','o','p');
+
61 constexpr int VOCAB_CC_WAIT = yarp::os::createVocab32('w','a','i','t');
+
62 constexpr int VOCAB_CC_TOOL = yarp::os::createVocab32('t','o','o','l');
+
63 constexpr int VOCAB_CC_ACT = yarp::os::createVocab32('a','c','t');
+
64 
+
75 // Streaming commands
+
76 constexpr int VOCAB_CC_MOVI = yarp::os::createVocab32('m','o','v','i');
+
77 constexpr int VOCAB_CC_TWIST = yarp::os::createVocab32('t','w','s','t');
+
78 constexpr int VOCAB_CC_WRENCH = yarp::os::createVocab32('w','r','n','c');
+
79 
+
90 // Control state
+
91 constexpr int VOCAB_CC_NOT_CONTROLLING = yarp::os::createVocab32('c','c','n','c');
+
92 constexpr int VOCAB_CC_MOVJ_CONTROLLING = yarp::os::createVocab32('c','c','j','c');
+
93 constexpr int VOCAB_CC_MOVL_CONTROLLING = yarp::os::createVocab32('c','c','l','c');
+
94 constexpr int VOCAB_CC_MOVV_CONTROLLING = yarp::os::createVocab32('c','c','v','c');
+
95 constexpr int VOCAB_CC_GCMP_CONTROLLING = yarp::os::createVocab32('c','c','g','c');
+
96 constexpr int VOCAB_CC_FORC_CONTROLLING = yarp::os::createVocab32('c','c','f','c');
+
97 
+
109 // Actuator control
+
110 constexpr int VOCAB_CC_ACTUATOR_NONE = yarp::os::createVocab32('a','c','n');
+
111 constexpr int VOCAB_CC_ACTUATOR_CLOSE_GRIPPER = yarp::os::createVocab32('a','c','c','g');
+
112 constexpr int VOCAB_CC_ACTUATOR_OPEN_GRIPPER = yarp::os::createVocab32('a','c','o','g');
+
113 constexpr int VOCAB_CC_ACTUATOR_STOP_GRIPPER = yarp::os::createVocab32('a','c','s','g');
+
114 constexpr int VOCAB_CC_ACTUATOR_GENERIC = yarp::os::createVocab32('a','c','g');
+
115 
+
124 // Controller configuration (parameter keys)
+
125 constexpr int VOCAB_CC_CONFIG_PARAMS = yarp::os::createVocab32('p','r','m','s');
+
126 constexpr int VOCAB_CC_CONFIG_GAIN = yarp::os::createVocab32('c','p','c','g');
+
127 constexpr int VOCAB_CC_CONFIG_TRAJ_DURATION = yarp::os::createVocab32('c','p','t','d');
+
128 constexpr int VOCAB_CC_CONFIG_CMC_PERIOD = yarp::os::createVocab32('c','p','c','p');
+
129 constexpr int VOCAB_CC_CONFIG_WAIT_PERIOD = yarp::os::createVocab32('c','p','w','p');
+
130 constexpr int VOCAB_CC_CONFIG_FRAME = yarp::os::createVocab32('c','p','f');
+
131 constexpr int VOCAB_CC_CONFIG_STREAMING_CMD = yarp::os::createVocab32('c','p','s','c');
+
132 
+
135 namespace roboticslab
+
136 {
+
137 
+ +
142 {
+
143 public:
+
145  virtual ~ICartesianControl() = default;
+
146 
+
147  //--------------------- RPC commands ---------------------
+
148 
+
171  virtual bool stat(std::vector<double> &x, int * state = nullptr, double * timestamp = nullptr) = 0;
+
172 
+
185  virtual bool inv(const std::vector<double> &xd, std::vector<double> &q) = 0;
+
186 
+
201  virtual bool movj(const std::vector<double> &xd) = 0;
+
202 
+
217  virtual bool relj(const std::vector<double> &xd) = 0;
+
218 
+
230  virtual bool movl(const std::vector<double> &xd) = 0;
+
231 
+
243  virtual bool movv(const std::vector<double> &xdotd) = 0;
+
244 
+
252  virtual bool gcmp() = 0;
+
253 
+
265  virtual bool forc(const std::vector<double> &fd) = 0;
+
266 
+
274  virtual bool stopControl() = 0;
+
275 
+
287  virtual bool wait(double timeout = 0.0) = 0;
+
288 
+
300  virtual bool tool(const std::vector<double> &x) = 0;
+
301 
+
311  virtual bool act(int command) = 0;
+
312 
+
315  //--------------------- Streaming commands ---------------------
+
316 
+
335  virtual void movi(const std::vector<double> &x) = 0;
+
336 
+
346  virtual void twist(const std::vector<double> &xdot) = 0;
+
347 
+
356  virtual void wrench(const std::vector<double> &w) = 0;
+
357 
+
360  //--------------------- Configuration accessors ---------------------
+
361 
+
381  virtual bool setParameter(int vocab, double value) = 0;
+
382 
+
393  virtual bool getParameter(int vocab, double * value) = 0;
+
394 
+
404  virtual bool setParameters(const std::map<int, double> & params) = 0;
+
405 
+
415  virtual bool getParameters(std::map<int, double> & params) = 0;
+
416 
+
418 };
+
419 
+
420 } // namespace roboticslab
+
421 
+
424 #endif // __I_CARTESIAN_CONTROL__
+
constexpr int VOCAB_CC_STAT
Current state and position.
Definition: ICartesianControl.h:52
+
constexpr int VOCAB_CC_RELJ
Move in joint space, relative coordinates.
Definition: ICartesianControl.h:55
+
constexpr int VOCAB_CC_ACTUATOR_CLOSE_GRIPPER
Close gripper.
Definition: ICartesianControl.h:111
+
constexpr int VOCAB_CC_MOVJ
Move in joint space, absolute coordinates.
Definition: ICartesianControl.h:54
+
constexpr int VOCAB_CC_ACTUATOR_NONE
No actuator or no action.
Definition: ICartesianControl.h:110
+
constexpr int VOCAB_CC_TOOL
Change tool.
Definition: ICartesianControl.h:62
+
constexpr int VOCAB_CC_FORC
Force control.
Definition: ICartesianControl.h:59
+
constexpr int VOCAB_CC_FORC_CONTROLLING
Controlling FORC commands.
Definition: ICartesianControl.h:96
+
constexpr int VOCAB_CC_GCMP_CONTROLLING
Controlling GCMP commands.
Definition: ICartesianControl.h:95
+
constexpr int VOCAB_CC_CONFIG_TRAJ_DURATION
Trajectory duration.
Definition: ICartesianControl.h:127
+
constexpr int VOCAB_CC_GCMP
Gravity compensation.
Definition: ICartesianControl.h:58
+
constexpr int VOCAB_CC_SET
Setter.
Definition: ICartesianControl.h:37
+
constexpr int VOCAB_CC_CONFIG_PARAMS
Parameter group.
Definition: ICartesianControl.h:125
+
constexpr int VOCAB_CC_INV
Inverse kinematics.
Definition: ICartesianControl.h:53
+
constexpr int VOCAB_CC_CONFIG_FRAME
Reference frame.
Definition: ICartesianControl.h:130
+
constexpr int VOCAB_CC_ACTUATOR_STOP_GRIPPER
Stop gripper.
Definition: ICartesianControl.h:113
+
constexpr int VOCAB_CC_OK
Success.
Definition: ICartesianControl.h:35
+
constexpr int VOCAB_CC_GET
Getter.
Definition: ICartesianControl.h:38
+
constexpr int VOCAB_CC_MOVI
Achieve pose (position control)
Definition: ICartesianControl.h:76
+
constexpr int VOCAB_CC_WRENCH
Exert force.
Definition: ICartesianControl.h:78
+
constexpr int VOCAB_CC_NOT_SET
State: not set.
Definition: ICartesianControl.h:39
+
constexpr int VOCAB_CC_ACTUATOR_GENERIC
Generic actuator.
Definition: ICartesianControl.h:114
+
constexpr int VOCAB_CC_ACT
Actuate tool.
Definition: ICartesianControl.h:63
+
constexpr int VOCAB_CC_TWIST
Instantaneous velocity steps.
Definition: ICartesianControl.h:77
+
constexpr int VOCAB_CC_CONFIG_WAIT_PERIOD
Check period of 'wait' command [ms].
Definition: ICartesianControl.h:129
+
constexpr int VOCAB_CC_WAIT
Wait motion done.
Definition: ICartesianControl.h:61
+
constexpr int VOCAB_CC_FAILED
Failure.
Definition: ICartesianControl.h:36
+
constexpr int VOCAB_CC_NOT_CONTROLLING
Not controlling.
Definition: ICartesianControl.h:91
+
constexpr int VOCAB_CC_CONFIG_CMC_PERIOD
CMC period [ms].
Definition: ICartesianControl.h:128
+
constexpr int VOCAB_CC_MOVV_CONTROLLING
Controlling MOVV commands.
Definition: ICartesianControl.h:94
+
constexpr int VOCAB_CC_CONFIG_GAIN
Controller gain.
Definition: ICartesianControl.h:126
+
constexpr int VOCAB_CC_CONFIG_STREAMING_CMD
Preset streaming command.
Definition: ICartesianControl.h:131
+
constexpr int VOCAB_CC_MOVL_CONTROLLING
Controlling MOVL commands.
Definition: ICartesianControl.h:93
+
constexpr int VOCAB_CC_STOP
Stop control.
Definition: ICartesianControl.h:60
+
constexpr int VOCAB_CC_ACTUATOR_OPEN_GRIPPER
Open gripper.
Definition: ICartesianControl.h:112
+
constexpr int VOCAB_CC_MOVL
Linear move to target position.
Definition: ICartesianControl.h:56
+
constexpr int VOCAB_CC_MOVV
Linear move with given velocity.
Definition: ICartesianControl.h:57
+
constexpr int VOCAB_CC_MOVJ_CONTROLLING
Controlling MOVJ commands.
Definition: ICartesianControl.h:92
+
Contains roboticslab::ICartesianSolver.
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
virtual ~ICartesianControl()=default
Destructor.
+
virtual bool stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr)=0
Current state and position.
+
virtual bool act(int command)=0
Actuate tool.
+
virtual bool tool(const std::vector< double > &x)=0
Change tool.
+
virtual bool relj(const std::vector< double > &xd)=0
Move in joint space, relative coordinates.
+
virtual void movi(const std::vector< double > &x)=0
Achieve pose.
+
virtual bool setParameter(int vocab, double value)=0
Set a configuration parameter.
+
virtual bool setParameters(const std::map< int, double > &params)=0
Set multiple configuration parameters.
+
virtual bool getParameter(int vocab, double *value)=0
Retrieve a configuration parameter.
+
virtual bool movl(const std::vector< double > &xd)=0
Linear move to target position.
+
virtual bool wait(double timeout=0.0)=0
Wait until completion.
+
virtual void twist(const std::vector< double > &xdot)=0
Instantaneous velocity steps.
+
virtual bool gcmp()=0
Gravity compensation.
+
virtual bool movv(const std::vector< double > &xdotd)=0
Linear move with given velocity.
+
virtual bool inv(const std::vector< double > &xd, std::vector< double > &q)=0
Inverse kinematics.
+
virtual bool getParameters(std::map< int, double > &params)=0
Retrieve multiple configuration parameters.
+
virtual bool forc(const std::vector< double > &fd)=0
Force control.
+
virtual bool movj(const std::vector< double > &xd)=0
Move in joint space, absolute coordinates.
+
virtual bool stopControl()=0
Stop control.
+
virtual void wrench(const std::vector< double > &w)=0
Exert force.
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ICartesianSolver_8h.html b/ICartesianSolver_8h.html new file mode 100644 index 000000000..e96a7f7d9 --- /dev/null +++ b/ICartesianSolver_8h.html @@ -0,0 +1,108 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/ICartesianSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes | +Namespaces
+
+
ICartesianSolver.h File Reference
+
+
+ +

Contains roboticslab::ICartesianSolver. +More...

+
#include <vector>
+#include <yarp/os/Vocab.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  roboticslab::ICartesianSolver
 Abstract base class for a cartesian solver. More...
 
+ + + + +

+Namespaces

 roboticslab
 The main, catch-all namespace for Robotics Lab UC3M.
 
+
+ + + + diff --git a/ICartesianSolver_8h_source.html b/ICartesianSolver_8h_source.html new file mode 100644 index 000000000..ad188d6b1 --- /dev/null +++ b/ICartesianSolver_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/ICartesianSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ICartesianSolver.h
+
+
+Go to the documentation of this file.
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __I_CARTESIAN_SOLVER__
+
4 #define __I_CARTESIAN_SOLVER__
+
5 
+
6 #include <vector>
+
7 #include <yarp/os/Vocab.h>
+
8 
+
16 namespace roboticslab
+
17 {
+
18 
+ +
23 {
+
24 public:
+ +
27  {
+
28  BASE_FRAME = yarp::os::createVocab32('c','p','f','b'),
+
29  TCP_FRAME = yarp::os::createVocab32('c','p','f','t')
+
30  };
+
31 
+
33  virtual ~ICartesianSolver() = default;
+
34 
+
40  virtual int getNumJoints() = 0;
+
41 
+
47  virtual int getNumTcps() = 0;
+
48 
+
58  virtual bool appendLink(const std::vector<double>& x) = 0;
+
59 
+
65  virtual bool restoreOriginalChain() = 0;
+
66 
+
82  virtual bool changeOrigin(const std::vector<double> &x_old_obj,
+
83  const std::vector<double> &x_new_old,
+
84  std::vector<double> &x_new_obj) = 0;
+
85 
+
96  virtual bool fwdKin(const std::vector<double> &q, std::vector<double> &x) = 0;
+
97 
+
116  virtual bool poseDiff(const std::vector<double> &xLhs, const std::vector<double> &xRhs, std::vector<double> &xOut) = 0;
+
117 
+
130  virtual bool invKin(const std::vector<double> &xd, const std::vector<double> &qGuess, std::vector<double> &q,
+
131  reference_frame frame = BASE_FRAME) = 0;
+
132 
+
145  virtual bool diffInvKin(const std::vector<double> &q, const std::vector<double> &xdot, std::vector<double> &qdot,
+
146  reference_frame frame = BASE_FRAME) = 0;
+
147 
+
160  virtual bool invDyn(const std::vector<double> &q, std::vector<double> &t) = 0;
+
161 
+
162 #ifndef SWIG_PREPROCESSOR_SHOULD_SKIP_THIS
+
178  [[deprecated("use `const std::vector<double> &ftip` signature instead")]]
+
179  virtual bool invDyn(const std::vector<double> &q, const std::vector<double> &qdot, const std::vector<double> &qdotdot,
+
180  const std::vector<std::vector<double>> &fexts, std::vector<double> &t)
+
181  {
+
182  return invDyn(q, qdot, qdotdot, fexts.back(), t);
+
183  }
+
184 #endif
+
185 
+
202  virtual bool invDyn(const std::vector<double> &q, const std::vector<double> &qdot, const std::vector<double> &qdotdot,
+
203  const std::vector<double> &ftip, std::vector<double> &t, reference_frame frame = BASE_FRAME) = 0;
+
204 };
+
205 
+
206 } // namespace roboticslab
+
207 
+
210 #endif // __I_CARTESIAN_SOLVER__
+
Abstract base class for a cartesian solver.
Definition: ICartesianSolver.h:23
+
virtual int getNumTcps()=0
Get number of TCPs for which the solver has been configured.
+
virtual bool appendLink(const std::vector< double > &x)=0
Append an additional link.
+
virtual bool invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame=BASE_FRAME)=0
Perform inverse dynamics.
+
virtual bool fwdKin(const std::vector< double > &q, std::vector< double > &x)=0
Perform forward kinematics.
+
virtual bool restoreOriginalChain()=0
Restore original kinematic chain.
+
virtual bool invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame=BASE_FRAME)=0
Perform inverse kinematics.
+
virtual bool changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj)=0
Change origin in which a pose is expressed.
+
virtual ~ICartesianSolver()=default
Destructor.
+
virtual bool diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame=BASE_FRAME)=0
Perform differential inverse kinematics.
+
virtual bool invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)
Perform inverse dynamics.
Definition: ICartesianSolver.h:179
+
virtual int getNumJoints()=0
Get number of joints for which the solver has been configured.
+
reference_frame
Lists supported reference frames.
Definition: ICartesianSolver.h:27
+
@ TCP_FRAME
End-effector frame (TCP)
Definition: ICartesianSolver.h:29
+
@ BASE_FRAME
Base frame.
Definition: ICartesianSolver.h:28
+
virtual bool poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut)=0
Obtain difference between supplied pose inputs.
+
virtual bool invDyn(const std::vector< double > &q, std::vector< double > &t)=0
Perform inverse dynamics.
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/KdlSolver_8hpp_source.html b/KdlSolver_8hpp_source.html new file mode 100644 index 000000000..d2b9e6c0e --- /dev/null +++ b/KdlSolver_8hpp_source.html @@ -0,0 +1,192 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlSolver/KdlSolver.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KdlSolver.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __KDL_SOLVER_HPP__
+
4 #define __KDL_SOLVER_HPP__
+
5 
+
6 #include <mutex>
+
7 
+
8 #include <yarp/dev/DeviceDriver.h>
+
9 
+
10 #include <kdl/chain.hpp>
+
11 #include <kdl/chainfksolver.hpp>
+
12 #include <kdl/chainiksolver.hpp>
+
13 #include <kdl/chainidsolver.hpp>
+
14 
+
15 #include "ICartesianSolver.h"
+
16 #include "LogComponent.hpp"
+
17 
+
18 namespace roboticslab
+
19 {
+
20 
+
32 class KdlSolver : public yarp::dev::DeviceDriver,
+
33  public ICartesianSolver
+
34 {
+
35 public:
+
36  // -- ICartesianSolver declarations. Implementation in ICartesianSolverImpl.cpp--
+
37 
+
38  // Get number of joints for which the solver has been configured.
+
39  int getNumJoints() override;
+
40 
+
41  // Get number of TCPs for which the solver has been configured.
+
42  int getNumTcps() override;
+
43 
+
44  // Append an additional link.
+
45  bool appendLink(const std::vector<double>& x) override;
+
46 
+
47  // Restore original kinematic chain.
+
48  bool restoreOriginalChain() override;
+
49 
+
50  // Change reference frame.
+
51  bool changeOrigin(const std::vector<double> &x_old_obj,
+
52  const std::vector<double> &x_new_old,
+
53  std::vector<double> &x_new_obj) override;
+
54 
+
55  // Perform forward kinematics.
+
56  bool fwdKin(const std::vector<double> &q, std::vector<double> &x) override;
+
57 
+
58  // Obtain difference between supplied pose inputs.
+
59  bool poseDiff(const std::vector<double> &xLhs, const std::vector<double> &xRhs, std::vector<double> &xOut) override;
+
60 
+
61  // Perform inverse kinematics.
+
62  bool invKin(const std::vector<double> &xd, const std::vector<double> &qGuess, std::vector<double> &q,
+
63  reference_frame frame) override;
+
64 
+
65  // Perform differential inverse kinematics.
+
66  bool diffInvKin(const std::vector<double> &q, const std::vector<double> &xdot, std::vector<double> &qdot,
+
67  reference_frame frame) override;
+
68 
+
69  // Perform inverse dynamics.
+
70  bool invDyn(const std::vector<double> &q, std::vector<double> &t) override;
+
71 
+
72  // Perform inverse dynamics.
+
73  bool invDyn(const std::vector<double> &q, const std::vector<double> &qdot, const std::vector<double> &qdotdot,
+
74  const std::vector<double> &ftip, std::vector<double> &t, reference_frame frame) override;
+
75 
+
76  // -------- DeviceDriver declarations. Implementation in IDeviceImpl.cpp --------
+
77 
+
78  bool open(yarp::os::Searchable & config) override;
+
79  bool close() override;
+
80 
+
81 private:
+
82  inline const yarp::os::LogComponent & logc() const
+
83  { return !isQuiet ? KDLS() : KDLS_QUIET(); }
+
84 
+
85  mutable std::mutex mtx;
+
86 
+
88  KDL::Chain chain;
+
89 
+
91  KDL::Chain originalChain;
+
92 
+
93  KDL::ChainFkSolverPos * fkSolverPos {nullptr};
+
94  KDL::ChainIkSolverPos * ikSolverPos {nullptr};
+
95  KDL::ChainIkSolverVel * ikSolverVel {nullptr};
+
96  KDL::ChainIdSolver * idSolver {nullptr};
+
97 
+
98  bool isQuiet;
+
99 };
+
100 
+
101 } // namespace roboticslab
+
102 
+
103 #endif // __KDL_SOLVER_HPP__
+
Contains roboticslab::ICartesianSolver.
+
Abstract base class for a cartesian solver.
Definition: ICartesianSolver.h:23
+
reference_frame
Lists supported reference frames.
Definition: ICartesianSolver.h:27
+
The KdlSolver class implements ICartesianSolver.
Definition: KdlSolver.hpp:34
+
bool restoreOriginalChain() override
Restore original kinematic chain.
Definition: ICartesianSolverImpl.cpp:51
+
bool invDyn(const std::vector< double > &q, std::vector< double > &t) override
Perform inverse dynamics.
Definition: ICartesianSolverImpl.cpp:225
+
bool poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) override
Obtain difference between supplied pose inputs.
Definition: ICartesianSolverImpl.cpp:103
+
bool invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) override
Perform inverse kinematics.
Definition: ICartesianSolverImpl.cpp:116
+
bool changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) override
Change origin in which a pose is expressed.
Definition: ICartesianSolverImpl.cpp:67
+
KDL::Chain chain
Definition: KdlSolver.hpp:88
+
int getNumJoints() override
Get number of joints for which the solver has been configured.
Definition: ICartesianSolverImpl.cpp:19
+
int getNumTcps() override
Get number of TCPs for which the solver has been configured.
Definition: ICartesianSolverImpl.cpp:26
+
bool diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) override
Perform differential inverse kinematics.
Definition: ICartesianSolverImpl.cpp:169
+
bool fwdKin(const std::vector< double > &q, std::vector< double > &x) override
Perform forward kinematics.
Definition: ICartesianSolverImpl.cpp:80
+
KDL::Chain originalChain
Definition: KdlSolver.hpp:91
+
bool appendLink(const std::vector< double > &x) override
Append an additional link.
Definition: ICartesianSolverImpl.cpp:33
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/KdlTreeSolver_8hpp_source.html b/KdlTreeSolver_8hpp_source.html new file mode 100644 index 000000000..957fdca89 --- /dev/null +++ b/KdlTreeSolver_8hpp_source.html @@ -0,0 +1,190 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlTreeSolver/KdlTreeSolver.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KdlTreeSolver.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __KDL_TREE_SOLVER_HPP__
+
4 #define __KDL_TREE_SOLVER_HPP__
+
5 
+
6 #include <map>
+
7 #include <string>
+
8 #include <vector>
+
9 
+
10 #include <yarp/dev/DeviceDriver.h>
+
11 
+
12 #include <kdl/tree.hpp>
+
13 #include <kdl/treefksolver.hpp>
+
14 #include <kdl/treeiksolver.hpp>
+
15 #include <kdl/treeidsolver.hpp>
+
16 
+
17 #include "ICartesianSolver.h"
+
18 
+
19 namespace roboticslab
+
20 {
+
21 
+
33 class KdlTreeSolver : public yarp::dev::DeviceDriver,
+
34  public ICartesianSolver
+
35 {
+
36 public:
+
37  KdlTreeSolver() : fkSolverPos(nullptr),
+
38  ikSolverPos(nullptr),
+
39  ikSolverVel(nullptr),
+
40  idSolver(nullptr)
+
41  {}
+
42 
+
43  // -- ICartesianSolver declarations. Implementation in ICartesianSolverImpl.cpp --
+
44 
+
45  // Get number of joints for which the solver has been configured.
+
46  int getNumJoints() override;
+
47 
+
48  // Get number of TCPs for which the solver has been configured.
+
49  int getNumTcps() override;
+
50 
+
51  // Append an additional link.
+
52  bool appendLink(const std::vector<double> & x) override;
+
53 
+
54  // Restore original kinematic chain.
+
55  bool restoreOriginalChain() override;
+
56 
+
57  // Change reference frame.
+
58  bool changeOrigin(const std::vector<double> & x_old_obj,
+
59  const std::vector<double> & x_new_old,
+
60  std::vector<double> & x_new_obj) override;
+
61 
+
62  // Perform forward kinematics.
+
63  bool fwdKin(const std::vector<double> & q, std::vector<double> & x) override;
+
64 
+
65  // Obtain difference between supplied pose inputs.
+
66  bool poseDiff(const std::vector<double> & xLhs, const std::vector<double> & xRhs, std::vector<double> & xOut) override;
+
67 
+
68  // Perform inverse kinematics.
+
69  bool invKin(const std::vector<double> & xd, const std::vector<double> & qGuess, std::vector<double> & q,
+
70  reference_frame frame) override;
+
71 
+
72  // Perform differential inverse kinematics.
+
73  bool diffInvKin(const std::vector<double> & q, const std::vector<double> & xdot, std::vector<double> & qdot,
+
74  reference_frame frame) override;
+
75 
+
76  // Perform inverse dynamics.
+
77  bool invDyn(const std::vector<double> & q, std::vector<double> & t) override;
+
78 
+
79  // Perform inverse dynamics.
+
80  bool invDyn(const std::vector<double> & q, const std::vector<double> & qdot, const std::vector<double> & qdotdot,
+
81  const std::vector<double> & ftip, std::vector<double> & t, reference_frame frame) override;
+
82 
+
83  // -------- DeviceDriver declarations. Implementation in IDeviceImpl.cpp --------
+
84 
+
85  bool open(yarp::os::Searchable & config) override;
+
86 
+
87  bool close() override;
+
88 
+
89 protected:
+
90  std::vector<std::string> endpoints;
+
91  std::map<std::string, std::string> mergedEndpoints;
+
92  KDL::Tree tree;
+
93  KDL::TreeFkSolverPos * fkSolverPos;
+
94  KDL::TreeIkSolverPos * ikSolverPos;
+
95  KDL::TreeIkSolverVel * ikSolverVel;
+
96  KDL::TreeIdSolver * idSolver;
+
97 };
+
98 
+
99 } // namespace roboticslab
+
100 
+
101 #endif // __KDL_TREE_SOLVER_HPP__
+
Contains roboticslab::ICartesianSolver.
+
Abstract base class for a cartesian solver.
Definition: ICartesianSolver.h:23
+
reference_frame
Lists supported reference frames.
Definition: ICartesianSolver.h:27
+
The KdlTreeSolver class implements ICartesianSolver.
Definition: KdlTreeSolver.hpp:35
+
bool poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) override
Obtain difference between supplied pose inputs.
Definition: ICartesianSolverImpl.cpp:103
+
bool invDyn(const std::vector< double > &q, std::vector< double > &t) override
Perform inverse dynamics.
Definition: ICartesianSolverImpl.cpp:262
+
bool diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) override
Perform differential inverse kinematics.
Definition: ICartesianSolverImpl.cpp:193
+
bool restoreOriginalChain() override
Restore original kinematic chain.
Definition: ICartesianSolverImpl.cpp:42
+
bool invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) override
Perform inverse kinematics.
Definition: ICartesianSolverImpl.cpp:127
+
int getNumJoints() override
Get number of joints for which the solver has been configured.
Definition: ICartesianSolverImpl.cpp:20
+
bool fwdKin(const std::vector< double > &q, std::vector< double > &x) override
Perform forward kinematics.
Definition: ICartesianSolverImpl.cpp:73
+
bool appendLink(const std::vector< double > &x) override
Append an additional link.
Definition: ICartesianSolverImpl.cpp:34
+
int getNumTcps() override
Get number of TCPs for which the solver has been configured.
Definition: ICartesianSolverImpl.cpp:27
+
bool changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) override
Change origin in which a pose is expressed.
Definition: ICartesianSolverImpl.cpp:50
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/KdlVectorConverter_8hpp_source.html b/KdlVectorConverter_8hpp_source.html new file mode 100644 index 000000000..ac37f3c80 --- /dev/null +++ b/KdlVectorConverter_8hpp_source.html @@ -0,0 +1,119 @@ + + + + + + + +kinematics-dynamics: libraries/KdlVectorConverterLib/KdlVectorConverter.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KdlVectorConverter.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __KDL_VECTOR_CONVERTER_HPP__
+
4 #define __KDL_VECTOR_CONVERTER_HPP__
+
5 
+
6 #include <vector>
+
7 
+
8 #include <kdl/frames.hpp>
+
9 
+ +
22 {
+
23 
+
33 KDL::Frame vectorToFrame(const std::vector<double> & x);
+
34 
+
44 std::vector<double> frameToVector(const KDL::Frame & f);
+
45 
+
55 KDL::Twist vectorToTwist(const std::vector<double> & xdot);
+
56 
+
66 std::vector<double> twistToVector(const KDL::Twist & t);
+
67 
+
76 KDL::Wrench vectorToWrench(const std::vector<double> & f);
+
77 
+
86 std::vector<double> wrenchToVector(const KDL::Wrench & w);
+
87 
+
88 } // namespace roboticslab::KdlVectorConverter
+
89 
+
90 #endif // __KDL_VECTOR_CONVERTER_HPP__
+
Collection of utilities related to KDL and std::vector classes.
Definition: KdlVectorConverter.cpp:14
+
KDL::Frame vectorToFrame(const std::vector< double > &x)
Convert from std::vector<double> to KDL::Frame.
Definition: KdlVectorConverter.cpp:18
+
std::vector< double > frameToVector(const KDL::Frame &f)
Convert from KDL::Frame to std::vector<double>
Definition: KdlVectorConverter.cpp:41
+
KDL::Twist vectorToTwist(const std::vector< double > &xdot)
Convert from std::vector<double> to KDL::Twist.
Definition: KdlVectorConverter.cpp:60
+
KDL::Wrench vectorToWrench(const std::vector< double > &f)
Convert from std::vector<double> to KDL::Wrench.
Definition: KdlVectorConverter.cpp:100
+
std::vector< double > twistToVector(const KDL::Twist &t)
Convert from KDL::Twist to std::vector<double>
Definition: KdlVectorConverter.cpp:83
+
std::vector< double > wrenchToVector(const KDL::Wrench &w)
Convert from KDL::Wrench to std::vector<double>
Definition: KdlVectorConverter.cpp:123
+
+ + + + diff --git a/KeyboardController_8hpp_source.html b/KeyboardController_8hpp_source.html new file mode 100644 index 000000000..98de16917 --- /dev/null +++ b/KeyboardController_8hpp_source.html @@ -0,0 +1,185 @@ + + + + + + + +kinematics-dynamics: programs/keyboardController/KeyboardController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KeyboardController.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __KEYBOARD_CONTROLLER_HPP__
+
4 #define __KEYBOARD_CONTROLLER_HPP__
+
5 
+
6 #include <string>
+
7 #include <vector>
+
8 #include <functional>
+
9 
+
10 #include <yarp/os/RFModule.h>
+
11 #include <yarp/os/ResourceFinder.h>
+
12 
+
13 #include <yarp/dev/PolyDriver.h>
+
14 #include <yarp/dev/IControlLimits.h>
+
15 #include <yarp/dev/IControlMode.h>
+
16 #include <yarp/dev/IEncoders.h>
+
17 #include <yarp/dev/IVelocityControl.h>
+
18 
+
19 #include "LinearTrajectoryThread.hpp"
+
20 #include "ICartesianControl.h"
+
21 #include "KinematicRepresentation.hpp"
+
22 
+
23 namespace roboticslab
+
24 {
+
25 
+
35 class KeyboardController : public yarp::os::RFModule
+
36 {
+
37 public:
+
38  ~KeyboardController() override
+
39  { close(); }
+
40 
+
41  // used for array indexes and size checks
+
42  enum joint { Q1 = 0, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, MAX_JOINTS };
+
43  enum cart { X = 0, Y, Z, ROTX, ROTY, ROTZ, NUM_CART_COORDS };
+
44 
+
45  bool configure(yarp::os::ResourceFinder & rf) override;
+
46  bool updateModule() override;
+
47  bool interruptModule() override;
+
48  double getPeriod() override;
+
49  bool close() override;
+
50 
+
51 private:
+
52  enum control_modes { NOT_CONTROLLING, JOINT_MODE, CARTESIAN_MODE };
+
53 
+
54  static const std::plus<double> increment_functor;
+
55  static const std::minus<double> decrement_functor;
+
56 
+
57  template <typename func>
+
58  void incrementOrDecrementJointVelocity(joint q, func op);
+
59 
+
60  template <typename func>
+
61  void incrementOrDecrementCartesianVelocity(cart coord, func op);
+
62 
+
63  void toggleReferenceFrame();
+
64 
+
65  void actuateTool(int command);
+
66 
+
67  void printJointPositions();
+
68  void printCartesianPositions();
+
69 
+
70  void issueStop();
+
71 
+
72  void printHelp();
+
73 
+
74  int axes;
+
75  int currentActuatorCommand;
+
76 
+ +
78  std::string angleRepr;
+ +
80  control_modes controlMode;
+
81 
+
82  bool usingThread;
+
83  LinearTrajectoryThread * linTrajThread;
+
84 
+
85  yarp::dev::PolyDriver controlBoardDevice;
+
86  yarp::dev::PolyDriver cartesianControlDevice;
+
87 
+
88  yarp::dev::IEncoders * iEncoders;
+
89  yarp::dev::IControlMode * iControlMode;
+
90  yarp::dev::IControlLimits * iControlLimits;
+
91  yarp::dev::IVelocityControl * iVelocityControl;
+
92 
+
93  roboticslab::ICartesianControl * iCartesianControl;
+
94 
+
95  std::vector<double> maxVelocityLimits;
+
96  std::vector<double> currentJointVels;
+
97  std::vector<double> currentCartVels;
+
98 };
+
99 
+
100 } // namespace roboticslab
+
101 
+
102 #endif // __KEYBOARD_CONTROLLER_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
reference_frame
Lists supported reference frames.
Definition: ICartesianSolver.h:27
+
Sends streaming commands to the cartesian controller from a standard keyboard.
Definition: KeyboardController.hpp:36
+
Periodic thread that encapsulates a linear trajectory.
Definition: LinearTrajectoryThread.hpp:24
+
orientation_system
Lists available rotational representations.
Definition: KinematicRepresentation.hpp:36
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/KinematicRepresentation_8hpp_source.html b/KinematicRepresentation_8hpp_source.html new file mode 100644 index 000000000..6f20dbc47 --- /dev/null +++ b/KinematicRepresentation_8hpp_source.html @@ -0,0 +1,185 @@ + + + + + + + +kinematics-dynamics: libraries/KinematicRepresentationLib/KinematicRepresentation.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KinematicRepresentation.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __KINEMATIC_REPRESENTATION_HPP__
+
4 #define __KINEMATIC_REPRESENTATION_HPP__
+
5 
+
6 #include <string>
+
7 #include <vector>
+
8 
+ +
23 {
+
24 
+ +
27 {
+
28  CARTESIAN,
+
29  CYLINDRICAL,
+
30  SPHERICAL,
+
31  NONE
+
32 };
+
33 
+ +
36 {
+
37  AXIS_ANGLE,
+ +
39  RPY,
+
40  EULER_YZ,
+
41  EULER_ZYZ,
+ +
43  NONE
+
44 };
+
45 
+
47 enum class angular_units
+
48 {
+
49  DEGREES,
+
50  RADIANS
+
51 };
+
52 
+
68 bool encodePose(const std::vector<double> & x_in, std::vector<double> & x_out,
+ +
70 
+
85 bool decodePose(const std::vector<double> & x_in, std::vector<double> & x_out,
+ +
87 
+
104 bool encodeVelocity(const std::vector<double> & x_in, const std::vector<double> & xdot_in,
+
105  std::vector<double> & xdot_out, coordinate_system coord, orientation_system orient,
+ +
107 
+
124 bool decodeVelocity(const std::vector<double> & x_in, const std::vector<double> & xdot_in,
+
125  std::vector<double> & xdot_out, coordinate_system coord, orientation_system orient,
+ +
127 
+
145 bool encodeAcceleration(const std::vector<double> & x_in, const std::vector<double> & xdot_in,
+
146  const std::vector<double> & xdotdot_in, std::vector<double> & xdotdot_out,
+ +
148 
+
167 bool decodeAcceleration(const std::vector<double> & x_in, const std::vector<double> & xdot_in,
+
168  const std::vector<double> & xdotdot_in, std::vector<double> & xdotdot_out,
+ +
170 
+
178 double degToRad(double deg);
+
179 
+
187 double radToDeg(double rad);
+
188 
+
205 bool parseEnumerator(const std::string & str, coordinate_system * coord,
+ +
207 
+
227 bool parseEnumerator(const std::string & str, orientation_system * orient,
+ +
229 
+
244 bool parseEnumerator(const std::string & str, angular_units * units,
+ +
246 
+
247 } // namespace roboticslab::KinRepresentation
+
248 
+
249 #endif // __KINEMATIC_REPRESENTATION_HPP__
+
Collection of static methods to perform geometric transformations.
Definition: KinematicRepresentation.cpp:72
+
coordinate_system
Lists available translational representations.
Definition: KinematicRepresentation.hpp:27
+
@ SPHERICAL
(radial distance, polar angle, azimuthal angle)
+
@ NONE
omit coordinate system in resulting combined coord+orient representation
+
@ CARTESIAN
(x distance, y distance, z distance)
+
@ CYLINDRICAL
(radial distance, azimuthal angle, height)
+
double radToDeg(double rad)
Converts radians to degrees.
Definition: KinematicRepresentation.cpp:523
+
bool encodePose(const std::vector< double > &x_in, std::vector< double > &x_out, coordinate_system coord, orientation_system orient, angular_units angle)
Converts the translation and rotation values of a specific pose to coordinate_system::CARTESIAN and o...
Definition: KinematicRepresentation.cpp:76
+
bool parseEnumerator(const std::string &str, coordinate_system *coord, coordinate_system fallback)
Parses input string, returns matching enumerator value.
Definition: KinematicRepresentation.cpp:530
+
double degToRad(double deg)
Converts degrees to radians.
Definition: KinematicRepresentation.cpp:516
+
bool encodeAcceleration(const std::vector< double > &x_in, const std::vector< double > &xdot_in, const std::vector< double > &xdotdot_in, std::vector< double > &xdotdot_out, coordinate_system coord, orientation_system orient, angular_units angle)
Converts the translation and rotation values of a specific acceleration to coordinate_system::CARTESI...
Definition: KinematicRepresentation.cpp:496
+
orientation_system
Lists available rotational representations.
Definition: KinematicRepresentation.hpp:36
+ +
@ EULER_YZ
as EULER_ZYZ, preceded by rotation about the azimuthal angle got from x-y coordinates
+
@ AXIS_ANGLE
(axis_x, axis_y, axis_z, rotation angle) [axis needs not to be normalized]
+ +
@ NONE
omit orientation system in resulting combined coord+orient representation
+
@ POLAR_AZIMUTH
(polar angle, azimuthal angle)
+
@ AXIS_ANGLE_SCALED
(axis_x, axis_y, axis_z) [axis' norm is the rotation angle]
+
bool decodeVelocity(const std::vector< double > &x_in, const std::vector< double > &xdot_in, std::vector< double > &xdot_out, coordinate_system coord, orientation_system orient, angular_units angle)
Converts the translation and rotation values of a specific velocity to the chosen representation syst...
Definition: KinematicRepresentation.cpp:403
+
angular_units
Lists recognized angular units.
Definition: KinematicRepresentation.hpp:48
+ + +
bool encodeVelocity(const std::vector< double > &x_in, const std::vector< double > &xdot_in, std::vector< double > &xdot_out, coordinate_system coord, orientation_system orient, angular_units angle)
Converts the translation and rotation values of a specific velocity to coordinate_system::CARTESIAN a...
Definition: KinematicRepresentation.cpp:307
+
bool decodePose(const std::vector< double > &x_in, std::vector< double > &x_out, coordinate_system coord, orientation_system orient, angular_units angle)
Converts the translation and rotation values of a specific pose to the chosen representation systems.
Definition: KinematicRepresentation.cpp:187
+
bool decodeAcceleration(const std::vector< double > &x_in, const std::vector< double > &xdot_in, const std::vector< double > &xdotdot_in, std::vector< double > &xdotdot_out, coordinate_system coord, orientation_system orient, angular_units angle)
Converts the translation and rotation values of a specific acceleration to the chosen representation ...
Definition: KinematicRepresentation.cpp:506
+
+ + + + diff --git a/LeapMotionSensorDevice_8hpp_source.html b/LeapMotionSensorDevice_8hpp_source.html new file mode 100644 index 000000000..019f51586 --- /dev/null +++ b/LeapMotionSensorDevice_8hpp_source.html @@ -0,0 +1,150 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/LeapMotionSensorDevice.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LeapMotionSensorDevice.hpp
+
+
+
1 #ifndef __LEAP_MOTION_SENSOR_DEVICE_HPP__
+
2 #define __LEAP_MOTION_SENSOR_DEVICE_HPP__
+
3 
+
4 #include "StreamingDevice.hpp"
+
5 
+
6 #include <vector>
+
7 
+
8 #include <kdl/frames.hpp>
+
9 
+
10 #include <yarp/dev/IAnalogSensor.h>
+
11 
+
12 namespace roboticslab
+
13 {
+
14 
+ +
22 {
+
23 public:
+
25  LeapMotionSensorDevice(yarp::os::Searchable & config, bool usingMovi);
+
26 
+
27  bool acquireInterfaces() override;
+
28 
+
29  bool initialize(bool usingStreamingPreset) override;
+
30 
+
31  bool acquireData() override;
+
32 
+
33  bool transformData(double scaling) override;
+
34 
+
35  int getActuatorState() override;
+
36 
+
37  void sendMovementCommand(double timestamp) override;
+
38 
+
39  void stopMotion() override
+
40  {}
+
41 
+
42 private:
+
43  yarp::dev::IAnalogSensor * iAnalogSensor;
+
44 
+
45  bool usingMovi;
+
46 
+
47  std::vector<double> initialTcpOffset;
+
48  std::vector<double> initialLeapOffset;
+
49 
+
50  KDL::Frame frame_base_leap, frame_ee_leap, frame_leap_ee;
+
51 
+
52  KDL::Frame previousPose;
+
53  double previousTimestamp;
+
54 
+
55  bool hasActuator;
+
56  bool grab, pinch;
+
57 };
+
58 
+
59 } // namespace roboticslab
+
60 
+
61 #endif // __LEAP_MOTION_SENSOR_DEVICE_HPP__
+
Represents a LeapMotion device wrapped as an analog sensor by YARP.
Definition: LeapMotionSensorDevice.hpp:22
+
void sendMovementCommand(double timestamp) override
Sends movement command to the cartesian controller.
Definition: LeapMotionSensorDevice.cpp:212
+
LeapMotionSensorDevice(yarp::os::Searchable &config, bool usingMovi)
Constructor.
Definition: LeapMotionSensorDevice.cpp:18
+
bool transformData(double scaling) override
Performs required operations on stored data.
Definition: LeapMotionSensorDevice.cpp:141
+
bool initialize(bool usingStreamingPreset) override
Perform any custom initialization needed. This method is called after the successful creation of the ...
Definition: LeapMotionSensorDevice.cpp:59
+
int getActuatorState() override
If actuator command data is available, return its current state.
Definition: LeapMotionSensorDevice.cpp:178
+
bool acquireInterfaces() override
Acquires plugin interfaces.
Definition: LeapMotionSensorDevice.cpp:46
+
void stopMotion() override
Sends a movement command that would stop motion.
Definition: LeapMotionSensorDevice.hpp:39
+
bool acquireData() override
Acquires data from remote device.
Definition: LeapMotionSensorDevice.cpp:107
+
Abstract class for a YARP streaming device.
Definition: StreamingDevice.hpp:46
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/LinearTrajectoryThread_8hpp_source.html b/LinearTrajectoryThread_8hpp_source.html new file mode 100644 index 000000000..96e0fa4c5 --- /dev/null +++ b/LinearTrajectoryThread_8hpp_source.html @@ -0,0 +1,132 @@ + + + + + + + +kinematics-dynamics: programs/keyboardController/LinearTrajectoryThread.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LinearTrajectoryThread.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __LINEAR_TRAJECTORY_THREAD_HPP__
+
4 #define __LINEAR_TRAJECTORY_THREAD_HPP__
+
5 
+
6 #include <mutex>
+
7 #include <vector>
+
8 
+
9 #include <yarp/os/PeriodicThread.h>
+
10 
+
11 #include <kdl/trajectory.hpp>
+
12 
+
13 #include "ICartesianControl.h"
+
14 
+
15 namespace roboticslab
+
16 {
+
17 
+
23 class LinearTrajectoryThread : public yarp::os::PeriodicThread
+
24 {
+
25 public:
+
26  LinearTrajectoryThread(int period, ICartesianControl * iCartesianControl);
+ +
28  bool checkStreamingConfig();
+
29  bool configure(const std::vector<double> & vels);
+
30  void useTcpFrame(bool enableTcpFrame) { usingTcpFrame = enableTcpFrame; }
+
31 
+
32 protected:
+
33  void run() override;
+
34 
+
35 private:
+
36  double period;
+
37  ICartesianControl * iCartesianControl;
+
38  KDL::Trajectory * trajectory;
+
39  double startTime;
+
40  bool usingStreamingCommandConfig;
+
41  bool usingTcpFrame;
+
42  std::vector<double> deltaX;
+
43  mutable std::mutex mtx;
+
44 };
+
45 
+
46 } // namespace roboticslab
+
47 
+
48 #endif // __LINEAR_TRAJECTORY_THREAD_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
Periodic thread that encapsulates a linear trajectory.
Definition: LinearTrajectoryThread.hpp:24
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/MatrixExponential_8hpp_source.html b/MatrixExponential_8hpp_source.html new file mode 100644 index 000000000..1cca108ed --- /dev/null +++ b/MatrixExponential_8hpp_source.html @@ -0,0 +1,142 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/MatrixExponential.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
MatrixExponential.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __MATRIX_EXPONENTIAL_HPP__
+
4 #define __MATRIX_EXPONENTIAL_HPP__
+
5 
+
6 #include <kdl/frames.hpp>
+
7 
+
8 namespace roboticslab
+
9 {
+
10 
+ +
19 {
+
20 public:
+
22  enum motion
+
23  {
+ + +
26  };
+
27 
+
36  MatrixExponential(motion motionType, const KDL::Vector & axis, const KDL::Vector & origin = KDL::Vector::Zero());
+
37 
+
45  KDL::Frame asFrame(double theta) const;
+
46 
+ +
53  { return motionType; }
+
54 
+
60  const KDL::Vector & getAxis() const
+
61  { return axis; }
+
62 
+
68  const KDL::Vector & getOrigin() const
+
69  { return origin; }
+
70 
+
78  void changeBase(const KDL::Frame & H_new_old);
+
79 
+
89  MatrixExponential cloneWithBase(const KDL::Frame & H_new_old) const;
+
90 
+
91 private:
+
92  motion motionType;
+
93  KDL::Vector axis;
+
94  KDL::Vector origin;
+
95 };
+
96 
+
97 } // namespace roboticslab
+
98 
+
99 #endif // __MATRIX_EXPONENTIAL_HPP__
+
Abstraction of a term in a product of exponentials (POE) formula.
Definition: MatrixExponential.hpp:19
+
MatrixExponential cloneWithBase(const KDL::Frame &H_new_old) const
Clones this instance and refers the internal coordinates of the screw to a different base.
Definition: MatrixExponential.cpp:70
+
motion
Lists available screw motion types.
Definition: MatrixExponential.hpp:23
+
@ TRANSLATION
Prismatic joint (infinite-pitch twist).
Definition: MatrixExponential.hpp:25
+
@ ROTATION
Revolute joint (zero-pitch twist).
Definition: MatrixExponential.hpp:24
+
KDL::Frame asFrame(double theta) const
Evaluates this term for the given magnitude of the screw.
Definition: MatrixExponential.cpp:36
+
const KDL::Vector & getOrigin() const
A point along the screw axis.
Definition: MatrixExponential.hpp:68
+
const KDL::Vector & getAxis() const
Screw axis.
Definition: MatrixExponential.hpp:60
+
motion getMotionType() const
Retrieves the motion type of this screw.
Definition: MatrixExponential.hpp:52
+
void changeBase(const KDL::Frame &H_new_old)
Refers the internal coordinates of this screw to a different base.
Definition: MatrixExponential.cpp:58
+
MatrixExponential(motion motionType, const KDL::Vector &axis, const KDL::Vector &origin=KDL::Vector::Zero())
Constructor.
Definition: MatrixExponential.cpp:26
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ProductOfExponentials_8hpp_source.html b/ProductOfExponentials_8hpp_source.html new file mode 100644 index 000000000..91c75cbac --- /dev/null +++ b/ProductOfExponentials_8hpp_source.html @@ -0,0 +1,159 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/ProductOfExponentials.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ProductOfExponentials.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __PRODUCT_OF_EXPONENTIALS_HPP__
+
4 #define __PRODUCT_OF_EXPONENTIALS_HPP__
+
5 
+
6 #include <vector>
+
7 
+
8 #include <kdl/chain.hpp>
+
9 #include <kdl/frames.hpp>
+
10 #include <kdl/jntarray.hpp>
+
11 
+
12 #include "MatrixExponential.hpp"
+
13 
+
14 namespace roboticslab
+
15 {
+
16 
+ +
28 {
+
29 public:
+
35  explicit PoeExpression(const KDL::Frame & H_S_T = KDL::Frame::Identity()) : H_S_T(H_S_T) {}
+
36 
+
47  void append(const MatrixExponential & exp, const KDL::Frame & H_new_old = KDL::Frame::Identity())
+
48  { exps.push_back(exp.cloneWithBase(H_new_old)); }
+
49 
+
61  void append(const PoeExpression & poe, const KDL::Frame & H_new_old = KDL::Frame::Identity());
+
62 
+
68  const KDL::Frame & getTransform() const
+
69  { return H_S_T; }
+
70 
+
76  int size() const
+
77  { return exps.size(); }
+
78 
+ +
87  { return exps.at(i); }
+
88 
+
97  void changeBaseFrame(const KDL::Frame & H_new_old);
+
98 
+
104  void changeToolFrame(const KDL::Frame & H_new_old)
+
105  { H_S_T = H_S_T * H_new_old; }
+
106 
+
116  bool evaluate(const KDL::JntArray & q, KDL::Frame & H) const;
+
117 
+
126  void reverseSelf();
+
127 
+
138  PoeExpression makeReverse() const;
+
139 
+
147  KDL::Chain toChain() const;
+
148 
+
158  static PoeExpression fromChain(const KDL::Chain & chain);
+
159 
+
160 private:
+
161  std::vector<MatrixExponential> exps;
+
162  KDL::Frame H_S_T;
+
163 };
+
164 
+
165 } // namespace roboticslab
+
166 
+
167 #endif // __PRODUCT_OF_EXPONENTIALS_HPP__
+
Abstraction of a term in a product of exponentials (POE) formula.
Definition: MatrixExponential.hpp:19
+
MatrixExponential cloneWithBase(const KDL::Frame &H_new_old) const
Clones this instance and refers the internal coordinates of the screw to a different base.
Definition: MatrixExponential.cpp:70
+
Abstraction of a product of exponentials (POE) formula.
Definition: ProductOfExponentials.hpp:28
+
KDL::Chain toChain() const
Makes a KDL::Chain from this instance.
Definition: ProductOfExponentials.cpp:138
+
void reverseSelf()
Inverts this POE formula.
Definition: ProductOfExponentials.cpp:104
+
bool evaluate(const KDL::JntArray &q, KDL::Frame &H) const
Performs forward kinematics.
Definition: ProductOfExponentials.cpp:82
+
static PoeExpression fromChain(const KDL::Chain &chain)
Builds a PoeExpression from a KDL::Chain.
Definition: ProductOfExponentials.cpp:167
+
void changeBaseFrame(const KDL::Frame &H_new_old)
Refers the internal coordinates of this POE to a different base.
Definition: ProductOfExponentials.cpp:70
+
const MatrixExponential & exponentialAtJoint(int i) const
Retrieves a term of the POE formula.
Definition: ProductOfExponentials.hpp:86
+
const KDL::Frame & getTransform() const
Retrieves the transformation between base and tool frames.
Definition: ProductOfExponentials.hpp:68
+
void append(const MatrixExponential &exp, const KDL::Frame &H_new_old=KDL::Frame::Identity())
Appends a new term to this POE formula.
Definition: ProductOfExponentials.hpp:47
+
int size() const
Size of this POE.
Definition: ProductOfExponentials.hpp:76
+
PoeExpression(const KDL::Frame &H_S_T=KDL::Frame::Identity())
Constructor.
Definition: ProductOfExponentials.hpp:35
+
PoeExpression makeReverse() const
Creates a new POE entity from the inverse of this POE formula.
Definition: ProductOfExponentials.cpp:118
+
void changeToolFrame(const KDL::Frame &H_new_old)
Updates the tool frame.
Definition: ProductOfExponentials.hpp:104
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ScrewTheoryIkProblem_8hpp_source.html b/ScrewTheoryIkProblem_8hpp_source.html new file mode 100644 index 000000000..26f34ba63 --- /dev/null +++ b/ScrewTheoryIkProblem_8hpp_source.html @@ -0,0 +1,237 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/ScrewTheoryIkProblem.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScrewTheoryIkProblem.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __SCREW_THEORY_IK_PROBLEM_HPP__
+
4 #define __SCREW_THEORY_IK_PROBLEM_HPP__
+
5 
+
6 #include <utility>
+
7 #include <vector>
+
8 
+
9 #include <kdl/frames.hpp>
+
10 #include <kdl/jntarray.hpp>
+
11 
+
12 #include "ProductOfExponentials.hpp"
+
13 
+
14 namespace roboticslab
+
15 {
+
16 
+ +
26 {
+
27 public:
+
29  using JointIdToSolution = std::pair<int, double>;
+
30 
+
32  using JointIdsToSolutions = std::vector<JointIdToSolution>;
+
33 
+
35  using Solutions = std::vector<JointIdsToSolutions>;
+
36 
+
38  virtual ~ScrewTheoryIkSubproblem() = default;
+
39 
+
76  virtual bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const = 0;
+
77 
+
79  virtual int solutions() const = 0;
+
80 
+
82  virtual const char * describe() const = 0;
+
83 };
+
84 
+ +
95 {
+
96 public:
+
98  using Steps = std::vector<const ScrewTheoryIkSubproblem *>;
+
99 
+
101  using Solutions = std::vector<KDL::JntArray>;
+
102 
+ +
105 
+
106  // disable these, avoid issues related to dynamic alloc
+
107  ScrewTheoryIkProblem(const ScrewTheoryIkProblem &) = delete;
+
108  ScrewTheoryIkProblem & operator=(const ScrewTheoryIkProblem &) = delete;
+
109 
+
118  bool solve(const KDL::Frame & H_S_T, Solutions & solutions);
+
119 
+
121  int solutions() const
+
122  { return soln; }
+
123 
+
125  const Steps & getSteps() const
+
126  { return steps; }
+
127 
+
129  bool isReversed() const
+
130  { return reversed; }
+
131 
+
141  static ScrewTheoryIkProblem * create(const PoeExpression & poe, const Steps & steps, bool reversed = false);
+
142 
+
143 private:
+
144  enum poe_term
+
145  {
+
146  EXP_KNOWN,
+
147  EXP_COMPUTED,
+
148  EXP_UNKNOWN
+
149  };
+
150 
+
151  using Frames = std::vector<KDL::Frame>;
+
152  using PoeTerms = std::vector<poe_term>;
+
153 
+
154  // disable instantiation, force users to call builder class
+
155  ScrewTheoryIkProblem(const PoeExpression & poe, const Steps & steps, bool reversed);
+
156 
+
157  void recalculateFrames(const Solutions & solutions, Frames & frames, PoeTerms & poeTerms);
+
158  bool recalculateFrames(const Solutions & solutions, Frames & frames, PoeTerms & poeTerms, bool backwards);
+
159 
+
160  KDL::Frame transformPoint(const KDL::JntArray & jointValues, const PoeTerms & poeTerms);
+
161 
+
162  const PoeExpression poe;
+
163 
+
164  // we own these, resources freed in destructor
+
165  const Steps steps;
+
166 
+
167  const bool reversed;
+
168 
+
169  const int soln;
+
170 };
+
171 
+ +
183 {
+
184 public:
+
186  struct PoeTerm
+
187  {
+
188  PoeTerm() : known(false), simplified(false) {}
+
189  bool known, simplified;
+
190  };
+
191 
+ +
198 
+ +
205 
+
206 private:
+
207  static std::vector<KDL::Vector> searchPoints(const PoeExpression & poe);
+
208 
+
209  ScrewTheoryIkProblem::Steps searchSolutions();
+
210 
+
211  void refreshSimplificationState();
+
212 
+
213  void simplify(int depth);
+
214  void simplifyWithPadenKahanOne(const KDL::Vector & point);
+
215  void simplifyWithPadenKahanThree(const KDL::Vector & point);
+
216  void simplifyWithPardosOne();
+
217 
+
218  ScrewTheoryIkSubproblem * trySolve(int depth);
+
219 
+
220  PoeExpression poe;
+
221 
+
222  std::vector<KDL::Vector> points;
+
223  std::vector<KDL::Vector> testPoints;
+
224 
+
225  std::vector<PoeTerm> poeTerms;
+
226 
+
227  static const int MAX_SIMPLIFICATION_DEPTH = 2;
+
228 };
+
229 
+
230 } // namespace roboticslab
+
231 
+
232 #endif // __SCREW_THEORY_IK_PROBLEM_HPP__
+
Abstraction of a product of exponentials (POE) formula.
Definition: ProductOfExponentials.hpp:28
+
Automated IK solution finder.
Definition: ScrewTheoryIkProblem.hpp:183
+
ScrewTheoryIkProblem * build()
Finds a valid sequence of geometric subproblems that solve a global IK problem.
Definition: ScrewTheoryIkProblemBuilder.cpp:231
+
ScrewTheoryIkProblemBuilder(const PoeExpression &poe)
Constructor.
Definition: ScrewTheoryIkProblemBuilder.cpp:144
+
Proxy IK problem solver class that iterates over a sequence of subproblems.
Definition: ScrewTheoryIkProblem.hpp:95
+
static ScrewTheoryIkProblem * create(const PoeExpression &poe, const Steps &steps, bool reversed=false)
Creates an IK solver instance given a sequence of known subproblems.
Definition: ScrewTheoryIkProblem.cpp:265
+
const Steps & getSteps() const
Solution of the IK problem (if available)
Definition: ScrewTheoryIkProblem.hpp:125
+
bool solve(const KDL::Frame &H_S_T, Solutions &solutions)
Find all available solutions.
Definition: ScrewTheoryIkProblem.cpp:62
+
std::vector< KDL::JntArray > Solutions
Collection of global IK solutions.
Definition: ScrewTheoryIkProblem.hpp:101
+
~ScrewTheoryIkProblem()
Destructor.
Definition: ScrewTheoryIkProblem.cpp:52
+
bool isReversed() const
Whether the computed solution is reversed.
Definition: ScrewTheoryIkProblem.hpp:129
+
std::vector< const ScrewTheoryIkSubproblem * > Steps
Ordered sequence of IK subproblems needed to solve a IK problem.
Definition: ScrewTheoryIkProblem.hpp:98
+
int solutions() const
Number of global IK solutions.
Definition: ScrewTheoryIkProblem.hpp:121
+
Interface shared by all IK subproblems found in Screw Theory applied to Robotics.
Definition: ScrewTheoryIkProblem.hpp:26
+
std::vector< JointIdsToSolutions > Solutions
Collection of local IK solutions.
Definition: ScrewTheoryIkProblem.hpp:35
+
std::vector< JointIdToSolution > JointIdsToSolutions
At least one joint-id+value pair per solution.
Definition: ScrewTheoryIkProblem.hpp:32
+
virtual int solutions() const =0
Number of local IK solutions.
+
virtual ~ScrewTheoryIkSubproblem()=default
Destructor.
+
virtual bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const =0
Finds a closed geometric solution for this IK subproblem.
+
virtual const char * describe() const =0
Return a human-readable description of this IK subproblem.
+
std::pair< int, double > JointIdToSolution
Maps a joint id to a screw magnitude.
Definition: ScrewTheoryIkProblem.hpp:29
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
Helper structure that holds the state of a POE term.
Definition: ScrewTheoryIkProblem.hpp:187
+
+ + + + diff --git a/ScrewTheoryIkSubproblems_8hpp_source.html b/ScrewTheoryIkSubproblems_8hpp_source.html new file mode 100644 index 000000000..f1360ec84 --- /dev/null +++ b/ScrewTheoryIkSubproblems_8hpp_source.html @@ -0,0 +1,279 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/ScrewTheoryIkSubproblems.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScrewTheoryIkSubproblems.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __SCREW_THEORY_IK_SUBPROBLEMS_HPP__
+
4 #define __SCREW_THEORY_IK_SUBPROBLEMS_HPP__
+
5 
+
6 #include <kdl/frames.hpp>
+
7 
+
8 #include "ScrewTheoryIkProblem.hpp"
+
9 #include "MatrixExponential.hpp"
+
10 
+
11 namespace roboticslab
+
12 {
+
13 
+ +
24 {
+
25 public:
+
33  PadenKahanOne(int id, const MatrixExponential & exp, const KDL::Vector & p);
+
34 
+
35  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
36 
+
37  int solutions() const override
+
38  { return 1; }
+
39 
+
40  const char * describe() const override
+
41  { return "PK1"; }
+
42 
+
43 private:
+
44  const int id;
+
45  const MatrixExponential exp;
+
46  const KDL::Vector p;
+
47  const KDL::Rotation axisPow;
+
48 };
+
49 
+ +
60 {
+
61 public:
+
72  PadenKahanTwo(int id1, int id2, const MatrixExponential & exp1, const MatrixExponential & exp2, const KDL::Vector & p, const KDL::Vector & r);
+
73 
+
74  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
75 
+
76  int solutions() const override
+
77  { return 2; }
+
78 
+
79  const char * describe() const override
+
80  { return "PK2"; }
+
81 
+
82 private:
+
83  const int id1, id2;
+
84  const MatrixExponential exp1, exp2;
+
85  const KDL::Vector p, r, axesCross;
+
86  const KDL::Rotation axisPow1, axisPow2;
+
87  const double axesDot;
+
88 };
+
89 
+ +
100 {
+
101 public:
+
110  PadenKahanThree(int id, const MatrixExponential & exp, const KDL::Vector & p, const KDL::Vector & k);
+
111 
+
112  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
113 
+
114  int solutions() const override
+
115  { return 2; }
+
116 
+
117  const char * describe() const override
+
118  { return "PK3"; }
+
119 
+
120 private:
+
121  const int id;
+
122  const MatrixExponential exp;
+
123  const KDL::Vector p, k;
+
124  const KDL::Rotation axisPow;
+
125 };
+
126 
+ +
137 {
+
138 public:
+
146  PardosGotorOne(int id, const MatrixExponential & exp, const KDL::Vector & p);
+
147 
+
148  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
149 
+
150  int solutions() const override
+
151  { return 1; }
+
152 
+
153  const char * describe() const override
+
154  { return "PG1"; }
+
155 
+
156 private:
+
157  const int id;
+
158  const MatrixExponential exp;
+
159  const KDL::Vector p;
+
160 };
+
161 
+ +
172 {
+
173 public:
+
183  PardosGotorTwo(int id1, int id2, const MatrixExponential & exp1, const MatrixExponential & exp2, const KDL::Vector & p);
+
184 
+
185  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
186 
+
187  int solutions() const override
+
188  { return 1; }
+
189 
+
190  const char * describe() const override
+
191  { return "PG2"; }
+
192 
+
193 private:
+
194  const int id1, id2;
+
195  const MatrixExponential exp1, exp2;
+
196  const KDL::Vector p, crossPr2;
+
197  const double crossPr2Norm;
+
198 };
+
199 
+ +
211 {
+
212 public:
+
221  PardosGotorThree(int id, const MatrixExponential & exp, const KDL::Vector & p, const KDL::Vector & k);
+
222 
+
223  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
224 
+
225  int solutions() const override
+
226  { return 2; }
+
227 
+
228  const char * describe() const override
+
229  { return "PG3"; }
+
230 
+
231 private:
+
232  const int id;
+
233  const MatrixExponential exp;
+
234  const KDL::Vector p, k;
+
235 };
+
236 
+ +
248 {
+
249 public:
+
259  PardosGotorFour(int id1, int id2, const MatrixExponential & exp1, const MatrixExponential & exp2, const KDL::Vector & p);
+
260 
+
261  bool solve(const KDL::Frame & rhs, const KDL::Frame & pointTransform, Solutions & solutions) const override;
+
262 
+
263  int solutions() const override
+
264  { return 2; }
+
265 
+
266  const char * describe() const override
+
267  { return "PG4"; }
+
268 
+
269 private:
+
270  const int id1, id2;
+
271  const MatrixExponential exp1, exp2;
+
272  const KDL::Vector p, n;
+
273  const KDL::Rotation axisPow;
+
274 };
+
275 
+
276 } // namespace roboticslab
+
277 
+
278 #endif // __SCREW_THEORY_IK_SUBPROBLEMS_HPP__
+
Abstraction of a term in a product of exponentials (POE) formula.
Definition: MatrixExponential.hpp:19
+
First Paden-Kahan subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:24
+
PadenKahanOne(int id, const MatrixExponential &exp, const KDL::Vector &p)
Constructor.
Definition: PadenKahanSubproblems.cpp:13
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PadenKahanSubproblems.cpp:22
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:40
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:37
+
Third Paden-Kahan subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:100
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PadenKahanSubproblems.cpp:161
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:117
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:114
+
PadenKahanThree(int id, const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k)
Constructor.
Definition: PadenKahanSubproblems.cpp:151
+
Second Paden-Kahan subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:60
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PadenKahanSubproblems.cpp:64
+
PadenKahanTwo(int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p, const KDL::Vector &r)
Constructor.
Definition: PadenKahanSubproblems.cpp:49
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:76
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:79
+
Fourth Pardos-Gotor subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:248
+
PardosGotorFour(int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p)
Constructor.
Definition: PardosGotorSubproblems.cpp:148
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PardosGotorSubproblems.cpp:160
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:263
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:266
+
First Pardos-Gotor subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:137
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:150
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PardosGotorSubproblems.cpp:32
+
PardosGotorOne(int id, const MatrixExponential &exp, const KDL::Vector &p)
Constructor.
Definition: PardosGotorSubproblems.cpp:24
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:153
+
Third Pardos-Gotor subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:211
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:228
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:225
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PardosGotorSubproblems.cpp:107
+
PardosGotorThree(int id, const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k)
Constructor.
Definition: PardosGotorSubproblems.cpp:98
+
Second Pardos-Gotor subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:172
+
bool solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
Finds a closed geometric solution for this IK subproblem.
Definition: PardosGotorSubproblems.cpp:63
+
PardosGotorTwo(int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p)
Constructor.
Definition: PardosGotorSubproblems.cpp:51
+
const char * describe() const override
Return a human-readable description of this IK subproblem.
Definition: ScrewTheoryIkSubproblems.hpp:190
+
int solutions() const override
Number of local IK solutions.
Definition: ScrewTheoryIkSubproblems.hpp:187
+
Interface shared by all IK subproblems found in Screw Theory applied to Robotics.
Definition: ScrewTheoryIkProblem.hpp:26
+
std::vector< JointIdsToSolutions > Solutions
Collection of local IK solutions.
Definition: ScrewTheoryIkProblem.hpp:35
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/ScrewTheoryTools_8hpp_source.html b/ScrewTheoryTools_8hpp_source.html new file mode 100644 index 000000000..45bf98a2c --- /dev/null +++ b/ScrewTheoryTools_8hpp_source.html @@ -0,0 +1,131 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/ScrewTheoryTools.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScrewTheoryTools.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __SCREW_THEORY_TOOLS_HPP__
+
4 #define __SCREW_THEORY_TOOLS_HPP__
+
5 
+
6 #include <cmath>
+
7 
+
8 #include <kdl/frames.hpp>
+
9 #include <kdl/utilities/utility.h>
+
10 
+
11 namespace roboticslab
+
12 {
+
13 
+
43 inline KDL::Rotation vectorPow2(const KDL::Vector & v)
+
44 {
+
45  return KDL::Rotation(v.x() * v.x(), v.x() * v.y(), v.x() * v.z(),
+
46  v.x() * v.y(), v.y() * v.y(), v.y() * v.z(),
+
47  v.x() * v.z(), v.y() * v.z(), v.z() * v.z());
+
48 }
+
49 
+
62 inline double normalizeAngle(double angle)
+
63 {
+
64  if (KDL::Equal(std::abs(angle), KDL::PI))
+
65  {
+
66  return KDL::PI;
+
67  }
+
68  else if (angle > KDL::PI)
+
69  {
+
70  return angle - 2 * KDL::PI;
+
71  }
+
72  else if (angle < -KDL::PI)
+
73  {
+
74  return angle + 2 * KDL::PI;
+
75  }
+
76  else
+
77  {
+
78  return angle;
+
79  }
+
80 }
+
81 
+
82 } // namespace roboticslab
+
83 
+
84 #endif // __SCREW_THEORY_TOOLS_HPP__
+
KDL::Rotation vectorPow2(const KDL::Vector &v)
Multiply a vector by itself to obtain a square matrix.
Definition: ScrewTheoryTools.hpp:43
+
double normalizeAngle(double angle)
Clip an angle value between certain bounds.
Definition: ScrewTheoryTools.hpp:62
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/SpnavSensorDevice_8hpp_source.html b/SpnavSensorDevice_8hpp_source.html new file mode 100644 index 000000000..51969f30b --- /dev/null +++ b/SpnavSensorDevice_8hpp_source.html @@ -0,0 +1,142 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/SpnavSensorDevice.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SpnavSensorDevice.hpp
+
+
+
1 #ifndef __SPNAV_SENSOR_DEVICE_HPP__
+
2 #define __SPNAV_SENSOR_DEVICE_HPP__
+
3 
+
4 #include "StreamingDevice.hpp"
+
5 
+
6 #include <yarp/dev/IAnalogSensor.h>
+
7 
+
8 namespace roboticslab
+
9 {
+
10 
+ +
18 {
+
19 public:
+
21  SpnavSensorDevice(yarp::os::Searchable & config, bool usingMovi, double gain = 0.0);
+
22 
+
23  bool acquireInterfaces() override;
+
24 
+
25  bool initialize(bool usingStreamingPreset) override;
+
26 
+
27  bool acquireData() override;
+
28 
+
29  bool transformData(double scaling) override;
+
30 
+
31  int getActuatorState() override;
+
32 
+
33  bool hasValidMovementData() const override;
+
34 
+
35  void sendMovementCommand(double timestamp) override;
+
36 
+
37  void stopMotion() override;
+
38 
+
39 private:
+
40  yarp::dev::IAnalogSensor * iAnalogSensor;
+
41 
+
42  std::vector<double> currentX;
+
43 
+
44  bool usingMovi;
+
45  double gain;
+
46  bool buttonClose;
+
47  bool buttonOpen;
+
48 };
+
49 
+
50 } // namespace roboticslab
+
51 
+
52 #endif // __SPNAV_SENSOR_DEVICE_HPP__
+
Represents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion.
Definition: SpnavSensorDevice.hpp:18
+
bool acquireData() override
Acquires data from remote device.
Definition: SpnavSensorDevice.cpp:66
+
void stopMotion() override
Sends a movement command that would stop motion.
Definition: SpnavSensorDevice.cpp:183
+
void sendMovementCommand(double timestamp) override
Sends movement command to the cartesian controller.
Definition: SpnavSensorDevice.cpp:166
+
bool transformData(double scaling) override
Performs required operations on stored data.
Definition: SpnavSensorDevice.cpp:93
+
SpnavSensorDevice(yarp::os::Searchable &config, bool usingMovi, double gain=0.0)
Constructor.
Definition: SpnavSensorDevice.cpp:10
+
bool acquireInterfaces() override
Acquires plugin interfaces.
Definition: SpnavSensorDevice.cpp:19
+
int getActuatorState() override
If actuator command data is available, return its current state.
Definition: SpnavSensorDevice.cpp:117
+
bool initialize(bool usingStreamingPreset) override
Perform any custom initialization needed. This method is called after the successful creation of the ...
Definition: SpnavSensorDevice.cpp:32
+
bool hasValidMovementData() const override
Checks whether the device may forward acquired and processed data to the controller.
Definition: SpnavSensorDevice.cpp:146
+
Abstract class for a YARP streaming device.
Definition: StreamingDevice.hpp:46
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/StreamingDeviceController_8hpp_source.html b/StreamingDeviceController_8hpp_source.html new file mode 100644 index 000000000..049df4972 --- /dev/null +++ b/StreamingDeviceController_8hpp_source.html @@ -0,0 +1,151 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/StreamingDeviceController.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StreamingDeviceController.hpp
+
+
+
1 #ifndef __STREAMING_DEVICE_CONTROLLER_HPP__
+
2 #define __STREAMING_DEVICE_CONTROLLER_HPP__
+
3 
+
4 #include <vector>
+
5 
+
6 #include <yarp/os/Bottle.h>
+
7 #include <yarp/os/BufferedPort.h>
+
8 #include <yarp/os/RFModule.h>
+
9 #include <yarp/os/TypedReaderCallback.h>
+
10 
+
11 #include <yarp/dev/PolyDriver.h>
+
12 
+
13 #include "StreamingDevice.hpp"
+
14 #include "CentroidTransform.hpp"
+
15 
+
16 #include "ICartesianControl.h"
+
17 
+
18 namespace roboticslab
+
19 {
+
20 
+
27 class StreamingDeviceController : public yarp::os::RFModule,
+
28  public yarp::os::TypedReaderCallback<yarp::os::Bottle>
+
29 {
+
30 public:
+
31  ~StreamingDeviceController() override
+
32  { close(); }
+
33 
+
34  bool configure(yarp::os::ResourceFinder & rf) override;
+
35  bool updateModule() override;
+
36  bool interruptModule() override;
+
37  bool close() override;
+
38  double getPeriod() override;
+
39  void onRead(yarp::os::Bottle & bot) override;
+
40 
+
41 private:
+
42  bool update(double timestamp);
+
43 
+
44  StreamingDevice * streamingDevice;
+
45 
+
46  yarp::dev::PolyDriver cartesianControlClientDevice;
+
47  roboticslab::ICartesianControl * iCartesianControl;
+
48 
+
49  yarp::os::BufferedPort<yarp::os::Bottle> proximityPort;
+
50  int thresholdAlertHigh;
+
51  int thresholdAlertLow;
+
52  bool disableSensorsLowLevel;
+
53 
+
54  yarp::os::BufferedPort<yarp::os::Bottle> centroidPort;
+
55  CentroidTransform centroidTransform;
+
56 
+
57  yarp::os::BufferedPort<yarp::os::Bottle> syncPort;
+
58 
+
59  double period;
+
60  double scaling;
+
61  bool isStopped;
+
62 };
+
63 
+
64 } // namespace roboticslab
+
65 
+
66 #endif // __STREAMING_DEVICE_CONTROLLER_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
...
Definition: CentroidTransform.hpp:22
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
Sends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexi...
Definition: StreamingDeviceController.hpp:29
+
Abstract class for a YARP streaming device.
Definition: StreamingDevice.hpp:46
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/StreamingDevice_8hpp_source.html b/StreamingDevice_8hpp_source.html new file mode 100644 index 000000000..3a383f930 --- /dev/null +++ b/StreamingDevice_8hpp_source.html @@ -0,0 +1,215 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/StreamingDevice.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StreamingDevice.hpp
+
+
+
1 #ifndef __STREAMING_DEVICE_HPP__
+
2 #define __STREAMING_DEVICE_HPP__
+
3 
+
4 #include <string>
+
5 #include <vector>
+
6 
+
7 #include <yarp/os/Searchable.h>
+
8 #include <yarp/os/Value.h>
+
9 #include <yarp/dev/PolyDriver.h>
+
10 
+
11 #include "ICartesianControl.h"
+
12 #include "CentroidTransform.hpp"
+
13 
+
14 namespace roboticslab
+
15 {
+
16 
+
17 class StreamingDevice;
+
18 class CentroidTransform;
+
19 
+ +
26 {
+
27 public:
+
34  static StreamingDevice * makeDevice(const std::string & deviceName, yarp::os::Searchable & config);
+
35 
+
36 private:
+ +
38 };
+
39 
+
45 class StreamingDevice : protected yarp::dev::PolyDriver
+
46 {
+
47  friend CentroidTransform;
+
48 
+
49 public:
+
50  using PolyDriver::isValid;
+
51 
+
56  StreamingDevice(yarp::os::Searchable & config);
+
57 
+
59  virtual ~StreamingDevice();
+
60 
+
65  virtual bool acquireInterfaces() = 0;
+
66 
+
75  virtual bool initialize(bool usingStreamingPreset)
+
76  {
+
77  return true;
+
78  }
+
79 
+
84  virtual bool acquireData() = 0;
+
85 
+
91  virtual bool transformData(double scaling);
+
92 
+
98  virtual int getActuatorState()
+
99  {
+
100  return actuatorState;
+
101  }
+
102 
+
108  virtual bool hasValidMovementData() const;
+
109 
+
114  virtual void sendMovementCommand(double timestamp) = 0;
+
115 
+
119  virtual void stopMotion() = 0;
+
120 
+ +
126  {
+
127  this->iCartesianControl = iCartesianControl;
+
128  }
+
129 
+
130 protected:
+
131  ICartesianControl * iCartesianControl;
+
132 
+
133  std::vector<double> data;
+
134  std::vector<bool> fixedAxes;
+
135 
+
136  int actuatorState;
+
137 
+
138 private:
+
142  void configureFixedAxes(const yarp::os::Value & v);
+
143 };
+
144 
+ +
153 {
+
154 public:
+ +
157  : StreamingDevice(yarp::os::Value::getNullValue())
+
158  {}
+
159 
+
160  bool acquireInterfaces() override
+
161  {
+
162  return false;
+
163  }
+
164 
+
165  bool acquireData() override
+
166  {
+
167  return false;
+
168  }
+
169 
+
170  void sendMovementCommand(double timestamp) override
+
171  {}
+
172 
+
173  void stopMotion() override
+
174  {}
+
175 };
+
176 
+
177 } // namespace roboticslab
+
178 
+
179 #endif // __STREAMING_DEVICE_HPP__
+
Contains roboticslab::ICartesianControl and related vocabs.
+
...
Definition: CentroidTransform.hpp:22
+
Abstract base class for a cartesian controller.
Definition: ICartesianControl.h:142
+
Represents an invalid device.
Definition: StreamingDevice.hpp:153
+
void stopMotion() override
Sends a movement command that would stop motion.
Definition: StreamingDevice.hpp:173
+
bool acquireInterfaces() override
Acquires plugin interfaces.
Definition: StreamingDevice.hpp:160
+
bool acquireData() override
Acquires data from remote device.
Definition: StreamingDevice.hpp:165
+
void sendMovementCommand(double timestamp) override
Sends movement command to the cartesian controller.
Definition: StreamingDevice.hpp:170
+
InvalidDevice()
Creates an invalid device.
Definition: StreamingDevice.hpp:156
+
Factory class for creating instances of StreamingDevice.
Definition: StreamingDevice.hpp:26
+
static StreamingDevice * makeDevice(const std::string &deviceName, yarp::os::Searchable &config)
Creates a new YARP device handle.
Definition: StreamingDevice.cpp:15
+
Abstract class for a YARP streaming device.
Definition: StreamingDevice.hpp:46
+
virtual bool transformData(double scaling)
Performs required operations on stored data.
Definition: StreamingDevice.cpp:61
+
virtual bool acquireData()=0
Acquires data from remote device.
+
virtual void stopMotion()=0
Sends a movement command that would stop motion.
+
virtual bool hasValidMovementData() const
Checks whether the device may forward acquired and processed data to the controller.
Definition: StreamingDevice.cpp:78
+
virtual int getActuatorState()
If actuator command data is available, return its current state.
Definition: StreamingDevice.hpp:98
+
virtual void sendMovementCommand(double timestamp)=0
Sends movement command to the cartesian controller.
+
virtual bool acquireInterfaces()=0
Acquires plugin interfaces.
+
void setCartesianControllerHandle(ICartesianControl *iCartesianControl)
Stores handle to an ICartesianControl instance.
Definition: StreamingDevice.hpp:125
+
virtual bool initialize(bool usingStreamingPreset)
Perform any custom initialization needed. This method is called after the successful creation of the ...
Definition: StreamingDevice.hpp:75
+
virtual ~StreamingDevice()
Destructor.
Definition: StreamingDevice.cpp:56
+
void configureFixedAxes(const yarp::os::Value &v)
Stores vector of values representing axes that are always fixed.
Definition: StreamingDevice.cpp:96
+
StreamingDevice(yarp::os::Searchable &config)
Constructor.
Definition: StreamingDevice.cpp:45
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/TrajGen_8hpp_source.html b/TrajGen_8hpp_source.html new file mode 100644 index 000000000..6ca2e3cc8 --- /dev/null +++ b/TrajGen_8hpp_source.html @@ -0,0 +1,260 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/AsibotSolver/TrajGen.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TrajGen.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __TRAJ_GEN_HPP__
+
4 #define __TRAJ_GEN_HPP__
+
5 
+
6 #include <yarp/os/Log.h>
+
7 
+
25 class Traj
+
26 {
+
27 public:
+
28  virtual ~Traj() {}
+
29  virtual bool configure(const double xi, const double xf, const double _T) = 0;
+
30  virtual bool configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T) = 0;
+
31  virtual double get(const double ti) const = 0;
+
32  virtual double getdot(const double ti) const = 0;
+
33  virtual double getdotdot(const double ti) const = 0;
+
34  virtual bool maxVelBelow(const double thresVel) const = 0;
+
35  virtual bool maxAccBelow(const double thresAcc) const = 0;
+
36  virtual double getT() const = 0;
+
37  virtual void dump(double samples) const = 0;
+
38 };
+
39 
+
45 class OrderOneTraj : public Traj
+
46 {
+
47 public:
+
48  OrderOneTraj() : T(0.0), m(0.0), b(0.0) {}
+
49 
+
50  bool configure(const double xi, const double xf, const double _T)
+
51  {
+
52  T = _T;
+
53  b = xi;
+
54  m = (xf - xi) / T;
+
55  return true;
+
56  }
+
57 
+
58  bool configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T)
+
59  {
+
60  return false;
+
61  }
+
62 
+
63  double get(const double ti) const
+
64  {
+
65  return b + (m * ti);
+
66  }
+
67 
+
68  double getdot(const double ti) const
+
69  {
+
70  return m;
+
71  }
+
72 
+
73  double getdotdot(const double ti) const
+
74  {
+
75  return 0;
+
76  }
+
77 
+
78  bool maxVelBelow(const double thresVel) const
+
79  {
+
80  return m < thresVel;
+
81  }
+
82 
+
83  bool maxAccBelow(const double thresAcc) const
+
84  {
+
85  return 0 < thresAcc;
+
86  }
+
87 
+
88  double getT() const
+
89  {
+
90  return T;
+
91  }
+
92 
+
93  void dump(double samples) const
+
94  {
+
95  for (double i = 0; i < T; i += (T / samples))
+
96  {
+
97  yInfo("%05.2f %+02.6f %+02.6f %+02.6f", i, get(i), getdot(i), getdotdot(i));
+
98  }
+
99  }
+
100 
+
101 private:
+
102  double T, m, b;
+
103 };
+
104 
+
110 class OrderThreeTraj : public Traj
+
111 {
+
112 public:
+
113  OrderThreeTraj() : a3(0.0), a2(0.0), a1(0.0), a0(0.0), T(0.0) {}
+
114 
+
118  bool configure(const double xi, const double xf, const double _T)
+
119  {
+
120  T = _T;
+
121  a0 = xi;
+
122  a1 = 0;
+
123  a3 = 2 * (xi - xf) / (T * T * T);
+
124  a2 = (xf - xi) / (T * T) - a3 * T;
+
125  return true;
+
126  }
+
127 
+
131  bool configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T)
+
132  {
+
133  T = _T;
+
134  a0 = xi;
+
135  a1 = xdoti;
+
136  a3 = 2.0 * (xi - xf) / (T * T * T) + (xdotf + xdoti) / (T * T);
+
137  a2 = (xf - xi - xdoti * T) / (T * T) - a3 * T;
+
138  return true;
+
139  }
+
140 
+
144  double get(const double ti) const
+
145  {
+
146  if (ti > T)
+
147  {
+
148  return a3 * T * T * T + a2 * T * T + a1 * T + a0; // Security hack
+
149  }
+
150  return a3 * ti * ti * ti + a2 * ti * ti + a1 * ti + a0;
+
151  }
+
152 
+
156  double getdot(const double ti) const
+
157  {
+
158  if (ti > T)
+
159  {
+
160  return 3 * a3 * T * T + 2 * a2 * T + a1; // Security hack
+
161  }
+
162  return 3 * a3 * ti * ti + 2 * a2 * ti + a1;
+
163  }
+
164 
+
168  double getdotdot(const double ti) const
+
169  {
+
170  if (ti > T)
+
171  {
+
172  return 6 * a3 * T + 2 * a2; // Security hack
+
173  }
+
174  return 6 * a3 * ti + 2 * a2;
+
175  }
+
176 
+
180  bool maxVelBelow(const double thresVel) const
+
181  {
+
182  return getdot(T / 2) < thresVel;
+
183  }
+
184 
+
188  bool maxAccBelow(const double thresAcc) const
+
189  {
+
190  return getdotdot(T / 2) < thresAcc;
+
191  }
+
192 
+
196  double getT() const
+
197  {
+
198  return T;
+
199  }
+
200 
+
205  void dump(double samples) const
+
206  {
+
207  for (double i = 0; i < T; i += (T / samples))
+
208  {
+
209  yInfo("%05.2f %+02.6f %+02.6f %+02.6f", i, get(i), getdot(i), getdotdot(i));
+
210  }
+
211  }
+
212 
+
213 private:
+
214  double a3, a2, a1, a0, T;
+
215 };
+
216 
+
217 #endif // __TRAJ_GEN_HPP__
+
218 
+
Generates a 1DOF order-one trajectory.
Definition: TrajGen.hpp:46
+
Generates a 1DOF order-three trajectory.
Definition: TrajGen.hpp:111
+
void dump(double samples) const
Definition: TrajGen.hpp:205
+
bool maxVelBelow(const double thresVel) const
Definition: TrajGen.hpp:180
+
bool maxAccBelow(const double thresAcc) const
Definition: TrajGen.hpp:188
+
double getdot(const double ti) const
Definition: TrajGen.hpp:156
+
double getT() const
Definition: TrajGen.hpp:196
+
double getdotdot(const double ti) const
Definition: TrajGen.hpp:168
+
double get(const double ti) const
Definition: TrajGen.hpp:144
+
bool configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T)
Definition: TrajGen.hpp:131
+
bool configure(const double xi, const double xf, const double _T)
Definition: TrajGen.hpp:118
+
A base class for 1 degree-of-freedom trajectories.
Definition: TrajGen.hpp:26
+
+ + + + diff --git a/TrajectoryThread_8hpp_source.html b/TrajectoryThread_8hpp_source.html new file mode 100644 index 000000000..d8cd824e4 --- /dev/null +++ b/TrajectoryThread_8hpp_source.html @@ -0,0 +1,137 @@ + + + + + + + +kinematics-dynamics: examples/cpp/exampleScrewTheoryTrajectory/TrajectoryThread.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TrajectoryThread.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __TRAJECTORY_THREAD_HPP__
+
4 #define __TRAJECTORY_THREAD_HPP__
+
5 
+
6 #include <yarp/os/PeriodicThread.h>
+
7 
+
8 #include <yarp/dev/IEncoders.h>
+
9 #include <yarp/dev/IPositionDirect.h>
+
10 
+
11 #include <kdl/trajectory.hpp>
+
12 
+
13 #include <ScrewTheoryIkProblem.hpp>
+
14 #include <ConfigurationSelector.hpp>
+
15 
+
16 class TrajectoryThread : public yarp::os::PeriodicThread
+
17 {
+
18 public:
+
19  TrajectoryThread(yarp::dev::IEncoders * iEncoders,
+
20  yarp::dev::IPositionDirect * iPosDirect,
+ + +
23  KDL::Trajectory * trajectory,
+
24  int period)
+
25  : yarp::os::PeriodicThread(period * 0.001, yarp::os::PeriodicThreadClock::Absolute),
+
26  iEncoders(iEncoders),
+
27  iPosDirect(iPosDirect),
+
28  ikProblem(ikProblem),
+
29  ikConfig(ikConfig),
+
30  trajectory(trajectory),
+
31  axes(0),
+
32  startTime(0)
+
33  {}
+
34 
+
35 protected:
+
36  bool threadInit() override;
+
37  void run() override;
+
38 
+
39 private:
+
40  yarp::dev::IEncoders * iEncoders;
+
41  yarp::dev::IPositionDirect * iPosDirect;
+ + +
44  KDL::Trajectory * trajectory;
+
45  int axes;
+
46  double startTime;
+
47 };
+
48 
+
49 #endif // __TRAJECTORY_THREAD_HPP__
+
Definition: TrajectoryThread.hpp:17
+
Abstract base class for a robot configuration strategy selector.
Definition: ConfigurationSelector.hpp:20
+
Proxy IK problem solver class that iterates over a sequence of subproblems.
Definition: ScrewTheoryIkProblem.hpp:95
+
+ + + + diff --git a/WiimoteSensorDevice_8hpp_source.html b/WiimoteSensorDevice_8hpp_source.html new file mode 100644 index 000000000..8849b5bfe --- /dev/null +++ b/WiimoteSensorDevice_8hpp_source.html @@ -0,0 +1,146 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/WiimoteSensorDevice.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WiimoteSensorDevice.hpp
+
+
+
1 #ifndef __WIIMOTE_SENSOR_DEVICE_HPP__
+
2 #define __WIIMOTE_SENSOR_DEVICE_HPP__
+
3 
+
4 #include "StreamingDevice.hpp"
+
5 
+
6 #include <vector>
+
7 
+
8 #include <yarp/os/Value.h>
+
9 #include <yarp/dev/IAnalogSensor.h>
+
10 
+
11 #define DEFAULT_STEP 0.01
+
12 
+
13 namespace roboticslab
+
14 {
+
15 
+ +
23 {
+
24 public:
+
26  WiimoteSensorDevice(yarp::os::Searchable & config, bool usingMovi);
+
27 
+
28  bool acquireInterfaces() override;
+
29 
+
30  bool initialize(bool usingStreamingPreset) override;
+
31 
+
32  bool acquireData() override;
+
33 
+
34  bool transformData(double scaling) override;
+
35 
+
36  bool hasValidMovementData() const override;
+
37 
+
38  void sendMovementCommand(double timestamp) override;
+
39 
+
40  void stopMotion() override;
+
41 
+
42 private:
+
43  enum cmd_mode { NONE, FWD, BKWD, ROT };
+
44 
+
45  yarp::dev::IAnalogSensor * iAnalogSensor;
+
46 
+
47  cmd_mode mode;
+
48 
+
49  std::vector<double> buffer;
+
50 
+
51  bool usingMovi;
+
52  double step;
+
53 };
+
54 
+
55 } // namespace roboticslab
+
56 
+
57 #endif // __WIIMOTE_SENSOR_DEVICE_HPP__
+
Abstract class for a YARP streaming device.
Definition: StreamingDevice.hpp:46
+
Represents a Wiimote device wrapped as an analog sensor by YARP.
Definition: WiimoteSensorDevice.hpp:23
+
void sendMovementCommand(double timestamp) override
Sends movement command to the cartesian controller.
Definition: WiimoteSensorDevice.cpp:132
+
bool hasValidMovementData() const override
Checks whether the device may forward acquired and processed data to the controller.
Definition: WiimoteSensorDevice.cpp:127
+
WiimoteSensorDevice(yarp::os::Searchable &config, bool usingMovi)
Constructor.
Definition: WiimoteSensorDevice.cpp:13
+
bool transformData(double scaling) override
Performs required operations on stored data.
Definition: WiimoteSensorDevice.cpp:87
+
bool initialize(bool usingStreamingPreset) override
Perform any custom initialization needed. This method is called after the successful creation of the ...
Definition: WiimoteSensorDevice.cpp:38
+
bool acquireInterfaces() override
Acquires plugin interfaces.
Definition: WiimoteSensorDevice.cpp:25
+
void stopMotion() override
Sends a movement command that would stop motion.
Definition: WiimoteSensorDevice.cpp:162
+
bool acquireData() override
Acquires data from remote device.
Definition: WiimoteSensorDevice.cpp:66
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
+ + + + diff --git a/YarpTinyMath_8hpp_source.html b/YarpTinyMath_8hpp_source.html new file mode 100644 index 000000000..84f6bc289 --- /dev/null +++ b/YarpTinyMath_8hpp_source.html @@ -0,0 +1,126 @@ + + + + + + + +kinematics-dynamics: libraries/YarpTinyMathLib/YarpTinyMath.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
YarpTinyMath.hpp
+
+
+
1 // -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
+
2 
+
3 #ifndef __YARP_TINY_MATH_HPP__
+
4 #define __YARP_TINY_MATH_HPP__
+
5 
+
6 #define _USE_MATH_DEFINES // see <math.h> on Windows
+
7 #include <cmath> // provides: M_PI
+
8 
+
9 #include <yarp/sig/Vector.h>
+
10 #include <yarp/sig/Matrix.h>
+
11 
+
12 namespace roboticslab
+
13 {
+
14 
+
26 double toDeg(const double inRad);
+
27 
+
33 double toRad(const double inDeg);
+
34 
+
40 void xUpdateH(const yarp::sig::Vector &x, yarp::sig::Matrix &H);
+
41 
+
42 yarp::sig::Matrix rotX(const double &inDeg);
+
43 yarp::sig::Matrix rotY(const double &inDeg);
+
44 yarp::sig::Matrix rotZ(const double &inDeg);
+
45 
+
51 yarp::sig::Matrix eulerZYZtoH(const yarp::sig::Vector &x, const yarp::sig::Vector &o);
+
52 
+
59 yarp::sig::Matrix eulerYZtoH(const yarp::sig::Vector &x, const yarp::sig::Vector &o);
+
60 
+
67 yarp::sig::Matrix axisAngleToH(const yarp::sig::Vector &x, const yarp::sig::Vector &o);
+
68 
+
69 } // namespace roboticslab
+
70 
+
71 #endif // __YARP_TINY_MATH_HPP__
+
72 
+
The main, catch-all namespace for Robotics Lab UC3M.
Definition: groups.dox:6
+
yarp::sig::Matrix axisAngleToH(const yarp::sig::Vector &x, const yarp::sig::Vector &o)
Definition: YarpTinyMath.cpp:99
+
double toDeg(const double inRad)
Definition: YarpTinyMath.cpp:9
+
void xUpdateH(const yarp::sig::Vector &x, yarp::sig::Matrix &H)
Definition: YarpTinyMath.cpp:23
+
yarp::sig::Matrix eulerZYZtoH(const yarp::sig::Vector &x, const yarp::sig::Vector &o)
Definition: YarpTinyMath.cpp:77
+
double toRad(const double inDeg)
Definition: YarpTinyMath.cpp:16
+
yarp::sig::Matrix eulerYZtoH(const yarp::sig::Vector &x, const yarp::sig::Vector &o)
Definition: YarpTinyMath.cpp:88
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..d52e583e9 --- /dev/null +++ b/annotated.html @@ -0,0 +1,153 @@ + + + + + + + +kinematics-dynamics: Class List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NroboticslabThe main, catch-all namespace for Robotics Lab UC3M
 NtestContains classes related to unit testing
 CAsibotSolverTestFromFileTests AsibotSolver ikin from loaded configuration file
 CBasicCartesianControlTestTests BasicCartesianControl ikin and idyn on a simple mechanism
 CKdlSolverTestTests KdlSolver ikin and idyn on a simple mechanism
 CKdlSolverTestFromFileTests KdlSolver ikin and idyn on a simple mechanism
 CKinRepresentationTestTests KinRepresentation
 CScrewTheoryTestTests classes related to Screw Theory
 Ccompare_solutions
 CConfigurationSelectorAbstract base class for a robot configuration strategy selector
 CConfigurationHelper class to store a specific robot configuration
 CConfigurationSelectorLeastOverallAngularDisplacementIK solver configuration strategy selector based on the overall displacement of all joints
 CConfigurationSelectorHumanoidGaitIK solver configuration strategy selector based on human walking
 CConfigurationSelectorFactoryBase factory class for ConfigurationSelector
 CConfigurationSelectorLeastOverallAngularDisplacementFactoryImplementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement
 CConfigurationSelectorHumanoidGaitFactoryImplementation factory class for ConfigurationSelectorHumanoidGait
 CMatrixExponentialAbstraction of a term in a product of exponentials (POE) formula
 CPoeExpressionAbstraction of a product of exponentials (POE) formula
 CScrewTheoryIkSubproblemInterface shared by all IK subproblems found in Screw Theory applied to Robotics
 CScrewTheoryIkProblemProxy IK problem solver class that iterates over a sequence of subproblems
 CScrewTheoryIkProblemBuilderAutomated IK solution finder
 CPoeTermHelper structure that holds the state of a POE term
 CPadenKahanOneFirst Paden-Kahan subproblem
 CPadenKahanTwoSecond Paden-Kahan subproblem
 CPadenKahanThreeThird Paden-Kahan subproblem
 CPardosGotorOneFirst Pardos-Gotor subproblem
 CPardosGotorTwoSecond Pardos-Gotor subproblem
 CPardosGotorThreeThird Pardos-Gotor subproblem
 CPardosGotorFourFourth Pardos-Gotor subproblem
 CAsibotConfigurationAbstract base class for a robot configuration strategy selector
 CPoseHelper class to store a specific robot configuration
 CAsibotConfigurationLeastOverallAngularDisplacementIK solver configuration strategy selector based on the overall angle displacement of all joints
 CAsibotConfigurationFactoryBase factory class for AsibotConfiguration
 CAsibotConfigurationLeastOverallAngularDisplacementFactoryImplementation factory class for AsibotConfigurationLeastOverallAngularDisplacement
 CAsibotSolverThe AsibotSolver implements ICartesianSolver
 CAsibotTcpFrame
 CBasicCartesianControlImplements ICartesianControl
 CStateWatcher
 CFkStreamResponderResponds to streaming FK messages
 CCartesianControlClientImplements ICartesianControl client side
 CCartesianControlServerImplements ICartesianControl server side
 CRpcResponderResponds to RPC command messages
 CRpcTransformResponderResponds to RPC command messages, transforms incoming data
 CStreamResponderResponds to streaming command messages
 CICartesianControlAbstract base class for a cartesian controller
 CICartesianSolverAbstract base class for a cartesian solver
 CChainFkSolverPos_STFK solver using Screw Theory
 CChainIkSolverPos_IDIK solver using infinitesimal displacement twists
 CChainIkSolverPos_STIK solver using Screw Theory
 CKdlSolverImplements ICartesianSolver
 CKdlTreeSolverImplements ICartesianSolver
 CFtCompensationProduces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app)
 CGrabberResponderCallback class for dealing with incoming grabber data streams
 CHaarDetectionControllerCreate seek-and-follow trajectories based on Haar detection algorithms
 CKeyboardControllerSends streaming commands to the cartesian controller from a standard keyboard
 CLinearTrajectoryThreadPeriodic thread that encapsulates a linear trajectory
 CCentroidTransform..
 CLeapMotionSensorDeviceRepresents a LeapMotion device wrapped as an analog sensor by YARP
 CSpnavSensorDeviceRepresents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion
 CStreamingDeviceFactoryFactory class for creating instances of StreamingDevice
 CStreamingDeviceAbstract class for a YARP streaming device
 CInvalidDeviceRepresents an invalid device
 CStreamingDeviceControllerSends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator
 CWiimoteSensorDeviceRepresents a Wiimote device wrapped as an analog sensor by YARP
 COrderOneTrajGenerates a 1DOF order-one trajectory
 COrderThreeTrajGenerates a 1DOF order-three trajectory
 CTrajA base class for 1 degree-of-freedom trajectories
 CTrajectoryThread
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +kinematics-dynamics: Bibliography + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Bibliography
+
+
+
+
[1]
+

Josรฉ Manuel Pardos-Gotor. Screw Theory for Robotics - A practical approach for Modern Robot KINEMATICS - An Illustrated Handbook. Amazon Fulfillment, 9 2018. ISBN 978-1-7179-3181-8.

+

+
+
+
+
+ + + + diff --git a/classOrderOneTraj-members.html b/classOrderOneTraj-members.html new file mode 100644 index 000000000..50dcd488d --- /dev/null +++ b/classOrderOneTraj-members.html @@ -0,0 +1,98 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
OrderOneTraj Member List
+
+
+ +

This is the complete list of members for OrderOneTraj, including all inherited members.

+ + + + + + + + + + + + + + + +
b (defined in OrderOneTraj)OrderOneTrajprivate
configure(const double xi, const double xf, const double _T) (defined in OrderOneTraj)OrderOneTrajinlinevirtual
configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T) (defined in OrderOneTraj)OrderOneTrajinlinevirtual
dump(double samples) const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
get(const double ti) const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
getdot(const double ti) const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
getdotdot(const double ti) const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
getT() const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
m (defined in OrderOneTraj)OrderOneTrajprivate
maxAccBelow(const double thresAcc) const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
maxVelBelow(const double thresVel) const (defined in OrderOneTraj)OrderOneTrajinlinevirtual
OrderOneTraj() (defined in OrderOneTraj)OrderOneTrajinline
T (defined in OrderOneTraj)OrderOneTrajprivate
~Traj() (defined in Traj)Trajinlinevirtual
+ + + + diff --git a/classOrderOneTraj.html b/classOrderOneTraj.html new file mode 100644 index 000000000..7d2a3f7a0 --- /dev/null +++ b/classOrderOneTraj.html @@ -0,0 +1,145 @@ + + + + + + + +kinematics-dynamics: OrderOneTraj Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Generates a 1DOF order-one trajectory. +

+ +

#include <TrajGen.hpp>

+
+Inheritance diagram for OrderOneTraj:
+
+
+ + +Traj + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool configure (const double xi, const double xf, const double _T)
 
+bool configure (const double xi, const double xf, const double xdoti, const double xdotf, const double _T)
 
+double get (const double ti) const
 
+double getdot (const double ti) const
 
+double getdotdot (const double ti) const
 
+bool maxVelBelow (const double thresVel) const
 
+bool maxAccBelow (const double thresAcc) const
 
+double getT () const
 
+void dump (double samples) const
 
+ + + + + + + +

+Private Attributes

+double T
 
+double m
 
+double b
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classOrderOneTraj.png b/classOrderOneTraj.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ac9e1c6f70adb5252f92cef512d5b043c3be07 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^F+d!^!3-o9e|{tgq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg9X(wfLn;{G&b^q|Y{28{pQrNg|KxC| z44D`$tFyBu;BoSB$xZ4;cmHgJ(wP>+zFr(Zq4{%!wDJJP%-?OB&r*Q)9{*{*qd z>D_N1KF?f#!;i0lUz=m!S2H%bsA)H5tq;viR`$&Q`c}9q`o~h?+4EyOi*}jrxfa#T z@}W_zLBsXXbkzxRob?+XzgYM|+TZ&S;~pWt2U7|dmbWllsLCABe8}L($zJfw{6mme zrx2@x8;GM@k^TM;&xYyU2AA1-R!1}6yQcY!Qn-_vf#QZ!Omz>!`Sse{bH0 zfA`~Vb3Fg>?cctL>wNDSKj-=UvHo%4U`^UTA-k>;!F$zTrS_R$I$(bN>zTE;Q|+$) z*`kxyeEtZZ>PCM5Q$=j@!FRr!`*-(B{b&6F7{Cmku6{1-oD!M + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
OrderThreeTraj Member List
+
+
+ +

This is the complete list of members for OrderThreeTraj, including all inherited members.

+ + + + + + + + + + + + + + + + + +
a0 (defined in OrderThreeTraj)OrderThreeTrajprivate
a1 (defined in OrderThreeTraj)OrderThreeTrajprivate
a2 (defined in OrderThreeTraj)OrderThreeTrajprivate
a3 (defined in OrderThreeTraj)OrderThreeTrajprivate
configure(const double xi, const double xf, const double _T)OrderThreeTrajinlinevirtual
configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T)OrderThreeTrajinlinevirtual
dump(double samples) constOrderThreeTrajinlinevirtual
get(const double ti) constOrderThreeTrajinlinevirtual
getdot(const double ti) constOrderThreeTrajinlinevirtual
getdotdot(const double ti) constOrderThreeTrajinlinevirtual
getT() constOrderThreeTrajinlinevirtual
maxAccBelow(const double thresAcc) constOrderThreeTrajinlinevirtual
maxVelBelow(const double thresVel) constOrderThreeTrajinlinevirtual
OrderThreeTraj() (defined in OrderThreeTraj)OrderThreeTrajinline
T (defined in OrderThreeTraj)OrderThreeTrajprivate
~Traj() (defined in Traj)Trajinlinevirtual
+ + + + diff --git a/classOrderThreeTraj.html b/classOrderThreeTraj.html new file mode 100644 index 000000000..533fa47e6 --- /dev/null +++ b/classOrderThreeTraj.html @@ -0,0 +1,452 @@ + + + + + + + +kinematics-dynamics: OrderThreeTraj Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Generates a 1DOF order-three trajectory. +

+ +

#include <TrajGen.hpp>

+
+Inheritance diagram for OrderThreeTraj:
+
+
+ + +Traj + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool configure (const double xi, const double xf, const double _T)
 
bool configure (const double xi, const double xf, const double xdoti, const double xdotf, const double _T)
 
double get (const double ti) const
 
double getdot (const double ti) const
 
double getdotdot (const double ti) const
 
bool maxVelBelow (const double thresVel) const
 
bool maxAccBelow (const double thresAcc) const
 
double getT () const
 
void dump (double samples) const
 
+ + + + + + + + + + + +

+Private Attributes

+double a3
 
+double a2
 
+double a1
 
+double a0
 
+double T
 
+

Member Function Documentation

+ +

◆ configure() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool OrderThreeTraj::configure (const double xi,
const double xf,
const double _T 
)
+
+inlinevirtual
+
+

Configure the trajectory. Forces null initial and final velocities.

+ +

Implements Traj.

+ +
+
+ +

◆ configure() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool OrderThreeTraj::configure (const double xi,
const double xf,
const double xdoti,
const double xdotf,
const double _T 
)
+
+inlinevirtual
+
+

Configure the trajectory setting an initial and final velocity too (warning: possible overshoot).

+ +

Implements Traj.

+ +
+
+ +

◆ dump()

+ +
+
+ + + + + +
+ + + + + + + + +
void OrderThreeTraj::dump (double samples) const
+
+inlinevirtual
+
+

Printf of ti, f(ti), fdot(ti), fdotdot(ti) for whole duration interval.

Parameters
+ + +
samplesnumber of lines to print.
+
+
+ +

Implements Traj.

+ +
+
+ +

◆ get()

+ +
+
+ + + + + +
+ + + + + + + + +
double OrderThreeTraj::get (const double ti) const
+
+inlinevirtual
+
+
Returns
the value of the function at instant ti.
+ +

Implements Traj.

+ +
+
+ +

◆ getdot()

+ +
+
+ + + + + +
+ + + + + + + + +
double OrderThreeTraj::getdot (const double ti) const
+
+inlinevirtual
+
+
Returns
the value of the first derivative of the function at instant ti.
+ +

Implements Traj.

+ +
+
+ +

◆ getdotdot()

+ +
+
+ + + + + +
+ + + + + + + + +
double OrderThreeTraj::getdotdot (const double ti) const
+
+inlinevirtual
+
+
Returns
the value of the second derivative of the function at instant ti.
+ +

Implements Traj.

+ +
+
+ +

◆ getT()

+ +
+
+ + + + + +
+ + + + + + + +
double OrderThreeTraj::getT () const
+
+inlinevirtual
+
+
Returns
duration assigned to the trajectory instance.
+ +

Implements Traj.

+ +
+
+ +

◆ maxAccBelow()

+ +
+
+ + + + + +
+ + + + + + + + +
bool OrderThreeTraj::maxAccBelow (const double thresAcc) const
+
+inlinevirtual
+
+

Check if the maximum of the second derivative is below a certain threshold.

+ +

Implements Traj.

+ +
+
+ +

◆ maxVelBelow()

+ +
+
+ + + + + +
+ + + + + + + + +
bool OrderThreeTraj::maxVelBelow (const double thresVel) const
+
+inlinevirtual
+
+

Check if the maximum of the first derivative is below a certain threshold.

+ +

Implements Traj.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classOrderThreeTraj.png b/classOrderThreeTraj.png new file mode 100644 index 0000000000000000000000000000000000000000..9a2fb75f1974beb1766ef8dedb6871e8e11d1454 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^sX!dS!3-qLMZF&bDTx4|5ZC|z{{xvX-h3_XKQsZz z0^SbyRK7I(sjF3BEKBhc=*F}mH++8OB!`H-kBFN$?B$N zVs`%undF<#{5kx+-c|W9>j literal 0 HcmV?d00001 diff --git a/classTraj-members.html b/classTraj-members.html new file mode 100644 index 000000000..9459a6e74 --- /dev/null +++ b/classTraj-members.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Traj Member List
+
+
+ +

This is the complete list of members for Traj, including all inherited members.

+ + + + + + + + + + + +
configure(const double xi, const double xf, const double _T)=0 (defined in Traj)Trajpure virtual
configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T)=0 (defined in Traj)Trajpure virtual
dump(double samples) const =0 (defined in Traj)Trajpure virtual
get(const double ti) const =0 (defined in Traj)Trajpure virtual
getdot(const double ti) const =0 (defined in Traj)Trajpure virtual
getdotdot(const double ti) const =0 (defined in Traj)Trajpure virtual
getT() const =0 (defined in Traj)Trajpure virtual
maxAccBelow(const double thresAcc) const =0 (defined in Traj)Trajpure virtual
maxVelBelow(const double thresVel) const =0 (defined in Traj)Trajpure virtual
~Traj() (defined in Traj)Trajinlinevirtual
+ + + + diff --git a/classTraj.html b/classTraj.html new file mode 100644 index 000000000..6ebd33b8a --- /dev/null +++ b/classTraj.html @@ -0,0 +1,133 @@ + + + + + + + +kinematics-dynamics: Traj Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

A base class for 1 degree-of-freedom trajectories. +

+ +

#include <TrajGen.hpp>

+
+Inheritance diagram for Traj:
+
+
+ + +OrderOneTraj +OrderThreeTraj + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual bool configure (const double xi, const double xf, const double _T)=0
 
+virtual bool configure (const double xi, const double xf, const double xdoti, const double xdotf, const double _T)=0
 
+virtual double get (const double ti) const =0
 
+virtual double getdot (const double ti) const =0
 
+virtual double getdotdot (const double ti) const =0
 
+virtual bool maxVelBelow (const double thresVel) const =0
 
+virtual bool maxAccBelow (const double thresAcc) const =0
 
+virtual double getT () const =0
 
+virtual void dump (double samples) const =0
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classTraj.png b/classTraj.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1768cc636da513893ef1d2f86a4910f8a840e7 GIT binary patch literal 645 zcmV;00($+4P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0006MNklQ0(gLBT^4nRv<1ez4URZI$? z0+Rx`%E7?BZS3&9e(_Az-`dwpx$*d(vwmi3)R~Psl3LC>lX~wNeMxn>{Q7*R#??1% zg8*f|SPCG)qyU;xA9!}*0yLsUph*E-#iRf#Fe!kmIOp8$0DLzCKyUOYH4GhE^(ggn z>d&f6Dck)3o`FdLJOPsecmgH`@B~Z>pee&J3@rh;oyJ3MQUFz$6u>o13ZM#;0=R}r z0aRg90M{@nfGSK1;2I_cP{jkJy!ZYbgZJK_qjj8@q??JQBONzIi@nFnVoZr;pP zvc4;p-+okPrsAhHmzmrBeui#Uavij@6b?xph&r?UK1nSvkMNKtTT + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TrajectoryThread Member List
+
+
+ +

This is the complete list of members for TrajectoryThread, including all inherited members.

+ + + + + + + + + + + +
axes (defined in TrajectoryThread)TrajectoryThreadprivate
iEncoders (defined in TrajectoryThread)TrajectoryThreadprivate
ikConfig (defined in TrajectoryThread)TrajectoryThreadprivate
ikProblem (defined in TrajectoryThread)TrajectoryThreadprivate
iPosDirect (defined in TrajectoryThread)TrajectoryThreadprivate
run() override (defined in TrajectoryThread)TrajectoryThreadprotected
startTime (defined in TrajectoryThread)TrajectoryThreadprivate
threadInit() override (defined in TrajectoryThread)TrajectoryThreadprotected
trajectory (defined in TrajectoryThread)TrajectoryThreadprivate
TrajectoryThread(yarp::dev::IEncoders *iEncoders, yarp::dev::IPositionDirect *iPosDirect, roboticslab::ScrewTheoryIkProblem *ikProblem, roboticslab::ConfigurationSelector *ikConfig, KDL::Trajectory *trajectory, int period) (defined in TrajectoryThread)TrajectoryThreadinline
+ + + + diff --git a/classTrajectoryThread.html b/classTrajectoryThread.html new file mode 100644 index 000000000..ead0d9226 --- /dev/null +++ b/classTrajectoryThread.html @@ -0,0 +1,136 @@ + + + + + + + +kinematics-dynamics: TrajectoryThread Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+
+Inheritance diagram for TrajectoryThread:
+
+
+ +
+ + + + +

+Public Member Functions

TrajectoryThread (yarp::dev::IEncoders *iEncoders, yarp::dev::IPositionDirect *iPosDirect, roboticslab::ScrewTheoryIkProblem *ikProblem, roboticslab::ConfigurationSelector *ikConfig, KDL::Trajectory *trajectory, int period)
 
+ + + + + +

+Protected Member Functions

+bool threadInit () override
 
+void run () override
 
+ + + + + + + + + + + + + + + +

+Private Attributes

+yarp::dev::IEncoders * iEncoders
 
+yarp::dev::IPositionDirect * iPosDirect
 
+roboticslab::ScrewTheoryIkProblemikProblem
 
+roboticslab::ConfigurationSelectorikConfig
 
+KDL::Trajectory * trajectory
 
+int axes
 
+double startTime
 
+
The documentation for this class was generated from the following files:
    +
  • examples/cpp/exampleScrewTheoryTrajectory/TrajectoryThread.hpp
  • +
  • examples/cpp/exampleScrewTheoryTrajectory/TrajectoryThread.cpp
  • +
+
+ + + + diff --git a/classTrajectoryThread.png b/classTrajectoryThread.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdc8afe132d80868b9c98a8e4ea56116077d6ea GIT binary patch literal 635 zcmeAS@N?(olHy`uVBq!ia0vp^(||aDgBeJk$*ZXZQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;IuDe9q`pPcxptGR>w6MAqTZ;mVuL#CEt?ro^ zw(<7LSw6Y1i({6&KGA-7>)ev_5@FtxOt;*6dn@b3^H-;DpAUFly*B22c+_3*H(&2v zJT>!n=8~z`TUD|%R=rHmJoi3)b-Y7*)LUKm%^pVQZ{C`eGEY4F^$ORmjX_iH`-O)8 z^_0qemTtXKOxN1b)An-JzpE3M++S4JIVongWA+0B*R3jmvk`4d&FHggnC}*QM644PL9iX6+Z*tn#F&vz7aQYHd5Ds_XeThWo(B&-{`OGfr<^_fxkz w`1SNP|BlYjYS@3|5>toK`e`$7mi%GdWgV7L`r-9lU`k=|boFyt=akR{02l8m;s5{u literal 0 HcmV?d00001 diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..cd540b3b7 --- /dev/null +++ b/classes.html @@ -0,0 +1,132 @@ + + + + + + + +kinematics-dynamics: Class Index + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
A | B | C | F | G | H | I | K | L | M | O | P | R | S | T | W
+
+
+
A
+
AsibotConfiguration (roboticslab)
AsibotConfigurationFactory (roboticslab)
AsibotConfigurationLeastOverallAngularDisplacement (roboticslab)
AsibotConfigurationLeastOverallAngularDisplacementFactory (roboticslab)
AsibotSolver (roboticslab)
AsibotSolverTestFromFile (roboticslab::test)
AsibotSolver::AsibotTcpFrame (roboticslab)
+
+
B
+
BasicCartesianControl (roboticslab)
BasicCartesianControlTest (roboticslab::test)
+
+
C
+
CartesianControlClient (roboticslab)
CartesianControlServer (roboticslab)
CentroidTransform (roboticslab)
ChainFkSolverPos_ST (roboticslab)
ChainIkSolverPos_ID (roboticslab)
ChainIkSolverPos_ST (roboticslab)
ScrewTheoryTest::compare_solutions (roboticslab::test)
ConfigurationSelector::Configuration (roboticslab)
ConfigurationSelector (roboticslab)
ConfigurationSelectorFactory (roboticslab)
ConfigurationSelectorHumanoidGait (roboticslab)
ConfigurationSelectorHumanoidGaitFactory (roboticslab)
ConfigurationSelectorLeastOverallAngularDisplacement (roboticslab)
ConfigurationSelectorLeastOverallAngularDisplacementFactory (roboticslab)
+
+
F
+
FkStreamResponder (roboticslab)
FtCompensation (roboticslab)
+
+
G
+
GrabberResponder (roboticslab)
+
+
H
+
HaarDetectionController (roboticslab)
+
+
I
+
ICartesianControl (roboticslab)
ICartesianSolver (roboticslab)
InvalidDevice (roboticslab)
+
+
K
+
KdlSolver (roboticslab)
KdlSolverTest (roboticslab::test)
KdlSolverTestFromFile (roboticslab::test)
KdlTreeSolver (roboticslab)
KeyboardController (roboticslab)
KinRepresentationTest (roboticslab::test)
+
+
L
+
LeapMotionSensorDevice (roboticslab)
LinearTrajectoryThread (roboticslab)
+
+
M
+
MatrixExponential (roboticslab)
+
+
O
+
OrderOneTraj
OrderThreeTraj
+
+
P
+
PadenKahanOne (roboticslab)
PadenKahanThree (roboticslab)
PadenKahanTwo (roboticslab)
PardosGotorFour (roboticslab)
PardosGotorOne (roboticslab)
PardosGotorThree (roboticslab)
PardosGotorTwo (roboticslab)
PoeExpression (roboticslab)
ScrewTheoryIkProblemBuilder::PoeTerm (roboticslab)
AsibotConfiguration::Pose (roboticslab)
+
+
R
+
RpcResponder (roboticslab)
RpcTransformResponder (roboticslab)
+
+
S
+
ScrewTheoryIkProblem (roboticslab)
ScrewTheoryIkProblemBuilder (roboticslab)
ScrewTheoryIkSubproblem (roboticslab)
ScrewTheoryTest (roboticslab::test)
SpnavSensorDevice (roboticslab)
BasicCartesianControl::StateWatcher (roboticslab)
StreamingDevice (roboticslab)
StreamingDeviceController (roboticslab)
StreamingDeviceFactory (roboticslab)
StreamResponder (roboticslab)
+
+
T
+
Traj
TrajectoryThread
+
+
W
+
WiimoteSensorDevice (roboticslab)
+
+
+ + + + diff --git a/classroboticslab_1_1AsibotConfiguration-members.html b/classroboticslab_1_1AsibotConfiguration-members.html new file mode 100644 index 000000000..47a48e333 --- /dev/null +++ b/classroboticslab_1_1AsibotConfiguration-members.html @@ -0,0 +1,102 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::AsibotConfiguration Member List
+
+
+ +

This is the complete list of members for roboticslab::AsibotConfiguration, including all inherited members.

+ + + + + + + + + + + + + + + +
_qMax (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
_qMin (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
AsibotConfiguration(JointsIn qMin, JointsIn qMax)roboticslab::AsibotConfigurationinline
configure(double q1, double q2u, double q2d, double q3, double q4u, double q4d, double q5)roboticslab::AsibotConfigurationvirtual
findOptimalConfiguration(JointsIn qGuess)=0roboticslab::AsibotConfigurationpure virtual
forwardElbowDown (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
forwardElbowUp (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
JointsIn typedefroboticslab::AsibotConfiguration
JointsOut typedefroboticslab::AsibotConfiguration
optimalPose (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
retrieveAngles(JointsOut q) constroboticslab::AsibotConfigurationinlinevirtual
reversedElbowDown (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
reversedElbowUp (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
~AsibotConfiguration()=defaultroboticslab::AsibotConfigurationvirtual
+ + + + diff --git a/classroboticslab_1_1AsibotConfiguration.html b/classroboticslab_1_1AsibotConfiguration.html new file mode 100644 index 000000000..12823c7e2 --- /dev/null +++ b/classroboticslab_1_1AsibotConfiguration.html @@ -0,0 +1,365 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotConfiguration Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::AsibotConfiguration Class Referenceabstract
+
+
+ +

Abstract base class for a robot configuration strategy selector. + More...

+ +

#include <AsibotConfiguration.hpp>

+
+Inheritance diagram for roboticslab::AsibotConfiguration:
+
+
+ + +roboticslab::AsibotConfigurationLeastOverallAngularDisplacement + +
+ + + + + +

+Classes

struct  Pose
 Helper class to store a specific robot configuration. More...
 
+ + + + + + + +

+Public Types

+using JointsIn = const std::vector< double > &
 Const vector of joint angles (input parameter).
 
+using JointsOut = std::vector< double > &
 Vector of joint angles (output parameter).
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 AsibotConfiguration (JointsIn qMin, JointsIn qMax)
 Constructor. More...
 
+virtual ~AsibotConfiguration ()=default
 Destructor.
 
virtual bool configure (double q1, double q2u, double q2d, double q3, double q4u, double q4d, double q5)
 Stores initial values for a specific pose. More...
 
virtual bool findOptimalConfiguration (JointsIn qGuess)=0
 Analyzes available configurations and selects the optimal one. More...
 
virtual void retrieveAngles (JointsOut q) const
 Queries computed angles for the optimal configuration. More...
 
+ + + + + + + + + + + + + + + +

+Protected Attributes

+JointsIn _qMin
 
+JointsIn _qMax
 
+Pose optimalPose
 
+Pose forwardElbowUp
 
+Pose forwardElbowDown
 
+Pose reversedElbowUp
 
+Pose reversedElbowDown
 
+

Detailed Description

+

Designed with ASIBOT's specific case in mind, which entails up to four different configurations depending on initial angles provided.

+

Constructor & Destructor Documentation

+ +

◆ AsibotConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::AsibotConfiguration::AsibotConfiguration (JointsIn qMin,
JointsIn qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinvector of minimum joint limits [deg]
qMaxvector of maximum joint limits [deg]
+
+
+ +
+
+

Member Function Documentation

+ +

◆ configure()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AsibotConfiguration::configure (double q1,
double q2u,
double q2d,
double q3,
double q4u,
double q4d,
double q5 
)
+
+virtual
+
+

Distinguishes between elbow up and down poses. Make sure that:

+
oyP = q2u + q3 + q4u = q2d - q3 + q4d
+
Parameters
+ + + + + + + + +
q1IK solution for joint 1 [deg]
q2uIK solution for joint 2 (elbow up) [deg]
q2dIK solution for joint 2 (elbow down) [deg]
q3IK solution for joint 3 [deg]
q4uIK solution for joint 4 (elbow up) [deg]
q4dIK solution for joint 4 (elbow down) [deg]
q5IK solution for joint 5 [deg]
+
+
+
Returns
true/false on success/failure
+ +
+
+ +

◆ findOptimalConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::AsibotConfiguration::findOptimalConfiguration (JointsIn qGuess)
+
+pure virtual
+
+
Parameters
+ + +
qGuessvector of joint angles for current robot position [deg]
+
+
+
Returns
true/false on success/failure
+ +

Implemented in roboticslab::AsibotConfigurationLeastOverallAngularDisplacement.

+ +
+
+ +

◆ retrieveAngles()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void roboticslab::AsibotConfiguration::retrieveAngles (JointsOut q) const
+
+inlinevirtual
+
+
Parameters
+ + +
qvector of joint angles [deg]
+
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/AsibotSolver/AsibotConfiguration.hpp
  • +
  • libraries/YarpPlugins/AsibotSolver/AsibotConfiguration.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1AsibotConfiguration.png b/classroboticslab_1_1AsibotConfiguration.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f07d225ffa0928d79e7c369bf10bb74a6cd690 GIT binary patch literal 1139 zcmeAS@N?(olHy`uVBq!ia0y~yV5|qS12~w0JHnfB)-` z;riixOzm`;RH|_9PF1sQHMJ9t#s_(6P6_hTQ(|mkkP-RA_y-w3Idord=e8>Tt+w?> zGj?pf^ou=V>$ljvk_4s)`(K;>V1731)BCscqJLX6ocUTXIWF`;<)7_Szuk$ce-?80 z|81+{c(%;8va-)B5|_;RSo-hZ4w>dnE*n#POS+l<=-W=Lzx(6kW&;^hKWFVNWmgh5 zS#m#T%v~|F^Lgmv^k?fsJwL4c%UD8E_ZbWyJF;)?kn=8GKs4%GLr{Lk~R|4+Q^4v)>BfBgUZ#QWm8(YxE%ZOVE3 zHh%t{pQm?zFPT_myVCn+&-v_`zc#n8RJ%9H{($z2t>1n}{+U1H2E+Xe?N9#)&Sr>n zo*!P%5a)hS{(wI+*8V>wh->MTN$m`EoA)s|G3asqW61mUt4o~W!O{o(50;76?_pq2 zXRT-OXRT$h2hudff2;nT-lVfXA|6cYOcI%-!p>Un`6>9rbQPe*PzLW$b=YZPv@6a-0xNSYW4BH&71dSe`gA3{Lg=Vrna&=E#tU-zm%I+ zXUMbn{ih8zyhXgP9T7A=u63^KVA@i%7{5Ddi`(i;Z~MGXoA$ZrhG|}vda3YX+30^~ zC;dL3m2km=ckP8+fz2n?oX<1!Z0O_^Uj0;M>9b9LmIwY;zjicX*_2z^2Tsh|`u_5b z?9cUL3+}&3$bT;J*+V!>IcS*=Py5Y@vhz9r+r3gKeYU#f&)YQ@d$K>5|D3(K>{+~> zpZLVQPx`NYPRevoyWQYaXV;T8ujlNH=gWUx?%lj^R`DgF- zx=pl2laKFEdo^KyY2f#)tkB(O`#iHx9N7NM`ro84T&r6BChaLXeAHgDPWRupY&}o8 zT`wQ?{&+rF+p}-i^G9=kcwchY{NX)me$#%HpKwOz)BQT9g`%dVe!L*>bIUhOyYs>o QUFVdQ&MBb@04gyo%>V!Z literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1AsibotConfigurationFactory-members.html b/classroboticslab_1_1AsibotConfigurationFactory-members.html new file mode 100644 index 000000000..7d86492ee --- /dev/null +++ b/classroboticslab_1_1AsibotConfigurationFactory-members.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::AsibotConfigurationFactory Member List
+
+
+ +

This is the complete list of members for roboticslab::AsibotConfigurationFactory, including all inherited members.

+ + + + + + +
_qMax (defined in roboticslab::AsibotConfigurationFactory)roboticslab::AsibotConfigurationFactoryprotected
_qMin (defined in roboticslab::AsibotConfigurationFactory)roboticslab::AsibotConfigurationFactoryprotected
AsibotConfigurationFactory(AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)roboticslab::AsibotConfigurationFactoryinlineprotected
create() const =0roboticslab::AsibotConfigurationFactorypure virtual
~AsibotConfigurationFactory()=default (defined in roboticslab::AsibotConfigurationFactory)roboticslab::AsibotConfigurationFactoryvirtual
+ + + + diff --git a/classroboticslab_1_1AsibotConfigurationFactory.html b/classroboticslab_1_1AsibotConfigurationFactory.html new file mode 100644 index 000000000..a6d4eb15e --- /dev/null +++ b/classroboticslab_1_1AsibotConfigurationFactory.html @@ -0,0 +1,204 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotConfigurationFactory Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Base factory class for AsibotConfiguration. + More...

+ +

#include <AsibotConfiguration.hpp>

+
+Inheritance diagram for roboticslab::AsibotConfigurationFactory:
+
+
+ + +roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory + +
+ + + + + +

+Public Member Functions

virtual AsibotConfigurationcreate () const =0
 Creates an instance of the concrete class. More...
 
+ + + + +

+Protected Member Functions

 AsibotConfigurationFactory (AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)
 Constructor. More...
 
+ + + + + +

+Protected Attributes

+AsibotConfiguration::JointsIn _qMin
 
+AsibotConfiguration::JointsIn _qMax
 
+

Detailed Description

+

Acts as the base class in the abstract factory pattern, encapsulates individual factories.

+

Constructor & Destructor Documentation

+ +

◆ AsibotConfigurationFactory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::AsibotConfigurationFactory::AsibotConfigurationFactory (AsibotConfiguration::JointsIn qMin,
AsibotConfiguration::JointsIn qMax 
)
+
+inlineprotected
+
+
Parameters
+ + + +
qMinvector of minimum joint limits [deg]
qMaxvector of maximum joint limits [deg]
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AsibotConfiguration* roboticslab::AsibotConfigurationFactory::create () const
+
+pure virtual
+
+
Returns
A pointer to the base class of the inheritance tree.
+ +

Implemented in roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1AsibotConfigurationFactory.png b/classroboticslab_1_1AsibotConfigurationFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7093cbe9618f3b79b20352eb9700ca468d8e66 GIT binary patch literal 1298 zcmbVMdoNFH1PPM@_O{Y}FDlEt(o<%&88r>31lCEf}I>tgU zX%E@bDv4)G>X9W{j$vvg5t;~n&?f4nn`ZS`+0XvicJ}A)IrrZ0ocrB>?)RNr5{5qu zgW5p>0D$3w0tf&A5rR0(!UU`pE6qp2W)pTU;>`B;HV9w7GBV2VSM1DoQZAR9m1qzk zw4f94;Q&b53FT;nCjgl8aRGi2xsa8c%h{{0?+184>)O~VXK7|)t~fMJsF1|w>B>Q` zYkmg?;|akoRfOQ0{kspDW?eM<5I{hQ0CukkU^z!Y)_#eOnsre1Y5k@3GFy88+%2P( zoXXD5`Q8LB2^x+vM5|Q^X0^1@W(l)joeNpY^BMWH@M5D(uJ@Yk#;fYTvb=zh6t9!; zz3Go<$6JcN9c^`fCs9$DT!-t9w8V09qBSjJRVqujc#V-(M21XmiJvp+U#5}anr=I~ z7xUFj0}Orae3H^h%3bo7R~kpz=vs71o)Q|KdBK$&Hx*QAija|QPEN9ixgi+`of`Jb zD;a3wZF76l;wz=y+JtD-=Rpc(=7cCN?>c~qJ(Y~ct1nK4aF}&U!Jbg+!Zl;D*q0s0 z5G}okd^pb{DcZIN^ttp)ZbAdK6ZTk}Vc)CI?vuTH%X6yNt1D3iR20LRH;1Wi%8#z4 zCWe{3U8NzAR*&pkfeGbu6ePw^hMi9^d%f)0h>&}{WUOx{ZBjkr0GVL_ZG%DiF;M^S z`-Zjedd=rX2D@A(1ncy>)-Y_y6#&(iV772NJ|1EzFD$UWY}s;W*S^appfny(!avgd zwF(mb2cYs|kY@E??fyUE4PR7EAz|_HW1Vh@Bl~br+~kn82su(*z(uZywR4c5M>x;@ z{fRh&bo#_*!{6oz<%p(J3mbDnG|O43g7b>AeDV)W1@l;q;Jpp|-oXvhjrtBwa;u9F z`)s)H2?h~LS1kAy3?Ifdf0n|?SyLHn>x6LdGP4fn?M+P24 z^`xm)<-S^N`+4Pz`VvuG$n&47Tj*9ch)L_i=1x6uxD$~V?t-qNpvxZ1I#A{(ZzyY(th$zBXOfmQrXev3>r;CdocMF{>&v+@omx!WgOsPGl6|HCUnBX{l`VX4`n}$W@(_ zqwQjLBdKgETSFIj(W^mIBDyz{A4x<-@D<6^pWjp{@68RU1j$y^g|rrI0%N0JA2mK9 z#B5!%fTsHOq zMQA!gxwCaVL-s`<3zKt``l}GOdT2aoXhz#w;+sr~RrJ*5&EmylINDEw`8scOdv+f` z^Tu=vmy3+`>zWCk?4#cw62s!FxF5Yk>fC*GPe+PqYo#kfLKjk(;rrrg&o{i6Dq%in zFGmnJ5X=F82#y096ZacG!4ZeO+exmb>~ + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::AsibotConfigurationLeastOverallAngularDisplacement Member List
+
+
+ +

This is the complete list of members for roboticslab::AsibotConfigurationLeastOverallAngularDisplacement, including all inherited members.

+ + + + + + + + + + + + + + + + + +
_qMax (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
_qMin (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
AsibotConfiguration(JointsIn qMin, JointsIn qMax)roboticslab::AsibotConfigurationinline
AsibotConfigurationLeastOverallAngularDisplacement(JointsIn qMin, JointsIn qMax)roboticslab::AsibotConfigurationLeastOverallAngularDisplacementinline
configure(double q1, double q2u, double q2d, double q3, double q4u, double q4d, double q5)roboticslab::AsibotConfigurationvirtual
findOptimalConfiguration(JointsIn qGuess) overrideroboticslab::AsibotConfigurationLeastOverallAngularDisplacementvirtual
forwardElbowDown (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
forwardElbowUp (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
getDiffs(JointsIn qGuess, const Pose &pose)roboticslab::AsibotConfigurationLeastOverallAngularDisplacementprivate
JointsIn typedefroboticslab::AsibotConfiguration
JointsOut typedefroboticslab::AsibotConfiguration
optimalPose (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
retrieveAngles(JointsOut q) constroboticslab::AsibotConfigurationinlinevirtual
reversedElbowDown (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
reversedElbowUp (defined in roboticslab::AsibotConfiguration)roboticslab::AsibotConfigurationprotected
~AsibotConfiguration()=defaultroboticslab::AsibotConfigurationvirtual
+ + + + diff --git a/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html b/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html new file mode 100644 index 000000000..11eadae0d --- /dev/null +++ b/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html @@ -0,0 +1,254 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotConfigurationLeastOverallAngularDisplacement Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::AsibotConfigurationLeastOverallAngularDisplacement Class Reference
+
+
+ +

IK solver configuration strategy selector based on the overall angle displacement of all joints. + More...

+ +

#include <AsibotConfiguration.hpp>

+
+Inheritance diagram for roboticslab::AsibotConfigurationLeastOverallAngularDisplacement:
+
+
+ + +roboticslab::AsibotConfiguration + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AsibotConfigurationLeastOverallAngularDisplacement (JointsIn qMin, JointsIn qMax)
 Constructor. More...
 
bool findOptimalConfiguration (JointsIn qGuess) override
 Analyzes available configurations and selects the optimal one. More...
 
- Public Member Functions inherited from roboticslab::AsibotConfiguration
 AsibotConfiguration (JointsIn qMin, JointsIn qMax)
 Constructor. More...
 
+virtual ~AsibotConfiguration ()=default
 Destructor.
 
virtual bool configure (double q1, double q2u, double q2d, double q3, double q4u, double q4d, double q5)
 Stores initial values for a specific pose. More...
 
virtual void retrieveAngles (JointsOut q) const
 Queries computed angles for the optimal configuration. More...
 
+ + + + +

+Private Member Functions

+std::vector< double > getDiffs (JointsIn qGuess, const Pose &pose)
 Obtains vector of differences between current and desired joint angles [deg].
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::AsibotConfiguration
+using JointsIn = const std::vector< double > &
 Const vector of joint angles (input parameter).
 
+using JointsOut = std::vector< double > &
 Vector of joint angles (output parameter).
 
- Protected Attributes inherited from roboticslab::AsibotConfiguration
+JointsIn _qMin
 
+JointsIn _qMax
 
+Pose optimalPose
 
+Pose forwardElbowUp
 
+Pose forwardElbowDown
 
+Pose reversedElbowUp
 
+Pose reversedElbowDown
 
+

Detailed Description

+

Selects the configuration that entails the lowest sum of angular displacements across all joints. Upon choosing between elbow up and down alternatives, a small angular travel distance for joint 2 is preferred.

+

Constructor & Destructor Documentation

+ +

◆ AsibotConfigurationLeastOverallAngularDisplacement()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::AsibotConfigurationLeastOverallAngularDisplacement::AsibotConfigurationLeastOverallAngularDisplacement (JointsIn qMin,
JointsIn qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinvector of minimum joint limits [deg]
qMaxvector of maximum joint limits [deg]
+
+
+ +
+
+

Member Function Documentation

+ +

◆ findOptimalConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AsibotConfigurationLeastOverallAngularDisplacement::findOptimalConfiguration (JointsIn qGuess)
+
+overridevirtual
+
+
Parameters
+ + +
qGuessvector of joint angles for current robot position [deg]
+
+
+
Returns
true/false on success/failure
+ +

Implements roboticslab::AsibotConfiguration.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/AsibotSolver/AsibotConfiguration.hpp
  • +
  • libraries/YarpPlugins/AsibotSolver/AsibotConfigurationLeastOverallAngularDisplacement.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.png b/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.png new file mode 100644 index 0000000000000000000000000000000000000000..f692715b5a299ec784ac230920a8388871a6dc58 GIT binary patch literal 1137 zcmeAS@N?(olHy`uVBq!ia0y~yV5|qS12~w0mCLS^hxZvkuNEdN^O@ zYI^R?zHPShl0J8$GXG9iS-my?LbYUz%HQ(6Z1tYcW`26FIWPLR`Gk~t?K!az?5F;3 z%R7JetLgGr|MFj-sg+z}`1VKo>V?bad@TKE7t`k$xu_+j`GwfjCI6SIe_AhXAIE(- z@Nr7i!mVM=C!gue;f)I4tS~RUciznZZ`0cUc+0Nn4GOA~FZQ4I|ERyAoXWxFpUl5L zKVu)iZtK54#{W0@eR#j=W6L628RgaUKg<_7`2AV^?tkTfo`3y+;$^pgY`tCo|NDpc z?R}89TOa^Oir5@piXQi=#leuwIx{Rqc~iyk9<4Z7ptKw>q=` zxV*vnDfRE)-H|%>&*I0#gUlI^r#Adb`4=w#f6L+D7a6`-eY}6~TmJ5S&sc8#&z-wd zKmYuUvOk-zUI_MFVpK1$cYJ|PpwlKtnKFl_Wz9I{+kEyowIv3Pwk4^5}%n8vm#IToo}gsUpm3+bEwt7vTGT~ z7C(6Z(LDX_nf)<-;`8!8>A&{bUZ4|I$0qXW$A#6BlI+RH{J$>Wyt&Zy`4ZJ{!T*v) zo*y=3ESvp*3CFy?Cn}cF{|@(lb59fdGU5M?cOuu<#Q6QZzwW>6|H{AT#qZXv|N5Nm zzvmV;RiO)+r}lRy9jPxm9=rU#`K$h&i@aCM+~4;vXY=gO_pThibhA<`eW%XV`vq_P zx1A1;FkdM)FKdQ)W|&r^Y+3Jh#d>MiyQ^1*zBRK}%XMJe$Gh(_{|BzB-ikbzkN%AN z#p + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory Member List
+
+
+ +

This is the complete list of members for roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory, including all inherited members.

+ + + + + + + +
_qMax (defined in roboticslab::AsibotConfigurationFactory)roboticslab::AsibotConfigurationFactoryprotected
_qMin (defined in roboticslab::AsibotConfigurationFactory)roboticslab::AsibotConfigurationFactoryprotected
AsibotConfigurationFactory(AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)roboticslab::AsibotConfigurationFactoryinlineprotected
AsibotConfigurationLeastOverallAngularDisplacementFactory(AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactoryinline
create() const overrideroboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactoryinlinevirtual
~AsibotConfigurationFactory()=default (defined in roboticslab::AsibotConfigurationFactory)roboticslab::AsibotConfigurationFactoryvirtual
+ + + + diff --git a/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html b/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html new file mode 100644 index 000000000..363d676f8 --- /dev/null +++ b/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html @@ -0,0 +1,204 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory Class Reference
+
+
+ +

Implementation factory class for AsibotConfigurationLeastOverallAngularDisplacement. + More...

+ +

#include <AsibotConfiguration.hpp>

+
+Inheritance diagram for roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory:
+
+
+ + +roboticslab::AsibotConfigurationFactory + +
+ + + + + + + + +

+Public Member Functions

 AsibotConfigurationLeastOverallAngularDisplacementFactory (AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)
 Constructor. More...
 
AsibotConfigurationcreate () const override
 Creates an instance of the concrete class. More...
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from roboticslab::AsibotConfigurationFactory
 AsibotConfigurationFactory (AsibotConfiguration::JointsIn qMin, AsibotConfiguration::JointsIn qMax)
 Constructor. More...
 
- Protected Attributes inherited from roboticslab::AsibotConfigurationFactory
+AsibotConfiguration::JointsIn _qMin
 
+AsibotConfiguration::JointsIn _qMax
 
+

Detailed Description

+

Constructor & Destructor Documentation

+ +

◆ AsibotConfigurationLeastOverallAngularDisplacementFactory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory::AsibotConfigurationLeastOverallAngularDisplacementFactory (AsibotConfiguration::JointsIn qMin,
AsibotConfiguration::JointsIn qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinvector of minimum joint limits [deg]
qMaxvector of maximum joint limits [deg]
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + +
AsibotConfiguration* roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory::create () const
+
+inlineoverridevirtual
+
+
Returns
A pointer to the base class of the inheritance tree.
+ +

Implements roboticslab::AsibotConfigurationFactory.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.png b/classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..3f989fe982d6ff3b0be09242ab77171bd255fc8b GIT binary patch literal 1294 zcmeAS@N?(olHy`uVBq!ia0y~yU|bDk2XHV0$q8>)83HMZ0G|-o|Ns93nJ?aaE$u%v z0VD^)2M!!y?YtuoWO9@Q`2{lo6@kFjQz1qS3@md!T^vIy7~jslSoT+3r@A8tc)spj%B`CI-b%ak#jSM=yNoTrvx5`qLmyf){CW$zo^qQ2U5$PGk zqpI!MwNO4WRAuY)Ynxt+LE_hpWV)u@riD#)=uAGne5(t@2U>R>(w)R z7M8r9^d)KU=NQY?VS&|At(m;DyXIZLa#`iz@%eJcI!deyzXr?(`Z5rxDzTglJf6~KB<*u*s``vJLcix868$VqxvniSUWL}!7=8?%#FE;*ry2kH*IP>bCwOgO( z@6)|?{(nO09;8;OSyIOYD?Y*`C?d4|u4U4a4^RGUb6@2r}yW*KrJ9cF{ zT9_8>-oMTBo93_6p_AfPf8RK1iS~=z!L!$>yu6*7XYcuoZ7=WDc$IGBtAAYVHT$UotDO7F4QgHwgUt;Ss?g zIAslk(~CB(L`If?O-vn&R9FR^PjV@=O%ingMpOgP00u*#5@5_R9swy>m_ii=`=^9z zE?wfK`SjBwh9wMo>(EUtioCflI(tjz+n?g;5B7%U{byK{SIckSD|}=zBY#@aUc2I} z?7J#!w-hy~|C+Pw*RNUg*KcGxW1MQb%X-_LQoHyS=^s=M{_}CDE(_~7JC)e_d@-ZM z)7*Xfn|JMBJ12kr?_)9l?^u7|XDfQFq+omW&Uvrc);_*|{%gfm%`6YIj~=});o2R~7H!Y3zg1JJnR`@s&)2Q2uTA)t z=^orW)%eDnKZ_eZ->GmsUVUD3%Datgmc<>{H{(iInewl&D5ZJpo8ugJS$ih-Jbyz!?ImB2pSfum2&y}nmet1?uBAoPM_LteZ*ArrXTN@Z?A;ImcL)!c=gY|ThHe| zU;1}Wf@$ZqocT;Vvo^h2^dZ9c-IL?dwY&1=-}P#)K7V;f*|)V(PRFDwG<#cLw)=0D9NX4M*Ll8s?wXmEFgy17)zs9*8QG>^H^o1jFxgIFa-H;^ zm5sSKWNXDU>qVjpnSWHqD$f%R+++2idy~<2`2+ngQbhFmcI@1LW9O<+?gz(9^t!IQ w-KpFk$IIfu*n^Q8rB?@ec}@*Fb@i+Kf0@Yd2QTh42Nqrop00i_>zopr0C*90cmMzZ literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1AsibotSolver-members.html b/classroboticslab_1_1AsibotSolver-members.html new file mode 100644 index 000000000..ea483faa7 --- /dev/null +++ b/classroboticslab_1_1AsibotSolver-members.html @@ -0,0 +1,118 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::AsibotSolver Member List
+
+
+ +

This is the complete list of members for roboticslab::AsibotSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A0 (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
A1 (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
A2 (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
A3 (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
appendLink(const std::vector< double > &x) overrideroboticslab::AsibotSolvervirtual
BASE_FRAME enum valueroboticslab::ICartesianSolver
changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) overrideroboticslab::AsibotSolvervirtual
close() override (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolver
confFactory (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) overrideroboticslab::AsibotSolvervirtual
fwdKin(const std::vector< double > &q, std::vector< double > &x) overrideroboticslab::AsibotSolvervirtual
getConfiguration() const (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
getNumJoints() overrideroboticslab::AsibotSolvervirtual
getNumTcps() overrideroboticslab::AsibotSolvervirtual
getTcpFrame() const (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
invDyn(const std::vector< double > &q, std::vector< double > &t) overrideroboticslab::AsibotSolvervirtual
invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) overrideroboticslab::AsibotSolvervirtual
roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)roboticslab::ICartesianSolverinlinevirtual
invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) overrideroboticslab::AsibotSolvervirtual
mtx (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolvermutableprivate
open(yarp::os::Searchable &config) override (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolver
poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) overrideroboticslab::AsibotSolvervirtual
qMax (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
qMin (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
reference_frame enum nameroboticslab::ICartesianSolver
restoreOriginalChain() overrideroboticslab::AsibotSolvervirtual
setTcpFrame(const AsibotTcpFrame &tcpFrameStruct) (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
TCP_FRAME enum valueroboticslab::ICartesianSolver
tcpFrameStruct (defined in roboticslab::AsibotSolver)roboticslab::AsibotSolverprivate
~ICartesianSolver()=defaultroboticslab::ICartesianSolvervirtual
+ + + + diff --git a/classroboticslab_1_1AsibotSolver.html b/classroboticslab_1_1AsibotSolver.html new file mode 100644 index 000000000..8a610274d --- /dev/null +++ b/classroboticslab_1_1AsibotSolver.html @@ -0,0 +1,732 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The AsibotSolver implements ICartesianSolver. +

+ +

#include <AsibotSolver.hpp>

+
+Inheritance diagram for roboticslab::AsibotSolver:
+
+
+ + +roboticslab::ICartesianSolver + +
+ + + + +

+Classes

struct  AsibotTcpFrame
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

int getNumJoints () override
 Get number of joints for which the solver has been configured. More...
 
int getNumTcps () override
 Get number of TCPs for which the solver has been configured. More...
 
bool appendLink (const std::vector< double > &x) override
 Append an additional link. More...
 
bool restoreOriginalChain () override
 Restore original kinematic chain. More...
 
bool changeOrigin (const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) override
 Change origin in which a pose is expressed. More...
 
bool fwdKin (const std::vector< double > &q, std::vector< double > &x) override
 Perform forward kinematics. More...
 
bool poseDiff (const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) override
 Obtain difference between supplied pose inputs. More...
 
bool invKin (const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) override
 Perform inverse kinematics. More...
 
bool diffInvKin (const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) override
 Perform differential inverse kinematics. More...
 
bool invDyn (const std::vector< double > &q, std::vector< double > &t) override
 Perform inverse dynamics. More...
 
bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override
 Perform inverse dynamics. More...
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
- Public Member Functions inherited from roboticslab::ICartesianSolver
+virtual ~ICartesianSolver ()=default
 Destructor.
 
virtual bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)
 Perform inverse dynamics. More...
 
+ + + + + + + +

+Private Member Functions

+AsibotConfigurationgetConfiguration () const
 
+AsibotTcpFrame getTcpFrame () const
 
+void setTcpFrame (const AsibotTcpFrame &tcpFrameStruct)
 
+ + + + + + + + + + + + + + + + + + + +

+Private Attributes

+double A0
 
+double A1
 
+double A2
 
+double A3
 
+std::vector< double > qMin
 
+std::vector< double > qMax
 
+AsibotConfigurationFactoryconfFactory {nullptr}
 
+AsibotTcpFrame tcpFrameStruct
 
+std::mutex mtx
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ICartesianSolver
enum  reference_frame { BASE_FRAME = yarp::os::createVocab32('c','p','f','b') +, TCP_FRAME = yarp::os::createVocab32('c','p','f','t') + }
 Lists supported reference frames. More...
 
+

Member Function Documentation

+ +

◆ appendLink()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AsibotSolver::appendLink (const std::vector< double > & x)
+
+overridevirtual
+
+
Parameters
+ + +
x6-element vector describing end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ changeOrigin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool AsibotSolver::changeOrigin (const std::vector< double > & x_old_obj,
const std::vector< double > & x_new_old,
std::vector< double > & x_new_obj 
)
+
+overridevirtual
+
+
Parameters
+ + + + +
x_old_obj_in6-element vector describing a pose in cartesian space, expressed in the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_old6-element vector describing a transformation from the new to the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_obj6-element vector describing a pose in cartesian space, expressed in the new frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ diffInvKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AsibotSolver::diffInvKin (const std::vector< double > & q,
const std::vector< double > & xdot,
std::vector< double > & qdot,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + +
qVector describing current position in joint space (meters or degrees).
xdot6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
qdotVector describing target velocity in joint space (meters/second or degrees/second).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ fwdKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool AsibotSolver::fwdKin (const std::vector< double > & q,
std::vector< double > & x 
)
+
+overridevirtual
+
+
Parameters
+ + + +
qVector describing a position in joint space (meters or degrees).
x6-element vector describing same position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ getNumJoints()

+ +
+
+ + + + + +
+ + + + + + + +
int AsibotSolver::getNumJoints ()
+
+overridevirtual
+
+
Returns
Number of joints.
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ getNumTcps()

+ +
+
+ + + + + +
+ + + + + + + +
int AsibotSolver::getNumTcps ()
+
+overridevirtual
+
+
Returns
The number of TCPs.
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invDyn() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AsibotSolver::invDyn (const std::vector< double > & q,
const std::vector< double > & qdot,
const std::vector< double > & qdotdot,
const std::vector< double > & ftip,
std::vector< double > & t,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + + + +
qVector describing current position in joint space (meters or degrees).
qdotVector describing current velocity in joint space (meters/second or degrees/second).
qdotdotVector describing current acceleration in joint space (meters/secondยฒ or degrees/secondยฒ).
ftipVector describing an external force applied to the robot tip, expressed in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
framePoints at the reference_frame ftip is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invDyn() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool AsibotSolver::invDyn (const std::vector< double > & q,
std::vector< double > & t 
)
+
+overridevirtual
+
+

Assumes null joint velocities and accelerations, and no external forces.

+
Parameters
+ + + +
qVector describing current position in joint space (meters or degrees).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AsibotSolver::invKin (const std::vector< double > & xd,
const std::vector< double > & qGuess,
std::vector< double > & q,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qGuessVector describing current position in joint space (meters or degrees).
qVector describing target position in joint space (meters or degrees).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ poseDiff()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool AsibotSolver::poseDiff (const std::vector< double > & xLhs,
const std::vector< double > & xRhs,
std::vector< double > & xOut 
)
+
+overridevirtual
+
+

The result is an infinitesimal displacement twist, i.e. a vector, for which the operation of addition makes physical sense.

+
Parameters
+ + + + +
xLhs6-element vector describing a pose in cartesian space (left hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xRhs6-element vector describing a pose in cartesian space (right hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xOut6-element vector describing a pose in cartesian space (result); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ restoreOriginalChain()

+ +
+
+ + + + + +
+ + + + + + + +
bool AsibotSolver::restoreOriginalChain ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/AsibotSolver/AsibotSolver.hpp
  • +
  • libraries/YarpPlugins/AsibotSolver/AsibotSolver.cpp
  • +
  • libraries/YarpPlugins/AsibotSolver/DeviceDriverImpl.cpp
  • +
  • libraries/YarpPlugins/AsibotSolver/ICartesianSolverImpl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1AsibotSolver.png b/classroboticslab_1_1AsibotSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4fa03756d0cce42a350022b2af7c6266f16ca2 GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0y~yU`zwD12~w0r0g1f1t296;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|ze>y?!aivEsPIzezz}uN{8g$=iP0YC=e8_`<6?N}ISAM!FoCdqGF( zkzalJFd-fSt1vGx@=3X@g{S*>&i-RKd!p# zFLnH{$^Oi@cP&D5`{c941dC%b>Q;$Od}eVyZQl9gv*c^7&$oD=->+8mJNCG7@884? zv1`9PzgWBRq-AKRuJGAR|J$}Jx6QXSoF8AE{_eD$?~57VE&rXka{6Uz*gIYSHS0b_ z74QAr{B6bKulFy$sG2SKdwpbWm0xJ+X`kY~J0GX-ee9XcvG%UoX8&uOE`Q!^6nO2M z_02V_RwjRvcy`m~YR>anQ>)LeTE%=h=Usl@g_uw4%yRVRi3sj~Qd8yodF8WkSLOZp zr_VZFv419SbMLeC{|hYH&7OyZZmn5!bI;f5v-)G#E_r*=X8yhT7Vdkm#oWyZGVPJ9 zT(&cQ)yZe;%%smww|?_{mj9*P3wNG9JpHngTgJ3}_M_jkq>E#7&HTJ>^PS7y%sI~| zG}Ls@g+GsP#F1OW&L`Id^j8nJ48xC)DkEcq}(q``E!dg(9s|>GENH zL7}o17h}qPCD)&SU%C6adH&ydMLQS2&}{s@XA|!{pL}l*+xp;5vyW+?4VPWD>i^u% zG{K4S=QA$`gci2|nf^1g=Y44fF)X#ER;}7U;li3#ulzE?LQB<6R{9>L$!Pgl93{;XKRmt|g73+{qXs{rhiSyih~JQ*+h?MVJ@?Ehy5B&pb4j zmNG<4TDr~#&5C`Yn`Q4t)mG%r@Apx&i^}}{=fZ>e7kOqp4k_L>XZGIt_Nony>o4t* zu3C2M+vk;!KfeE1y5!;J^~+L)Z)Khfygaq9L+H{vbDI_GFUREn{1IvEBjucNF_r1} z$)77{Xk<$t_>g+@&izjdcKWR8waJcnoTB>K&c~EF;@^U_U=z2qmCdiUnl9S#J$dT1 z+4rU)XM4zeSJUVRD}K)96;Du&%lKEA`_5$k^=F;Wetiw!^z+8M?SHbOpRRq^eQaKb zZ*4}|_DeU{mRy-twd_|(Ume5g@JzNJbCClMB@`I%K;nnFLHs|%-lpzpla^)O1Lk}N MPgg&ebxsLQ0A3#>cmMzZ literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1BasicCartesianControl-members.html b/classroboticslab_1_1BasicCartesianControl-members.html new file mode 100644 index 000000000..bd9fe6fe4 --- /dev/null +++ b/classroboticslab_1_1BasicCartesianControl-members.html @@ -0,0 +1,160 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::BasicCartesianControl Member List
+
+
+ +

This is the complete list of members for roboticslab::BasicCartesianControl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
act(int command) overrideroboticslab::BasicCartesianControlvirtual
BasicCartesianControl() (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlinline
checkControlModes(int mode) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
checkJointLimits(const std::vector< double > &q) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
checkJointLimits(const std::vector< double > &q, const std::vector< double > &qdot) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
checkJointVelocities(const std::vector< double > &qdot) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
close() override (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControl
cmcPeriodMs (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
cmcSuccess (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
computeIsocronousSpeeds(const std::vector< double > &q, const std::vector< double > &qd, std::vector< double > &qdot) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
currentState (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
doFailFastChecks(const std::vector< double > &initialQ) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
duration (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
enableFailFast (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
encoderErrors (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
fdroboticslab::BasicCartesianControlprivate
forc(const std::vector< double > &fd) overrideroboticslab::BasicCartesianControlvirtual
gain (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
gcmp() overrideroboticslab::BasicCartesianControlvirtual
getCurrentState() const (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
getParameter(int vocab, double *value) overrideroboticslab::BasicCartesianControlvirtual
getParameters(std::map< int, double > &params) overrideroboticslab::BasicCartesianControlvirtual
handleForc(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const StateWatcher &watcher) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
handleGcmp(const std::vector< double > &q, const StateWatcher &watcher) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
handleMovj(const std::vector< double > &q, const StateWatcher &watcher) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
handleMovlPosd(const std::vector< double > &q, const StateWatcher &watcher) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
handleMovlVel(const std::vector< double > &q, const StateWatcher &watcher) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
handleMovv(const std::vector< double > &q, const StateWatcher &watcher) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iCartesianSolver (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iControlMode (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iEncoders (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
inv(const std::vector< double > &xd, std::vector< double > &q) overrideroboticslab::BasicCartesianControlvirtual
iPositionControl (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iPositionDirect (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iPreciselyTimed (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iTorqueControl (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
iVelocityControl (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
movementStartTimeroboticslab::BasicCartesianControlprivate
movi(const std::vector< double > &x) overrideroboticslab::BasicCartesianControlvirtual
movj(const std::vector< double > &xd) overrideroboticslab::BasicCartesianControlvirtual
movl(const std::vector< double > &xd) overrideroboticslab::BasicCartesianControlvirtual
movv(const std::vector< double > &xdotd) overrideroboticslab::BasicCartesianControlvirtual
numJoints (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
open(yarp::os::Searchable &config) override (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControl
presetStreamingCommand(int command) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
qdotMax (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
qdotMin (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
qMax (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
qMin (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
qRefSpeeds (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
referenceFrame (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
relj(const std::vector< double > &xd) overrideroboticslab::BasicCartesianControlvirtual
robotDevice (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
run() override (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControl
setControlModes(int mode) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
setCurrentState(int value) (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
setParameter(int vocab, double value) overrideroboticslab::BasicCartesianControlvirtual
setParameters(const std::map< int, double > &params) overrideroboticslab::BasicCartesianControlvirtual
solverDevice (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) overrideroboticslab::BasicCartesianControlvirtual
stateMutex (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlmutableprivate
stopControl() overrideroboticslab::BasicCartesianControlvirtual
streamingCommand (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
tool(const std::vector< double > &x) overrideroboticslab::BasicCartesianControlvirtual
trajectoriesroboticslab::BasicCartesianControlprivate
twist(const std::vector< double > &xdot) overrideroboticslab::BasicCartesianControlvirtual
usePosdMovl (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
vmoStoredroboticslab::BasicCartesianControlprivate
wait(double timeout) overrideroboticslab::BasicCartesianControlvirtual
waitPeriodMs (defined in roboticslab::BasicCartesianControl)roboticslab::BasicCartesianControlprivate
wrench(const std::vector< double > &w) overrideroboticslab::BasicCartesianControlvirtual
~ICartesianControl()=defaultroboticslab::ICartesianControlvirtual
+ + + + diff --git a/classroboticslab_1_1BasicCartesianControl.html b/classroboticslab_1_1BasicCartesianControl.html new file mode 100644 index 000000000..39e10f507 --- /dev/null +++ b/classroboticslab_1_1BasicCartesianControl.html @@ -0,0 +1,1152 @@ + + + + + + + +kinematics-dynamics: roboticslab::BasicCartesianControl Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The BasicCartesianControl class implements ICartesianControl. +

+ +

#include <BasicCartesianControl.hpp>

+
+Inheritance diagram for roboticslab::BasicCartesianControl:
+
+
+ + +roboticslab::ICartesianControl + +
+ + + + +

+Classes

class  StateWatcher
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool stat (std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) override
 Current state and position. More...
 
bool inv (const std::vector< double > &xd, std::vector< double > &q) override
 Inverse kinematics. More...
 
bool movj (const std::vector< double > &xd) override
 Move in joint space, absolute coordinates. More...
 
bool relj (const std::vector< double > &xd) override
 Move in joint space, relative coordinates. More...
 
bool movl (const std::vector< double > &xd) override
 Linear move to target position. More...
 
bool movv (const std::vector< double > &xdotd) override
 Linear move with given velocity. More...
 
bool gcmp () override
 Gravity compensation. More...
 
bool forc (const std::vector< double > &fd) override
 Force control. More...
 
bool stopControl () override
 Stop control. More...
 
bool wait (double timeout) override
 Wait until completion. More...
 
bool tool (const std::vector< double > &x) override
 Change tool. More...
 
bool act (int command) override
 Actuate tool. More...
 
void movi (const std::vector< double > &x) override
 Achieve pose. More...
 
void twist (const std::vector< double > &xdot) override
 Instantaneous velocity steps. More...
 
void wrench (const std::vector< double > &w) override
 Exert force. More...
 
bool setParameter (int vocab, double value) override
 Set a configuration parameter. More...
 
bool getParameter (int vocab, double *value) override
 Retrieve a configuration parameter. More...
 
bool setParameters (const std::map< int, double > &params) override
 Set multiple configuration parameters. More...
 
bool getParameters (std::map< int, double > &params) override
 Retrieve multiple configuration parameters. More...
 
+void run () override
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
- Public Member Functions inherited from roboticslab::ICartesianControl
+virtual ~ICartesianControl ()=default
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

+int getCurrentState () const
 
+void setCurrentState (int value)
 
+bool checkJointLimits (const std::vector< double > &q)
 
+bool checkJointLimits (const std::vector< double > &q, const std::vector< double > &qdot)
 
+bool checkJointVelocities (const std::vector< double > &qdot)
 
+bool doFailFastChecks (const std::vector< double > &initialQ)
 
+bool checkControlModes (int mode)
 
+bool setControlModes (int mode)
 
+bool presetStreamingCommand (int command)
 
+bool computeIsocronousSpeeds (const std::vector< double > &q, const std::vector< double > &qd, std::vector< double > &qdot)
 
+void handleMovj (const std::vector< double > &q, const StateWatcher &watcher)
 
+void handleMovlVel (const std::vector< double > &q, const StateWatcher &watcher)
 
+void handleMovlPosd (const std::vector< double > &q, const StateWatcher &watcher)
 
+void handleMovv (const std::vector< double > &q, const StateWatcher &watcher)
 
+void handleGcmp (const std::vector< double > &q, const StateWatcher &watcher)
 
+void handleForc (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const StateWatcher &watcher)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

+yarp::dev::PolyDriver solverDevice
 
+ICartesianSolveriCartesianSolver {nullptr}
 
+yarp::dev::PolyDriver robotDevice
 
+yarp::dev::IControlMode * iControlMode {nullptr}
 
+yarp::dev::IEncoders * iEncoders {nullptr}
 
+yarp::dev::IPositionControl * iPositionControl {nullptr}
 
+yarp::dev::IPositionDirect * iPositionDirect {nullptr}
 
+yarp::dev::IPreciselyTimed * iPreciselyTimed {nullptr}
 
+yarp::dev::ITorqueControl * iTorqueControl {nullptr}
 
+yarp::dev::IVelocityControl * iVelocityControl {nullptr}
 
+ICartesianSolver::reference_frame referenceFrame
 
+double gain
 
+double duration
 
+int cmcPeriodMs
 
+int waitPeriodMs
 
+int numJoints
 
+int currentState
 
+int streamingCommand
 
+bool usePosdMovl
 
+bool enableFailFast
 
+std::mutex stateMutex
 
std::vector< double > vmoStored
 
double movementStartTime
 
std::vector< std::unique_ptr< KDL::Trajectory > > trajectories
 
std::vector< double > fd
 
+int encoderErrors {0}
 
+std::atomic_bool cmcSuccess
 
+std::vector< double > qMin
 
+std::vector< double > qMax
 
+std::vector< double > qdotMin
 
+std::vector< double > qdotMax
 
+std::vector< double > qRefSpeeds
 
+

Member Function Documentation

+ +

◆ act()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::act (int command)
+
+overridevirtual
+
+

Send control command to actuate the robot's tool, if available.

+
Parameters
+ + +
commandOne of available actuator vocabs.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ forc()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::forc (const std::vector< double > & fd)
+
+overridevirtual
+
+

Apply desired forces in task space.

+
Parameters
+ + +
fd6-element vector describing desired force exerted by the TCP in cartesian space; first three elements denote linear force (Newton), last three denote torque (Newton*meters).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ gcmp()

+ +
+
+ + + + + +
+ + + + + + + +
bool BasicCartesianControl::gcmp ()
+
+overridevirtual
+
+

Enable gravity compensation.

+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ getParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool BasicCartesianControl::getParameter (int vocab,
double * value 
)
+
+overridevirtual
+
+

Ask the controller to retrieve a parameter of 'double' type.

+
Parameters
+ + + +
vocabYARP-encoded vocab (parameter key).
valueParameter value encoded as a double.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::getParameters (std::map< int, double > & params)
+
+overridevirtual
+
+

Ask the controller to retrieve all available parameters at once.

+
Parameters
+ + +
paramsDictionary of YARP-encoded vocabs as keys and their values.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ inv()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool BasicCartesianControl::inv (const std::vector< double > & xd,
std::vector< double > & q 
)
+
+overridevirtual
+
+

Perform inverse kinematics (using robot position as initial guess), but do not move.

+
Parameters
+ + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qVector describing current position in joint space (meters or degrees).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movi()

+ +
+
+ + + + + +
+ + + + + + + + +
void BasicCartesianControl::movi (const std::vector< double > & x)
+
+overridevirtual
+
+

Move to desired position instantaneously, no further intermediate calculations are expected other than computing the inverse kinematics.

+
Parameters
+ + +
x6-element vector describing desired instantaneous pose in cartesian space; first three elements denote translation (meters), last three denote rotation (radians).
+
+
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movj()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::movj (const std::vector< double > & xd)
+
+overridevirtual
+
+

Perform inverse kinematics and move to desired position in joint space using absolute coordinates.

+
Parameters
+ + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
See also
relj (relative coordinates)
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movl()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::movl (const std::vector< double > & xd)
+
+overridevirtual
+
+

Move to end position along a line trajectory.

+
Parameters
+ + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movv()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::movv (const std::vector< double > & xdotd)
+
+overridevirtual
+
+

Move along a line with constant velocity.

+
Parameters
+ + +
xdotd6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ relj()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::relj (const std::vector< double > & xd)
+
+overridevirtual
+
+

Perform inverse kinematics and move to desired position in joint space using relative coordinates.

+
Parameters
+ + +
xd6-element vector describing desired offset in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
See also
movj (absolute coordinates)
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ setParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool BasicCartesianControl::setParameter (int vocab,
double value 
)
+
+overridevirtual
+
+

Ask the controller to store or update a parameter of 'double' type.

+
Parameters
+ + + +
vocabYARP-encoded vocab (parameter key).
valueParameter value encoded as a double.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ setParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::setParameters (const std::map< int, double > & params)
+
+overridevirtual
+
+

Ask the controller to store or update multiple parameters at once.

+
Parameters
+ + +
paramsDictionary of YARP-encoded vocabs as keys and their values.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ stat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool BasicCartesianControl::stat (std::vector< double > & x,
int * state = nullptr,
double * timestamp = nullptr 
)
+
+overridevirtual
+
+

Inform on control state, get robot position and perform forward kinematics.

+
Parameters
+ + + + +
x6-element vector describing current position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
stateIdentifier for a cartesian control vocab.
timestampRemote encoder acquisition time.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ stopControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool BasicCartesianControl::stopControl ()
+
+overridevirtual
+
+

Halt current control loop if any and cease movement.

+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ tool()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::tool (const std::vector< double > & x)
+
+overridevirtual
+
+

Unload current tool if any and append new tool frame to the kinematic chain.

+
Parameters
+ + +
x6-element vector describing new tool tip with regard to current end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ twist()

+ +
+
+ + + + + +
+ + + + + + + + +
void BasicCartesianControl::twist (const std::vector< double > & xdot)
+
+overridevirtual
+
+

Move in instantaneous velocity increments.

+
Parameters
+ + +
xdot6-element vector describing velocity increments in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
+
+
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ wait()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BasicCartesianControl::wait (double timeout)
+
+overridevirtual
+
+

Block execution until the movement is completed, errors occur or timeout is reached.

+
Parameters
+ + +
timeoutTimeout in seconds, '0.0' means no timeout.
+
+
+
Returns
true on success, false if errors occurred during the execution of the trajectory
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ wrench()

+ +
+
+ + + + + +
+ + + + + + + + +
void BasicCartesianControl::wrench (const std::vector< double > & w)
+
+overridevirtual
+
+

Make the TCP exert the desired force instantaneously.

+
Parameters
+ + +
w6-element vector describing desired force exerted by the TCP in cartesian space; first three elements denote linear force (Newton), last three denote torque (Newton*meters).
+
+
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+

Member Data Documentation

+ +

◆ fd

+ +
+
+ + + + + +
+ + + + +
std::vector<double> roboticslab::BasicCartesianControl::fd
+
+private
+
+

FORC desired Cartesian force

+ +
+
+ +

◆ movementStartTime

+ +
+
+ + + + + +
+ + + + +
double roboticslab::BasicCartesianControl::movementStartTime
+
+private
+
+

MOVL keep track of movement start time to know at what time of trajectory movement we are

+ +
+
+ +

◆ trajectories

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<KDL::Trajectory> > roboticslab::BasicCartesianControl::trajectories
+
+private
+
+

MOVL store Cartesian trajectory

+ +
+
+ +

◆ vmoStored

+ +
+
+ + + + + +
+ + + + +
std::vector<double> roboticslab::BasicCartesianControl::vmoStored
+
+private
+
+

MOVJ store previous reference speeds

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/BasicCartesianControl/BasicCartesianControl.hpp
  • +
  • libraries/YarpPlugins/BasicCartesianControl/BasicCartesianControl.cpp
  • +
  • libraries/YarpPlugins/BasicCartesianControl/DeviceDriverImpl.cpp
  • +
  • libraries/YarpPlugins/BasicCartesianControl/ICartesianControlImpl.cpp
  • +
  • libraries/YarpPlugins/BasicCartesianControl/PeriodicThreadImpl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1BasicCartesianControl.png b/classroboticslab_1_1BasicCartesianControl.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bdd51d5225b283e7c244612fe2abef6112186f GIT binary patch literal 1533 zcma)62~bm46#X$;7!_ir))fMZ29==KnWU0G%N|b7?uhsAu)jDCt&bHf9*2UcG~HidFP#b=iK|=+&A}TxVs+E zS-Ng10027VgAN`5un0uByEYoZp9twhOSEDy3 z4jXa{!vu5>r;{6e77DXF_Jqmn{LR>>4aprQqneMv;aswl;>blfD661TPs8D;?Eh*C zW}rlKx4MNaW4HF#BcR5eUq(N*w;?&SRNoWA&(Hb}#&x(s&cQV_9&7TMB>d};er#{c zw47R>M}0!=n78A{(x(q}4S7D7oj>+*LM-#p%nu3`uH2xA1G; zDFTVY1rkaB%$XfdJ|ezGA(jv`4Y+ zRaULg=CyA;)7i>GndAi<7wTV2F7f8y1^4x~K8Uqv225AUa9b57*i)rxWskkFR-!&( zP<$F(&n&QJP)IzHCET<0o~1wa<#vz!N@jp`47YFrY(9JXzMFh@;@&nb3)leu4wT$s z>9;YXpEPM6R+S7-;VnNn@Ha=%)I;NAt|EKbV8oA@lhX~+dl^yt$&p<`2O1xy_zpZD zQEL=x8Z%GH0U2h+rf=qzN}0F82WE655893ysRP}*?-UZ+88ev!ZhLd8;$V4xa!8v9vVkiDmADN6G^d2Ij>(rAh7Gt>B#_^0l za~$H!RS7y}z4B@duqed>QLF%V8$xJpVBHE0YB8Xr4I}ho0xQXIoZ2@tL z7-I;Wu$5~4FZuoLh1pM0hJZAc`;94tmS+4*^p9_^Pu5kdclk*!70i(uY4HbwK74G} z)>bj*CT_4D6VYn{2dr^le+KW8+=KYeu=JfhIXSWxg*;F+iJc*Nj&%^mX5DuPt6r4k zwetKK@1kYDcUh!VORQfEDvfLu(uC2nA@!w=(R*)Ujw${2?M`Hbu&?1(MWulNv4TqC zv5|g|mcEj8K4b-TmR492WV~V*nskh@L4$&tk85i6D#bf&lGrjzOyF9&jDwl+L_!7A zT<{vYTFj7_P+Se;GmCU#;C$ijp@46l1ZiF>Nz>;E``RCD^cfH$PiI8J6HS9qjK=2( z@6F2y+$eD;=_uPX+CW*+$F0v4DTz4=i6%1q-GcYyLA8jr>%v%b%9OO*p!_{ VqAq;m6f&y;vZJd*ncY|CegP6B355Uv literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1BasicCartesianControl_1_1StateWatcher-members.html b/classroboticslab_1_1BasicCartesianControl_1_1StateWatcher-members.html new file mode 100644 index 000000000..d9532243b --- /dev/null +++ b/classroboticslab_1_1BasicCartesianControl_1_1StateWatcher-members.html @@ -0,0 +1,92 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::BasicCartesianControl::StateWatcher Member List
+
+ + + + + diff --git a/classroboticslab_1_1BasicCartesianControl_1_1StateWatcher.html b/classroboticslab_1_1BasicCartesianControl_1_1StateWatcher.html new file mode 100644 index 000000000..06bb6bf18 --- /dev/null +++ b/classroboticslab_1_1BasicCartesianControl_1_1StateWatcher.html @@ -0,0 +1,109 @@ + + + + + + + +kinematics-dynamics: roboticslab::BasicCartesianControl::StateWatcher Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::BasicCartesianControl::StateWatcher Class Reference
+
+
+ + + + + + + +

+Public Member Functions

+template<typename Fn >
 StateWatcher (Fn &&fn)
 
+void suppress () const
 
+ + + +

+Private Attributes

+std::function< void()> handler
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1CartesianControlClient-members.html b/classroboticslab_1_1CartesianControlClient-members.html new file mode 100644 index 000000000..2d0d4b831 --- /dev/null +++ b/classroboticslab_1_1CartesianControlClient-members.html @@ -0,0 +1,120 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::CartesianControlClient Member List
+
+
+ +

This is the complete list of members for roboticslab::CartesianControlClient, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
act(int command) overrideroboticslab::CartesianControlClientvirtual
close() override (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClient
commandPort (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
fkInPort (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
fkStreamResponder (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
fkStreamTimeoutSecs (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
forc(const std::vector< double > &fd) overrideroboticslab::CartesianControlClientvirtual
gcmp() overrideroboticslab::CartesianControlClientvirtual
getParameter(int vocab, double *value) overrideroboticslab::CartesianControlClientvirtual
getParameters(std::map< int, double > &params) overrideroboticslab::CartesianControlClientvirtual
handleRpcConsumerCmd(int vocab, const std::vector< double > &in) (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
handleRpcFunctionCmd(int vocab, const std::vector< double > &in, std::vector< double > &out) (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
handleRpcRunnableCmd(int vocab) (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
handleStreamingBiConsumerCmd(int vocab, const std::vector< double > &in1, double in2) (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
handleStreamingConsumerCmd(int vocab, const std::vector< double > &in) (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
inv(const std::vector< double > &xd, std::vector< double > &q) overrideroboticslab::CartesianControlClientvirtual
movi(const std::vector< double > &x) overrideroboticslab::CartesianControlClientvirtual
movj(const std::vector< double > &xd) overrideroboticslab::CartesianControlClientvirtual
movl(const std::vector< double > &xd) overrideroboticslab::CartesianControlClientvirtual
movv(const std::vector< double > &xdotd) overrideroboticslab::CartesianControlClientvirtual
open(yarp::os::Searchable &config) override (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClient
relj(const std::vector< double > &xd) overrideroboticslab::CartesianControlClientvirtual
rpcClient (defined in roboticslab::CartesianControlClient)roboticslab::CartesianControlClientprivate
setParameter(int vocab, double value) overrideroboticslab::CartesianControlClientvirtual
setParameters(const std::map< int, double > &params) overrideroboticslab::CartesianControlClientvirtual
stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) overrideroboticslab::CartesianControlClientvirtual
stopControl() overrideroboticslab::CartesianControlClientvirtual
tool(const std::vector< double > &x) overrideroboticslab::CartesianControlClientvirtual
twist(const std::vector< double > &xdot) overrideroboticslab::CartesianControlClientvirtual
wait(double timeout) overrideroboticslab::CartesianControlClientvirtual
wrench(const std::vector< double > &w) overrideroboticslab::CartesianControlClientvirtual
~ICartesianControl()=defaultroboticslab::ICartesianControlvirtual
+ + + + diff --git a/classroboticslab_1_1CartesianControlClient.html b/classroboticslab_1_1CartesianControlClient.html new file mode 100644 index 000000000..a33e00108 --- /dev/null +++ b/classroboticslab_1_1CartesianControlClient.html @@ -0,0 +1,938 @@ + + + + + + + +kinematics-dynamics: roboticslab::CartesianControlClient Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The CartesianControlClient class implements ICartesianControl client side. +

+ +

#include <CartesianControlClient.hpp>

+
+Inheritance diagram for roboticslab::CartesianControlClient:
+
+
+ + +roboticslab::ICartesianControl + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool stat (std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr) override
 Current state and position. More...
 
bool inv (const std::vector< double > &xd, std::vector< double > &q) override
 Inverse kinematics. More...
 
bool movj (const std::vector< double > &xd) override
 Move in joint space, absolute coordinates. More...
 
bool relj (const std::vector< double > &xd) override
 Move in joint space, relative coordinates. More...
 
bool movl (const std::vector< double > &xd) override
 Linear move to target position. More...
 
bool movv (const std::vector< double > &xdotd) override
 Linear move with given velocity. More...
 
bool gcmp () override
 Gravity compensation. More...
 
bool forc (const std::vector< double > &fd) override
 Force control. More...
 
bool stopControl () override
 Stop control. More...
 
bool wait (double timeout) override
 Wait until completion. More...
 
bool tool (const std::vector< double > &x) override
 Change tool. More...
 
bool act (int command) override
 Actuate tool. More...
 
void movi (const std::vector< double > &x) override
 Achieve pose. More...
 
void twist (const std::vector< double > &xdot) override
 Instantaneous velocity steps. More...
 
void wrench (const std::vector< double > &w) override
 Exert force. More...
 
bool setParameter (int vocab, double value) override
 Set a configuration parameter. More...
 
bool getParameter (int vocab, double *value) override
 Retrieve a configuration parameter. More...
 
bool setParameters (const std::map< int, double > &params) override
 Set multiple configuration parameters. More...
 
bool getParameters (std::map< int, double > &params) override
 Retrieve multiple configuration parameters. More...
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
- Public Member Functions inherited from roboticslab::ICartesianControl
+virtual ~ICartesianControl ()=default
 Destructor.
 
+ + + + + + + + + + + +

+Private Member Functions

+bool handleRpcRunnableCmd (int vocab)
 
+bool handleRpcConsumerCmd (int vocab, const std::vector< double > &in)
 
+bool handleRpcFunctionCmd (int vocab, const std::vector< double > &in, std::vector< double > &out)
 
+void handleStreamingConsumerCmd (int vocab, const std::vector< double > &in)
 
+void handleStreamingBiConsumerCmd (int vocab, const std::vector< double > &in1, double in2)
 
+ + + + + + + + + + + +

+Private Attributes

+yarp::os::RpcClient rpcClient
 
+yarp::os::BufferedPort< yarp::os::Bottle > fkInPort
 
+yarp::os::BufferedPort< yarp::os::Bottle > commandPort
 
+FkStreamResponder fkStreamResponder
 
+double fkStreamTimeoutSecs
 
+

Member Function Documentation

+ +

◆ act()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::act (int command)
+
+overridevirtual
+
+

Send control command to actuate the robot's tool, if available.

+
Parameters
+ + +
commandOne of available actuator vocabs.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ forc()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::forc (const std::vector< double > & fd)
+
+overridevirtual
+
+

Apply desired forces in task space.

+
Parameters
+ + +
fd6-element vector describing desired force exerted by the TCP in cartesian space; first three elements denote linear force (Newton), last three denote torque (Newton*meters).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ gcmp()

+ +
+
+ + + + + +
+ + + + + + + +
bool CartesianControlClient::gcmp ()
+
+overridevirtual
+
+

Enable gravity compensation.

+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ getParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool CartesianControlClient::getParameter (int vocab,
double * value 
)
+
+overridevirtual
+
+

Ask the controller to retrieve a parameter of 'double' type.

+
Parameters
+ + + +
vocabYARP-encoded vocab (parameter key).
valueParameter value encoded as a double.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::getParameters (std::map< int, double > & params)
+
+overridevirtual
+
+

Ask the controller to retrieve all available parameters at once.

+
Parameters
+ + +
paramsDictionary of YARP-encoded vocabs as keys and their values.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ inv()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool CartesianControlClient::inv (const std::vector< double > & xd,
std::vector< double > & q 
)
+
+overridevirtual
+
+

Perform inverse kinematics (using robot position as initial guess), but do not move.

+
Parameters
+ + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qVector describing current position in joint space (meters or degrees).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movi()

+ +
+
+ + + + + +
+ + + + + + + + +
void CartesianControlClient::movi (const std::vector< double > & x)
+
+overridevirtual
+
+

Move to desired position instantaneously, no further intermediate calculations are expected other than computing the inverse kinematics.

+
Parameters
+ + +
x6-element vector describing desired instantaneous pose in cartesian space; first three elements denote translation (meters), last three denote rotation (radians).
+
+
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movj()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::movj (const std::vector< double > & xd)
+
+overridevirtual
+
+

Perform inverse kinematics and move to desired position in joint space using absolute coordinates.

+
Parameters
+ + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
See also
relj (relative coordinates)
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movl()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::movl (const std::vector< double > & xd)
+
+overridevirtual
+
+

Move to end position along a line trajectory.

+
Parameters
+ + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ movv()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::movv (const std::vector< double > & xdotd)
+
+overridevirtual
+
+

Move along a line with constant velocity.

+
Parameters
+ + +
xdotd6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ relj()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::relj (const std::vector< double > & xd)
+
+overridevirtual
+
+

Perform inverse kinematics and move to desired position in joint space using relative coordinates.

+
Parameters
+ + +
xd6-element vector describing desired offset in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
See also
movj (absolute coordinates)
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ setParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool CartesianControlClient::setParameter (int vocab,
double value 
)
+
+overridevirtual
+
+

Ask the controller to store or update a parameter of 'double' type.

+
Parameters
+ + + +
vocabYARP-encoded vocab (parameter key).
valueParameter value encoded as a double.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ setParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::setParameters (const std::map< int, double > & params)
+
+overridevirtual
+
+

Ask the controller to store or update multiple parameters at once.

+
Parameters
+ + +
paramsDictionary of YARP-encoded vocabs as keys and their values.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ stat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CartesianControlClient::stat (std::vector< double > & x,
int * state = nullptr,
double * timestamp = nullptr 
)
+
+overridevirtual
+
+

Inform on control state, get robot position and perform forward kinematics.

+
Parameters
+ + + + +
x6-element vector describing current position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
stateIdentifier for a cartesian control vocab.
timestampRemote encoder acquisition time.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ stopControl()

+ +
+
+ + + + + +
+ + + + + + + +
bool CartesianControlClient::stopControl ()
+
+overridevirtual
+
+

Halt current control loop if any and cease movement.

+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ tool()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::tool (const std::vector< double > & x)
+
+overridevirtual
+
+

Unload current tool if any and append new tool frame to the kinematic chain.

+
Parameters
+ + +
x6-element vector describing new tool tip with regard to current end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ twist()

+ +
+
+ + + + + +
+ + + + + + + + +
void CartesianControlClient::twist (const std::vector< double > & xdot)
+
+overridevirtual
+
+

Move in instantaneous velocity increments.

+
Parameters
+ + +
xdot6-element vector describing velocity increments in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
+
+
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ wait()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CartesianControlClient::wait (double timeout)
+
+overridevirtual
+
+

Block execution until the movement is completed, errors occur or timeout is reached.

+
Parameters
+ + +
timeoutTimeout in seconds, '0.0' means no timeout.
+
+
+
Returns
true on success, false if errors occurred during the execution of the trajectory
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+ +

◆ wrench()

+ +
+
+ + + + + +
+ + + + + + + + +
void CartesianControlClient::wrench (const std::vector< double > & w)
+
+overridevirtual
+
+

Make the TCP exert the desired force instantaneously.

+
Parameters
+ + +
w6-element vector describing desired force exerted by the TCP in cartesian space; first three elements denote linear force (Newton), last three denote torque (Newton*meters).
+
+
+ +

Implements roboticslab::ICartesianControl.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/CartesianControlClient/CartesianControlClient.hpp
  • +
  • libraries/YarpPlugins/CartesianControlClient/DeviceDriverImpl.cpp
  • +
  • libraries/YarpPlugins/CartesianControlClient/ICartesianControlImpl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1CartesianControlClient.png b/classroboticslab_1_1CartesianControlClient.png new file mode 100644 index 0000000000000000000000000000000000000000..447db861aa887c694c0c7e93edd5b957720084f2 GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0y~yU|a!Y2XHV0$?98zMnFm;z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opyHMb^{BF{Fa=?c9fxRx9wh@xS!>{4c*I zT2#?t>)qQg^D=hTtZr1v>N~Q3$&^bjN&jQ@rk{3ETDi(^vDB1~6DC{%N=kep3tU`e zG#olRECL#Y1Pd3KH&sp0xLdz!RoLArUw^-h-OHra=^<%;+V9G?$jF}Gce^}n&%G%O zd2Y_}n`edk>wjzJuX>gIS6oBT@G-*`E^n7rhU*IYBV5i@sIS<4dC}LU{;%UjtE}~3 zM~d#x+jwr<`R7+vZ$6l{YSnQo)~VChZr*c!`{g~B*XmEF%scJUlfD1@rvKX_`3~P+ zQCiizI^Wx6$<^!yUT@8=E?zVJaGJ^Ht6jDsH`}j=gxX%ST(S0yckH)C@6*>_+&L|C z^KQ8(uhxgSUv*TAa9MJ(+uAEMcroLNk9|^2n>MNyb9;q;4e@`Y5j;_F#ox7hZIzdA zC-nvM9kLEE`#Ia;sa`2ZR=j>Bx5nm(#;E7k0XH}9TDI!d#(ONMzN~W&cwKc+r0cEvO4REL>1t5&&JiLclv+UIDi^GV~+bcfKb`TGKwt=gR{ ze*C`1V;hdpP}?is3*!E{-4x;Pn&a~7VpZ?Yy}TiH5A!X)-FnuyCGqyJDGP&3_tY8s z=d4}(Bl6BoZ;)dfcbPAFT4I^YcwMyYduM2PgdiKkrM&Rmx*3>YUBd=To z+=W-I+P^Ls7?*NiYhDM38Z!ao_V^c-6^+5b2>m%@US930RlsNt36<4wSh>n7pdl!< zbOFQCRj(Y3o4qubR)#e0iqV^1$?}0SmND&04!_s}hJX9kUH9}n`z?Wy>%sfi-z_twv6)f*UCA2={_9cToKFtchfuyX}404-nuCL=~*Dq<>F08()M^;fIq z3{DLC+F9&GD92&mpZ*}POeMxMD|gE2BAX6UzK?s#++C4t{Ws2@TJoFmtHtKyfwj+0 z6&AQxK058lm}bMYHB5NLvC5Zjfrm|Q7Ebw8?XYwy%Wdi1`yO_e{@?ENY-fz=<6EC@ z&)IHUAaUDm?d9y4TK}Vk*6;7^X9=nM^LNXY^n{XizN*`U?8LJdy;@+lgU$5JCsFHF zdZz@gyo=@8tm-rM*iW{NvKq60icC2vwBS|mbm{ZS0Z&)&H(h^K=GZ@pD;nMnM)8aG z&DrKvJMsMYL;YnT<-PjMUq6|zI%le5#AzJ0-f+Ji`;x4h+}FFePliQyW;`ge-QP^y z*^xb6>KNamU*QYRgvoBb6ZrI>>;i^A+UNm+91kYOE2ad^a%YggY+oq8d`VvPj(A|< O!QkoY=d#Wzp$PyP!x7s6 literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1CartesianControlServer-members.html b/classroboticslab_1_1CartesianControlServer-members.html new file mode 100644 index 000000000..de8574524 --- /dev/null +++ b/classroboticslab_1_1CartesianControlServer-members.html @@ -0,0 +1,102 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::CartesianControlServer Member List
+
+
+ +

This is the complete list of members for roboticslab::CartesianControlServer, including all inherited members.

+ + + + + + + + + + + + + + + +
cartesianControlDevice (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
CartesianControlServer() (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerinline
close() override (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServer
commandPort (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
fkOutPort (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
fkStreamEnabled (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
iCartesianControl (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
open(yarp::os::Searchable &config) override (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServer
rpcResponder (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
rpcServer (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
rpcTransformResponder (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
rpcTransformServer (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
run() override (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServer
streamResponder (defined in roboticslab::CartesianControlServer)roboticslab::CartesianControlServerprotected
+ + + + diff --git a/classroboticslab_1_1CartesianControlServer.html b/classroboticslab_1_1CartesianControlServer.html new file mode 100644 index 000000000..9c5f59cf4 --- /dev/null +++ b/classroboticslab_1_1CartesianControlServer.html @@ -0,0 +1,151 @@ + + + + + + + +kinematics-dynamics: roboticslab::CartesianControlServer Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The CartesianControlServer class implements ICartesianControl server side. +

+ +

#include <CartesianControlServer.hpp>

+
+Inheritance diagram for roboticslab::CartesianControlServer:
+
+
+ +
+ + + + + + + + +

+Public Member Functions

+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
+void run () override
 
+ + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+yarp::dev::PolyDriver cartesianControlDevice
 
+yarp::os::RpcServer rpcServer
 
+yarp::os::RpcServer rpcTransformServer
 
+yarp::os::BufferedPort< yarp::os::Bottle > fkOutPort
 
+yarp::os::BufferedPort< yarp::os::Bottle > commandPort
 
+roboticslab::ICartesianControliCartesianControl {nullptr}
 
+RpcResponderrpcResponder {nullptr}
 
+RpcResponderrpcTransformResponder {nullptr}
 
+StreamResponderstreamResponder {nullptr}
 
+bool fkStreamEnabled
 
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/CartesianControlServer/CartesianControlServer.hpp
  • +
  • libraries/YarpPlugins/CartesianControlServer/DeviceDriverImpl.cpp
  • +
  • libraries/YarpPlugins/CartesianControlServer/PeriodicThreadImpl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1CartesianControlServer.png b/classroboticslab_1_1CartesianControlServer.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf5876e05fd4e265d371b56e89a336be6b12102 GIT binary patch literal 1120 zcmeAS@N?(olHy`uVBq!ia0y~yVB7{|2XHV0NvFLFGJ%vtfKQ0)|NsAi%olIImi8Z- z0AzvjfddCvJMYK?xf~@ye!&btMIdnXREQA+1M_=N7srqa#uB>ND%++mYL+D4b-lRb4veSo2$T5UJw1I52DSl8YR)%$E&f3Dyom*VJSa-hFQAI6J_dQGA`c$1&y!mSPqTJp)m+E(Ki^*0! zc_F&5Hur15(O>KC<+|P8`u(f-Ex%>g<&?gC{*{-_pW$isAph1X%bBXd`_8_8d2M}b z(4v=jIHxXgzPEU-Ugi0wB`KCw+daLe`R}{E?Wh^=-rB2G7CMo7()V^~ojdmJ;jIbh zxpqJ9djDt3w#Q$l%`E%#^ySTYW?Qz`6#v@1r9ZR!nu6zl*7e!N6Yp(x4w|&H?b0*N zz1+8~{<>XyrnT3*eTjK@tJp#8>PRcIyopeVK#xTtE)?E5fW6RPhmkJnax}^^s z;F%Sl!TjOaTeEH39Y1sDGTfW7N$S?^1wUKO7}|Sk-S}n$r3>5%;Nx%0cJuN&FnkbS z)WZNw9%SM7ionFioRHCW#$XHM4rL_#SbgiwWiQvgoBV#Ydgd?2Q?Fm_lfT-x=Q{ra z#Vxk)FTA|9()@tk-WB%@{?;+@?q95HtMxhJ+~xhno$uto+n)}afBVxV{ax40rk^{_ zRw)(je)eo}jOFq>hW&Q^X|wBmZU@b9U%1UE_y1LM-|*n;YiB%9@(qzpX}T^N)En2c zW9`EDTe+ozQn}IZYm&EhYlhYD@yl7f)+n(__`M7lNmjCm=$h_Sf z!?)ag_-SLtEGOyC8qwD5uI%ou!Jq2hWaf6Oy;j?Q?^O!Jv8Bu3e%gIjtmrw%>z=9E z_qOg_ue&=cy8g$6J@RIsx%A#|D_&uzBJW+B8=<`I#MT3!H(u*~>#~)5QHJT?GrKRD s{GDXhkccmoe=z21E;W&1xc@}H)BC^fn$L+Dz~X?x)78&qol`;+05MrD^#A|> literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1CentroidTransform-members.html b/classroboticslab_1_1CentroidTransform-members.html new file mode 100644 index 000000000..089e628d8 --- /dev/null +++ b/classroboticslab_1_1CentroidTransform-members.html @@ -0,0 +1,99 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::CentroidTransform Member List
+
+ + + + + diff --git a/classroboticslab_1_1CentroidTransform.html b/classroboticslab_1_1CentroidTransform.html new file mode 100644 index 000000000..111fabb12 --- /dev/null +++ b/classroboticslab_1_1CentroidTransform.html @@ -0,0 +1,144 @@ + + + + + + + +kinematics-dynamics: roboticslab::CentroidTransform Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

... +

+ +

#include <CentroidTransform.hpp>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CentroidTransform ()
 Constructor.
 
+void registerStreamingDevice (StreamingDevice *streamingDevice)
 Register handle to device.
 
+bool setTcpToCameraRotation (yarp::os::Bottle *b)
 Set TCP to camera frame.
 
+void setPermanenceTime (double permanenceTime)
 Set new permanence time.
 
+bool acceptBottle (yarp::os::Bottle *b)
 Register or dismiss incoming bottle.
 
+bool processStoredBottle () const
 Process last stored bottle.
 
+ + + + + + + + + + + +

+Private Attributes

+StreamingDevicestreamingDevice
 
+double permanenceTime
 
+yarp::os::Bottle lastBottle
 
+yarp::os::Stamp lastAcquisition
 
+KDL::Rotation rot_tcp_camera
 
+
The documentation for this class was generated from the following files:
    +
  • programs/streamingDeviceController/CentroidTransform.hpp
  • +
  • programs/streamingDeviceController/CentroidTransform.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1ChainFkSolverPos__ST-members.html b/classroboticslab_1_1ChainFkSolverPos__ST-members.html new file mode 100644 index 000000000..73e90ce6f --- /dev/null +++ b/classroboticslab_1_1ChainFkSolverPos__ST-members.html @@ -0,0 +1,98 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ChainFkSolverPos_ST Member List
+
+
+ +

This is the complete list of members for roboticslab::ChainFkSolverPos_ST, including all inherited members.

+ + + + + + + + + + + +
chain (defined in roboticslab::ChainFkSolverPos_ST)roboticslab::ChainFkSolverPos_STprivate
ChainFkSolverPos_ST(const KDL::Chain &chain) (defined in roboticslab::ChainFkSolverPos_ST)roboticslab::ChainFkSolverPos_STprivate
create(const KDL::Chain &chain)roboticslab::ChainFkSolverPos_STstatic
E_ILLEGAL_ARGUMENT_SIZEroboticslab::ChainFkSolverPos_STstatic
E_OPERATION_NOT_SUPPORTEDroboticslab::ChainFkSolverPos_STstatic
JntToCart(const KDL::JntArray &q_in, KDL::Frame &p_out, int segmentNr=-1) overrideroboticslab::ChainFkSolverPos_ST
JntToCart(const KDL::JntArray &q_in, std::vector< KDL::Frame > &p_out, int segmentNr=-1) overrideroboticslab::ChainFkSolverPos_ST
poe (defined in roboticslab::ChainFkSolverPos_ST)roboticslab::ChainFkSolverPos_STprivate
strError(const int error) const overrideroboticslab::ChainFkSolverPos_ST
updateInternalDataStructures() overrideroboticslab::ChainFkSolverPos_ST
+ + + + diff --git a/classroboticslab_1_1ChainFkSolverPos__ST.html b/classroboticslab_1_1ChainFkSolverPos__ST.html new file mode 100644 index 000000000..799d95486 --- /dev/null +++ b/classroboticslab_1_1ChainFkSolverPos__ST.html @@ -0,0 +1,353 @@ + + + + + + + +kinematics-dynamics: roboticslab::ChainFkSolverPos_ST Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

FK solver using Screw Theory. + More...

+ +

#include <ChainFkSolverPos_ST.hpp>

+
+Inheritance diagram for roboticslab::ChainFkSolverPos_ST:
+
+
+ +
+ + + + + + + + + + + + + + +

+Public Member Functions

int JntToCart (const KDL::JntArray &q_in, KDL::Frame &p_out, int segmentNr=-1) override
 Perform FK on the selected segment. More...
 
int JntToCart (const KDL::JntArray &q_in, std::vector< KDL::Frame > &p_out, int segmentNr=-1) override
 Perform FK on the selected segments (unsupported) More...
 
void updateInternalDataStructures () override
 Update the internal data structures. More...
 
const char * strError (const int error) const override
 Return a description of the last error. More...
 
+ + + + +

+Static Public Member Functions

static KDL::ChainFkSolverPos * create (const KDL::Chain &chain)
 Create an instance of ChainFkSolverPos_ST. More...
 
+ + + + + + + +

+Static Public Attributes

+static const int E_OPERATION_NOT_SUPPORTED = -100
 Return code, operation not supported.
 
+static const int E_ILLEGAL_ARGUMENT_SIZE = -101
 Return code, input vector size does not match expected output vector size.
 
+ + + +

+Private Member Functions

ChainFkSolverPos_ST (const KDL::Chain &chain)
 
+ + + + + +

+Private Attributes

+const KDL::Chain & chain
 
+PoeExpression poe
 
+

Detailed Description

+

Implementation of a forward position kinematics algorithm. This is a thin wrapper around PoeExpression. Methods that retrieve resulting frames for intermediate links are not supported.

+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
KDL::ChainFkSolverPos * ChainFkSolverPos_ST::create (const KDL::Chain & chain)
+
+static
+
+
Parameters
+ + +
chainInput kinematic chain.
+
+
+
Returns
Solver instance.
+ +
+
+ +

◆ JntToCart() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int ChainFkSolverPos_ST::JntToCart (const KDL::JntArray & q_in,
KDL::Frame & p_out,
int segmentNr = -1 
)
+
+override
+
+
Parameters
+ + + + +
q_inInput joint coordinates.
p_outReference to output cartesian pose.
segmentNrDesired segment frame (unsupported).
+
+
+
Returns
Return code, < 0 if something went wrong.
+ +
+
+ +

◆ JntToCart() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int ChainFkSolverPos_ST::JntToCart (const KDL::JntArray & q_in,
std::vector< KDL::Frame > & p_out,
int segmentNr = -1 
)
+
+override
+
+
Parameters
+ + + + +
q_inInput joint coordinates.
p_outReference to a vector of output cartesian poses for all segments.
segmentNrLast selected segment frame.
+
+
+
Returns
Return code, < 0 if something went wrong.
+
Warning
Unsupported, will return E_OPERATION_NOT_SUPPORTED.
+ +
+
+ +

◆ strError()

+ +
+
+ + + + + +
+ + + + + + + + +
const char * ChainFkSolverPos_ST::strError (const int error) const
+
+override
+
+
Parameters
+ + +
errorError code.
+
+
+
Returns
If error is known then a description of error, otherwise "UNKNOWN ERROR".
+ +
+
+ +

◆ updateInternalDataStructures()

+ +
+
+ + + + + +
+ + + + + + + +
void ChainFkSolverPos_ST::updateInternalDataStructures ()
+
+override
+
+

Update the internal data structures. This is required if the number of segments or number of joints of a chain has changed. This provides a single point of contact for solver memory allocations.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/KdlSolver/ChainFkSolverPos_ST.hpp
  • +
  • libraries/YarpPlugins/KdlSolver/ChainFkSolverPos_ST.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1ChainFkSolverPos__ST.png b/classroboticslab_1_1ChainFkSolverPos__ST.png new file mode 100644 index 0000000000000000000000000000000000000000..133627f3417d83698ce3334740b0f0257718115f GIT binary patch literal 779 zcmeAS@N?(olHy`uVBq!ia0vp^=YcqYgBeJ6=3o2`q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0W_h|ehEy=VoqMt9wE~X|zy8ht{~yo3 z#ik-DV{U#~k!Ny_w1b$H(~0#EZuBTXt6GY_Igm^7UEHkXsR5Yt<~1Rw^cMA@FBnd#uXJ<-2Xv zT26n?oG>dpd{T_x+Ox^;`XeVT3IA2H_i94Yf`u7MuFZ-&rYxCWwOoGBlT5XJ*KY5e z^2VwC`Qfi({44L@Ust(Cc=rn#^9sA#davJFZ;wrzQv3hOye&)roSD3S^6UK6=3hnJ zz8?;MRr8ErcvRW*an?tVOFO`RReR#8xwMkygLoB#&ytfBa{W6S)E-wp@?kZRKL0A8 zK{@*)L(l4?%m(Yk_zwVeFaWg@5Xje9Iz>&0GeJsMuAy*i1;eq>$;bU|-7hZdJACR| zq7+|@zOHe5>FuetEDM$%jxMX7&0cU{?z~yn2lv-|zK3Qtc{i-s6~?1={+ssl^5tj0 z%sxA@aZ-K$E9D}-GKca!>mt+jY1h7s1#w<~ci(^Y!<)PRf1( + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ChainIkSolverPos_ID Member List
+
+
+ +

This is the complete list of members for roboticslab::ChainIkSolverPos_ID, including all inherited members.

+ + + + + + + + + + + + + + + +
CartToJnt(const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) overrideroboticslab::ChainIkSolverPos_ID
chain (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
ChainIkSolverPos_ID(const KDL::Chain &chain, const KDL::JntArray &q_min, const KDL::JntArray &q_max, KDL::ChainFkSolverPos &fksolver)roboticslab::ChainIkSolverPos_ID
computeDiffInvKin(const KDL::Twist &delta_twist) (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
E_FKSOLVERPOS_FAILEDroboticslab::ChainIkSolverPos_IDstatic
E_JACSOLVER_FAILEDroboticslab::ChainIkSolverPos_IDstatic
fkSolverPos (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
jacobian (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
jacSolver (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
nj (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
qMax (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
qMin (defined in roboticslab::ChainIkSolverPos_ID)roboticslab::ChainIkSolverPos_IDprivate
strError(const int error) const overrideroboticslab::ChainIkSolverPos_ID
updateInternalDataStructures() overrideroboticslab::ChainIkSolverPos_ID
+ + + + diff --git a/classroboticslab_1_1ChainIkSolverPos__ID.html b/classroboticslab_1_1ChainIkSolverPos__ID.html new file mode 100644 index 000000000..85c64f722 --- /dev/null +++ b/classroboticslab_1_1ChainIkSolverPos__ID.html @@ -0,0 +1,327 @@ + + + + + + + +kinematics-dynamics: roboticslab::ChainIkSolverPos_ID Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

IK solver using infinitesimal displacement twists. + More...

+ +

#include <ChainIkSolverPos_ID.hpp>

+
+Inheritance diagram for roboticslab::ChainIkSolverPos_ID:
+
+
+ +
+ + + + + + + + + + + + + + +

+Public Member Functions

 ChainIkSolverPos_ID (const KDL::Chain &chain, const KDL::JntArray &q_min, const KDL::JntArray &q_max, KDL::ChainFkSolverPos &fksolver)
 Constructor. More...
 
int CartToJnt (const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) override
 Calculate inverse position kinematics. More...
 
void updateInternalDataStructures () override
 Update the internal data structures. More...
 
const char * strError (const int error) const override
 Return a description of the last error. More...
 
+ + + + + + + +

+Static Public Attributes

+static const int E_FKSOLVERPOS_FAILED = -100
 Return code, internal FK position solver failed.
 
+static const int E_JACSOLVER_FAILED = -101
 Return code, internal Jacobian solver failed.
 
+ + + +

+Private Member Functions

+KDL::JntArray computeDiffInvKin (const KDL::Twist &delta_twist)
 
+ + + + + + + + + + + + + + + +

+Private Attributes

+const KDL::Chain & chain
 
+unsigned int nj
 
+KDL::JntArray qMin
 
+KDL::JntArray qMax
 
+KDL::ChainFkSolverPos & fkSolverPos
 
+KDL::ChainJntToJacSolver jacSolver
 
+KDL::Jacobian jacobian
 
+

Detailed Description

+

Re-implementation of KDL::ChainIkSolverPos_NR_JL in which only one iteration step is performed. Aimed to provide a quick means of obtaining IK whenever the displacements are small enough.

+

Constructor & Destructor Documentation

+ +

◆ ChainIkSolverPos_ID()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ChainIkSolverPos_ID::ChainIkSolverPos_ID (const KDL::Chain & chain,
const KDL::JntArray & q_min,
const KDL::JntArray & q_max,
KDL::ChainFkSolverPos & fksolver 
)
+
+
Parameters
+ + + + + + +
chainThe chain to calculate the inverse position for.
q_minThe minimum joint positions.
q_maxThe maximum joint positions.
fksolverA forward position kinematics solver.
iksolverAn inverse velocity kinematics solver.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ CartToJnt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int ChainIkSolverPos_ID::CartToJnt (const KDL::JntArray & q_init,
const KDL::Frame & p_in,
KDL::JntArray & q_out 
)
+
+override
+
+
Parameters
+ + + + +
q_initInitial guess of the joint coordinates (unused).
p_inInput cartesian coordinates.
q_outOutput joint coordinates.
+
+
+
Returns
Return code, E_SOLUTION_NOT_FOUND if there is no solution or E_NOT_REACHABLE if at least one of them is out of reach.
+ +
+
+ +

◆ strError()

+ +
+
+ + + + + +
+ + + + + + + + +
const char * ChainIkSolverPos_ID::strError (const int error) const
+
+override
+
+
Parameters
+ + +
errorError code.
+
+
+
Returns
If error is known then a description of error, otherwise "UNKNOWN ERROR".
+ +
+
+ +

◆ updateInternalDataStructures()

+ +
+
+ + + + + +
+ + + + + + + +
void ChainIkSolverPos_ID::updateInternalDataStructures ()
+
+override
+
+

Update the internal data structures. This is required if the number of segments or number of joints of a chain has changed. This provides a single point of contact for solver memory allocations.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/KdlSolver/ChainIkSolverPos_ID.hpp
  • +
  • libraries/YarpPlugins/KdlSolver/ChainIkSolverPos_ID.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1ChainIkSolverPos__ID.png b/classroboticslab_1_1ChainIkSolverPos__ID.png new file mode 100644 index 0000000000000000000000000000000000000000..ec79b88f9de027e31b0026f5db0b305830198bc7 GIT binary patch literal 740 zcmeAS@N?(olHy`uVBq!ia0vp^$ALJ2gBeK9+A)zINJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~6??ikhEy=VoqN0QwE~Z;xc=t<|NH&D zg*WU}S$Rcy;)z#p1jUp0@K~&0GUXDp%cLc@wJlUKWm(%*)-Lvzx%uR)zIdBa!ZZ8B zbz8pO)1I4{e$nc;-S+90UJE97WN(=CBxKnv86S&h!IMlbhVnh$+qHS`_6UxLf$9?YPY6m5(y#uanuib@^xJS=H6K_a1of z+q;tgxaE&Gke%Dzx zcbRis>pz`8`Y8Wsp0R?~yEh+iR9zL_ z`Yvv6ojpU|vfYJGoF!_WKDI#$llSi + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ChainIkSolverPos_ST Member List
+
+
+ +

This is the complete list of members for roboticslab::ChainIkSolverPos_ST, including all inherited members.

+ + + + + + + + + + + + + +
CartToJnt(const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) overrideroboticslab::ChainIkSolverPos_ST
chain (defined in roboticslab::ChainIkSolverPos_ST)roboticslab::ChainIkSolverPos_STprivate
ChainIkSolverPos_ST(const KDL::Chain &chain, ScrewTheoryIkProblem *problem, ConfigurationSelector *config) (defined in roboticslab::ChainIkSolverPos_ST)roboticslab::ChainIkSolverPos_STprivate
config (defined in roboticslab::ChainIkSolverPos_ST)roboticslab::ChainIkSolverPos_STprivate
create(const KDL::Chain &chain, const ConfigurationSelectorFactory &configFactory)roboticslab::ChainIkSolverPos_STstatic
E_NOT_REACHABLEroboticslab::ChainIkSolverPos_STstatic
E_OUT_OF_LIMITSroboticslab::ChainIkSolverPos_STstatic
E_SOLUTION_NOT_FOUNDroboticslab::ChainIkSolverPos_STstatic
problem (defined in roboticslab::ChainIkSolverPos_ST)roboticslab::ChainIkSolverPos_STprivate
strError(const int error) const overrideroboticslab::ChainIkSolverPos_ST
updateInternalDataStructures() overrideroboticslab::ChainIkSolverPos_ST
~ChainIkSolverPos_ST()roboticslab::ChainIkSolverPos_STvirtual
+ + + + diff --git a/classroboticslab_1_1ChainIkSolverPos__ST.html b/classroboticslab_1_1ChainIkSolverPos__ST.html new file mode 100644 index 000000000..8dedf4d7b --- /dev/null +++ b/classroboticslab_1_1ChainIkSolverPos__ST.html @@ -0,0 +1,320 @@ + + + + + + + +kinematics-dynamics: roboticslab::ChainIkSolverPos_ST Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

IK solver using Screw Theory. + More...

+ +

#include <ChainIkSolverPos_ST.hpp>

+
+Inheritance diagram for roboticslab::ChainIkSolverPos_ST:
+
+
+ +
+ + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~ChainIkSolverPos_ST ()
 Destructor.
 
int CartToJnt (const KDL::JntArray &q_init, const KDL::Frame &p_in, KDL::JntArray &q_out) override
 Calculate inverse position kinematics. More...
 
void updateInternalDataStructures () override
 Update the internal data structures. More...
 
const char * strError (const int error) const override
 Return a description of the last error. More...
 
+ + + + +

+Static Public Member Functions

static KDL::ChainIkSolverPos * create (const KDL::Chain &chain, const ConfigurationSelectorFactory &configFactory)
 Create an instance of ChainIkSolverPos_ST. More...
 
+ + + + + + + + + + +

+Static Public Attributes

+static const int E_SOLUTION_NOT_FOUND = -100
 Return code, IK solution not found.
 
+static const int E_OUT_OF_LIMITS = -101
 Return code, target pose out of robot limits.
 
+static const int E_NOT_REACHABLE = 100
 Return code, solution out of reach.
 
+ + + +

+Private Member Functions

ChainIkSolverPos_ST (const KDL::Chain &chain, ScrewTheoryIkProblem *problem, ConfigurationSelector *config)
 
+ + + + + + + +

+Private Attributes

+const KDL::Chain & chain
 
+ScrewTheoryIkProblemproblem
 
+ConfigurationSelectorconfig
 
+

Detailed Description

+

Implementation of an inverse position kinematics algorithm. This is a thin wrapper around ScrewTheoryIkProblem. Non-exhaustive tests on TEO's (UC3M) right arm kinematic chain reveal that this is 5-10 faster than a numeric Newton-Raphson solver as provided by KDL (e.g. KDL::ChainIkSolverPos_NR_JL).

+

Member Function Documentation

+ +

◆ CartToJnt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int ChainIkSolverPos_ST::CartToJnt (const KDL::JntArray & q_init,
const KDL::Frame & p_in,
KDL::JntArray & q_out 
)
+
+override
+
+
Parameters
+ + + + +
q_initInitial guess of the joint coordinates (unused).
p_inInput cartesian coordinates.
q_outOutput joint coordinates.
+
+
+
Returns
Return code, E_SOLUTION_NOT_FOUND if there is no solution or E_NOT_REACHABLE if at least one of them is out of reach.
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
KDL::ChainIkSolverPos * ChainIkSolverPos_ST::create (const KDL::Chain & chain,
const ConfigurationSelectorFactoryconfigFactory 
)
+
+static
+
+
Parameters
+ + + +
chainInput kinematic chain.
configFactoryInstance of an abstract factory class that instantiates a ConfigurationSelector.
+
+
+
Returns
Solver instance or null if no solution was found.
+ +
+
+ +

◆ strError()

+ +
+
+ + + + + +
+ + + + + + + + +
const char * ChainIkSolverPos_ST::strError (const int error) const
+
+override
+
+
Parameters
+ + +
errorError code.
+
+
+
Returns
If error is known then a description of error, otherwise "UNKNOWN ERROR".
+ +
+
+ +

◆ updateInternalDataStructures()

+ +
+
+ + + + + +
+ + + + + + + +
void ChainIkSolverPos_ST::updateInternalDataStructures ()
+
+override
+
+

Update the internal data structures. This is required if the number of segments or number of joints of a chain has changed. This provides a single point of contact for solver memory allocations.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/KdlSolver/ChainIkSolverPos_ST.hpp
  • +
  • libraries/YarpPlugins/KdlSolver/ChainIkSolverPos_ST.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1ChainIkSolverPos__ST.png b/classroboticslab_1_1ChainIkSolverPos__ST.png new file mode 100644 index 0000000000000000000000000000000000000000..2a56c99fde2298bb26aadd6b985fe933185eef0e GIT binary patch literal 746 zcmeAS@N?(olHy`uVBq!ia0vp^r+_$sgBeKXyGiW_QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;3KuYd3V|HoHv zIXOA5etjMT$J-%MMyRB66Xv)=h)9oCj?`>0@-OGFWW2MsmV|Q65nOqJP5k7P}RMNq0 zMb~epqjN+rt9riw@|yQr)69i)7}*|{-&1+HcAw?9{6II$`^xhc&AEQnU&C|#*G$8@ z_=C$d%J$r~KKGpA>GkxbVk@FT-^gwHek!nPTh9E2w<_Yx&emR?x>G*iz_V)|$VYIm zMR6~k5;RTV!2avJ3A}5Yi+1ZC-o$rmZi?u%)__e-j7NeOF}RR`YZe4~MLLT#h)&U9 zxCp`~E+6N=%irr;{l03OlTkrI(N^icy*F-g8C=@@ensr{K!)#U0=8{u{Kfgypr+U8 zy;1Ge1q*Z5DzEgvz+AKW=ELl3dsp_Ku&iL(GA-Fu?Alu~-`*>Jw*Jc;Gyi>imidY4 z+s9>g2kLq@ZcMaXKkvl)Li5IlQtQ0l=TC9pY=7s<-s|U%Id6@4rtxge488iOe|$%C zH*D9qn$}P>FH@lIIq!z^f7Zk}%}gomFgo>9?xV=lJ?oa;ojXBWLw^2LN7mVkt{kaw zEpI0_RGp41eh=xJYD@<);T3K0RX)EW + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelector Member List
+
+
+ +

This is the complete list of members for roboticslab::ConfigurationSelector, including all inherited members.

+ + + + + + + + + + +
_qMax (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
_qMin (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
configs (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
ConfigurationSelector(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorinline
configure(const std::vector< KDL::JntArray > &solutions)roboticslab::ConfigurationSelectorvirtual
findOptimalConfiguration(const KDL::JntArray &qGuess)=0roboticslab::ConfigurationSelectorpure virtual
optimalConfig (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
retrievePose(KDL::JntArray &q) constroboticslab::ConfigurationSelectorinlinevirtual
~ConfigurationSelector()=defaultroboticslab::ConfigurationSelectorvirtual
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelector.html b/classroboticslab_1_1ConfigurationSelector.html new file mode 100644 index 000000000..79886d7d6 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelector.html @@ -0,0 +1,295 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelector Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelector Class Referenceabstract
+
+
+ +

Abstract base class for a robot configuration strategy selector. +

+ +

#include <ConfigurationSelector.hpp>

+
+Inheritance diagram for roboticslab::ConfigurationSelector:
+
+
+ + +roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement +roboticslab::ConfigurationSelectorHumanoidGait + +
+ + + + + +

+Classes

class  Configuration
 Helper class to store a specific robot configuration. More...
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfigurationSelector (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
+virtual ~ConfigurationSelector ()=default
 Destructor.
 
virtual bool configure (const std::vector< KDL::JntArray > &solutions)
 Stores initial values for a specific pose. More...
 
virtual bool findOptimalConfiguration (const KDL::JntArray &qGuess)=0
 Analyzes available configurations and selects the optimal one. More...
 
virtual void retrievePose (KDL::JntArray &q) const
 Queries computed joint values for the optimal configuration. More...
 
+ + + + + + + + + +

+Protected Attributes

+KDL::JntArray _qMin
 
+KDL::JntArray _qMax
 
+Configuration optimalConfig
 
+std::vector< Configurationconfigs
 
+

Constructor & Destructor Documentation

+ +

◆ ConfigurationSelector()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::ConfigurationSelector::ConfigurationSelector (const KDL::JntArray & qMin,
const KDL::JntArray & qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinJoint array of minimum joint limits.
qMaxJoint array of maximum joint limits.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ configure()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ConfigurationSelector::configure (const std::vector< KDL::JntArray > & solutions)
+
+virtual
+
+
Parameters
+ + +
solutionsVector of joint arrays that represent all available (valid or not) robot joint poses.
+
+
+
Returns
True/false on success/failure.
+ +
+
+ +

◆ findOptimalConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ConfigurationSelector::findOptimalConfiguration (const KDL::JntArray & qGuess)
+
+pure virtual
+
+
Parameters
+ + +
qGuessJoint array of values for current robot position.
+
+
+
Returns
True/false on success/failure.
+ +

Implemented in roboticslab::ConfigurationSelectorHumanoidGait, and roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement.

+ +
+
+ +

◆ retrievePose()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void roboticslab::ConfigurationSelector::retrievePose (KDL::JntArray & q) const
+
+inlinevirtual
+
+
Parameters
+ + +
qOutput joint array.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelector.png b/classroboticslab_1_1ConfigurationSelector.png new file mode 100644 index 0000000000000000000000000000000000000000..b4665c964984570fe3ab2fde06ba61e4599855e7 GIT binary patch literal 1770 zcmcJQc~H`67{`CEt65g=SR-1dWmswTGb@iWtz1#@Dp1Rj!)rUt$O90~L9NY9%P6GK zLfKNhGcN=o%rx3AqtMU4pRVt&1AIpr@^=>$)8ZG|l*+PXJ7u*OWS){+6zNqIdBbJ-ihVzfhlzFeE&X0D{ml-$_I}(|Cm(Iysn$vutVtIb*S$>d z5~v?nxy5L4m5+tNJyh$cgD!QN4cc^~(xw~DPx7*M+5fj_T zqLLcZ?839y*KRBwNsl%yaNr$(SGOR`KX1SkLq69h5 zm_W~nXP5SxeOWn**~5MPR9lML>|!~YY`XZZO~zoe3UQZTvfmw)96^@X8MVRoUJVI> zEaHdaq8+AM>}I+_KPKeRBkje+^Gy82$UPuIdyF_yYp^A&tJpIA{R0(ZdZhk`T6vx0 zyh&6vN|1Cxa<*3+6G;!;`gIhqH7-ZEx10xo_$K<|O-`gXwL3JADvEB7=3v^*gI!gB>+tLgu%J{v+< zw7A4mU&|&c%~PBXhfr7kN>~TiJo^_I^KziOw5Cu8a-Zq43{XQqt9quF zd5d%A%45S@p!sPZtiV^6ZWNGcMT@c^{AnDSGn$n0M%SRrv{r8!e8fb}kRDA}h;A z3}dgNalUbMQf!W!`q4(`lLTs)ov}@?!}Tv|-$u%>Cw%H}%{Ixy{P*F%);rGdd0e+MOPbv?T4YXs&S z`g$(mNn@m>fWspB5ea3DAcZ&)I`D$;*s0Un`$AWP|7PM(N^~tZI^NrGwXL zF3XJPNX7=4PS!}me)Uvc9@m=z11kJ1#g zOsFMwDomUP6|Tj2BA0%HD^Qzh!Y8M%-R6`}1nkvm<@PfRyPC!oElx)mQs zIT$Ck-34gY=LiT@MjQxNFrXx7m8`@SGEBncP(E2Liiu_NpPA;Sobo?9L$Z-Qt@q=W z2`nb#GLUqS`Nn!VDrmhV2vz!|DVghD21=f?OA&P5$yr(mZDKX(<8htIMir!E0;Sb0 zjuIh4zm>7>n=(FlXoI$c0SI z{jE)8v4=(LX+A@r;~^Nmt!vT{v@!aQIM|fiX>fYAVk5{q-4Xk@(WKa3gZUU=7sAAE z-Y;OC&cjoQVMq3?N{x4V*Z(H*RYPZ9m`9s(e27|@GDt^Ppyczir~}hGVx)m8vycAO zMmf&KLWL+ONji)xu23IeS@x{Vh>Ncw8$Y&i0bxMA3w;XD< z`*2L(Wh3}3608O#TVd43-0~3wbxKvJ56|4syHaTU4W5HuR+d&Q+JVWv=;51}A1cx| QXg($Y4)b%XbPYZG2l^R1{{R30 literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ConfigurationSelectorFactory-members.html b/classroboticslab_1_1ConfigurationSelectorFactory-members.html new file mode 100644 index 000000000..90b33f01b --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorFactory-members.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelectorFactory Member List
+
+
+ +

This is the complete list of members for roboticslab::ConfigurationSelectorFactory, including all inherited members.

+ + + + + + +
_qMax (defined in roboticslab::ConfigurationSelectorFactory)roboticslab::ConfigurationSelectorFactoryprotected
_qMin (defined in roboticslab::ConfigurationSelectorFactory)roboticslab::ConfigurationSelectorFactoryprotected
ConfigurationSelectorFactory(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorFactoryinlineprotected
create() const =0roboticslab::ConfigurationSelectorFactorypure virtual
~ConfigurationSelectorFactory()=default (defined in roboticslab::ConfigurationSelectorFactory)roboticslab::ConfigurationSelectorFactoryvirtual
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorFactory.html b/classroboticslab_1_1ConfigurationSelectorFactory.html new file mode 100644 index 000000000..cb73c6601 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorFactory.html @@ -0,0 +1,205 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelectorFactory Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelectorFactory Class Referenceabstract
+
+
+ +

Base factory class for ConfigurationSelector. + More...

+ +

#include <ConfigurationSelector.hpp>

+
+Inheritance diagram for roboticslab::ConfigurationSelectorFactory:
+
+
+ + +roboticslab::ConfigurationSelectorHumanoidGaitFactory +roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory + +
+ + + + + +

+Public Member Functions

virtual ConfigurationSelectorcreate () const =0
 Creates an instance of the concrete class. More...
 
+ + + + +

+Protected Member Functions

 ConfigurationSelectorFactory (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
+ + + + + +

+Protected Attributes

+KDL::JntArray _qMin
 
+KDL::JntArray _qMax
 
+

Detailed Description

+

Acts as the base class in the abstract factory pattern, encapsulates individual factories.

+

Constructor & Destructor Documentation

+ +

◆ ConfigurationSelectorFactory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::ConfigurationSelectorFactory::ConfigurationSelectorFactory (const KDL::JntArray & qMin,
const KDL::JntArray & qMax 
)
+
+inlineprotected
+
+
Parameters
+ + + +
qMinJoint array of minimum joint limits.
qMaxJoint array of maximum joint limits.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ConfigurationSelector* roboticslab::ConfigurationSelectorFactory::create () const
+
+pure virtual
+
+
Returns
A pointer to the base class of the inheritance tree.
+ +

Implemented in roboticslab::ConfigurationSelectorHumanoidGaitFactory, and roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorFactory.png b/classroboticslab_1_1ConfigurationSelectorFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..0efb8245c59eb7188902c338dc6a3b3ea1cd55ad GIT binary patch literal 1804 zcmchYeKgZ+9Ke5CC^uZ?W)f~Sxya>`m$brI{Mz!ekoP#L>n%%bEEX$uyRyKtao^r`^i}0FIr1yR0;_I1bi&h89jv7C0e*SY1;P<9YC3y&WzQ{si* zjF|myq6hnO=d}n%u?GOBl=z}3;l5Us?r&+1V@tx*v4DWq`Ti+vuRVnkB^ckKw5__7 zEo*LC>J|%R)_M-%dz(oP)6v>uX&ias(kh0RI#szlRHy)_wB{KMihLM&>R9jT0Xcbb zvB9ceKxcgJesu{wl4o$3JU4TilW^YP2%m^IHU25NE-bQzmEz{_rlbDj&b!)ptG2Jx zGHdcEDz`Rp(%e0QQ?B82onG3GCpyW{x?GL0+Ne3yu; zSE`sDH6pQPkhq3C9i#k)1Sq}VQgD>hqRPsbxd?|5+k~cCA!>dun-e2T@iw12dsdqR zTjtD#qSqhlBy0^vM)||;iQ403>@&h3`O0+#v3c;=`DTo+|0}kzjvTLR*}qQ?6HYr? z>roU)ouvUs{gJT?b&byi#3UmuA?h&d;lYz$$!G7UsTg*G?HcKe$C<^SKlBkFhb~`SS~8pr6pp1V3yB=U8EYUzWAFrY|Xdyvz-UB zuN6nAC{h&60sS_`CIAk=CK95N04xOH51y==1lCa$Y!!9Xp%V(BZl2GFnL~A1_jiO_ zYwe1Q_{VMG{YQ7gGw|o!jCx3vKzTfTZ75B?4iwV=smV1IqoS#zK-~UOOci8m!f6O? zP{la{30lxJ*XX#@hC+oPE+iTWrl(R3!LwBogpr>04TK_(mwkuynnct5ePk1!R=u~E z#lA(xClrqrAbJ7?O63hJ-5>WpHV2{VI~1eeXKUXja>q?CM#X{iE>fzNk23ffURH~! z`LI>5h>6L2h%qimNnb+EY3V>=(QEhSEeS`LG3l}jmK1V73`!T)2|?x!_Z~-@9q*ng z_`}Tbz;498l$ecXpqyuxlYCARvmw7PX(_?}#>Zq9FHvwt^--%lMr`Jn*psOtWX=6fc2nXMNE9+W@>8qN}XO>3oP!SxW zsxdMCF+Lq{;x~fyzggIB-%4uZe5@GTp==fuUY}tz>4o9`f~uz+a6RODwe$}h#){Ea z@*#4odMf#XgzJzRitPzdoyf4{4e*DQHk zG2uAuZW&CxAP<_z3qz3V*Y~gvG^eJ<3!glfmJTsZjwC;AoFAXzEkx^nl|9o>5fyZG zcxrfe)k&F+(fA~9ZvpnyDSv&O3@H>nB?M0N8%%fBs+Gfdf@`>V_)J5h_+5ZB3$er) z&=D6BKbdjI*}<7Mc~ic*w~`*sCffC)@qy=4bCMrO-ZJ8?Pc>*s4@E86Zk^pHfAzNa z*SCDVU^D6y-dHNKndC`)jkFkl(_V2M9j&!zQ+2kqN~S~Db$c;8bB55&Ki$C^KEY-U z_szfLo2O|T8Ce`zpk6Ad@3RKt)o zvUP)xbzpqUMwkwG4*L_azvt$hrYXIUej*=zr3m>b%UHfz2)^i;TkyGh$9>QMYU11t zxKtRrF(K(zCMy_An^HuET0j%bRab4}($HM_sM9-A$5B&opviLkBwfesj@py-B+=@O zFIzGV!F@00Ic+3b7-CesjDkAE%c>&~FGz?Nl}v~iNhQRKImAm_E0n4!keZ9zzr84D jt0&y7C#;s{% literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ConfigurationSelectorHumanoidGait-members.html b/classroboticslab_1_1ConfigurationSelectorHumanoidGait-members.html new file mode 100644 index 000000000..f63d65c89 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorHumanoidGait-members.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelectorHumanoidGait Member List
+
+
+ +

This is the complete list of members for roboticslab::ConfigurationSelectorHumanoidGait, including all inherited members.

+ + + + + + + + + + + + + + + + +
_qMax (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
_qMin (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
applyConstraints(const Configuration &config)roboticslab::ConfigurationSelectorHumanoidGaitprivate
configs (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
ConfigurationSelector(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorinline
ConfigurationSelectorHumanoidGait(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorHumanoidGaitinline
ConfigurationSelectorLeastOverallAngularDisplacement(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementinline
configure(const std::vector< KDL::JntArray > &solutions)roboticslab::ConfigurationSelectorvirtual
findOptimalConfiguration(const KDL::JntArray &qGuess) overrideroboticslab::ConfigurationSelectorHumanoidGaitvirtual
getDiffs(const KDL::JntArray &qGuess, const Configuration &config)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementprotected
INVALID_CONFIG (defined in roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementprotectedstatic
lastValid (defined in roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementprotected
optimalConfig (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
retrievePose(KDL::JntArray &q) constroboticslab::ConfigurationSelectorinlinevirtual
~ConfigurationSelector()=defaultroboticslab::ConfigurationSelectorvirtual
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorHumanoidGait.html b/classroboticslab_1_1ConfigurationSelectorHumanoidGait.html new file mode 100644 index 000000000..9ff9122e6 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorHumanoidGait.html @@ -0,0 +1,254 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelectorHumanoidGait Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelectorHumanoidGait Class Reference
+
+
+ +

IK solver configuration strategy selector based on human walking. + More...

+ +

#include <ConfigurationSelector.hpp>

+
+Inheritance diagram for roboticslab::ConfigurationSelectorHumanoidGait:
+
+
+ + +roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement +roboticslab::ConfigurationSelector + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfigurationSelectorHumanoidGait (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
bool findOptimalConfiguration (const KDL::JntArray &qGuess) override
 Analyzes available configurations and selects the optimal one. More...
 
- Public Member Functions inherited from roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement
 ConfigurationSelectorLeastOverallAngularDisplacement (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
- Public Member Functions inherited from roboticslab::ConfigurationSelector
 ConfigurationSelector (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
+virtual ~ConfigurationSelector ()=default
 Destructor.
 
virtual bool configure (const std::vector< KDL::JntArray > &solutions)
 Stores initial values for a specific pose. More...
 
virtual void retrievePose (KDL::JntArray &q) const
 Queries computed joint values for the optimal configuration. More...
 
+ + + + +

+Private Member Functions

+bool applyConstraints (const Configuration &config)
 Determines whether the configuration is valid according to this selector's premises.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement
+std::vector< double > getDiffs (const KDL::JntArray &qGuess, const Configuration &config)
 Obtains vector of differences between current and desired joint values.
 
- Protected Attributes inherited from roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement
+int lastValid
 
- Protected Attributes inherited from roboticslab::ConfigurationSelector
+KDL::JntArray _qMin
 
+KDL::JntArray _qMax
 
+Configuration optimalConfig
 
+std::vector< Configurationconfigs
 
- Static Protected Attributes inherited from roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement
+static const int INVALID_CONFIG = -1
 
+

Detailed Description

+

Intended for use on lower-body limbs, specifically UC3M TEO's 6-DOF legs. Discards non-human-like configurations, such as the inverted knee pose.

+

Constructor & Destructor Documentation

+ +

◆ ConfigurationSelectorHumanoidGait()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::ConfigurationSelectorHumanoidGait::ConfigurationSelectorHumanoidGait (const KDL::JntArray & qMin,
const KDL::JntArray & qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinJoint array of minimum joint limits.
qMaxJoint array of maximum joint limits.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ findOptimalConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ConfigurationSelectorHumanoidGait::findOptimalConfiguration (const KDL::JntArray & qGuess)
+
+overridevirtual
+
+
Parameters
+ + +
qGuessJoint array of values for current robot position.
+
+
+
Returns
True/false on success/failure.
+ +

Reimplemented from roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorHumanoidGait.png b/classroboticslab_1_1ConfigurationSelectorHumanoidGait.png new file mode 100644 index 0000000000000000000000000000000000000000..0616357a6f7d3194f16a0583c906a073874ce4e8 GIT binary patch literal 1773 zcmcJQdr*>D0L4Em?Lp*hwTq!iI%GO+XfLx=dP(w0QIWQ-f~lEV5=n|~N@_J`4x7{` zMOo++_(;*z0tHOe!X~XuEiDyHG@qcA;G0-#XPe#qzdLj8`Q4fO*SY83o4Swa4PSs< z0000S#Cwqdz>H<$OY>%%W;^93zR9fi?e@hPjYbppYxE3u%@q@UQ&m-!d1?pBw44`B zA|3!to4$@Wb-wEWz=8>SZTJ1dOv}?k1;WL>>?br7@Tq$*a3xH!JwTiz5|NB7Cg~9(*x5)jfZ6z(a+X%;XZo<`gdwo zSr!~Y>ypRG=-B0wa!*ezmA`y{T3RC*+2L> zud{WG35$4wj99&K*;~spJfwSC(TKCo)%T5UV7~PeS-%Lj8B*sZhrPU5DrcVK!6DtT ziYUrLX#uD`aX{`l;nX2>lf0>$-5#(SyK*$a286yq;g}9veFX~{+7m)?5cx!`rRbJS zPBQ4lu$Hlyom1!>A-Yd{g~o4x@zT1Vw|D zR5m22hyD}X*92W;j(^7suhLJN;Q=gB3e2l+*joo&+V+)%_D6v^D=2`M-5%hH$$zNc z6UZEr56Q;~m0}O3qR-xlwgcDV5zx{L-{B4mB*}VL9S+KpZEBub1!hX9`{LSmpiYce zo;n28b_8BtV(mb8=Io`XVx9%YWB5 z{w~XOuE1FPQn4mQF**}bOc`R3p-Uq|=(zF(pq-T1!e^$!u9?A^|Zq}M})sKtvmEnuJ%NyOo ztH%lpN(oPJr$rl|QB;cH#RlsvU2&tSxj_}o&WZqTCI#VbCLMkVMvz8_)Q-f?uFBQe zkXs>!>9gpOyPZZhMF;9Mr)0ad6APm>@${u*`w=uacI2+bGRdJ_VqufNM@&g(j^5Sk zs@C8#e?08AEMDHum&Re8A0%k{4F#<9tMMI*YE1ap@TaBj6humTi_|Jcde|q|`p8HK z`4mSNN$`yR^zlsa(c27x(w0sisdx)oDHzj3=zHC-lEJvwdB&NSXFgTgen=ai^5rt* z-b#m??Q>hq$=$lAJX0gZqt6pJEO>L&4>r^LT3sZ07q0#FM4UMDPx6EyKu+Puum@{% z32nnc3B&HDg7-aKi3Sl}=LA`Uoz|3cJ`O6Xx&R(lD8%HI16w?<>yDD~Bzy2kQ!-ky zf`TV4{0?D=Y!1XB)#aL%W48kHtDb@gz;0p^Tn7AvH_;70!NMd!084Td%ulj1`41H{ zm32HLCp05xpxea^4WJzUcTL`lFihd(Jxf*Q*Urv;f3u$0Z2j<6O539mYunaYR>dtc zWsKIt9ZJ;9ifp~g%8p8s4d=M#zeZ?2QaU44B0V+vZE4GE zOE78v;k{JH>3YO#XQ?C6P)y)+E(lrMV{eAH(wtqoyIK|dZR8m06+^si&h+>+UM@=r zNSYR~y)yJMn-Mg2oC*hDce;eA^3N8zMV6p+u1&GzXnj$)I<&_&*7Tr>A625Jx-vW% z^rn@4_8MFLw?@IY$vo9+)tN@gTVAkt^U%lsSrf+sdqR|3PW1)G`=7rr%UAMgFKFgr z4aezI>swUfxOS(Zt;poT(tPt_n*wj~X1G7gHDgcp>vp1LQeu}m2KaJ2B6R-85ps31 zyFXCLAqZIvg4sk^QK`2X(|usp3X6a1!9R!8JY#7e&qKBju#u*}2>@|Kuc946=l=q? CrC7}X literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory-members.html b/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory-members.html new file mode 100644 index 000000000..1337b971c --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory-members.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelectorHumanoidGaitFactory Member List
+
+
+ +

This is the complete list of members for roboticslab::ConfigurationSelectorHumanoidGaitFactory, including all inherited members.

+ + + + + + + +
_qMax (defined in roboticslab::ConfigurationSelectorFactory)roboticslab::ConfigurationSelectorFactoryprotected
_qMin (defined in roboticslab::ConfigurationSelectorFactory)roboticslab::ConfigurationSelectorFactoryprotected
ConfigurationSelectorFactory(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorFactoryinlineprotected
ConfigurationSelectorHumanoidGaitFactory(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorHumanoidGaitFactoryinline
create() const overrideroboticslab::ConfigurationSelectorHumanoidGaitFactoryinlinevirtual
~ConfigurationSelectorFactory()=default (defined in roboticslab::ConfigurationSelectorFactory)roboticslab::ConfigurationSelectorFactoryvirtual
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html b/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html new file mode 100644 index 000000000..8f7ccd841 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html @@ -0,0 +1,204 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelectorHumanoidGaitFactory Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelectorHumanoidGaitFactory Class Reference
+
+
+ +

Implementation factory class for ConfigurationSelectorHumanoidGait. + More...

+ +

#include <ConfigurationSelector.hpp>

+
+Inheritance diagram for roboticslab::ConfigurationSelectorHumanoidGaitFactory:
+
+
+ + +roboticslab::ConfigurationSelectorFactory + +
+ + + + + + + + +

+Public Member Functions

 ConfigurationSelectorHumanoidGaitFactory (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
ConfigurationSelectorcreate () const override
 Creates an instance of the concrete class. More...
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from roboticslab::ConfigurationSelectorFactory
 ConfigurationSelectorFactory (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
- Protected Attributes inherited from roboticslab::ConfigurationSelectorFactory
+KDL::JntArray _qMin
 
+KDL::JntArray _qMax
 
+

Detailed Description

+

Constructor & Destructor Documentation

+ +

◆ ConfigurationSelectorHumanoidGaitFactory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::ConfigurationSelectorHumanoidGaitFactory::ConfigurationSelectorHumanoidGaitFactory (const KDL::JntArray & qMin,
const KDL::JntArray & qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinJoint array of minimum joint limits.
qMaxJoint array of maximum joint limits.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + +
ConfigurationSelector* roboticslab::ConfigurationSelectorHumanoidGaitFactory::create () const
+
+inlineoverridevirtual
+
+
Returns
A pointer to the base class of the inheritance tree.
+ +

Implements roboticslab::ConfigurationSelectorFactory.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.png b/classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..afa98aa707477a292b528bde9089d3a1043f6e93 GIT binary patch literal 1113 zcmeAS@N?(olHy`uVBq!ia0y~yU~~nt12~w0HB(+%a&{9#I=XApm6v}-w%6R;|Ga9a{-e)des1QSmwfz9)@8AEl{>0WYR}r3^?`o=8uzXqH9UIn zg|CRa?XQfrhvoME4L`k2chl*8mjkyhE*IbCe!I)?^~I&Xzgt_G|G)O)V_ThH;G})A z{^5$A@hk89f2?euvPA#t;}7-*;{AJ7J^#C%Km7lUtgh#NPm~aCTBK6BH7I6UDyQ!0 zO?&hjvB^r?D!Sc^=xU~ zsl)ldwu@|E{g->q^ylff>bD&%e!~+#b6dgL!*{*?PX4Lu3wO7$NsE8JVrFCQ#}899 z<&Ifi$?!azb4zpfnO)p7CtC%Z1Y3OCl~PfEdFCxm-@g%En>ku{mZq+M)%eHl@zP%z zhgEx*#ppgUOYtxKBGy?{V!gb~bk3zODUbU!LNo8%y|;ZkHOKCyB>&{cqW6Quo-4*L zk9eD5fAmd?%SF8vyJqQRZfca;u{b~IW~gM9?50(1{;=etVY)W%_bjr=%lHgQHoj|-l8vkxDA|~c zcn2GXu6N0){_^wAjjgs;>{(7>)$3D)4w%1QdyrvY=>MjqP$$N^-8rh&_Yd{mW%yu! wLg(38YpDnJA!xC_RwUR + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement Member List
+
+
+ +

This is the complete list of members for roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement, including all inherited members.

+ + + + + + + + + + + + + + +
_qMax (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
_qMin (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
configs (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
ConfigurationSelector(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorinline
ConfigurationSelectorLeastOverallAngularDisplacement(const KDL::JntArray &qMin, const KDL::JntArray &qMax)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementinline
configure(const std::vector< KDL::JntArray > &solutions)roboticslab::ConfigurationSelectorvirtual
findOptimalConfiguration(const KDL::JntArray &qGuess) overrideroboticslab::ConfigurationSelectorLeastOverallAngularDisplacementvirtual
getDiffs(const KDL::JntArray &qGuess, const Configuration &config)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementprotected
INVALID_CONFIG (defined in roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementprotectedstatic
lastValid (defined in roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement)roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementprotected
optimalConfig (defined in roboticslab::ConfigurationSelector)roboticslab::ConfigurationSelectorprotected
retrievePose(KDL::JntArray &q) constroboticslab::ConfigurationSelectorinlinevirtual
~ConfigurationSelector()=defaultroboticslab::ConfigurationSelectorvirtual
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html new file mode 100644 index 000000000..c5033f002 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html @@ -0,0 +1,250 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement Class Reference
+
+
+ +

IK solver configuration strategy selector based on the overall displacement of all joints. + More...

+ +

#include <ConfigurationSelector.hpp>

+
+Inheritance diagram for roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement:
+
+
+ + +roboticslab::ConfigurationSelector +roboticslab::ConfigurationSelectorHumanoidGait + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConfigurationSelectorLeastOverallAngularDisplacement (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
bool findOptimalConfiguration (const KDL::JntArray &qGuess) override
 Analyzes available configurations and selects the optimal one. More...
 
- Public Member Functions inherited from roboticslab::ConfigurationSelector
 ConfigurationSelector (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
+virtual ~ConfigurationSelector ()=default
 Destructor.
 
virtual bool configure (const std::vector< KDL::JntArray > &solutions)
 Stores initial values for a specific pose. More...
 
virtual void retrievePose (KDL::JntArray &q) const
 Queries computed joint values for the optimal configuration. More...
 
+ + + + +

+Protected Member Functions

+std::vector< double > getDiffs (const KDL::JntArray &qGuess, const Configuration &config)
 Obtains vector of differences between current and desired joint values.
 
+ + + + + + + + + + + + +

+Protected Attributes

+int lastValid
 
- Protected Attributes inherited from roboticslab::ConfigurationSelector
+KDL::JntArray _qMin
 
+KDL::JntArray _qMax
 
+Configuration optimalConfig
 
+std::vector< Configurationconfigs
 
+ + + +

+Static Protected Attributes

+static const int INVALID_CONFIG = -1
 
+

Detailed Description

+

Selects the configuration that entails the lowest sum of displacements across all joints. Works best for all revolute/all prismatic chain types. If attainable, it retains the previous configuration after the first successful choice and discards all other configs for the rest of the instance's lifetime.

+

Constructor & Destructor Documentation

+ +

◆ ConfigurationSelectorLeastOverallAngularDisplacement()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement::ConfigurationSelectorLeastOverallAngularDisplacement (const KDL::JntArray & qMin,
const KDL::JntArray & qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinJoint array of minimum joint limits.
qMaxJoint array of maximum joint limits.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ findOptimalConfiguration()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ConfigurationSelectorLeastOverallAngularDisplacement::findOptimalConfiguration (const KDL::JntArray & qGuess)
+
+overridevirtual
+
+
Parameters
+ + +
qGuessJoint array of values for current robot position.
+
+
+
Returns
True/false on success/failure.
+ +

Implements roboticslab::ConfigurationSelector.

+ +

Reimplemented in roboticslab::ConfigurationSelectorHumanoidGait.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/ScrewTheoryLib/ConfigurationSelector.hpp
  • +
  • libraries/ScrewTheoryLib/ConfigurationSelectorLeastOverallAngularDisplacement.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.png b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb39e1a5b715df95304c8db1a4222df3eb251aa GIT binary patch literal 1775 zcmcIlX;4#F7=4Mm$WrO>5U3!=B`OcJ3Md)`!Q`QY9Z?e%6%{O-K-eT=X|NI%NvI04 zRDytPE+`~)ZFwj?9r|pma^qV>NoICUV_~y)a&%NqMCaNyi zSq=bzDonC*1^^5b)juy?fSzl*%s41%J05hkou8jarDSj-B>uOXsQQeGii$;7Mf&J< zX|OZd1wfnrtkzoBZ2+*C4%=9{hGAr>vRhAft=Mno&^|h6tT4g)IxoNR@Wy_JGmnWI z*V!YpBe$LHU^{%j%n^rA$TVX^IQ-%PYu3q|U&OE$$j+qIJCs!rLjAK84y@flZ+;zr z${@7JmEL>d2*Oqh=|Xz~Qz}rtFwK3`sgo!k&Z0@tMPJKJY)YBM`kSQo$z=ebMR( zm&aOn_GDKLGzyLddHCR{_mx$4b4#sFO zwqrD6Q2weg4%})lNIWRmUi#g7be4K_7VUpy1$8<@@!+8#4KWjZTGE?TN4~CpM6yrT zJ*B$f8m~-egXzI{?ivW04m+QMl=q=8;ep!(}`=pTb zEEG}@*lpssKscCH(_g&KB&@^jnQpzOo|(=PqmHr=H`-M$snAqYJ_@O^B|X!bSFV#^ z7gmNT%EC*i5x!KtMH2og&`k)4_~vnfQ0`D%d`FhYJYByAkxb2>0;5*$nN6p1XcuF5 zPL`UhMW(BiEY=Toin&I~cgc45Hd>8%I0$CG*G`ZrO_oiaNkJmZg&cka!MKP%C{gAy z*$GGwx@hMnSgtw(!Sn zlQ`*Q`!b1nuqSKvj*ph*fyYFTiM+m2LaSHTkW>4^F2WqIc(Z;V)&Qf;h5+=9{{s``PL{V_mUnWuYK1rmLjtpW^h<_0?zz8bL3NHv7xNnchq z?}X+2H#{c>)DlF!6F-Sx5)hb*)afPpm*9&&XVuXSl-6Sj;XIoMbsYL};h0hWH|O&U zT27y^q^xxV&-Zt>1jtNG?W_mYb44W=6B91nI% znen{6AHU=<7$f&_Mre_jSE-jnH{MN$c*YF&2-kI#_Yh~^ObD@}4Nn0lnq2I_Cs>JIP^_z*dp;$bLFb@mx?2V zc&Vih8vSd(eqBjwTr#XT`sniAKoZ;uU0vUx&Y+7&@kJur%G$Rnp&s{!RdFOSUPrKJnup D?p#D9 literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory-members.html b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory-members.html new file mode 100644 index 000000000..8be410910 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory-members.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory Member List
+
+ + + + + diff --git a/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html new file mode 100644 index 000000000..9f5a4e45e --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html @@ -0,0 +1,204 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory Class Reference
+
+
+ +

Implementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement. + More...

+ +

#include <ConfigurationSelector.hpp>

+
+Inheritance diagram for roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory:
+
+
+ + +roboticslab::ConfigurationSelectorFactory + +
+ + + + + + + + +

+Public Member Functions

 ConfigurationSelectorLeastOverallAngularDisplacementFactory (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
ConfigurationSelectorcreate () const override
 Creates an instance of the concrete class. More...
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from roboticslab::ConfigurationSelectorFactory
 ConfigurationSelectorFactory (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Constructor. More...
 
- Protected Attributes inherited from roboticslab::ConfigurationSelectorFactory
+KDL::JntArray _qMin
 
+KDL::JntArray _qMax
 
+

Detailed Description

+

Constructor & Destructor Documentation

+ +

◆ ConfigurationSelectorLeastOverallAngularDisplacementFactory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory::ConfigurationSelectorLeastOverallAngularDisplacementFactory (const KDL::JntArray & qMin,
const KDL::JntArray & qMax 
)
+
+inline
+
+
Parameters
+ + + +
qMinJoint array of minimum joint limits.
qMaxJoint array of maximum joint limits.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + +
ConfigurationSelector* roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory::create () const
+
+inlineoverridevirtual
+
+
Returns
A pointer to the base class of the inheritance tree.
+ +

Implements roboticslab::ConfigurationSelectorFactory.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.png b/classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffebc926309edbb1b18d3e662efcff3f95c459f GIT binary patch literal 1294 zcmb_cdrXrD5dTP5RFD)6gZij+vw)5vMjqv%ov4T(NO1+?5F9WSMWDq>D*^?aCIzR~ zwWTIN?Q~#+jE4d(Eh0rwhKPu?AnjK`C=b^M2tsKAyU*=Ell`|#?(TQVFL%k^FIRYk z7-DC$(FOnjJMho}5&&38=|%AO&JX1LEC^xPYL*%n0HB4=gOndA0HR# z-_I=?H$%_*S7ySpOOvP%NL|&B<5w=CDxaQB+2phCjnmOE_3T(M{?4OcV^w|g^z4lU z9Z#8b;Y$4_HwYGBaPc|RjCNQzi09Fl!U+hhQH<9xpH;Sw8!9> zKC^dte8Q~hkwkCZN=`8;T)M~5o&9b-j%wQI%5)=NH%lY0;y0RA>(KpKA?C&*o&PqF zBA-rg%6S}cCvvLgyqQ6>)FcCoos*yT3YO zhimbwVW#?wQ#5AEtWic8e=($R@KjEjSSw<1$}YjHJI-;p1*P#uiKQ$nHjsx~xk1jb zBr-_sk5@h|HWDUhhLYJ15uM@e(c}r=e=l(rmmi^U+G~U5vN!GZV=!F&^3Q~lfw$f# z!qS0OE(Co2O@&o^Bo$F0)L7d`blPEW!^GV#_v-OIUA+sm)4 zM`Drohd!U=t(jm>2y?@;4N1?JSB?0v__-Jas<}d)GmTF8V^Z!{n`mEi*ktdd&2Qe( z|D=u9Fux~oc+9#{TcFxmI1qEqG2>qDpJ|)Xud1)B2JybsEc9-f(R-QP(xtyB-YKAn zSsA8Jq7hZ4|EFktZ0nNN(Cda4I+PE=Kyn)DMT)wlfiR$pn_=KQCVQ=E@3y$bL?&+# z&+t@^x{*Y&JlC5^hhAbbYnNVm3?fIrl_(sbaS6t{w`cJ;CegM&r8b^`w_tQ4!zp$) z`FHWQ`pP2t$EEps`bpt%DItyWfFWI39%4`S3yyX`W^9%|k51HoTzf)Shc?vu4-q-b zx1c!ZMStfL~#)sQyVhJ{}E(eW)>jyk~kRz+A-c6Bu0?H#ef9U{_A z0piQV)R)EYh1tg_%%=$wJB}gjL%qKddZs-X%Mx_fbk z@#Z@Hdxh07wnXjYn^MK++l})&3rbMZaeb+hFsP4ks@LDGCZ-BfYiOYKM*n@}NVin6 zL6&#NHmD`AWq4%b#=iX3QuK$CxjMJkjM$jiFZVhew>3Af*{H=E!F&f9s_1hedWlJ) eU=b-4w}Q~zj60oN-c<-cF8~ZC9;n`z@bljxb(LWN literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ConfigurationSelector_1_1Configuration-members.html b/classroboticslab_1_1ConfigurationSelector_1_1Configuration-members.html new file mode 100644 index 000000000..829e318f4 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelector_1_1Configuration-members.html @@ -0,0 +1,96 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ConfigurationSelector::Configuration Member List
+
+ + + + + diff --git a/classroboticslab_1_1ConfigurationSelector_1_1Configuration.html b/classroboticslab_1_1ConfigurationSelector_1_1Configuration.html new file mode 100644 index 000000000..ad5f41de7 --- /dev/null +++ b/classroboticslab_1_1ConfigurationSelector_1_1Configuration.html @@ -0,0 +1,135 @@ + + + + + + + +kinematics-dynamics: roboticslab::ConfigurationSelector::Configuration Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ConfigurationSelector::Configuration Class Reference
+
+
+ +

Helper class to store a specific robot configuration. +

+ +

#include <ConfigurationSelector.hpp>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Configuration ()
 Constructor.
 
+void store (const KDL::JntArray *q)
 Initializes joint values.
 
+void validate (const KDL::JntArray &qMin, const KDL::JntArray &qMax)
 Checks reachability against provided joint limits.
 
+const KDL::JntArray * retrievePose () const
 Retrieves stored joint values.
 
+bool isValid () const
 Whether this configuration is attainable or not.
 
+void invalidate ()
 Mark this configuration as invalid.
 
+ + + + + +

+Private Attributes

+const KDL::JntArray * q
 
+bool valid
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1FkStreamResponder-members.html b/classroboticslab_1_1FkStreamResponder-members.html new file mode 100644 index 000000000..4583cad23 --- /dev/null +++ b/classroboticslab_1_1FkStreamResponder-members.html @@ -0,0 +1,96 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::FkStreamResponder Member List
+
+
+ +

This is the complete list of members for roboticslab::FkStreamResponder, including all inherited members.

+ + + + + + + + + +
FkStreamResponder() (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponder
getLastStatData(std::vector< double > &x, int *state, double *timestamp, double timeout) (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponder
localArrivalTime (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponderprivate
mtx (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamRespondermutableprivate
onRead(yarp::os::Bottle &b) override (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponder
state (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponderprivate
timestamp (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponderprivate
x (defined in roboticslab::FkStreamResponder)roboticslab::FkStreamResponderprivate
+ + + + diff --git a/classroboticslab_1_1FkStreamResponder.html b/classroboticslab_1_1FkStreamResponder.html new file mode 100644 index 000000000..82998756d --- /dev/null +++ b/classroboticslab_1_1FkStreamResponder.html @@ -0,0 +1,132 @@ + + + + + + + +kinematics-dynamics: roboticslab::FkStreamResponder Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Responds to streaming FK messages. +

+ +

#include <CartesianControlClient.hpp>

+
+Inheritance diagram for roboticslab::FkStreamResponder:
+
+
+ +
+ + + + + + +

+Public Member Functions

+void onRead (yarp::os::Bottle &b) override
 
+bool getLastStatData (std::vector< double > &x, int *state, double *timestamp, double timeout)
 
+ + + + + + + + + + + +

+Private Attributes

+double localArrivalTime
 
+int state
 
+double timestamp
 
+std::vector< double > x
 
+std::mutex mtx
 
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/CartesianControlClient/CartesianControlClient.hpp
  • +
  • libraries/YarpPlugins/CartesianControlClient/FkStreamResponder.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1FkStreamResponder.png b/classroboticslab_1_1FkStreamResponder.png new file mode 100644 index 0000000000000000000000000000000000000000..077ba5078652a008aac1684777001482ef895667 GIT binary patch literal 1029 zcmeAS@N?(olHy`uVBq!ia0y~yU{nLL12~w0WV4t?1CWvk@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+#zPjt^hb_53@0MT6xD`ApZmIVhl{@@vmVMr5`eEtGGTr*v%TEi|E_**; zeRj(2f0YlPw#sMof9na9zET!<`QMejImufKv+l)ie;jK6T)a46SiAJ$u?bJs$6XfO z_`rAell6X=FPz(&u?^*6Hzso|onq z*_V6nYOsH)VtV~(z-va8m-;*A?^cODC^}a~b&|=XSt^<;rk+6_S(BDb07VGDZ(3UC z%$uAH^N)!;Fcr9EF?Ia-<>k-7xRO)hQKF_T93QEQlRg+*Y}EJ`Hp0w>RmOiC+bW1GOR2F-B!OIP?l?Rf2O`);=RQ;C)Q+h=Pm zy~O^2$=+oD{fjIn*S&&2|NdiL$n#^h8FRNsHNNDy z$7+RhZ@HIp{dm3is>zup*RNcgoPRmb_%}=6(&sN~ckAZ#Z}vLUUbDG?A+NwUIJl%) z?S7g;rH9P4gx^+|O5SELM0{YMbxdhaMwZ#!Le)f*>m~tDnm{r-UW|)Zyjl literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1FtCompensation-members.html b/classroboticslab_1_1FtCompensation-members.html new file mode 100644 index 000000000..1c11ef2c3 --- /dev/null +++ b/classroboticslab_1_1FtCompensation-members.html @@ -0,0 +1,123 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::FtCompensation Member List
+
+
+ +

This is the complete list of members for roboticslab::FtCompensation, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
applyImpedance(KDL::Wrench &wrench) (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
cartesian_cmd typedef (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
cartesianDevice (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
close() override (defined in roboticslab::FtCompensation)roboticslab::FtCompensation
command (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
compensateTool(KDL::Wrench &wrench) const (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
configure(yarp::os::ResourceFinder &rf) override (defined in roboticslab::FtCompensation)roboticslab::FtCompensation
dryRun (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
enableImpedance (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
forceDeadband (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
FtCompensation() (defined in roboticslab::FtCompensation)roboticslab::FtCompensationinline
getPeriod() override (defined in roboticslab::FtCompensation)roboticslab::FtCompensation
iCartesianControl (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
initialOffset (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
initialPose (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
interruptModule() override (defined in roboticslab::FtCompensation)roboticslab::FtCompensation
linDamping (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
linGain (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
linStiffness (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
previousPose (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
R_N_sensor (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
readSensor(KDL::Wrench &wrench) const (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
rotDamping (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
rotGain (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
rotStiffness (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
run() override (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprotected
sensor (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
sensorDevice (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
sensorIndex (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
toolCoM_N (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
toolWeight_0 (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
torqueDeadband (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
updateModule() override (defined in roboticslab::FtCompensation)roboticslab::FtCompensation
usingTool (defined in roboticslab::FtCompensation)roboticslab::FtCompensationprivate
~FtCompensation() override (defined in roboticslab::FtCompensation)roboticslab::FtCompensationinline
+ + + + diff --git a/classroboticslab_1_1FtCompensation.html b/classroboticslab_1_1FtCompensation.html new file mode 100644 index 000000000..85cbf9a7d --- /dev/null +++ b/classroboticslab_1_1FtCompensation.html @@ -0,0 +1,222 @@ + + + + + + + +kinematics-dynamics: roboticslab::FtCompensation Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Produces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app). +

+ +

#include <FtCompensation.hpp>

+
+Inheritance diagram for roboticslab::FtCompensation:
+
+
+ +
+ + + + + + + + + + + + +

+Public Member Functions

+bool configure (yarp::os::ResourceFinder &rf) override
 
+bool updateModule () override
 
+bool interruptModule () override
 
+double getPeriod () override
 
+bool close () override
 
+ + + +

+Protected Member Functions

+void run () override
 
+ + + +

+Private Types

+using cartesian_cmd = void(ICartesianControl::*)(const std::vector< double > &)
 
+ + + + + + + +

+Private Member Functions

+bool readSensor (KDL::Wrench &wrench) const
 
+bool compensateTool (KDL::Wrench &wrench) const
 
+bool applyImpedance (KDL::Wrench &wrench)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

+yarp::dev::PolyDriver cartesianDevice
 
+ICartesianControliCartesianControl
 
+int sensorIndex
 
+yarp::dev::PolyDriver sensorDevice
 
+yarp::dev::ISixAxisForceTorqueSensors * sensor
 
+KDL::Rotation R_N_sensor
 
+KDL::Vector toolCoM_N
 
+KDL::Wrench toolWeight_0
 
+KDL::Wrench initialOffset
 
+KDL::Frame initialPose
 
+KDL::Frame previousPose
 
+cartesian_cmd command
 
+bool dryRun
 
+bool usingTool
 
+bool enableImpedance
 
+double linGain
 
+double rotGain
 
+double linStiffness
 
+double rotStiffness
 
+double linDamping
 
+double rotDamping
 
+double forceDeadband
 
+double torqueDeadband
 
+
The documentation for this class was generated from the following files:
    +
  • programs/ftCompensation/FtCompensation.hpp
  • +
  • programs/ftCompensation/FtCompensation.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1FtCompensation.png b/classroboticslab_1_1FtCompensation.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4f9fb05972efec622597ed64323db00af48d80 GIT binary patch literal 977 zcmeAS@N?(olHy`uVBq!ia0y~yV2lH@12~w0WLn4DH$X}vz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op~!Cg-!q3>`gJ}UtT<|{%q$B$8~o@#rOK=^+%da{#m@Y zy+2P+j(^93@~F1Y=grHP?@tQYb>YRW3%gzHnJz7i_M8;5art-g$ZN^hjC_9DFDm*X z6xA~!WXtBN>3`%!e3xyzS|#sTT4MdJKydzrYSYs;X{v|kME$GndQsQ1WYOHXy_41~ zoO>hd?cGbaeSe8o>8D0+o)xwE&TsV`--kW-zOcPfy|=F{^-M{3S?-qozY9w(E>x?Y z7Cn3Zh3>SAp?fRedM=xlcDJO`W^wo=z8iOM>80J2nIFHmHgVFHE#6hP+w-1WRM{7I zGcH(WU7F^}tiG)EDyx5nzCF9YYUj=6+gIMp+`fHVUAF)3lHIo6m)Le!>8C~J{mGV` zwz9Np`UT6fd6SncoqKI}xznUSmW#i?-#jH`i}6v%psV)+-``HrT$#~cbzVor^HaM2 z``;k0dRMc`UgqCN9VgxEzo6}zhZ6ETUYigjJe=ZjQY#lhe%D7!DiyTthSbqhZzS;O}wLo4>5q&TO9V7kBS< z_`L5As~T73zSQm8oYathQ_5sp-0W#*w>)|mf0=2{e_!>>JD;rQ(#@ahrn9%?`?q_p z`Hw4){$;;D`}zER%kE_@=hnUV^3&J2M`^id_wt@<+qgyPfpA#9<-w~jpS@T*`L)Bk zz0y_H?PnM6NfrN~TebSpg_n0D_ugH#rtSHo4{xisFaJO1UYhV7O}F{WzrVb-yKeQ> zLTS@S(qGDc|9pHjw(Qd?i$C0F)ORsWVmG-p>vCz~jP?5Ge@pCT_}}=tpL;I@J0uhj mNDHBbYV#{#v@kKq*D<7Yp15qus+kGQe+-_kelF{r5}E)sz2hbT literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1GrabberResponder-members.html b/classroboticslab_1_1GrabberResponder-members.html new file mode 100644 index 000000000..38fd2ab59 --- /dev/null +++ b/classroboticslab_1_1GrabberResponder-members.html @@ -0,0 +1,95 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::GrabberResponder Member List
+
+
+ +

This is the complete list of members for roboticslab::GrabberResponder, including all inherited members.

+ + + + + + + + +
GrabberResponder() (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponderinline
iCartesianControl (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponderprivate
isStopped (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponderprivate
noApproach (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponderprivate
onRead(yarp::os::Bottle &b) override (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponder
setICartesianControlDriver(roboticslab::ICartesianControl *iCartesianControl) (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponderinline
setNoApproachSetting(bool noApproach) (defined in roboticslab::GrabberResponder)roboticslab::GrabberResponderinline
+ + + + diff --git a/classroboticslab_1_1GrabberResponder.html b/classroboticslab_1_1GrabberResponder.html new file mode 100644 index 000000000..2f7b64593 --- /dev/null +++ b/classroboticslab_1_1GrabberResponder.html @@ -0,0 +1,129 @@ + + + + + + + +kinematics-dynamics: roboticslab::GrabberResponder Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Callback class for dealing with incoming grabber data streams. +

+ +

#include <GrabberResponder.hpp>

+
+Inheritance diagram for roboticslab::GrabberResponder:
+
+
+ +
+ + + + + + + + +

+Public Member Functions

+void onRead (yarp::os::Bottle &b) override
 
+void setICartesianControlDriver (roboticslab::ICartesianControl *iCartesianControl)
 
+void setNoApproachSetting (bool noApproach)
 
+ + + + + + + +

+Private Attributes

+roboticslab::ICartesianControliCartesianControl
 
+bool isStopped
 
+bool noApproach
 
+
The documentation for this class was generated from the following files:
    +
  • programs/haarDetectionController/GrabberResponder.hpp
  • +
  • programs/haarDetectionController/GrabberResponder.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1GrabberResponder.png b/classroboticslab_1_1GrabberResponder.png new file mode 100644 index 0000000000000000000000000000000000000000..a1952a7f7ef986f9dcbd86855212a8394ef62492 GIT binary patch literal 1012 zcmeAS@N?(olHy`uVBq!ia0y~yU{nLL12~w0WV4t?1CWvk@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+&!(t(dTIJjni4ciMRTc%XV59> zS=Xc#Jd@?tKhxc{eBaaZ`;Lnf{XMIuPPlQhz<$H5bHDSL<7ee${Cqu2kN>%8?SGp{ zmD``zi|*T(k^HvV_V^8{oVQWFzb`*qDu23v^HbSfvg;qsi9d5!ecQWkwYDYSx@PqW zhDTji+Zul1%GT_tpD)gyu3cl0dR^<=y`XzmcTeo~KV$m!Bl~L4Nvug)o3EPuitJ~Q zxAoJ0wfyQqe76^^>vT?XUWDJb!6? zFP^@Hd&^Y6NxSvH>spG?XqW(qNnXr&q+aElU0_&V&l_=l(euJGv_jV zxc-AlgW;TpFN0)!{8LVag(i$CHab()8;ZSz53qU(Ie29c`E)2#08CvA`C#gkd1o!+~lW4|89vNJNWbGO=Zbg_qA@q?Vxgo zbsvf+|2Fk)*qt_OUirm4l~Ybz{ulH;|L*kj+CMve9{zs*d;jypZ*R`plz;1H_raJm zOAoF)*`9Y>wtU?~YvbDR%e!{Y`+R%*t$*QrUe4OJ*OKGeuD86uE^Pj=(D;Dvy*S_8 zL(aaxn=JFT#kqIX?kp9Wv+P+;R@~X(j=79^9|e8$F87+4_Q!PBR$7?GU61722-Ib_ zc;)>TW8cf1)zfQVT%Nz(|Fis+FQ0BcDZ6VCVKKXD+0C0Jdwx03&I@^&G&NKE?&tX5 zE5C25xN}D9?!uQ_F1>vhyOepy$=S0Q{xR&gYljBwKYm|^{b-?XV={B5Xj+>3ALcfR W70p~d8+w3Ql)=;0&t;ucLK6U0PvQ>% literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1HaarDetectionController-members.html b/classroboticslab_1_1HaarDetectionController-members.html new file mode 100644 index 000000000..857211f71 --- /dev/null +++ b/classroboticslab_1_1HaarDetectionController-members.html @@ -0,0 +1,101 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::HaarDetectionController Member List
+
+
+ +

This is the complete list of members for roboticslab::HaarDetectionController, including all inherited members.

+ + + + + + + + + + + + + + +
cartesianControlDevice (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
close() override (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionController
configure(yarp::os::ResourceFinder &rf) override (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionController
getPeriod() override (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionController
grabberPort (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
grabberResponder (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
iCartesianControl (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
interruptModule() override (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionController
iProximitySensors (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
period (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
sensorsClientDevice (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerprivate
updateModule() override (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionController
~HaarDetectionController() override (defined in roboticslab::HaarDetectionController)roboticslab::HaarDetectionControllerinline
+ + + + diff --git a/classroboticslab_1_1HaarDetectionController.html b/classroboticslab_1_1HaarDetectionController.html new file mode 100644 index 000000000..08ff12603 --- /dev/null +++ b/classroboticslab_1_1HaarDetectionController.html @@ -0,0 +1,147 @@ + + + + + + + +kinematics-dynamics: roboticslab::HaarDetectionController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::HaarDetectionController Class Reference
+
+
+ +

Create seek-and-follow trajectories based on Haar detection algorithms. +

+ +

#include <HaarDetectionController.hpp>

+
+Inheritance diagram for roboticslab::HaarDetectionController:
+
+
+ +
+ + + + + + + + + + + + +

+Public Member Functions

+bool configure (yarp::os::ResourceFinder &rf) override
 
+bool updateModule () override
 
+bool interruptModule () override
 
+bool close () override
 
+double getPeriod () override
 
+ + + + + + + + + + + + + + + +

+Private Attributes

+GrabberResponder grabberResponder
 
+yarp::os::BufferedPort< yarp::os::Bottle > grabberPort
 
+yarp::dev::PolyDriver cartesianControlDevice
 
+roboticslab::ICartesianControliCartesianControl
 
+yarp::dev::PolyDriver sensorsClientDevice
 
+roboticslab::IProximitySensors * iProximitySensors
 
+double period
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1HaarDetectionController.png b/classroboticslab_1_1HaarDetectionController.png new file mode 100644 index 0000000000000000000000000000000000000000..58fd767c92dda4b9bb12507b44943fe7ee0ce8fc GIT binary patch literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^H-R{SgBeIJzON7hq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0qCH(4Ln;{G&b>HkjRKF0f84VF|NGak z=3sgJCgyIDc$ZW)1MdXkq?)5=ay$|znJiG7sq%HHrt|-XUh?exgtZ6n^Cd{H+n=@ZujAvFoRJ&-*s3oVcwb82$P5pI8)JbXGql*>2*lId3~(uD)BzYB}wO$ofssK5sSb zcv>9q=K0I7d{f}0-E4~7%X*8_CViQ1dQxSjzORwzD{t)y<)3o^7jZhm8FzuUr=FG%(=XGvyFOF$%S$$3WeNg1i*l)ZyE!V1ND~U~Fz4?Q4 z=ILY1k#h@6AD{Si*?IEcZ`9F-ql};d3V0+tbe7Q5iH&9e9ln*+zzvSKj$%)tVao;3?t*sf?xUH YO=yxzn;iQXnDiJtUHx3vIVCg!00JUU;{X5v literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ICartesianControl-members.html b/classroboticslab_1_1ICartesianControl-members.html new file mode 100644 index 000000000..fa9bd6957 --- /dev/null +++ b/classroboticslab_1_1ICartesianControl-members.html @@ -0,0 +1,108 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ICartesianControl Member List
+
+
+ +

This is the complete list of members for roboticslab::ICartesianControl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
act(int command)=0roboticslab::ICartesianControlpure virtual
forc(const std::vector< double > &fd)=0roboticslab::ICartesianControlpure virtual
gcmp()=0roboticslab::ICartesianControlpure virtual
getParameter(int vocab, double *value)=0roboticslab::ICartesianControlpure virtual
getParameters(std::map< int, double > &params)=0roboticslab::ICartesianControlpure virtual
inv(const std::vector< double > &xd, std::vector< double > &q)=0roboticslab::ICartesianControlpure virtual
movi(const std::vector< double > &x)=0roboticslab::ICartesianControlpure virtual
movj(const std::vector< double > &xd)=0roboticslab::ICartesianControlpure virtual
movl(const std::vector< double > &xd)=0roboticslab::ICartesianControlpure virtual
movv(const std::vector< double > &xdotd)=0roboticslab::ICartesianControlpure virtual
relj(const std::vector< double > &xd)=0roboticslab::ICartesianControlpure virtual
setParameter(int vocab, double value)=0roboticslab::ICartesianControlpure virtual
setParameters(const std::map< int, double > &params)=0roboticslab::ICartesianControlpure virtual
stat(std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr)=0roboticslab::ICartesianControlpure virtual
stopControl()=0roboticslab::ICartesianControlpure virtual
tool(const std::vector< double > &x)=0roboticslab::ICartesianControlpure virtual
twist(const std::vector< double > &xdot)=0roboticslab::ICartesianControlpure virtual
wait(double timeout=0.0)=0roboticslab::ICartesianControlpure virtual
wrench(const std::vector< double > &w)=0roboticslab::ICartesianControlpure virtual
~ICartesianControl()=defaultroboticslab::ICartesianControlvirtual
+ + + + diff --git a/classroboticslab_1_1ICartesianControl.html b/classroboticslab_1_1ICartesianControl.html new file mode 100644 index 000000000..ea8942451 --- /dev/null +++ b/classroboticslab_1_1ICartesianControl.html @@ -0,0 +1,904 @@ + + + + + + + +kinematics-dynamics: roboticslab::ICartesianControl Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ICartesianControl Class Referenceabstract
+
+
+ +

Abstract base class for a cartesian controller. +

+ +

#include <ICartesianControl.h>

+
+Inheritance diagram for roboticslab::ICartesianControl:
+
+
+ + +roboticslab::BasicCartesianControl +roboticslab::CartesianControlClient + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~ICartesianControl ()=default
 Destructor.
 
RPC commands

+

RPC commands with success/failure response.

+
virtual bool stat (std::vector< double > &x, int *state=nullptr, double *timestamp=nullptr)=0
 Current state and position. More...
 
virtual bool inv (const std::vector< double > &xd, std::vector< double > &q)=0
 Inverse kinematics. More...
 
virtual bool movj (const std::vector< double > &xd)=0
 Move in joint space, absolute coordinates. More...
 
virtual bool relj (const std::vector< double > &xd)=0
 Move in joint space, relative coordinates. More...
 
virtual bool movl (const std::vector< double > &xd)=0
 Linear move to target position. More...
 
virtual bool movv (const std::vector< double > &xdotd)=0
 Linear move with given velocity. More...
 
virtual bool gcmp ()=0
 Gravity compensation. More...
 
virtual bool forc (const std::vector< double > &fd)=0
 Force control. More...
 
virtual bool stopControl ()=0
 Stop control. More...
 
virtual bool wait (double timeout=0.0)=0
 Wait until completion. More...
 
virtual bool tool (const std::vector< double > &x)=0
 Change tool. More...
 
virtual bool act (int command)=0
 Actuate tool. More...
 
Streaming commands

+

High-frequency streaming commands, no acknowledge.

+
virtual void movi (const std::vector< double > &x)=0
 Achieve pose. More...
 
virtual void twist (const std::vector< double > &xdot)=0
 Instantaneous velocity steps. More...
 
virtual void wrench (const std::vector< double > &w)=0
 Exert force. More...
 
Configuration accessors

+

Configuration setters and getters with success/failure response.

+
virtual bool setParameter (int vocab, double value)=0
 Set a configuration parameter. More...
 
virtual bool getParameter (int vocab, double *value)=0
 Retrieve a configuration parameter. More...
 
virtual bool setParameters (const std::map< int, double > &params)=0
 Set multiple configuration parameters. More...
 
virtual bool getParameters (std::map< int, double > &params)=0
 Retrieve multiple configuration parameters. More...
 
+

Member Function Documentation

+ +

◆ act()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::act (int command)
+
+pure virtual
+
+

Send control command to actuate the robot's tool, if available.

+
Parameters
+ + +
commandOne of available actuator vocabs.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ forc()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::forc (const std::vector< double > & fd)
+
+pure virtual
+
+

Apply desired forces in task space.

+
Parameters
+ + +
fd6-element vector describing desired force exerted by the TCP in cartesian space; first three elements denote linear force (Newton), last three denote torque (Newton*meters).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ gcmp()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool roboticslab::ICartesianControl::gcmp ()
+
+pure virtual
+
+

Enable gravity compensation.

+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ getParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianControl::getParameter (int vocab,
double * value 
)
+
+pure virtual
+
+

Ask the controller to retrieve a parameter of 'double' type.

+
Parameters
+ + + +
vocabYARP-encoded vocab (parameter key).
valueParameter value encoded as a double.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ getParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::getParameters (std::map< int, double > & params)
+
+pure virtual
+
+

Ask the controller to retrieve all available parameters at once.

+
Parameters
+ + +
paramsDictionary of YARP-encoded vocabs as keys and their values.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ inv()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianControl::inv (const std::vector< double > & xd,
std::vector< double > & q 
)
+
+pure virtual
+
+

Perform inverse kinematics (using robot position as initial guess), but do not move.

+
Parameters
+ + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qVector describing current position in joint space (meters or degrees).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ movi()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void roboticslab::ICartesianControl::movi (const std::vector< double > & x)
+
+pure virtual
+
+

Move to desired position instantaneously, no further intermediate calculations are expected other than computing the inverse kinematics.

+
Parameters
+ + +
x6-element vector describing desired instantaneous pose in cartesian space; first three elements denote translation (meters), last three denote rotation (radians).
+
+
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ movj()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::movj (const std::vector< double > & xd)
+
+pure virtual
+
+

Perform inverse kinematics and move to desired position in joint space using absolute coordinates.

+
Parameters
+ + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
See also
relj (relative coordinates)
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ movl()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::movl (const std::vector< double > & xd)
+
+pure virtual
+
+

Move to end position along a line trajectory.

+
Parameters
+ + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ movv()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::movv (const std::vector< double > & xdotd)
+
+pure virtual
+
+

Move along a line with constant velocity.

+
Parameters
+ + +
xdotd6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ relj()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::relj (const std::vector< double > & xd)
+
+pure virtual
+
+

Perform inverse kinematics and move to desired position in joint space using relative coordinates.

+
Parameters
+ + +
xd6-element vector describing desired offset in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
See also
movj (absolute coordinates)
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ setParameter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianControl::setParameter (int vocab,
double value 
)
+
+pure virtual
+
+

Ask the controller to store or update a parameter of 'double' type.

+
Parameters
+ + + +
vocabYARP-encoded vocab (parameter key).
valueParameter value encoded as a double.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ setParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::setParameters (const std::map< int, double > & params)
+
+pure virtual
+
+

Ask the controller to store or update multiple parameters at once.

+
Parameters
+ + +
paramsDictionary of YARP-encoded vocabs as keys and their values.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ stat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianControl::stat (std::vector< double > & x,
int * state = nullptr,
double * timestamp = nullptr 
)
+
+pure virtual
+
+

Inform on control state, get robot position and perform forward kinematics.

+
Parameters
+ + + + +
x6-element vector describing current position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
stateIdentifier for a cartesian control vocab.
timestampRemote encoder acquisition time.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ stopControl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool roboticslab::ICartesianControl::stopControl ()
+
+pure virtual
+
+

Halt current control loop if any and cease movement.

+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ tool()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::tool (const std::vector< double > & x)
+
+pure virtual
+
+

Unload current tool if any and append new tool frame to the kinematic chain.

+
Parameters
+ + +
x6-element vector describing new tool tip with regard to current end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ twist()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void roboticslab::ICartesianControl::twist (const std::vector< double > & xdot)
+
+pure virtual
+
+

Move in instantaneous velocity increments.

+
Parameters
+ + +
xdot6-element vector describing velocity increments in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
+
+
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ wait()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianControl::wait (double timeout = 0.0)
+
+pure virtual
+
+

Block execution until the movement is completed, errors occur or timeout is reached.

+
Parameters
+ + +
timeoutTimeout in seconds, '0.0' means no timeout.
+
+
+
Returns
true on success, false if errors occurred during the execution of the trajectory
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+ +

◆ wrench()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void roboticslab::ICartesianControl::wrench (const std::vector< double > & w)
+
+pure virtual
+
+

Make the TCP exert the desired force instantaneously.

+
Parameters
+ + +
w6-element vector describing desired force exerted by the TCP in cartesian space; first three elements denote linear force (Newton), last three denote torque (Newton*meters).
+
+
+ +

Implemented in roboticslab::CartesianControlClient, and roboticslab::BasicCartesianControl.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1ICartesianControl.png b/classroboticslab_1_1ICartesianControl.png new file mode 100644 index 0000000000000000000000000000000000000000..77f81919bcc7630984f2d587eb918e8b52082050 GIT binary patch literal 1027 zcmeAS@N?(olHy`uVBq!ia0y~yU|a!Y2XHV0$?98zMnFm;z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opyHd6K7#V@L(#+qrKiZC2oM>*qJV_g{7Y z+W9Vv?tWW4_t>(>H${B}EE?(=?cA=H-fd;rp>|y=s*8!k0SO<_@7~0?{gPR-?re4E zg}eVY{HhB1wt1Gt{`;D*GNQh__HJr;Rb?|hF0AX8^oQElJgJ@5ByFyDx0&``JMM^b-B@+fKr}!e-yydO7U(GON{oMkg7h z>k8awN`7?F-I;xG&6l?+zkID;_G;X&=&FjFV!4~owfFpWTO-lCUqo0he28CkYw-o~ zt=1>ws=AmmDs*1G%%75*ls?IN#roVS@AX|7pGiH>vYORaU;HvGhU?jzUF>?IpMCt& z?|iA@y6a!Q=~n25YfKS!ej*MoK_U(exbQliRj+rwvtm$T(7(j2!f@ZWi|I$*FFRkx z8e2`S2fue#dIdAw_XCEQV-{-2A%`LoyJF(L_rJ553KaErp9;ofFE00h#O=&B1bO{r zsMTCr)9{*ajmM?b6|SC_Qau7Ei8P3)dNRTp1+Jx&uDuT1BwBjY=H)wk&u6Q&=REH} zRTm~~F5d6D*J{J%YCBdd+gaNG)VwC`{O0nuMc&q)!#?M$?IM+#+5T5f+RkU*t0o!waaGTOY6Ow9C!C=Y~XvT84Ov`_( z-RYXOc-rl)lFKi&oYS}IxU08l?)NQwS8RT@WLvKPmDy}%ap%n!-3faoo9gzqH$74n z7~gY#NpD?}Q_LU#+~h9L^?g717u_@1P+YxF`P7zAYcw{WzWZ^_`Dr)YuKapCr;kB6 zZ}z_lD~>Z;uYVpL7^m&u{b_4-VD{3@8LFkz9xt<3ef99bxz{^4FP>HYW6?ajQ?Y@! zZ@4`xi#ti9>!ee=q`erwsme(m|~PrXv}Z{B$I zAY$J6`B&#IyY4sh+|ACIY<`!&&ky*$|5>$Yo$abay&9ff{mNdG9!*}PqRF7?HHm2g lc7}Q2(kVr + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ICartesianSolver Member List
+
+
+ +

This is the complete list of members for roboticslab::ICartesianSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + +
appendLink(const std::vector< double > &x)=0roboticslab::ICartesianSolverpure virtual
BASE_FRAME enum valueroboticslab::ICartesianSolver
changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj)=0roboticslab::ICartesianSolverpure virtual
diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame=BASE_FRAME)=0roboticslab::ICartesianSolverpure virtual
fwdKin(const std::vector< double > &q, std::vector< double > &x)=0roboticslab::ICartesianSolverpure virtual
getNumJoints()=0roboticslab::ICartesianSolverpure virtual
getNumTcps()=0roboticslab::ICartesianSolverpure virtual
invDyn(const std::vector< double > &q, std::vector< double > &t)=0roboticslab::ICartesianSolverpure virtual
invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)roboticslab::ICartesianSolverinlinevirtual
invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame=BASE_FRAME)=0roboticslab::ICartesianSolverpure virtual
invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame=BASE_FRAME)=0roboticslab::ICartesianSolverpure virtual
poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut)=0roboticslab::ICartesianSolverpure virtual
reference_frame enum nameroboticslab::ICartesianSolver
restoreOriginalChain()=0roboticslab::ICartesianSolverpure virtual
TCP_FRAME enum valueroboticslab::ICartesianSolver
~ICartesianSolver()=defaultroboticslab::ICartesianSolvervirtual
+ + + + diff --git a/classroboticslab_1_1ICartesianSolver.html b/classroboticslab_1_1ICartesianSolver.html new file mode 100644 index 000000000..faf95e3fe --- /dev/null +++ b/classroboticslab_1_1ICartesianSolver.html @@ -0,0 +1,760 @@ + + + + + + + +kinematics-dynamics: roboticslab::ICartesianSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ICartesianSolver Class Referenceabstract
+
+
+ +

Abstract base class for a cartesian solver. +

+ +

#include <ICartesianSolver.h>

+
+Inheritance diagram for roboticslab::ICartesianSolver:
+
+
+ + +roboticslab::AsibotSolver +roboticslab::KdlSolver +roboticslab::KdlTreeSolver + +
+ + + + + +

+Public Types

enum  reference_frame { BASE_FRAME = yarp::os::createVocab32('c','p','f','b') +, TCP_FRAME = yarp::os::createVocab32('c','p','f','t') + }
 Lists supported reference frames. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~ICartesianSolver ()=default
 Destructor.
 
virtual int getNumJoints ()=0
 Get number of joints for which the solver has been configured. More...
 
virtual int getNumTcps ()=0
 Get number of TCPs for which the solver has been configured. More...
 
virtual bool appendLink (const std::vector< double > &x)=0
 Append an additional link. More...
 
virtual bool restoreOriginalChain ()=0
 Restore original kinematic chain. More...
 
virtual bool changeOrigin (const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj)=0
 Change origin in which a pose is expressed. More...
 
virtual bool fwdKin (const std::vector< double > &q, std::vector< double > &x)=0
 Perform forward kinematics. More...
 
virtual bool poseDiff (const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut)=0
 Obtain difference between supplied pose inputs. More...
 
virtual bool invKin (const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame=BASE_FRAME)=0
 Perform inverse kinematics. More...
 
virtual bool diffInvKin (const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame=BASE_FRAME)=0
 Perform differential inverse kinematics. More...
 
virtual bool invDyn (const std::vector< double > &q, std::vector< double > &t)=0
 Perform inverse dynamics. More...
 
virtual bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)
 Perform inverse dynamics. More...
 
virtual bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame=BASE_FRAME)=0
 Perform inverse dynamics. More...
 
+

Member Enumeration Documentation

+ +

◆ reference_frame

+ +
+
+ + + +
Enumerator
BASE_FRAME 

Base frame.

+
TCP_FRAME 

End-effector frame (TCP)

+
+ +
+
+

Member Function Documentation

+ +

◆ appendLink()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::ICartesianSolver::appendLink (const std::vector< double > & x)
+
+pure virtual
+
+
Parameters
+ + +
x6-element vector describing end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ changeOrigin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::changeOrigin (const std::vector< double > & x_old_obj,
const std::vector< double > & x_new_old,
std::vector< double > & x_new_obj 
)
+
+pure virtual
+
+
Parameters
+ + + + +
x_old_obj_in6-element vector describing a pose in cartesian space, expressed in the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_old6-element vector describing a transformation from the new to the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_obj6-element vector describing a pose in cartesian space, expressed in the new frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ diffInvKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::diffInvKin (const std::vector< double > & q,
const std::vector< double > & xdot,
std::vector< double > & qdot,
reference_frame frame = BASE_FRAME 
)
+
+pure virtual
+
+
Parameters
+ + + + + +
qVector describing current position in joint space (meters or degrees).
xdot6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
qdotVector describing target velocity in joint space (meters/second or degrees/second).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ fwdKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::fwdKin (const std::vector< double > & q,
std::vector< double > & x 
)
+
+pure virtual
+
+
Parameters
+ + + +
qVector describing a position in joint space (meters or degrees).
x6-element vector describing same position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ getNumJoints()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int roboticslab::ICartesianSolver::getNumJoints ()
+
+pure virtual
+
+
Returns
Number of joints.
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ getNumTcps()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int roboticslab::ICartesianSolver::getNumTcps ()
+
+pure virtual
+
+
Returns
The number of TCPs.
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ invDyn() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::invDyn (const std::vector< double > & q,
const std::vector< double > & qdot,
const std::vector< double > & qdotdot,
const std::vector< double > & ftip,
std::vector< double > & t,
reference_frame frame = BASE_FRAME 
)
+
+pure virtual
+
+
Parameters
+ + + + + + + +
qVector describing current position in joint space (meters or degrees).
qdotVector describing current velocity in joint space (meters/second or degrees/second).
qdotdotVector describing current acceleration in joint space (meters/secondยฒ or degrees/secondยฒ).
ftipVector describing an external force applied to the robot tip, expressed in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
framePoints at the reference_frame ftip is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ invDyn() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::invDyn (const std::vector< double > & q,
const std::vector< double > & qdot,
const std::vector< double > & qdotdot,
const std::vector< std::vector< double >> & fexts,
std::vector< double > & t 
)
+
+inlinevirtual
+
+
Parameters
+ + + + + + +
qVector describing current position in joint space (meters or degrees).
qdotVector describing current velocity in joint space (meters/second or degrees/second).
qdotdotVector describing current acceleration in joint space (meters/secondยฒ or degrees/secondยฒ).
fextsvector of external forces applied to each robot segment, expressed in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
+
+
+
Returns
true on success, false otherwise
+ +
+
+ +

◆ invDyn() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::invDyn (const std::vector< double > & q,
std::vector< double > & t 
)
+
+pure virtual
+
+

Assumes null joint velocities and accelerations, and no external forces.

+
Parameters
+ + + +
qVector describing current position in joint space (meters or degrees).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ invKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::invKin (const std::vector< double > & xd,
const std::vector< double > & qGuess,
std::vector< double > & q,
reference_frame frame = BASE_FRAME 
)
+
+pure virtual
+
+
Parameters
+ + + + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qGuessVector describing current position in joint space (meters or degrees).
qVector describing target position in joint space (meters or degrees).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ poseDiff()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ICartesianSolver::poseDiff (const std::vector< double > & xLhs,
const std::vector< double > & xRhs,
std::vector< double > & xOut 
)
+
+pure virtual
+
+

The result is an infinitesimal displacement twist, i.e. a vector, for which the operation of addition makes physical sense.

+
Parameters
+ + + + +
xLhs6-element vector describing a pose in cartesian space (left hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xRhs6-element vector describing a pose in cartesian space (right hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xOut6-element vector describing a pose in cartesian space (result); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+ +

◆ restoreOriginalChain()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool roboticslab::ICartesianSolver::restoreOriginalChain ()
+
+pure virtual
+
+
Returns
true on success, false otherwise
+ +

Implemented in roboticslab::KdlTreeSolver, roboticslab::KdlSolver, and roboticslab::AsibotSolver.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1ICartesianSolver.png b/classroboticslab_1_1ICartesianSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1c41f952ccf9e6c6173ec227378d48378d6f8f GIT binary patch literal 1248 zcmeAS@N?(olHy`uVBq!ia0y~yV3Gr}12~w0Wa5P$UmztB;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z>@Fj;uuoF_;&8YqSXo#F8!~2-v2*g zetktlo!TXqsPt`*Gr1WzJz)IDbZ1hcMB8tM1O}_Z)uP+w7;HDnF|a8dsA7<4V0g`# zz`(SIy@8Q~BW%x_swv-cgLeK%(c|ftSE#=?_50j&svCeBb}nKMu+jfgp~aMP{`T}; zuTyLp{;|F8;{R-DnE&Yb{@0El{+NcZD_za*dik;C=56tQZPV{=kIR0W7A1AGilHR^ zvhv<3Pw#(O)^uoL<|;kENs~98dbc{+b@e5o`Em?@J(nNF4=dx6J+g`*iBPN7+Ze zMQv{@-v8Cj^7XuU)0e-u$7JvQ%J73VZ|kFL%nQ`7F&|)HiQs2o7D%vV;Bjd9%3#32 zh$eWzfah>6Q2cuulK}(Uf+L{dRKA>I&%kql5frL@Hg7h_Gq5G}gET8nBf>-!YZ{*U zTsE1RIcu38!=3is@0^~qW%Ny#Tp$m0p5-~-3o`n~4)$x<9g62jFR+YDYp9FhZ+K>5 z?ohnv48vbwl$|ZiYj{>Mlkr!gEyJwGcNoroG-Cd8xQfB#_)f-Ik5k!Rw0~vD=qqNv zY25etMnk5|@sGbPzFYJqJFLF5SmkbO%}mvodUwpXPmi1=m29iB((;<~B%o0c#w?JC z{QEBwDodXSYH5G^^i$pO`2VF3KNf%Uog@;l_l*5nd+}+rmR{$76!!FA)Rq5^-D@fz z@A3?Jt+=wn?`y@8DO2WEe0yHzd8zUI*9jpu`qygKR;2y)ymS5wkT-qtyydIsx~w?< zCvE<$zvYD+-~G(K>3)7!2~Ub|dDWV=hbD$C-fTOox4x&|w_pFseY5wQz4uMmezfoW zU6og16WRP%u2vI#J#m-r|79D2>FwpWsji1>pO<#It~T1JA{uk$@#jCY@7&DzTB!fx zqDs~_Sqf#-D4A`%v=BJqu&3**;kMKoh4Tq_h6itnvH6M z%WTtFJzwrzcYOON``t^5_iDW}wcRIgYQLxZ%GSvoUneZtf6~-e@IW zk!KP7p0C=WjI2H&1DJX|!3>1dorwNInd7%7=zg~7dz`x?`(1tI@d8P9&#bM$;)uc1 L)z4*}Q$iB}sjXJ( literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1InvalidDevice-members.html b/classroboticslab_1_1InvalidDevice-members.html new file mode 100644 index 000000000..9116bbb2d --- /dev/null +++ b/classroboticslab_1_1InvalidDevice-members.html @@ -0,0 +1,106 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::InvalidDevice Member List
+
+
+ +

This is the complete list of members for roboticslab::InvalidDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
acquireData() overrideroboticslab::InvalidDeviceinlinevirtual
acquireInterfaces() overrideroboticslab::InvalidDeviceinlinevirtual
actuatorState (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
CentroidTransform (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprivate
configureFixedAxes(const yarp::os::Value &v)roboticslab::StreamingDeviceprivate
data (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
fixedAxes (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
getActuatorState()roboticslab::StreamingDeviceinlinevirtual
hasValidMovementData() constroboticslab::StreamingDevicevirtual
iCartesianControl (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
initialize(bool usingStreamingPreset)roboticslab::StreamingDeviceinlinevirtual
InvalidDevice()roboticslab::InvalidDeviceinline
sendMovementCommand(double timestamp) overrideroboticslab::InvalidDeviceinlinevirtual
setCartesianControllerHandle(ICartesianControl *iCartesianControl)roboticslab::StreamingDeviceinline
stopMotion() overrideroboticslab::InvalidDeviceinlinevirtual
StreamingDevice(yarp::os::Searchable &config)roboticslab::StreamingDevice
transformData(double scaling)roboticslab::StreamingDevicevirtual
~StreamingDevice()roboticslab::StreamingDevicevirtual
+ + + + diff --git a/classroboticslab_1_1InvalidDevice.html b/classroboticslab_1_1InvalidDevice.html new file mode 100644 index 000000000..a2fbc568b --- /dev/null +++ b/classroboticslab_1_1InvalidDevice.html @@ -0,0 +1,258 @@ + + + + + + + +kinematics-dynamics: roboticslab::InvalidDevice Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Represents an invalid device. + More...

+ +

#include <StreamingDevice.hpp>

+
+Inheritance diagram for roboticslab::InvalidDevice:
+
+
+ + +roboticslab::StreamingDevice + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

InvalidDevice ()
 Creates an invalid device.
 
bool acquireInterfaces () override
 Acquires plugin interfaces. More...
 
bool acquireData () override
 Acquires data from remote device. More...
 
void sendMovementCommand (double timestamp) override
 Sends movement command to the cartesian controller. More...
 
+void stopMotion () override
 Sends a movement command that would stop motion.
 
- Public Member Functions inherited from roboticslab::StreamingDevice
 StreamingDevice (yarp::os::Searchable &config)
 Constructor. More...
 
+virtual ~StreamingDevice ()
 Destructor.
 
virtual bool initialize (bool usingStreamingPreset)
 Perform any custom initialization needed. This method is called after the successful creation of the device and once all interface handles are acquired. More...
 
virtual bool transformData (double scaling)
 Performs required operations on stored data. More...
 
virtual int getActuatorState ()
 If actuator command data is available, return its current state. More...
 
virtual bool hasValidMovementData () const
 Checks whether the device may forward acquired and processed data to the controller. More...
 
void setCartesianControllerHandle (ICartesianControl *iCartesianControl)
 Stores handle to an ICartesianControl instance. More...
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from roboticslab::StreamingDevice
+ICartesianControliCartesianControl
 
+std::vector< double > data
 
+std::vector< bool > fixedAxes
 
+int actuatorState
 
+

Detailed Description

+

A call to isValid() and other interface methods should yield false.

+

Member Function Documentation

+ +

◆ acquireData()

+ +
+
+ + + + + +
+ + + + + + + +
bool roboticslab::InvalidDevice::acquireData ()
+
+inlineoverridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ acquireInterfaces()

+ +
+
+ + + + + +
+ + + + + + + +
bool roboticslab::InvalidDevice::acquireInterfaces ()
+
+inlineoverridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ sendMovementCommand()

+ +
+
+ + + + + +
+ + + + + + + + +
void roboticslab::InvalidDevice::sendMovementCommand (double timestamp)
+
+inlineoverridevirtual
+
+
Parameters
+ + +
timestampCurrent timestamp.
+
+
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1InvalidDevice.png b/classroboticslab_1_1InvalidDevice.png new file mode 100644 index 0000000000000000000000000000000000000000..7a02c2dbe56595f6005e3d1779c83b08acf5b45c GIT binary patch literal 1063 zcmeAS@N?(olHy`uVBq!ia0vp^8-TcjgBeH`I80mvq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0w|TlahEy=Vo%?dqCo3M-+g@j1{JsC9 z?MUZSRq1B^`Kwv%8q9aD^?0PO*kUk=W7Vq1CmKUTt51Q5SIh_4*``g&TYE}1%o2E`8s&bDMS-cC5;Z{@yV8q{i(c5$jNX zu>)6sn5|lM>zXhB>MV^bI|A%Poxk$z*!kNgYF%Tv|I_n(nC?A)yp0zAf#jvxZN10tr@TDe*SgBSZF!9Q>IJ<=3M=$*h53N%zaH{_|8*lzUh>6?eOE56zddQ^ z7L#{d)R%BaE&jdNn45Kj;r4$%zoq78z0A5NGgp4kq1>9Z*{phIQ<#^wOG~SGWS#6> z8Qiw!>x8*HO0L@b`WlO!{Tnw=$Y4m{eq&N*d==-O^jx##&7TZEd^~(=vflS~ESk3` zwtuf#HSaa&hsP3jYK=M2rWS{wI#p0kZJy|~7IyHZAu%95-J z>k492U0n7pY&Uq5|5fA!7l?A47I^$Q($nmk;>nilv*B|d#}rlXbEhPAAF z-rlNL3-0yXYO<}!l<~4oL3Zy?CZFu89f{2jSuZ1Jb!@pdyWMPE4O5Oo!GeTRW$l-oI4~ P%+(B@u6{1-oD!M + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::KdlSolver Member List
+
+
+ +

This is the complete list of members for roboticslab::KdlSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendLink(const std::vector< double > &x) overrideroboticslab::KdlSolvervirtual
BASE_FRAME enum valueroboticslab::ICartesianSolver
chainroboticslab::KdlSolverprivate
changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) overrideroboticslab::KdlSolvervirtual
close() override (defined in roboticslab::KdlSolver)roboticslab::KdlSolver
diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) overrideroboticslab::KdlSolvervirtual
fkSolverPos (defined in roboticslab::KdlSolver)roboticslab::KdlSolverprivate
fwdKin(const std::vector< double > &q, std::vector< double > &x) overrideroboticslab::KdlSolvervirtual
getNumJoints() overrideroboticslab::KdlSolvervirtual
getNumTcps() overrideroboticslab::KdlSolvervirtual
idSolver (defined in roboticslab::KdlSolver)roboticslab::KdlSolverprivate
ikSolverPos (defined in roboticslab::KdlSolver)roboticslab::KdlSolverprivate
ikSolverVel (defined in roboticslab::KdlSolver)roboticslab::KdlSolverprivate
invDyn(const std::vector< double > &q, std::vector< double > &t) overrideroboticslab::KdlSolvervirtual
invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) overrideroboticslab::KdlSolvervirtual
roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)roboticslab::ICartesianSolverinlinevirtual
invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) overrideroboticslab::KdlSolvervirtual
isQuiet (defined in roboticslab::KdlSolver)roboticslab::KdlSolverprivate
logc() const (defined in roboticslab::KdlSolver)roboticslab::KdlSolverinlineprivate
mtx (defined in roboticslab::KdlSolver)roboticslab::KdlSolvermutableprivate
open(yarp::os::Searchable &config) override (defined in roboticslab::KdlSolver)roboticslab::KdlSolver
originalChainroboticslab::KdlSolverprivate
poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) overrideroboticslab::KdlSolvervirtual
reference_frame enum nameroboticslab::ICartesianSolver
restoreOriginalChain() overrideroboticslab::KdlSolvervirtual
TCP_FRAME enum valueroboticslab::ICartesianSolver
~ICartesianSolver()=defaultroboticslab::ICartesianSolvervirtual
+ + + + diff --git a/classroboticslab_1_1KdlSolver.html b/classroboticslab_1_1KdlSolver.html new file mode 100644 index 000000000..708c4c875 --- /dev/null +++ b/classroboticslab_1_1KdlSolver.html @@ -0,0 +1,761 @@ + + + + + + + +kinematics-dynamics: roboticslab::KdlSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The KdlSolver class implements ICartesianSolver. +

+ +

#include <KdlSolver.hpp>

+
+Inheritance diagram for roboticslab::KdlSolver:
+
+
+ + +roboticslab::ICartesianSolver + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

int getNumJoints () override
 Get number of joints for which the solver has been configured. More...
 
int getNumTcps () override
 Get number of TCPs for which the solver has been configured. More...
 
bool appendLink (const std::vector< double > &x) override
 Append an additional link. More...
 
bool restoreOriginalChain () override
 Restore original kinematic chain. More...
 
bool changeOrigin (const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) override
 Change origin in which a pose is expressed. More...
 
bool fwdKin (const std::vector< double > &q, std::vector< double > &x) override
 Perform forward kinematics. More...
 
bool poseDiff (const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) override
 Obtain difference between supplied pose inputs. More...
 
bool invKin (const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) override
 Perform inverse kinematics. More...
 
bool diffInvKin (const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) override
 Perform differential inverse kinematics. More...
 
bool invDyn (const std::vector< double > &q, std::vector< double > &t) override
 Perform inverse dynamics. More...
 
bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override
 Perform inverse dynamics. More...
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
- Public Member Functions inherited from roboticslab::ICartesianSolver
+virtual ~ICartesianSolver ()=default
 Destructor.
 
virtual bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)
 Perform inverse dynamics. More...
 
+ + + +

+Private Member Functions

+const yarp::os::LogComponent & logc () const
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

+std::mutex mtx
 
KDL::Chain chain
 
KDL::Chain originalChain
 
+KDL::ChainFkSolverPos * fkSolverPos {nullptr}
 
+KDL::ChainIkSolverPos * ikSolverPos {nullptr}
 
+KDL::ChainIkSolverVel * ikSolverVel {nullptr}
 
+KDL::ChainIdSolver * idSolver {nullptr}
 
+bool isQuiet
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ICartesianSolver
enum  reference_frame { BASE_FRAME = yarp::os::createVocab32('c','p','f','b') +, TCP_FRAME = yarp::os::createVocab32('c','p','f','t') + }
 Lists supported reference frames. More...
 
+

Member Function Documentation

+ +

◆ appendLink()

+ +
+
+ + + + + +
+ + + + + + + + +
bool KdlSolver::appendLink (const std::vector< double > & x)
+
+overridevirtual
+
+
Parameters
+ + +
x6-element vector describing end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ changeOrigin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlSolver::changeOrigin (const std::vector< double > & x_old_obj,
const std::vector< double > & x_new_old,
std::vector< double > & x_new_obj 
)
+
+overridevirtual
+
+
Parameters
+ + + + +
x_old_obj_in6-element vector describing a pose in cartesian space, expressed in the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_old6-element vector describing a transformation from the new to the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_obj6-element vector describing a pose in cartesian space, expressed in the new frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ diffInvKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlSolver::diffInvKin (const std::vector< double > & q,
const std::vector< double > & xdot,
std::vector< double > & qdot,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + +
qVector describing current position in joint space (meters or degrees).
xdot6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
qdotVector describing target velocity in joint space (meters/second or degrees/second).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ fwdKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool KdlSolver::fwdKin (const std::vector< double > & q,
std::vector< double > & x 
)
+
+overridevirtual
+
+
Parameters
+ + + +
qVector describing a position in joint space (meters or degrees).
x6-element vector describing same position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ getNumJoints()

+ +
+
+ + + + + +
+ + + + + + + +
int KdlSolver::getNumJoints ()
+
+overridevirtual
+
+
Returns
Number of joints.
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ getNumTcps()

+ +
+
+ + + + + +
+ + + + + + + +
int KdlSolver::getNumTcps ()
+
+overridevirtual
+
+
Returns
The number of TCPs.
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invDyn() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlSolver::invDyn (const std::vector< double > & q,
const std::vector< double > & qdot,
const std::vector< double > & qdotdot,
const std::vector< double > & ftip,
std::vector< double > & t,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + + + +
qVector describing current position in joint space (meters or degrees).
qdotVector describing current velocity in joint space (meters/second or degrees/second).
qdotdotVector describing current acceleration in joint space (meters/secondยฒ or degrees/secondยฒ).
ftipVector describing an external force applied to the robot tip, expressed in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
framePoints at the reference_frame ftip is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invDyn() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool KdlSolver::invDyn (const std::vector< double > & q,
std::vector< double > & t 
)
+
+overridevirtual
+
+

Assumes null joint velocities and accelerations, and no external forces.

+
Parameters
+ + + +
qVector describing current position in joint space (meters or degrees).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlSolver::invKin (const std::vector< double > & xd,
const std::vector< double > & qGuess,
std::vector< double > & q,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qGuessVector describing current position in joint space (meters or degrees).
qVector describing target position in joint space (meters or degrees).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ poseDiff()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlSolver::poseDiff (const std::vector< double > & xLhs,
const std::vector< double > & xRhs,
std::vector< double > & xOut 
)
+
+overridevirtual
+
+

The result is an infinitesimal displacement twist, i.e. a vector, for which the operation of addition makes physical sense.

+
Parameters
+ + + + +
xLhs6-element vector describing a pose in cartesian space (left hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xRhs6-element vector describing a pose in cartesian space (right hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xOut6-element vector describing a pose in cartesian space (result); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ restoreOriginalChain()

+ +
+
+ + + + + +
+ + + + + + + +
bool KdlSolver::restoreOriginalChain ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+

Member Data Documentation

+ +

◆ chain

+ +
+
+ + + + + +
+ + + + +
KDL::Chain roboticslab::KdlSolver::chain
+
+private
+
+

The chain.

+ +
+
+ +

◆ originalChain

+ +
+
+ + + + + +
+ + + + +
KDL::Chain roboticslab::KdlSolver::originalChain
+
+private
+
+

To store a copy of the original chain.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/KdlSolver/KdlSolver.hpp
  • +
  • libraries/YarpPlugins/KdlSolver/DeviceDriverImpl.cpp
  • +
  • libraries/YarpPlugins/KdlSolver/ICartesianSolverImpl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1KdlSolver.png b/classroboticslab_1_1KdlSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..4769dcbf6154fff4b7128bf56a4c0f017cbf8be2 GIT binary patch literal 1085 zcmeAS@N?(olHy`uVBq!ia0y~yU`zwD12~w0r0g1f1t296;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|zzr0cx}=CYZSLr>UKr_e zWbOqWrAK}lVuFRwi_fZmzVvzVsw_#TvOBxY3)fn9df3Y8N@v_&mY!|%-reQaQ~PA;>O)Kau9y62vHoxCv40nC zt}8p@{eIhxC$mgLi#UHn(_O(n9jyWmw9AA@9Q}~v&!=CjL=2Lg;%fM zb1kO6a+z&b{om=*v0Gkl{6FjJ^6Md?ThEwWm!IzcT7RBN+d|VEqu(jI)_ZNVjZfXG zQ=c7bTIwTr*k<i`f$G6_pySV?I_+@|7>+8)o?Nqt#{48imNJl8b1LSuir6ey7rUoxGFGhm=j60`)hb~0hF+a}Va=*nei>n*rRj-h zHJ5JT>3w$lZCNxM1OGb)?oBsp+tV2G-+ec=)i1lhQ1Za+<9GF5R&M;wcb4IQ;|(Up zJDg`3-nFDLlsg$WSOewfUf_A)m%&z`Zo<4ncoszZ&in7bCo!;S@7HAD7KDls(1I#$ z;_junmifRWozmxMR(yUt>+K5n)$_wZ3Gj)>ys2{Y{g3{&JlkNYXEOc3x}Bo(v%are zK27(#-16P?pYMMje(tnwSk0`3X79gizReDBlkZ=oQ(owOf8|cA6U#%-EHUJ{+n2L5 z@@)st>n(p7nB!-i-P`Q=d80#keeS7QKXZTin=;S&&~7?=kzqz&SE2RN=#6Li&OV>z zziCtaqT5XFXY*J5sXA-F?(ErDJAa34_WZGbrDgba_d{FPJ~n;deQerH)qw88nL*y( zu{)-HmtnVfsBOypM-NZX>8!C_I%OK;f$sW$F5P+a?@mev=5+>7S3j3^P6 + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::KdlTreeSolver Member List
+
+
+ +

This is the complete list of members for roboticslab::KdlTreeSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendLink(const std::vector< double > &x) overrideroboticslab::KdlTreeSolvervirtual
BASE_FRAME enum valueroboticslab::ICartesianSolver
changeOrigin(const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) overrideroboticslab::KdlTreeSolvervirtual
close() override (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolver
diffInvKin(const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) overrideroboticslab::KdlTreeSolvervirtual
endpoints (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
fkSolverPos (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
fwdKin(const std::vector< double > &q, std::vector< double > &x) overrideroboticslab::KdlTreeSolvervirtual
getNumJoints() overrideroboticslab::KdlTreeSolvervirtual
getNumTcps() overrideroboticslab::KdlTreeSolvervirtual
idSolver (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
ikSolverPos (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
ikSolverVel (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
invDyn(const std::vector< double > &q, std::vector< double > &t) overrideroboticslab::KdlTreeSolvervirtual
invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) overrideroboticslab::KdlTreeSolvervirtual
roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)roboticslab::ICartesianSolverinlinevirtual
invKin(const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) overrideroboticslab::KdlTreeSolvervirtual
KdlTreeSolver() (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverinline
mergedEndpoints (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
open(yarp::os::Searchable &config) override (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolver
poseDiff(const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) overrideroboticslab::KdlTreeSolvervirtual
reference_frame enum nameroboticslab::ICartesianSolver
restoreOriginalChain() overrideroboticslab::KdlTreeSolvervirtual
TCP_FRAME enum valueroboticslab::ICartesianSolver
tree (defined in roboticslab::KdlTreeSolver)roboticslab::KdlTreeSolverprotected
~ICartesianSolver()=defaultroboticslab::ICartesianSolvervirtual
+ + + + diff --git a/classroboticslab_1_1KdlTreeSolver.html b/classroboticslab_1_1KdlTreeSolver.html new file mode 100644 index 000000000..6297f3e74 --- /dev/null +++ b/classroboticslab_1_1KdlTreeSolver.html @@ -0,0 +1,706 @@ + + + + + + + +kinematics-dynamics: roboticslab::KdlTreeSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The KdlTreeSolver class implements ICartesianSolver. +

+ +

#include <KdlTreeSolver.hpp>

+
+Inheritance diagram for roboticslab::KdlTreeSolver:
+
+
+ + +roboticslab::ICartesianSolver + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

int getNumJoints () override
 Get number of joints for which the solver has been configured. More...
 
int getNumTcps () override
 Get number of TCPs for which the solver has been configured. More...
 
bool appendLink (const std::vector< double > &x) override
 Append an additional link. More...
 
bool restoreOriginalChain () override
 Restore original kinematic chain. More...
 
bool changeOrigin (const std::vector< double > &x_old_obj, const std::vector< double > &x_new_old, std::vector< double > &x_new_obj) override
 Change origin in which a pose is expressed. More...
 
bool fwdKin (const std::vector< double > &q, std::vector< double > &x) override
 Perform forward kinematics. More...
 
bool poseDiff (const std::vector< double > &xLhs, const std::vector< double > &xRhs, std::vector< double > &xOut) override
 Obtain difference between supplied pose inputs. More...
 
bool invKin (const std::vector< double > &xd, const std::vector< double > &qGuess, std::vector< double > &q, reference_frame frame) override
 Perform inverse kinematics. More...
 
bool diffInvKin (const std::vector< double > &q, const std::vector< double > &xdot, std::vector< double > &qdot, reference_frame frame) override
 Perform differential inverse kinematics. More...
 
bool invDyn (const std::vector< double > &q, std::vector< double > &t) override
 Perform inverse dynamics. More...
 
bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override
 Perform inverse dynamics. More...
 
+bool open (yarp::os::Searchable &config) override
 
+bool close () override
 
- Public Member Functions inherited from roboticslab::ICartesianSolver
+virtual ~ICartesianSolver ()=default
 Destructor.
 
virtual bool invDyn (const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)
 Perform inverse dynamics. More...
 
+ + + + + + + + + + + + + + + +

+Protected Attributes

+std::vector< std::string > endpoints
 
+std::map< std::string, std::string > mergedEndpoints
 
+KDL::Tree tree
 
+KDL::TreeFkSolverPos * fkSolverPos
 
+KDL::TreeIkSolverPos * ikSolverPos
 
+KDL::TreeIkSolverVel * ikSolverVel
 
+KDL::TreeIdSolver * idSolver
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ICartesianSolver
enum  reference_frame { BASE_FRAME = yarp::os::createVocab32('c','p','f','b') +, TCP_FRAME = yarp::os::createVocab32('c','p','f','t') + }
 Lists supported reference frames. More...
 
+

Member Function Documentation

+ +

◆ appendLink()

+ +
+
+ + + + + +
+ + + + + + + + +
bool KdlTreeSolver::appendLink (const std::vector< double > & x)
+
+overridevirtual
+
+
Parameters
+ + +
x6-element vector describing end-effector frame in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ changeOrigin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::changeOrigin (const std::vector< double > & x_old_obj,
const std::vector< double > & x_new_old,
std::vector< double > & x_new_obj 
)
+
+overridevirtual
+
+
Parameters
+ + + + +
x_old_obj_in6-element vector describing a pose in cartesian space, expressed in the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_old6-element vector describing a transformation from the new to the old frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
x_new_obj6-element vector describing a pose in cartesian space, expressed in the new frame; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ diffInvKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::diffInvKin (const std::vector< double > & q,
const std::vector< double > & xdot,
std::vector< double > & qdot,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + +
qVector describing current position in joint space (meters or degrees).
xdot6-element vector describing desired velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
qdotVector describing target velocity in joint space (meters/second or degrees/second).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ fwdKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::fwdKin (const std::vector< double > & q,
std::vector< double > & x 
)
+
+overridevirtual
+
+
Parameters
+ + + +
qVector describing a position in joint space (meters or degrees).
x6-element vector describing same position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ getNumJoints()

+ +
+
+ + + + + +
+ + + + + + + +
int KdlTreeSolver::getNumJoints ()
+
+overridevirtual
+
+
Returns
Number of joints.
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ getNumTcps()

+ +
+
+ + + + + +
+ + + + + + + +
int KdlTreeSolver::getNumTcps ()
+
+overridevirtual
+
+
Returns
The number of TCPs.
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invDyn() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::invDyn (const std::vector< double > & q,
const std::vector< double > & qdot,
const std::vector< double > & qdotdot,
const std::vector< double > & ftip,
std::vector< double > & t,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + + + +
qVector describing current position in joint space (meters or degrees).
qdotVector describing current velocity in joint space (meters/second or degrees/second).
qdotdotVector describing current acceleration in joint space (meters/secondยฒ or degrees/secondยฒ).
ftipVector describing an external force applied to the robot tip, expressed in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
framePoints at the reference_frame ftip is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invDyn() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::invDyn (const std::vector< double > & q,
std::vector< double > & t 
)
+
+overridevirtual
+
+

Assumes null joint velocities and accelerations, and no external forces.

+
Parameters
+ + + +
qVector describing current position in joint space (meters or degrees).
t6-element vector describing desired forces in cartesian space; first three elements denote translational acceleration (meters/secondยฒ), last three denote angular acceleration (radians/secondยฒ).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ invKin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::invKin (const std::vector< double > & xd,
const std::vector< double > & qGuess,
std::vector< double > & q,
reference_frame frame 
)
+
+overridevirtual
+
+
Parameters
+ + + + + +
xd6-element vector describing desired position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
qGuessVector describing current position in joint space (meters or degrees).
qVector describing target position in joint space (meters or degrees).
framePoints at the reference_frame the desired position is expressed in.
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ poseDiff()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool KdlTreeSolver::poseDiff (const std::vector< double > & xLhs,
const std::vector< double > & xRhs,
std::vector< double > & xOut 
)
+
+overridevirtual
+
+

The result is an infinitesimal displacement twist, i.e. a vector, for which the operation of addition makes physical sense.

+
Parameters
+ + + + +
xLhs6-element vector describing a pose in cartesian space (left hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xRhs6-element vector describing a pose in cartesian space (right hand side); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
xOut6-element vector describing a pose in cartesian space (result); first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
+
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+ +

◆ restoreOriginalChain()

+ +
+
+ + + + + +
+ + + + + + + +
bool KdlTreeSolver::restoreOriginalChain ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::ICartesianSolver.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/KdlTreeSolver/KdlTreeSolver.hpp
  • +
  • libraries/YarpPlugins/KdlTreeSolver/DeviceDriverImpl.cpp
  • +
  • libraries/YarpPlugins/KdlTreeSolver/ICartesianSolverImpl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1KdlTreeSolver.png b/classroboticslab_1_1KdlTreeSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed17b4eecd26eb144496da6c8db09b75c7064cd GIT binary patch literal 1109 zcmeAS@N?(olHy`uVBq!ia0y~yU`zwD12~w0r0g1f1t296;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|!2HD1#WAFU@$KBVd8-Y09QR^Wu%MB zoGUs?LVj6df}GEb&x#j5eZ73uE6G(g`^)7Y?R=)B^tNJ3O{?ziX=^`xwNXmy4}WTx zk<)+q&$6xMzgMoZ+y^w_&PSKe>!MuF6s|p6JHOww{%YQYy`_EZ--Qf! z>(|+@&2BuIw`$eA&S#sJzMU4*e|px8-}~2Yx)wTr-Rl|OxBj2F(*N-J6;ai78_iB- zpM86l|INi)w_j?MY+ZJA{+Sn-t5>b6N}F~2wCwb^z3QzCvsahRtTmj*zyAKIub;Nv zKbaP)D?9nT!TDz^)8t>fy)#|CiqB{B&ib8>pJ$e@eNg-{N${idxx>-3{7v^qnY{W_ zx9Vrkd-Kf;FJ|0(&3<<4;+@M^t$Ln(Ht(AK)tWb1>9^#LzW(s<*w*XWXV3PEg&vu_8rC2dpNdxd+gpHxykq8)Mx3Ut5*G= z+nFXfQU3hXMGIHG^Ej)dG~ejD%}Q?&qiAc!idFv{f;O+p0!DAB>6|NTR!R9~g@y8_ zC!Sq8WfPCv=eK3Mb(tMl${ScC-|P%Fb};$=d)7Sh>UURo1kOIroc?9cjpF5L4gVeT z8W|ogNoyzwGIp?7DXB0ADDRiW#-VP?+%kC<;~~$p5b1Z{f7g04Oq!a`b-;-T<(Q^D z(^xvClp$i$(s?#$M%OJ&yZ=Gst8MhntvRiW)4H{O^CuiI-?Qb1xC!&SibXrauJjj| zPG0x%d`8`qd()DBKh1mi`peh+)oV(xE`R;%a~;2-+Sv!`38!C)W#ya9)MPk)F*7f} zDrVdD`66xWerpxJdS|j*kZ*PwTg2g~B^ci~hSW2Yc9+{EFcIM-D zlijY#7jmxnnaB&Ky?^~ab=Tj*v*J6i^A}D$dpC1c<-4!uS^vJ>vRU!^`m>kjb430h zSyY(!`*_;^>E}+~(U*$;ceU&CcfHChcidK}mwRtcnSE&eWu6bsu;9ZCkCx3Fo&|YD evNdS@V~p1CUUeZTmJe74FnGH9xvX + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::KeyboardController Member List
+
+
+ +

This is the complete list of members for roboticslab::KeyboardController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
actuateTool(int command) (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
angleRepr (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
axes (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
cart enum name (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
CARTESIAN_MODE enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
cartesianControlDevice (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
cartFrame (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
close() override (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
configure(yarp::os::ResourceFinder &rf) override (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
control_modes enum name (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
controlBoardDevice (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
controlMode (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
currentActuatorCommand (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
currentCartVels (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
currentJointVels (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
decrement_functor (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivatestatic
getPeriod() override (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
iCartesianControl (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
iControlLimits (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
iControlMode (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
iEncoders (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
increment_functor (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivatestatic
incrementOrDecrementCartesianVelocity(cart coord, func op) (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
incrementOrDecrementJointVelocity(joint q, func op) (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
interruptModule() override (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
issueStop() (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
iVelocityControl (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
joint enum name (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
JOINT_MODE enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
linTrajThread (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
MAX_JOINTS enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
maxVelocityLimits (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
NOT_CONTROLLING enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
NUM_CART_COORDS enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
orient (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
printCartesianPositions() (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
printHelp() (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
printJointPositions() (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
Q1 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q2 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q3 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q4 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q5 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q6 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q7 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q8 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Q9 enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
ROTX enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
ROTY enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
ROTZ enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
toggleReferenceFrame() (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
updateModule() override (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
usingThread (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerprivate
X enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Y enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
Z enum value (defined in roboticslab::KeyboardController)roboticslab::KeyboardController
~KeyboardController() override (defined in roboticslab::KeyboardController)roboticslab::KeyboardControllerinline
+ + + + diff --git a/classroboticslab_1_1KeyboardController.html b/classroboticslab_1_1KeyboardController.html new file mode 100644 index 000000000..6a24d45f0 --- /dev/null +++ b/classroboticslab_1_1KeyboardController.html @@ -0,0 +1,263 @@ + + + + + + + +kinematics-dynamics: roboticslab::KeyboardController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Sends streaming commands to the cartesian controller from a standard keyboard. + More...

+ +

#include <KeyboardController.hpp>

+
+Inheritance diagram for roboticslab::KeyboardController:
+
+
+ +
+ + + + + + +

+Public Types

enum  joint {
+  Q1 = 0 +, Q2 +, Q3 +, Q4 +,
+  Q5 +, Q6 +, Q7 +, Q8 +,
+  Q9 +, MAX_JOINTS +
+ }
 
enum  cart {
+  X = 0 +, Y +, Z +, ROTX +,
+  ROTY +, ROTZ +, NUM_CART_COORDS +
+ }
 
+ + + + + + + + + + + +

+Public Member Functions

+bool configure (yarp::os::ResourceFinder &rf) override
 
+bool updateModule () override
 
+bool interruptModule () override
 
+double getPeriod () override
 
+bool close () override
 
+ + + +

+Private Types

enum  control_modes { NOT_CONTROLLING +, JOINT_MODE +, CARTESIAN_MODE + }
 
+ + + + + + + + + + + + + + + + + + + +

+Private Member Functions

+template<typename func >
void incrementOrDecrementJointVelocity (joint q, func op)
 
+template<typename func >
void incrementOrDecrementCartesianVelocity (cart coord, func op)
 
+void toggleReferenceFrame ()
 
+void actuateTool (int command)
 
+void printJointPositions ()
 
+void printCartesianPositions ()
 
+void issueStop ()
 
+void printHelp ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

+int axes
 
+int currentActuatorCommand
 
+ICartesianSolver::reference_frame cartFrame
 
+std::string angleRepr
 
+KinRepresentation::orientation_system orient
 
+control_modes controlMode
 
+bool usingThread
 
+LinearTrajectoryThreadlinTrajThread
 
+yarp::dev::PolyDriver controlBoardDevice
 
+yarp::dev::PolyDriver cartesianControlDevice
 
+yarp::dev::IEncoders * iEncoders
 
+yarp::dev::IControlMode * iControlMode
 
+yarp::dev::IControlLimits * iControlLimits
 
+yarp::dev::IVelocityControl * iVelocityControl
 
+roboticslab::ICartesianControliCartesianControl
 
+std::vector< double > maxVelocityLimits
 
+std::vector< double > currentJointVels
 
+std::vector< double > currentCartVels
 
+ + + + + +

+Static Private Attributes

+static const std::plus< double > increment_functor
 
+static const std::minus< double > decrement_functor
 
+

Detailed Description

+

Uses the terminal as a simple user interface. Also accepts joint commands if connected to a remote controlboard.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1KeyboardController.png b/classroboticslab_1_1KeyboardController.png new file mode 100644 index 0000000000000000000000000000000000000000..34954688945522d8e9e8596d051ed12745493f34 GIT binary patch literal 703 zcmeAS@N?(olHy`uVBq!ia0vp^`++!sgBeKHtA!*3DTx4|5ZC|z{{xvX-h3_XKQsZz z0^dz#RpwdbxY?0-t7BbRBe%$;ZN z|7r8>t>%3XC;#yF>b>>1^z;9&|69Hn{`q;t*n9r|v+~yI#uw*>RZEo%y}0%}dXc(n zrRnp>Z8iV)JfFTK{`LAl*Am+o9=_kbV>i#~`O3StrA!I=B>ME%U)$*$Wu|5ohx~nc zMD@?(TH|_^oo1r->Ca+5PG9ohr#pVqqb)yFHU0emO$nM6&Y=92VMfH{&-QY~`3Xh; z)c;+Po-w!ns(gcoZe4=~30T}qb7`k5(~Pigc?CZZj;*u*@@8vs)_vQXR_fL3nYXO} zsj1SCeb$5h@%29q+4?{37cp#;&A#{cx9tD2?Z+QhMjzVrKest`jYVnj-tJF2{F2#U zH|_o$aqZc=J5H88k5+z~&UrjH_Ug+y%f#}<_T=jp-)MiQ^QMWrM>)&vpZf8)haLxH zA7AQo@{zXjHIK*ds_wGZtJl{Ze*fwDk^H#hldbo^ORn4eNBLi|-P}Ls$Kr!(h3bD7 zegB#NeE<6SSEro)VmEcIef_!laeq&`E{d+-Hh**ciZj)hR@$3htoi%B^z@SC<^O6P z|F-^j+ips|&A)(u`VaWe$v13_`ojQB3=D<8e(qQ@< + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::LeapMotionSensorDevice Member List
+
+
+ +

This is the complete list of members for roboticslab::LeapMotionSensorDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
acquireData() overrideroboticslab::LeapMotionSensorDevicevirtual
acquireInterfaces() overrideroboticslab::LeapMotionSensorDevicevirtual
actuatorState (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
CentroidTransform (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprivate
configureFixedAxes(const yarp::os::Value &v)roboticslab::StreamingDeviceprivate
data (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
fixedAxes (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
frame_base_leap (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
frame_ee_leap (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
frame_leap_ee (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
getActuatorState() overrideroboticslab::LeapMotionSensorDevicevirtual
grab (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
hasActuator (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
hasValidMovementData() constroboticslab::StreamingDevicevirtual
iAnalogSensor (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
iCartesianControl (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
initialize(bool usingStreamingPreset) overrideroboticslab::LeapMotionSensorDevicevirtual
initialLeapOffset (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
initialTcpOffset (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
LeapMotionSensorDevice(yarp::os::Searchable &config, bool usingMovi)roboticslab::LeapMotionSensorDevice
pinch (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
previousPose (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
previousTimestamp (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
sendMovementCommand(double timestamp) overrideroboticslab::LeapMotionSensorDevicevirtual
setCartesianControllerHandle(ICartesianControl *iCartesianControl)roboticslab::StreamingDeviceinline
stopMotion() overrideroboticslab::LeapMotionSensorDeviceinlinevirtual
StreamingDevice(yarp::os::Searchable &config)roboticslab::StreamingDevice
transformData(double scaling) overrideroboticslab::LeapMotionSensorDevicevirtual
usingMovi (defined in roboticslab::LeapMotionSensorDevice)roboticslab::LeapMotionSensorDeviceprivate
~StreamingDevice()roboticslab::StreamingDevicevirtual
+ + + + diff --git a/classroboticslab_1_1LeapMotionSensorDevice.html b/classroboticslab_1_1LeapMotionSensorDevice.html new file mode 100644 index 000000000..d53969028 --- /dev/null +++ b/classroboticslab_1_1LeapMotionSensorDevice.html @@ -0,0 +1,395 @@ + + + + + + + +kinematics-dynamics: roboticslab::LeapMotionSensorDevice Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Represents a LeapMotion device wrapped as an analog sensor by YARP. +

+ +

#include <LeapMotionSensorDevice.hpp>

+
+Inheritance diagram for roboticslab::LeapMotionSensorDevice:
+
+
+ + +roboticslab::StreamingDevice + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LeapMotionSensorDevice (yarp::os::Searchable &config, bool usingMovi)
 Constructor.
 
bool acquireInterfaces () override
 Acquires plugin interfaces. More...
 
bool initialize (bool usingStreamingPreset) override
 Perform any custom initialization needed. This method is called after the successful creation of the device and once all interface handles are acquired. More...
 
bool acquireData () override
 Acquires data from remote device. More...
 
bool transformData (double scaling) override
 Performs required operations on stored data. More...
 
int getActuatorState () override
 If actuator command data is available, return its current state. More...
 
void sendMovementCommand (double timestamp) override
 Sends movement command to the cartesian controller. More...
 
+void stopMotion () override
 Sends a movement command that would stop motion.
 
- Public Member Functions inherited from roboticslab::StreamingDevice
 StreamingDevice (yarp::os::Searchable &config)
 Constructor. More...
 
+virtual ~StreamingDevice ()
 Destructor.
 
virtual bool hasValidMovementData () const
 Checks whether the device may forward acquired and processed data to the controller. More...
 
void setCartesianControllerHandle (ICartesianControl *iCartesianControl)
 Stores handle to an ICartesianControl instance. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

+yarp::dev::IAnalogSensor * iAnalogSensor
 
+bool usingMovi
 
+std::vector< double > initialTcpOffset
 
+std::vector< double > initialLeapOffset
 
+KDL::Frame frame_base_leap
 
+KDL::Frame frame_ee_leap
 
+KDL::Frame frame_leap_ee
 
+KDL::Frame previousPose
 
+double previousTimestamp
 
+bool hasActuator
 
+bool grab
 
+bool pinch
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from roboticslab::StreamingDevice
+ICartesianControliCartesianControl
 
+std::vector< double > data
 
+std::vector< bool > fixedAxes
 
+int actuatorState
 
+

Member Function Documentation

+ +

◆ acquireData()

+ +
+
+ + + + + +
+ + + + + + + +
bool LeapMotionSensorDevice::acquireData ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ acquireInterfaces()

+ +
+
+ + + + + +
+ + + + + + + +
bool LeapMotionSensorDevice::acquireInterfaces ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ getActuatorState()

+ +
+
+ + + + + +
+ + + + + + + +
int LeapMotionSensorDevice::getActuatorState ()
+
+overridevirtual
+
+
Returns
integer value describing current actuator state
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
bool LeapMotionSensorDevice::initialize (bool usingStreamingPreset)
+
+overridevirtual
+
+
Parameters
+ + +
usingStreamingPresetWhether the cartesian controller supports streaming command presets or not.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ sendMovementCommand()

+ +
+
+ + + + + +
+ + + + + + + + +
void LeapMotionSensorDevice::sendMovementCommand (double timestamp)
+
+overridevirtual
+
+
Parameters
+ + +
timestampCurrent timestamp.
+
+
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ transformData()

+ +
+
+ + + + + +
+ + + + + + + + +
bool LeapMotionSensorDevice::transformData (double scaling)
+
+overridevirtual
+
+
Parameters
+ + +
scalingScaling factor applied to each data value.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1LeapMotionSensorDevice.png b/classroboticslab_1_1LeapMotionSensorDevice.png new file mode 100644 index 0000000000000000000000000000000000000000..be11fbffe1c4d5a314b8665e96bb8c870cfcac89 GIT binary patch literal 1190 zcmeAS@N?(olHy`uVBq!ia0vp^kAS#?gBeJkU3mN^kdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~G4*tD45?szJ2$gxwE+*q@l)4d{WH%y zly*{rsnNvr>gwmL>nrwj>|ZkF(pJTltKwz`goNhK1rz03dOdescSdQ)7v9=qw=kkZ zH+03Sc?VZ_^~cHn-L?GR`Mh(B6V}LoR12Q_Q_?v0{VDH|(DI@HL;s`$YW9`UrusS} z=}(hau6pIy_ioXuWlg7qeynHY{yB$j-mb}Y zDK$J6=e6FbR=j)aOr=$;Ugh;^+5P8PwaV^kt^9Lm_R!E+D}%G;QgXjCR;=<}fBy5@ zHg>*MtFnY!7Ol#94JPi027A4{#PCNip5gklUtRI>)64hldvy21tG@pZhDurv3<3-_ zlXi47Fgh@NuzaM)#KORM;CaVx4gm%hhWX0xl)wu5kQB^0^R{evtaP4|Qn;Fkt4owR zh)AEGBs6i(JInZl&#sq$?~h#A(UBbX_eI#t&nXgu8(%J1)UjjBf*Yw?+Db~Bj@|Hg zd6H_Tu`I9Xu-=#MTTkWwm$oL~G?2Z2<=3~np9*%qyl{D+qJF1rNtC8}Q^yIVXpyrl zzmES|=9PAB%lrv5*UZmaZ!9%4FKpwB0I`k^olTkI+UqB%SU&ANHS^QcGVz>LAPgoBh!{YdbfMWnuzyVUB?*j>=IF)TM>{gSlS_Ywd2;`pFh%_dwbi17ijivvYl^P zl=jkCc~!>=b&FrNe;#*5^DXE&A@=W;UYm<0Klz99gCCKaLtqBb4d^DK0_$TXMY{%EW-IMhF z%KEc^H_AW$Xj~W3mMSeZ#rLn@%y-G$t0N@Kb5ggR^gY67?R%?izF%u~?S)b~KSxq>hnICfQ$I|c0qKnsPKil|P zxUnTYa^sxCcCO_C(?!}N9z^v_^A~M@Tf8{>ty5vm^msn${xa=#K4;&T6f7EpQBemSHn2edC=`(f9H;M(ypZ6Br`rG*P3H6dUdC@b9&84r) z|F2xxz2cjU-+sFzVai$utSi3%U|8LvbinanqtXF)PS=KOAY5591DF?1{b4w + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::LinearTrajectoryThread Member List
+
+
+ +

This is the complete list of members for roboticslab::LinearTrajectoryThread, including all inherited members.

+ + + + + + + + + + + + + + + +
checkStreamingConfig() (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThread
configure(const std::vector< double > &vels) (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThread
deltaX (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
iCartesianControl (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
LinearTrajectoryThread(int period, ICartesianControl *iCartesianControl) (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThread
mtx (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadmutableprivate
period (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
run() override (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprotected
startTime (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
trajectory (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
useTcpFrame(bool enableTcpFrame) (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadinline
usingStreamingCommandConfig (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
usingTcpFrame (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThreadprivate
~LinearTrajectoryThread() (defined in roboticslab::LinearTrajectoryThread)roboticslab::LinearTrajectoryThread
+ + + + diff --git a/classroboticslab_1_1LinearTrajectoryThread.html b/classroboticslab_1_1LinearTrajectoryThread.html new file mode 100644 index 000000000..6ff5c9186 --- /dev/null +++ b/classroboticslab_1_1LinearTrajectoryThread.html @@ -0,0 +1,154 @@ + + + + + + + +kinematics-dynamics: roboticslab::LinearTrajectoryThread Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Periodic thread that encapsulates a linear trajectory. +

+ +

#include <LinearTrajectoryThread.hpp>

+
+Inheritance diagram for roboticslab::LinearTrajectoryThread:
+
+
+ +
+ + + + + + + + + + +

+Public Member Functions

LinearTrajectoryThread (int period, ICartesianControl *iCartesianControl)
 
+bool checkStreamingConfig ()
 
+bool configure (const std::vector< double > &vels)
 
+void useTcpFrame (bool enableTcpFrame)
 
+ + + +

+Protected Member Functions

+void run () override
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

+double period
 
+ICartesianControliCartesianControl
 
+KDL::Trajectory * trajectory
 
+double startTime
 
+bool usingStreamingCommandConfig
 
+bool usingTcpFrame
 
+std::vector< double > deltaX
 
+std::mutex mtx
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1LinearTrajectoryThread.png b/classroboticslab_1_1LinearTrajectoryThread.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa12cf29fc70b7f0f88804076a7294ff5dbc09a GIT binary patch literal 771 zcmeAS@N?(olHy`uVBq!ia0vp^*MK;HgBeH$U8%kaq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0CV9FzhEy=VoqKoMW(6MC^1P~h|9kCM ze-aOPea7PcfuyO6MTHY43*;LbOZ(4I>0Q>T>bW-~$umg5N+?^`bJC|UJAMC+$@+=s zoPsXe#k^e{G5vLc{(9Lunb*17vbYaahfj}xCKI=0-Hua-)VJSREZQWsW>KlpSsRs? zUgaBw?yg&N@=5gD;0Q6vq>RAOI5N7Q+)4fWa-6rS!qX=>Gn zoTCvbtU0rn>ZC`8|MScey}a0KM)NYS9geoGrT?XsJom4)_S9IJp`2iPrmbU|O6g*_ z=b|>8InyS5Apa$+!MtNfs`j=$krK{cC^a!VU`-?^$j6KUbSub>}i8<(JB~6VzJ$bw5`J=P{KFnF{w9snayNrhOUNJF;)FT`& zp4-UaSCU(rvhmyfBT@fzrFZ_h>sE395Z~MCJ<=7y;%k#yN^Z-%e(80%ASz8h2g(@{Qn7zCRbUn{Z;+PxQ2bjKbI{GbrGN85}t_M$h!vsvR44$rjF6*2UngDy1X59b) literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1MatrixExponential-members.html b/classroboticslab_1_1MatrixExponential-members.html new file mode 100644 index 000000000..b8b660ead --- /dev/null +++ b/classroboticslab_1_1MatrixExponential-members.html @@ -0,0 +1,101 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::MatrixExponential Member List
+
+
+ +

This is the complete list of members for roboticslab::MatrixExponential, including all inherited members.

+ + + + + + + + + + + + + + +
asFrame(double theta) constroboticslab::MatrixExponential
axis (defined in roboticslab::MatrixExponential)roboticslab::MatrixExponentialprivate
changeBase(const KDL::Frame &H_new_old)roboticslab::MatrixExponential
cloneWithBase(const KDL::Frame &H_new_old) constroboticslab::MatrixExponential
getAxis() constroboticslab::MatrixExponentialinline
getMotionType() constroboticslab::MatrixExponentialinline
getOrigin() constroboticslab::MatrixExponentialinline
MatrixExponential(motion motionType, const KDL::Vector &axis, const KDL::Vector &origin=KDL::Vector::Zero())roboticslab::MatrixExponential
motion enum nameroboticslab::MatrixExponential
motionType (defined in roboticslab::MatrixExponential)roboticslab::MatrixExponentialprivate
origin (defined in roboticslab::MatrixExponential)roboticslab::MatrixExponentialprivate
ROTATION enum valueroboticslab::MatrixExponential
TRANSLATION enum valueroboticslab::MatrixExponential
+ + + + diff --git a/classroboticslab_1_1MatrixExponential.html b/classroboticslab_1_1MatrixExponential.html new file mode 100644 index 000000000..2a57248d2 --- /dev/null +++ b/classroboticslab_1_1MatrixExponential.html @@ -0,0 +1,365 @@ + + + + + + + +kinematics-dynamics: roboticslab::MatrixExponential Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Abstraction of a term in a product of exponentials (POE) formula. + More...

+ +

#include <MatrixExponential.hpp>

+ + + + + +

+Public Types

enum  motion { ROTATION +, TRANSLATION + }
 Lists available screw motion types. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MatrixExponential (motion motionType, const KDL::Vector &axis, const KDL::Vector &origin=KDL::Vector::Zero())
 Constructor. More...
 
KDL::Frame asFrame (double theta) const
 Evaluates this term for the given magnitude of the screw. More...
 
motion getMotionType () const
 Retrieves the motion type of this screw. More...
 
const KDL::Vector & getAxis () const
 Screw axis. More...
 
const KDL::Vector & getOrigin () const
 A point along the screw axis. More...
 
void changeBase (const KDL::Frame &H_new_old)
 Refers the internal coordinates of this screw to a different base. More...
 
MatrixExponential cloneWithBase (const KDL::Frame &H_new_old) const
 Clones this instance and refers the internal coordinates of the screw to a different base. More...
 
+ + + + + + + +

+Private Attributes

+motion motionType
 
+KDL::Vector axis
 
+KDL::Vector origin
 
+

Detailed Description

+
See also
PoeExpression
+

Member Enumeration Documentation

+ +

◆ motion

+ +
+
+ + + +
Enumerator
ROTATION 

Revolute joint (zero-pitch twist).

+
TRANSLATION 

Prismatic joint (infinite-pitch twist).

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ MatrixExponential()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
MatrixExponential::MatrixExponential (motion motionType,
const KDL::Vector & axis,
const KDL::Vector & origin = KDL::Vector::Zero() 
)
+
+
Parameters
+ + + + +
motionTypeScrew motion type as defined in motion.
axisScrew axis.
originA point along the screw axis (defaults to (0, 0, 0), ignored in prismatic joints).
+
+
+ +
+
+

Member Function Documentation

+ +

◆ asFrame()

+ +
+
+ + + + + + + + +
KDL::Frame MatrixExponential::asFrame (double theta) const
+
+
Parameters
+ + +
thetaInput magnitude this screw should be computed at.
+
+
+
Returns
Resulting homogeneous transformation matrix.
+ +
+
+ +

◆ changeBase()

+ +
+
+ + + + + + + + +
void MatrixExponential::changeBase (const KDL::Frame & H_new_old)
+
+
Parameters
+ + +
H_new_oldTransformation between the new and the old base frame.
+
+
+
See also
cloneWithBase
+ +
+
+ +

◆ cloneWithBase()

+ +
+
+ + + + + + + + +
MatrixExponential MatrixExponential::cloneWithBase (const KDL::Frame & H_new_old) const
+
+
Parameters
+ + +
H_new_oldTransformation between the new and the old base frame.
+
+
+
Returns
An instance referred to the new frame.
+
See also
changeBase
+ +
+
+ +

◆ getAxis()

+ +
+
+ + + + + +
+ + + + + + + +
const KDL::Vector& roboticslab::MatrixExponential::getAxis () const
+
+inline
+
+
Returns
A vector representing the direction of the screw axis.
+ +
+
+ +

◆ getMotionType()

+ +
+
+ + + + + +
+ + + + + + + +
motion roboticslab::MatrixExponential::getMotionType () const
+
+inline
+
+
Returns
A motion type this term has been registered with.
+ +
+
+ +

◆ getOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
const KDL::Vector& roboticslab::MatrixExponential::getOrigin () const
+
+inline
+
+
Returns
A vector representing the position of some point along the screw axis.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PadenKahanOne-members.html b/classroboticslab_1_1PadenKahanOne-members.html new file mode 100644 index 000000000..b500dec08 --- /dev/null +++ b/classroboticslab_1_1PadenKahanOne-members.html @@ -0,0 +1,100 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PadenKahanOne Member List
+
+
+ +

This is the complete list of members for roboticslab::PadenKahanOne, including all inherited members.

+ + + + + + + + + + + + + +
axisPow (defined in roboticslab::PadenKahanOne)roboticslab::PadenKahanOneprivate
describe() const overrideroboticslab::PadenKahanOneinlinevirtual
exp (defined in roboticslab::PadenKahanOne)roboticslab::PadenKahanOneprivate
id (defined in roboticslab::PadenKahanOne)roboticslab::PadenKahanOneprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
p (defined in roboticslab::PadenKahanOne)roboticslab::PadenKahanOneprivate
PadenKahanOne(int id, const MatrixExponential &exp, const KDL::Vector &p)roboticslab::PadenKahanOne
solutions() const overrideroboticslab::PadenKahanOneinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PadenKahanOnevirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PadenKahanOne.html b/classroboticslab_1_1PadenKahanOne.html new file mode 100644 index 000000000..da443f2a8 --- /dev/null +++ b/classroboticslab_1_1PadenKahanOne.html @@ -0,0 +1,270 @@ + + + + + + + +kinematics-dynamics: roboticslab::PadenKahanOne Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

First Paden-Kahan subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PadenKahanOne:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PadenKahanOne (int id, const MatrixExponential &exp, const KDL::Vector &p)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + + + +

+Private Attributes

+const int id
 
+const MatrixExponential exp
 
+const KDL::Vector p
 
+const KDL::Rotation axisPow
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Single solution, single revolute joint geometric IK subproblem given by \( e\,^{\hat{\xi}\,{\theta}} \cdot p = k \) (rotation screw applied to a point).

+

Constructor & Destructor Documentation

+ +

◆ PadenKahanOne()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PadenKahanOne::PadenKahanOne (int id,
const MatrixExponentialexp,
const KDL::Vector & p 
)
+
+
Parameters
+ + + + +
idZero-based joint id of the product of exponentials (POE) term.
expPOE term.
pCharacteristic point.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PadenKahanOne::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PadenKahanOne.png b/classroboticslab_1_1PadenKahanOne.png new file mode 100644 index 0000000000000000000000000000000000000000..62a09e070e7d623b391fcfe2e7ee8189dfcaa0f1 GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|`zk>Eakt!T5IW+oC%PJg)rLjVu4Vue&a< z;1GBF?6S$HOzs@J;dF^{;h)r5%U*IOO?q$kDh*U@$JL(-9DZk=F4N0+yOc8~w##}!?3w)xZ_Cfd`0{TlY1k_=Tex&x{=UB6%hKw% z{Aw=TF5klLJIQA5v~`#Jb9A?tUpf72Ps!eOyW=y~zt*!iySc6N+IicI>!ox5YWdw= zcRMY2_d0GZ&;8EJ>y!0wd1yTrZ;DIeV5s6%Jk;rR>A9(cs^%oN6)LWmc&vOce_>$! zQ(Vhvx}u1??jnK89w;&gHL*V+CI-@nub zERb?vATG8)ZpQSwv_9nq<5=d{HP?FQ$X^dwAOCy)^4xy&=4)Hdt-nz=ZKvIwfMaUY zC;jF5;3w|5T|{i#oPfG4^|>$o0&ZJPlU^=;>PMj+^PbCBg||xXT3|WnZqekXy^H6~ z4l=&?>(-TM?hk(RS=M@OXI@+F>A2ZAcvo6&_T`4SY(II{x86J1-`*|J=XaK!r*WY3 zUGu$ti`^HTHQf3A#?5V)uGXz6`5RVor*!)KZEBylZ+m@fm+tHAeARxbZ_Tmd5A3fa ihsivaSwUX>7vwt?^#2}JVOjx9-3*?telF{r5}E**8Fk43 literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1PadenKahanThree-members.html b/classroboticslab_1_1PadenKahanThree-members.html new file mode 100644 index 000000000..24b48caa6 --- /dev/null +++ b/classroboticslab_1_1PadenKahanThree-members.html @@ -0,0 +1,101 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PadenKahanThree Member List
+
+
+ +

This is the complete list of members for roboticslab::PadenKahanThree, including all inherited members.

+ + + + + + + + + + + + + + +
axisPow (defined in roboticslab::PadenKahanThree)roboticslab::PadenKahanThreeprivate
describe() const overrideroboticslab::PadenKahanThreeinlinevirtual
exp (defined in roboticslab::PadenKahanThree)roboticslab::PadenKahanThreeprivate
id (defined in roboticslab::PadenKahanThree)roboticslab::PadenKahanThreeprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
k (defined in roboticslab::PadenKahanThree)roboticslab::PadenKahanThreeprivate
p (defined in roboticslab::PadenKahanThree)roboticslab::PadenKahanThreeprivate
PadenKahanThree(int id, const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k)roboticslab::PadenKahanThree
solutions() const overrideroboticslab::PadenKahanThreeinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PadenKahanThreevirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PadenKahanThree.html b/classroboticslab_1_1PadenKahanThree.html new file mode 100644 index 000000000..9b6863bc7 --- /dev/null +++ b/classroboticslab_1_1PadenKahanThree.html @@ -0,0 +1,280 @@ + + + + + + + +kinematics-dynamics: roboticslab::PadenKahanThree Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Third Paden-Kahan subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PadenKahanThree:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PadenKahanThree (int id, const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + + + + + +

+Private Attributes

+const int id
 
+const MatrixExponential exp
 
+const KDL::Vector p
 
+const KDL::Vector k
 
+const KDL::Rotation axisPow
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Dual solution, single revolute joint geometric IK subproblem given by \( \left \| e\,^{\hat{\xi}\,{\theta}} \cdot p - k \right \| = \delta \) (rotation screw for moving \( p \) to a distance \( \delta \) from \( k \)).

+

Constructor & Destructor Documentation

+ +

◆ PadenKahanThree()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PadenKahanThree::PadenKahanThree (int id,
const MatrixExponentialexp,
const KDL::Vector & p,
const KDL::Vector & k 
)
+
+
Parameters
+ + + + + +
idZero-based joint id of the product of exponentials (POE) term.
expPOE term.
pFirst characteristic point.
kSecond characteristic point.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PadenKahanThree::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PadenKahanThree.png b/classroboticslab_1_1PadenKahanThree.png new file mode 100644 index 0000000000000000000000000000000000000000..91452091fa7664e928f17a950340e39400b56e8e GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|>4t>Eakt!T5IW+oHz`Jg)rLjcfnA#~qhf zaL9RMw)^tL%$>c3ElZjm{+`~Xb6WU_lIKTLM^(*9YAaM+CvneGnY!`ZEAg^>GuGKp zGP!p8QREF*r%a?y&-(UQ{ zzt)x~>ax|b%-ONeTvdyO7ey7!xG`~V{$;D9dat#%Z@SYkt)}m|*^)`C0%yNt%<(&x z%73dWS4_sIGJAJ}+M@ZVzAcIoioR%;$3Ck&OwF=*b8N2Ql#sTcj~lLWZY6Yd5?;6Ss_cPvlKWpbKxr~<#&jWL`Ud7z6k(FLw@VLObv0)9RY!!zxIH_=@QG-B_2_Z(^Dhm6dL}o z({E6Jp}8PFo?o$+>&2;`JeQ6)oLk2&;4LhoFiB0rLB%(q!DH3}hKVMQj7phJOfHvL zSUZ+*atU~%DfsWDx%3OmM21J%Fh$l2wm!AWo<6Pe>)Cr>8jN-=xZQp5*RT7B&9y%( z2P}|MzQElbuYcyWV^E)ZgLW17F3C5dk@DX?fRT~kpCrq+Hgj&=#Cz^~o+;W-Yo=spneFM% zdB5WMv5;et`RPw{cFbh#`J#B?)r+zP({3!fYI@TB`kMSbUl+7H-hbDSRl~K#{*-OT z`(^7-YFvres# + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PadenKahanTwo Member List
+
+
+ +

This is the complete list of members for roboticslab::PadenKahanTwo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
axesCross (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
axesDot (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
axisPow1 (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
axisPow2 (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
describe() const overrideroboticslab::PadenKahanTwoinlinevirtual
exp1 (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
exp2 (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
id1 (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
id2 (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
p (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
PadenKahanTwo(int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p, const KDL::Vector &r)roboticslab::PadenKahanTwo
r (defined in roboticslab::PadenKahanTwo)roboticslab::PadenKahanTwoprivate
solutions() const overrideroboticslab::PadenKahanTwoinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PadenKahanTwovirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PadenKahanTwo.html b/classroboticslab_1_1PadenKahanTwo.html new file mode 100644 index 000000000..f7486f702 --- /dev/null +++ b/classroboticslab_1_1PadenKahanTwo.html @@ -0,0 +1,309 @@ + + + + + + + +kinematics-dynamics: roboticslab::PadenKahanTwo Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Second Paden-Kahan subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PadenKahanTwo:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PadenKahanTwo (int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p, const KDL::Vector &r)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

+const int id1
 
+const int id2
 
+const MatrixExponential exp1
 
+const MatrixExponential exp2
 
+const KDL::Vector p
 
+const KDL::Vector r
 
+const KDL::Vector axesCross
 
+const KDL::Rotation axisPow1
 
+const KDL::Rotation axisPow2
 
+const double axesDot
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Dual solution, double revolute joint geometric IK subproblem given by \( e\,^{\hat{\xi_1}\,{\theta_1}} \cdot e\,^{\hat{\xi_2}\,{\theta_2}} \cdot p = k \) (consecutive crossing rotation screws to a point).

+

Constructor & Destructor Documentation

+ +

◆ PadenKahanTwo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PadenKahanTwo::PadenKahanTwo (int id1,
int id2,
const MatrixExponentialexp1,
const MatrixExponentialexp2,
const KDL::Vector & p,
const KDL::Vector & r 
)
+
+
Parameters
+ + + + + + + +
id1Zero-based joint id of the first product of exponentials (POE) term.
id2Zero-based joint id of the second POE term.
exp1First POE term.
exp2Second POE term.
pCharacteristic point.
rPoint of intersection between both screw axes.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PadenKahanTwo::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PadenKahanTwo.png b/classroboticslab_1_1PadenKahanTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bee8d1a79d5b793433340bdc3822b9516fe3b5f GIT binary patch literal 810 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|`zm>Eakt!T5IW?MZhOcvxpYUiJ6Cf8TNO z2@dBT>|J6ugGW8v#wn=z!k$e!r$4c5^tkk6)`CeUlhjtI^ez!F@zhG5`%}CuZsxlG zDlen-yQg22HkQ6>y*I96mUqxEF-R_V50EeSY!( z{#sj}tYG=aTh8izUNmVZ=R+|WwX&4wx34U}k@B`k`!sLH$>$YooV8B!=I>(PU@19W zH{`a(@c>Lg?H+oAGJlTI1@XI)U|_^o(m^qkTu zKVk#ICzQuvp-g}$B+V#A(Z`ZqT8&6*Iy<)$8f$w$RZ>ueMcjwLB z`gWJ%3YEWnd;j*n-7+!cm_EzfBngHs{E02XQG>d+*}FZc)yS`Bl@_OF6JRo2GQVeE`ME|fRzx|Hjn zyU}&CaqzCR+NW>D8@4UI)3hyb*7WHMWnTRI>3HFG`4_G$@~Jib`i`CtSU#A4Z9ca4 z!>-qP^LMFzE-$^lwKV!#b-v<@?`5$K|6^bt1c%LJhhVRljK7%U)AfJci~Fn%OxO&b Lu6{1-oD!M + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PardosGotorFour Member List
+
+
+ +

This is the complete list of members for roboticslab::PardosGotorFour, including all inherited members.

+ + + + + + + + + + + + + + + + +
axisPow (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
describe() const overrideroboticslab::PardosGotorFourinlinevirtual
exp1 (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
exp2 (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
id1 (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
id2 (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
n (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
p (defined in roboticslab::PardosGotorFour)roboticslab::PardosGotorFourprivate
PardosGotorFour(int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p)roboticslab::PardosGotorFour
solutions() const overrideroboticslab::PardosGotorFourinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PardosGotorFourvirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PardosGotorFour.html b/classroboticslab_1_1PardosGotorFour.html new file mode 100644 index 000000000..8f82af5a4 --- /dev/null +++ b/classroboticslab_1_1PardosGotorFour.html @@ -0,0 +1,293 @@ + + + + + + + +kinematics-dynamics: roboticslab::PardosGotorFour Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Fourth Pardos-Gotor subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PardosGotorFour:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PardosGotorFour (int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + + + + + + + + + +

+Private Attributes

+const int id1
 
+const int id2
 
+const MatrixExponential exp1
 
+const MatrixExponential exp2
 
+const KDL::Vector p
 
+const KDL::Vector n
 
+const KDL::Rotation axisPow
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Dual solution, double revolute joint geometric IK subproblem given by \( e\,^{\hat{\xi_1}\,{\theta_1}} \cdot e\,^{\hat{\xi_2}\,{\theta_2}} \cdot p = k \) (two consecutive parallel rotation screws applied to a point, see [1]).

+

Constructor & Destructor Documentation

+ +

◆ PardosGotorFour()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PardosGotorFour::PardosGotorFour (int id1,
int id2,
const MatrixExponentialexp1,
const MatrixExponentialexp2,
const KDL::Vector & p 
)
+
+
Parameters
+ + + + + + +
id1Zero-based joint id of the first product of exponentials (POE) term.
id2Zero-based joint id of the second POE term.
exp1First POE term.
exp2Second POE term.
pCharacteristic point.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PardosGotorFour::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PardosGotorFour.png b/classroboticslab_1_1PardosGotorFour.png new file mode 100644 index 0000000000000000000000000000000000000000..da9e6e44b8a81d1ef6cb95e5f4a113da9c09a0a2 GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|`zs>Eakt!T5IW+oHz`Jg)rLjcfnA$En|F zXqj^(w`_TL=FW|rlP)}T{&{+n&S}{rN}i9io4hW0%vvzXWRlYbm6hAJrti=AeXiv1 zhh=4bcel0Z_?doA<9fVd=9aZA^<}wTvDehLzq;3Ot!7)e{nAN3o0nBKnJrgK z;eWN*s=armPOf>Paq^r~pS!C(Z^?fBT(%(fa@O*cdpgtav#4IZR>QL3+QK82XLQe5 zdHvB^VJXL$QGcr|mLqHNj?S}7cQD;L`;+%V-PKvEB^$4CZIE}}zWCr*-Rl=w_ik9c zPq;a5-(uU0Ng^-bUgUihSUv5pZ11MJ`jW+~cE`V1@yhQ1?UY)hy!O&d8~RX-ZU>sg5itIAr5OT&-vF`rY@Oi;;5RbvUUM51kD8w z*k2bvAX_4SVg35q6YjB=Jl(_oGS?yfDyxLIut6v zcd!`jQ`0yAj1mUrms%^f##P_j`|YfUUJXOo-|}l0dh=OD9xSTk;hIs#^6Q$7*_QMJx#yem?kNvzyJGV-&o$<`n>^np zf8*0L>$xxM4!w?$>`9tB)$n20T3KCZ2K|yE_u3a4JO8YZ-R$`G?xyOCcC&o>9cCNI zi9Fb9$C1^S$NnnIcS>%l1)J@Sz=rF;R5I$PR9|4RD6QGg{N + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PardosGotorOne Member List
+
+
+ +

This is the complete list of members for roboticslab::PardosGotorOne, including all inherited members.

+ + + + + + + + + + + + +
describe() const overrideroboticslab::PardosGotorOneinlinevirtual
exp (defined in roboticslab::PardosGotorOne)roboticslab::PardosGotorOneprivate
id (defined in roboticslab::PardosGotorOne)roboticslab::PardosGotorOneprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
p (defined in roboticslab::PardosGotorOne)roboticslab::PardosGotorOneprivate
PardosGotorOne(int id, const MatrixExponential &exp, const KDL::Vector &p)roboticslab::PardosGotorOne
solutions() const overrideroboticslab::PardosGotorOneinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PardosGotorOnevirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PardosGotorOne.html b/classroboticslab_1_1PardosGotorOne.html new file mode 100644 index 000000000..2a45fd7bc --- /dev/null +++ b/classroboticslab_1_1PardosGotorOne.html @@ -0,0 +1,267 @@ + + + + + + + +kinematics-dynamics: roboticslab::PardosGotorOne Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

First Pardos-Gotor subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PardosGotorOne:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PardosGotorOne (int id, const MatrixExponential &exp, const KDL::Vector &p)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + +

+Private Attributes

+const int id
 
+const MatrixExponential exp
 
+const KDL::Vector p
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Single solution, single prismatic joint geometric IK subproblem given by \( e\,^{\hat{\xi}\,{\theta}} \cdot p = k \) (translation screw applied to a point, see [1]).

+

Constructor & Destructor Documentation

+ +

◆ PardosGotorOne()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PardosGotorOne::PardosGotorOne (int id,
const MatrixExponentialexp,
const KDL::Vector & p 
)
+
+
Parameters
+ + + + +
idZero-based joint id of the product of exponentials (POE) term.
expPOE term.
pCharacteristic point.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PardosGotorOne::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PardosGotorOne.png b/classroboticslab_1_1PardosGotorOne.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6d25bd5770a40d5f3746d33d88b7baffc2215e GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|`zk>Eakt!T5IW+p@(5Jgmp37ytU#zelBE zV$MVd`?B4Kbj=SsPBY!4^UuilatXVkXHXq)faj?tj9Q*EMViDsf1CFI;V-*0<6Qlu zk~Qr|55MT08GF^*cHWMe-a+e&7fiZS%J55Oj-y5T)*B|z;@NA{Dn0Mj?A}pdllwFN z^De0^%j$a1ZrinH^0yObh4Kz%C9Qw;$MTC}S>Wy)-(Iqn^r!F5ogOlA_nw!V8hTIe zc;gto{%p(CmCLq8Usxm2{^?Jmy-Jz;?NaLtyE1<-aLc=NHLt1b+vysX1$9neizT9E zN=1Hz287EoX2j=S)noY@H>>sT!W~Sv*8b$YV3++Y!)-w|`wg#+H!nW;aqaO9i@h5b zzg1w{TjN%JK}qw{?MuABCa!(@t;a2Jzy947uk+ZgUhO(xFP(GS$jt4HQs;*A2bC&G^Ylgl67G`u^y&Sues`T<&|^ykH0&4=_kXUU-$PUe*bfT|A2O_ ztVqFi!57h=Zy20;tnP8X(QfTDpL5$!NA<6N`*n+2rD=w5ZNu!hkBsKTZ9iA16MXIX zc`u_zhCSCjFKl(0eq&qH+VZyxjPGjI)Q8Et?aNA=vpY+gmFYuJdifPSnWk%BbI#@7 zd6pwt-s`>jC1b{uzwr&bF1>Y_opx#WmZjBjSxzx1aq*9ZG7 j + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PardosGotorThree Member List
+
+
+ +

This is the complete list of members for roboticslab::PardosGotorThree, including all inherited members.

+ + + + + + + + + + + + + +
describe() const overrideroboticslab::PardosGotorThreeinlinevirtual
exp (defined in roboticslab::PardosGotorThree)roboticslab::PardosGotorThreeprivate
id (defined in roboticslab::PardosGotorThree)roboticslab::PardosGotorThreeprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
k (defined in roboticslab::PardosGotorThree)roboticslab::PardosGotorThreeprivate
p (defined in roboticslab::PardosGotorThree)roboticslab::PardosGotorThreeprivate
PardosGotorThree(int id, const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k)roboticslab::PardosGotorThree
solutions() const overrideroboticslab::PardosGotorThreeinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PardosGotorThreevirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PardosGotorThree.html b/classroboticslab_1_1PardosGotorThree.html new file mode 100644 index 000000000..630af4dce --- /dev/null +++ b/classroboticslab_1_1PardosGotorThree.html @@ -0,0 +1,277 @@ + + + + + + + +kinematics-dynamics: roboticslab::PardosGotorThree Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Third Pardos-Gotor subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PardosGotorThree:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PardosGotorThree (int id, const MatrixExponential &exp, const KDL::Vector &p, const KDL::Vector &k)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + + + +

+Private Attributes

+const int id
 
+const MatrixExponential exp
 
+const KDL::Vector p
 
+const KDL::Vector k
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Dual solution, single prismatic joint geometric IK subproblem given by \( \left \| e\,^{\hat{\xi}\,{\theta}} \cdot p - k \right \| = \delta \) (translation screw for moving \( p \) to a distance \( \delta \) from \( k \), see [1]).

+

Constructor & Destructor Documentation

+ +

◆ PardosGotorThree()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PardosGotorThree::PardosGotorThree (int id,
const MatrixExponentialexp,
const KDL::Vector & p,
const KDL::Vector & k 
)
+
+
Parameters
+ + + + + +
idZero-based joint id of the product of exponentials (POE) term.
expPOE term.
pFirst characteristic point.
kSecond characteristic point.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PardosGotorThree::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PardosGotorThree.png b/classroboticslab_1_1PardosGotorThree.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9a065b529120ba74b186bea8791480279026c8 GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|`zi>Eakt!T5IW+iA0{cwD#hXP^CTU*vfp ze$$QvbA7D6D_%{0px}LL+nRr=k<*@XCQV%OW7dL6BA&t_lax-f`c8Tkk^Yze?VTCx z>L-<~nSS*2iz91#Z&};M%{Z%?dBrrq^R5L$t^YcOn9a9xdVYR)yuW)-?!8|-cGlNE z{d@m=sriOwwLLk}G1FX4KdZTHPcYAPFZ?&}n|$eU??VU@P;JAQSahG53pPdoN3? zXQ|u0cx!Fdq~w|gD8mgj!w<^PYzZJ8KyT%Tp{5dnrTQcf+xQ*kzSsO5R_W*5Uo6Guj+%qAw6ODwD%OE|d%JcUIRCaGyS z0JS%G%v!)O5lz8|U@y(3>K!Zs@i2vVncn(dpBWqd{O;_vuNl8c)xYNT-IHH>{(U3U zT?-~#)9<|J?=i<*wR~|q>Gq4Sh1_3%otnLS{=vKi-`{^Wy?u5mHqLMT-xHP3j$iXW z%kdyU+~K>>-J;X1(evJ<7@QT2yFYdMy!D%m=k7jqP3?-V{o@@)i>}R|e&<`LdhCmD zeP-`^PCvUK8xSnDPP{?6mTQalUB)Y4q|}ctE6Hzscad+`UH^u@r8Z4!2QnV)=B&CQ z-k5iXd2g-zf8j3+JpQM?tcv}4~`R*nV8!C}j3 evUG~v0(--w2At1}KKlVvHiM_DpUXO@geCy!wty-C literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1PardosGotorTwo-members.html b/classroboticslab_1_1PardosGotorTwo-members.html new file mode 100644 index 000000000..3a0345266 --- /dev/null +++ b/classroboticslab_1_1PardosGotorTwo-members.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PardosGotorTwo Member List
+
+
+ +

This is the complete list of members for roboticslab::PardosGotorTwo, including all inherited members.

+ + + + + + + + + + + + + + + + +
crossPr2 (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
crossPr2Norm (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
describe() const overrideroboticslab::PardosGotorTwoinlinevirtual
exp1 (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
exp2 (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
id1 (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
id2 (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
p (defined in roboticslab::PardosGotorTwo)roboticslab::PardosGotorTwoprivate
PardosGotorTwo(int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p)roboticslab::PardosGotorTwo
solutions() const overrideroboticslab::PardosGotorTwoinlinevirtual
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const overrideroboticslab::PardosGotorTwovirtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1PardosGotorTwo.html b/classroboticslab_1_1PardosGotorTwo.html new file mode 100644 index 000000000..9e4d26839 --- /dev/null +++ b/classroboticslab_1_1PardosGotorTwo.html @@ -0,0 +1,293 @@ + + + + + + + +kinematics-dynamics: roboticslab::PardosGotorTwo Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Second Pardos-Gotor subproblem. + More...

+ +

#include <ScrewTheoryIkSubproblems.hpp>

+
+Inheritance diagram for roboticslab::PardosGotorTwo:
+
+
+ + +roboticslab::ScrewTheoryIkSubproblem + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PardosGotorTwo (int id1, int id2, const MatrixExponential &exp1, const MatrixExponential &exp2, const KDL::Vector &p)
 Constructor. More...
 
bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const override
 Finds a closed geometric solution for this IK subproblem. More...
 
+int solutions () const override
 Number of local IK solutions.
 
+const char * describe () const override
 Return a human-readable description of this IK subproblem.
 
- Public Member Functions inherited from roboticslab::ScrewTheoryIkSubproblem
+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
+ + + + + + + + + + + + + + + +

+Private Attributes

+const int id1
 
+const int id2
 
+const MatrixExponential exp1
 
+const MatrixExponential exp2
 
+const KDL::Vector p
 
+const KDL::Vector crossPr2
 
+const double crossPr2Norm
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from roboticslab::ScrewTheoryIkSubproblem
+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+

Detailed Description

+

Single solution, double prismatic joint geometric IK subproblem given by \( e\,^{\hat{\xi_1}\,{\theta_1}} \cdot e\,^{\hat{\xi_2}\,{\theta_2}} \cdot p = k \) (consecutive translation screws to a point, see [1]).

+

Constructor & Destructor Documentation

+ +

◆ PardosGotorTwo()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PardosGotorTwo::PardosGotorTwo (int id1,
int id2,
const MatrixExponentialexp1,
const MatrixExponentialexp2,
const KDL::Vector & p 
)
+
+
Parameters
+ + + + + + +
id1Zero-based joint id of the first product of exponentials (POE) term.
id2Zero-based joint id of the second POE term.
exp1First POE term.
exp2Second POE term.
pCharacteristic point.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PardosGotorTwo::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+overridevirtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implements roboticslab::ScrewTheoryIkSubproblem.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1PardosGotorTwo.png b/classroboticslab_1_1PardosGotorTwo.png new file mode 100644 index 0000000000000000000000000000000000000000..da2a72fa7b35349c893279c063ee88611f3f3dbe GIT binary patch literal 807 zcmeAS@N?(olHy`uVBq!ia0vp^FMv3JgBeJwygLaJkO=SzasB`QKS=J)*V6t&6M!r* zK5*awYv&z#AeW;g$S;@ys0akEo(eHyU|`zj>Eakt!T5IW#iGRqJg)uv#()3&#|a&X z*yOQb_PdhS==);qk=G`sKAoC5YngS2=cG^B4PHTNyaAr4mI!R|xOLoSv;3CgbgTa! zmp00Y@h>({d%N!1%a4c7#!RZ3%RDvZ7~_lLBDRNft|mP`^Iz`E%%`fApC3Q^_c8zU z|5?|s9+-X0*6jAHO?tPK^S2prhfOXEd47H+@5b(1N4DwbJAALW=DvSv*O?8=PP66u z^q!WxQeDa&wrtj|yu)e7Ev7tY|E-$of93t{#%s>E)lEOC#r_ir+0y^apCL;;#J+vw z(LndccvjP=f(_rUhP`zPczrZCNAIZUg}n3m4c{WO*QK%SDsNaTa<`N1`t~^Y=U)zW z{_^Ch`q}qwfosr`?MtPbWX!AB#85OY&f-;!`}_>2>M3se`KKWVRJ5sh4=Hd@q+U zGyW;AWxV59&iMD&F3y*+4(aErC){HzDT!@}ky^ko)5L+%D6@envww)!9uU;{qnR<5H0sZf5@08q?`*Ju|{K5Zg$U*UrCCW?F b{DS-kR{eMLc-j{LQ#FI9tDnm{r-UW|Hgkg+ literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1PoeExpression-members.html b/classroboticslab_1_1PoeExpression-members.html new file mode 100644 index 000000000..0098b36ed --- /dev/null +++ b/classroboticslab_1_1PoeExpression-members.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::PoeExpression Member List
+
+
+ +

This is the complete list of members for roboticslab::PoeExpression, including all inherited members.

+ + + + + + + + + + + + + + + + +
append(const MatrixExponential &exp, const KDL::Frame &H_new_old=KDL::Frame::Identity())roboticslab::PoeExpressioninline
append(const PoeExpression &poe, const KDL::Frame &H_new_old=KDL::Frame::Identity())roboticslab::PoeExpression
changeBaseFrame(const KDL::Frame &H_new_old)roboticslab::PoeExpression
changeToolFrame(const KDL::Frame &H_new_old)roboticslab::PoeExpressioninline
evaluate(const KDL::JntArray &q, KDL::Frame &H) constroboticslab::PoeExpression
exponentialAtJoint(int i) constroboticslab::PoeExpressioninline
exps (defined in roboticslab::PoeExpression)roboticslab::PoeExpressionprivate
fromChain(const KDL::Chain &chain)roboticslab::PoeExpressionstatic
getTransform() constroboticslab::PoeExpressioninline
H_S_T (defined in roboticslab::PoeExpression)roboticslab::PoeExpressionprivate
makeReverse() constroboticslab::PoeExpression
PoeExpression(const KDL::Frame &H_S_T=KDL::Frame::Identity())roboticslab::PoeExpressioninlineexplicit
reverseSelf()roboticslab::PoeExpression
size() constroboticslab::PoeExpressioninline
toChain() constroboticslab::PoeExpression
+ + + + diff --git a/classroboticslab_1_1PoeExpression.html b/classroboticslab_1_1PoeExpression.html new file mode 100644 index 000000000..5c95ebbaa --- /dev/null +++ b/classroboticslab_1_1PoeExpression.html @@ -0,0 +1,541 @@ + + + + + + + +kinematics-dynamics: roboticslab::PoeExpression Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Abstraction of a product of exponentials (POE) formula. + More...

+ +

#include <ProductOfExponentials.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PoeExpression (const KDL::Frame &H_S_T=KDL::Frame::Identity())
 Constructor. More...
 
void append (const MatrixExponential &exp, const KDL::Frame &H_new_old=KDL::Frame::Identity())
 Appends a new term to this POE formula. More...
 
void append (const PoeExpression &poe, const KDL::Frame &H_new_old=KDL::Frame::Identity())
 Appends a POE to this formula. More...
 
const KDL::Frame & getTransform () const
 Retrieves the transformation between base and tool frames. More...
 
int size () const
 Size of this POE. More...
 
const MatrixExponentialexponentialAtJoint (int i) const
 Retrieves a term of the POE formula. More...
 
void changeBaseFrame (const KDL::Frame &H_new_old)
 Refers the internal coordinates of this POE to a different base. More...
 
void changeToolFrame (const KDL::Frame &H_new_old)
 Updates the tool frame. More...
 
bool evaluate (const KDL::JntArray &q, KDL::Frame &H) const
 Performs forward kinematics. More...
 
void reverseSelf ()
 Inverts this POE formula. More...
 
PoeExpression makeReverse () const
 Creates a new POE entity from the inverse of this POE formula. More...
 
KDL::Chain toChain () const
 Makes a KDL::Chain from this instance. More...
 
+ + + + +

+Static Public Member Functions

static PoeExpression fromChain (const KDL::Chain &chain)
 Builds a PoeExpression from a KDL::Chain. More...
 
+ + + + + +

+Private Attributes

+std::vector< MatrixExponentialexps
 
+KDL::Frame H_S_T
 
+

Detailed Description

+

This entity is comprised of a sequence of matrix exponentials and a transformation between the base and the tool frame.

+
See also
MatrixExponential
+

Constructor & Destructor Documentation

+ +

◆ PoeExpression()

+ +
+
+ + + + + +
+ + + + + + + + +
roboticslab::PoeExpression::PoeExpression (const KDL::Frame & H_S_T = KDL::Frame::Identity())
+
+inlineexplicit
+
+
Parameters
+ + +
H_S_TTransformation between the base and the tool frame.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ append() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void roboticslab::PoeExpression::append (const MatrixExponentialexp,
const KDL::Frame & H_new_old = KDL::Frame::Identity() 
)
+
+inline
+
+

All internal coordinates of the input POE term are referred to the current base frame after applying an (optional) intermediate transformation.

+
Parameters
+ + + +
expInput POE term.
H_new_oldTransformation between the base frame of this POE and the base frame of the input POE term.
+
+
+ +
+
+ +

◆ append() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PoeExpression::append (const PoeExpressionpoe,
const KDL::Frame & H_new_old = KDL::Frame::Identity() 
)
+
+

All internal coordinates of the input POE are referred to the current base frame after applying an (optional) intermediate transformation. The current tool frame is replaced by the appended POE's tool frame and updated in the same manner.

+
Parameters
+ + + +
poeInput POE formula.
H_new_oldTransformation between the new and the old base frame.
+
+
+ +
+
+ +

◆ changeBaseFrame()

+ +
+
+ + + + + + + + +
void PoeExpression::changeBaseFrame (const KDL::Frame & H_new_old)
+
+

All POE terms as well as the base-to-tool reference frame will be updated accordingly.

+
Parameters
+ + +
H_new_oldTransformation between the new and the old base frame.
+
+
+ +
+
+ +

◆ changeToolFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void roboticslab::PoeExpression::changeToolFrame (const KDL::Frame & H_new_old)
+
+inline
+
+
Parameters
+ + +
H_new_oldTransformation between the new and the old tool frame.
+
+
+ +
+
+ +

◆ evaluate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool PoeExpression::evaluate (const KDL::JntArray & q,
KDL::Frame & H 
) const
+
+
Parameters
+ + + +
qInput joint array (radians).
HOutput pose in cartesian space.
+
+
+
Returns
False if the size of the input joint array does not match the size of this POE.
+ +
+
+ +

◆ exponentialAtJoint()

+ +
+
+ + + + + +
+ + + + + + + + +
const MatrixExponential& roboticslab::PoeExpression::exponentialAtJoint (int i) const
+
+inline
+
+
Parameters
+ + +
iZero-based index of the requested term.
+
+
+
Returns
An unmodifiable reference to said term.
+ +
+
+ +

◆ fromChain()

+ +
+
+ + + + + +
+ + + + + + + + +
PoeExpression PoeExpression::fromChain (const KDL::Chain & chain)
+
+static
+
+
Parameters
+ + +
chainA KDL kinematic chain representation.
+
+
+
Returns
The resulting POE formula.
+
See also
toChain
+ +
+
+ +

◆ getTransform()

+ +
+
+ + + + + +
+ + + + + + + +
const KDL::Frame& roboticslab::PoeExpression::getTransform () const
+
+inline
+
+
Returns
Transformation between the base and the tool frame.
+ +
+
+ +

◆ makeReverse()

+ +
+
+ + + + + + + +
PoeExpression PoeExpression::makeReverse () const
+
+

The sequence of POE terms is reversed and the base and tool frames interchanged. Note that theta_i = -theta_(size-i)_reversed.

+
Returns
A reversed copy of this instance.
+
See also
reverseSelf
+ +
+
+ +

◆ reverseSelf()

+ +
+
+ + + + + + + +
void PoeExpression::reverseSelf ()
+
+

The sequence of POE terms is reversed and the base and tool frames interchanged. Note that theta_i = -theta_(size-i)_reversed.

+
See also
makeReverse
+ +
+
+ +

◆ size()

+ +
+
+ + + + + +
+ + + + + + + +
int roboticslab::PoeExpression::size () const
+
+inline
+
+
Returns
Number of terms in this POE formula.
+ +
+
+ +

◆ toChain()

+ +
+
+ + + + + + + +
KDL::Chain PoeExpression::toChain () const
+
+
Returns
A KDL kinematic chain representation.
+
See also
fromChain
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1RpcResponder-members.html b/classroboticslab_1_1RpcResponder-members.html new file mode 100644 index 000000000..5d3032b35 --- /dev/null +++ b/classroboticslab_1_1RpcResponder-members.html @@ -0,0 +1,107 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::RpcResponder Member List
+
+
+ +

This is the complete list of members for roboticslab::RpcResponder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
ConsumerFun typedef (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
FunctionFun typedef (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleActMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleConsumerCmdMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out, ConsumerFun cmd) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleFunctionCmdMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out, FunctionFun cmd) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterGetter(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterGetterGroup(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterSetter(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterSetterGroup(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleRunnableCmdMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out, RunnableFun cmd) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleStatMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleWaitMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
iCartesianControl (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
makeUsage()roboticslab::RpcResponder
respond(const yarp::os::Bottle &in, yarp::os::Bottle &out) overrideroboticslab::RpcResponder
RpcResponder(roboticslab::ICartesianControl *_iCartesianControl) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderinline
RunnableFun typedef (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
transformIncomingData(std::vector< double > &vin) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderinlineprotectedvirtual
transformOutgoingData(std::vector< double > &vout) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderinlineprotectedvirtual
+ + + + diff --git a/classroboticslab_1_1RpcResponder.html b/classroboticslab_1_1RpcResponder.html new file mode 100644 index 000000000..1a0cdbf37 --- /dev/null +++ b/classroboticslab_1_1RpcResponder.html @@ -0,0 +1,244 @@ + + + + + + + +kinematics-dynamics: roboticslab::RpcResponder Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Responds to RPC command messages. +

+ +

#include <CartesianControlServer.hpp>

+
+Inheritance diagram for roboticslab::RpcResponder:
+
+
+ + +roboticslab::RpcTransformResponder + +
+ + + + + + + + +

+Public Member Functions

RpcResponder (roboticslab::ICartesianControl *_iCartesianControl)
 
bool respond (const yarp::os::Bottle &in, yarp::os::Bottle &out) override
 
void makeUsage ()
 
+ + + + + +

+Protected Member Functions

+virtual bool transformIncomingData (std::vector< double > &vin)
 
+virtual bool transformOutgoingData (std::vector< double > &vout)
 
+ + + + + + + +

+Private Types

+using RunnableFun = bool(ICartesianControl::*)()
 
+using ConsumerFun = bool(ICartesianControl::*)(const std::vector< double > &)
 
+using FunctionFun = bool(ICartesianControl::*)(const std::vector< double > &, std::vector< double > &)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

+bool handleStatMsg (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+bool handleWaitMsg (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+bool handleActMsg (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+bool handleRunnableCmdMsg (const yarp::os::Bottle &in, yarp::os::Bottle &out, RunnableFun cmd)
 
+bool handleConsumerCmdMsg (const yarp::os::Bottle &in, yarp::os::Bottle &out, ConsumerFun cmd)
 
+bool handleFunctionCmdMsg (const yarp::os::Bottle &in, yarp::os::Bottle &out, FunctionFun cmd)
 
+bool handleParameterSetter (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+bool handleParameterGetter (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+bool handleParameterSetterGroup (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+bool handleParameterGetterGroup (const yarp::os::Bottle &in, yarp::os::Bottle &out)
 
+ + + +

+Private Attributes

+roboticslab::ICartesianControliCartesianControl
 
+

Member Function Documentation

+ +

◆ makeUsage()

+ +
+
+ + + + + + + +
void RpcResponder::makeUsage ()
+
+

Generate command usage information.

+ +
+
+ +

◆ respond()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool RpcResponder::respond (const yarp::os::Bottle & in,
yarp::os::Bottle & out 
)
+
+override
+
+

Respond to a message.

Parameters
+ + + +
inthe message
outthe response
+
+
+
Returns
true if there was no critical failure
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/CartesianControlServer/CartesianControlServer.hpp
  • +
  • libraries/YarpPlugins/CartesianControlServer/RpcResponder.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1RpcResponder.png b/classroboticslab_1_1RpcResponder.png new file mode 100644 index 0000000000000000000000000000000000000000..d4873a723e120bb4f6b20a13f73c25ff79739dd8 GIT binary patch literal 1155 zcmeAS@N?(olHy`uVBq!ia0vp^cYwHqgBeKfo?QwOkO=SzasB`QKalz2&DYZYLlb~3 zFg|eL0Bh$Rc_5dgB*-tA0jLNBuAT}pVqjnq@^o!TlxCD~fBlu_y{Xwo+mEkWwbXC^oK?%5cz=95Y5MTYjj!h-uWh?u zv^+HQ{tKQvVsiNpzx{ioe|V=K^Y$&XPsE=&C9zH}&2ZH!_g`}YzKLcAm1>pm*u(bj z$sFzCqG#uJPMq)e&L{6D*Ezif$fj(Zz1oWjl>zq|t{Z)sSPPw#z z>BmAjhQ(PaJB}wO?3(y+Ue4o7yu9K!g%nxozOwuy%UAG} zV_oJw5cmFpvtg&@?Bl14?v=Z}Jmv1cs|!p@CGu+8KFjSnc`uds{F>h?ccki!&&&1v zj*eXEv;9SGZ+?Zvr%BRpw=r%h{r2QeQB*6lnm*0Pxu`Kh~%o#2&$3hNtb^t?MSny?_?+z8Eoi^F~4ql7(uln2BprP$u9KV;vXU9l(mv{U(k zs#l9&u3cWb|Lw_0b6<;Mj&Ek~+_%RH8Sj$|@llwx)Kd|+EO!oJ4hh*>W zyz|viC;H~5GcIP)=j_eD-_FT&6HT1?d5(wC)8cJ+WOwHLd}gh#^htc~|4&^VF_%T} zGpZ{UxjG;2?D!)uQlO*+OrS0 + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::RpcTransformResponder Member List
+
+
+ +

This is the complete list of members for roboticslab::RpcTransformResponder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
ConsumerFun typedef (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
coord (defined in roboticslab::RpcTransformResponder)roboticslab::RpcTransformResponderprivate
FunctionFun typedef (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleActMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleConsumerCmdMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out, ConsumerFun cmd) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleFunctionCmdMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out, FunctionFun cmd) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterGetter(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterGetterGroup(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterSetter(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleParameterSetterGroup(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleRunnableCmdMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out, RunnableFun cmd) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleStatMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
handleWaitMsg(const yarp::os::Bottle &in, yarp::os::Bottle &out) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
iCartesianControl (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
makeUsage()roboticslab::RpcResponder
orient (defined in roboticslab::RpcTransformResponder)roboticslab::RpcTransformResponderprivate
respond(const yarp::os::Bottle &in, yarp::os::Bottle &out) overrideroboticslab::RpcResponder
RpcResponder(roboticslab::ICartesianControl *_iCartesianControl) (defined in roboticslab::RpcResponder)roboticslab::RpcResponderinline
RpcTransformResponder(roboticslab::ICartesianControl *iCartesianControl, KinRepresentation::coordinate_system coord, KinRepresentation::orientation_system orient, KinRepresentation::angular_units units) (defined in roboticslab::RpcTransformResponder)roboticslab::RpcTransformResponderinline
RunnableFun typedef (defined in roboticslab::RpcResponder)roboticslab::RpcResponderprivate
transformIncomingData(std::vector< double > &vin) override (defined in roboticslab::RpcTransformResponder)roboticslab::RpcTransformResponderprivatevirtual
transformOutgoingData(std::vector< double > &vout) override (defined in roboticslab::RpcTransformResponder)roboticslab::RpcTransformResponderprivatevirtual
units (defined in roboticslab::RpcTransformResponder)roboticslab::RpcTransformResponderprivate
+ + + + diff --git a/classroboticslab_1_1RpcTransformResponder.html b/classroboticslab_1_1RpcTransformResponder.html new file mode 100644 index 000000000..660dff3f6 --- /dev/null +++ b/classroboticslab_1_1RpcTransformResponder.html @@ -0,0 +1,147 @@ + + + + + + + +kinematics-dynamics: roboticslab::RpcTransformResponder Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Responds to RPC command messages, transforms incoming data. +

+ +

#include <CartesianControlServer.hpp>

+
+Inheritance diagram for roboticslab::RpcTransformResponder:
+
+
+ + +roboticslab::RpcResponder + +
+ + + + + + + + + + + +

+Public Member Functions

RpcTransformResponder (roboticslab::ICartesianControl *iCartesianControl, KinRepresentation::coordinate_system coord, KinRepresentation::orientation_system orient, KinRepresentation::angular_units units)
 
- Public Member Functions inherited from roboticslab::RpcResponder
RpcResponder (roboticslab::ICartesianControl *_iCartesianControl)
 
bool respond (const yarp::os::Bottle &in, yarp::os::Bottle &out) override
 
void makeUsage ()
 
+ + + + + +

+Private Member Functions

+bool transformIncomingData (std::vector< double > &vin) override
 
+bool transformOutgoingData (std::vector< double > &vout) override
 
+ + + + + + + +

+Private Attributes

+KinRepresentation::coordinate_system coord
 
+KinRepresentation::orientation_system orient
 
+KinRepresentation::angular_units units
 
+ +

+Additional Inherited Members

+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/CartesianControlServer/CartesianControlServer.hpp
  • +
  • libraries/YarpPlugins/CartesianControlServer/RpcResponder.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1RpcTransformResponder.png b/classroboticslab_1_1RpcTransformResponder.png new file mode 100644 index 0000000000000000000000000000000000000000..c432600a9cda3a268fd960a35fa648e3d2e81711 GIT binary patch literal 1147 zcmeAS@N?(olHy`uVBq!ia0vp^cYwHqgBeKfo?QwOkO=SzasB`QKalz2&DYZYLlb~3 zFg|eL0Bh$Rc_5dgB*-tA0jLNBuAT}pVqjq5@^obH@Ti&iwNC%<>lPqt05~G@88?0Hb-*zJj>I!zD2Lw zvg(!e+{W9N9_!x8JO9sUjQU0QqQ;j1*Y#jC28oM%m)KT$1oc~R@>)0|ShuE+hzVccwd_Wt@y z6$_)bHQi+^f9nl2&9|Jza`LoQuhtblkb2fw2J~+*>zq|t{ahBISLI9(E}e2|0n-m> zTSm95CkoC#KTx84*f;0#C0<_ft3nI>S!Eo63LE4^3m9y*9xzme9ANyiqJjBEAS3&Q z#Y}t)+|d-gyZHEHMUR%8l2WqP0~Z&d`p%9oE7m`p)bS*{>ND@RyOEb(`@0-jc~?v6 z(xspC$`5vS?CyIo>+bEfN=mwa+4Rmvo2>u%WyhHprPY6DOK;y+%C>Ly;eyA;bG|>= z{YLHfN1m6SJ52wk&9jyKzWmeDSG!X4vuh3?o;dwZ#&lnoC2KcZKVNpa>Go!|{coa^ z{iiRr%CPN9shxM~g7w3gsIY>q(ziD`?(5z%uXoOQC8hTz+A(vN$*nu%en0BnkB4td za(~Lbdu<$^P*eMC)64SAo2#a!a&Ep_^lztU{Mu>NoP}3|T%I)V`**Ih<4?EWnOC>Z z&+PCBW>i-yn%>qXEcjEKbxwx|Fth|G0)y37uKzeS!!^)LvsX*#zzkSqtm1q=d)f9) z{&nTkmO3$hyTv8$5bb`<|1m?cspYu?jPI z@0FYyo-^|WUqrhdSHA69pR(s`W~I-=-p9=MK$@4A{X=~KEJ?1PJv+A=cu%uw{boFyt=akR{0MQ;Y Aw*UYD literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1ScrewTheoryIkProblem-members.html b/classroboticslab_1_1ScrewTheoryIkProblem-members.html new file mode 100644 index 000000000..2c5471931 --- /dev/null +++ b/classroboticslab_1_1ScrewTheoryIkProblem-members.html @@ -0,0 +1,112 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ScrewTheoryIkProblem Member List
+
+
+ +

This is the complete list of members for roboticslab::ScrewTheoryIkProblem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
create(const PoeExpression &poe, const Steps &steps, bool reversed=false)roboticslab::ScrewTheoryIkProblemstatic
EXP_COMPUTED enum value (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
EXP_KNOWN enum value (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
EXP_UNKNOWN enum value (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
Frames typedef (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
getSteps() constroboticslab::ScrewTheoryIkProbleminline
isReversed() constroboticslab::ScrewTheoryIkProbleminline
operator=(const ScrewTheoryIkProblem &)=delete (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblem
poe (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
poe_term enum name (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
PoeTerms typedef (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
recalculateFrames(const Solutions &solutions, Frames &frames, PoeTerms &poeTerms) (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
recalculateFrames(const Solutions &solutions, Frames &frames, PoeTerms &poeTerms, bool backwards) (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
reversed (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
ScrewTheoryIkProblem(const ScrewTheoryIkProblem &)=delete (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblem
ScrewTheoryIkProblem(const PoeExpression &poe, const Steps &steps, bool reversed) (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
soln (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
Solutions typedefroboticslab::ScrewTheoryIkProblem
solutions() constroboticslab::ScrewTheoryIkProbleminline
solve(const KDL::Frame &H_S_T, Solutions &solutions)roboticslab::ScrewTheoryIkProblem
Steps typedefroboticslab::ScrewTheoryIkProblem
steps (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
transformPoint(const KDL::JntArray &jointValues, const PoeTerms &poeTerms) (defined in roboticslab::ScrewTheoryIkProblem)roboticslab::ScrewTheoryIkProblemprivate
~ScrewTheoryIkProblem()roboticslab::ScrewTheoryIkProblem
+ + + + diff --git a/classroboticslab_1_1ScrewTheoryIkProblem.html b/classroboticslab_1_1ScrewTheoryIkProblem.html new file mode 100644 index 000000000..5f616afb7 --- /dev/null +++ b/classroboticslab_1_1ScrewTheoryIkProblem.html @@ -0,0 +1,283 @@ + + + + + + + +kinematics-dynamics: roboticslab::ScrewTheoryIkProblem Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Proxy IK problem solver class that iterates over a sequence of subproblems. + More...

+ +

#include <ScrewTheoryIkProblem.hpp>

+ + + + + + + + +

+Public Types

+using Steps = std::vector< const ScrewTheoryIkSubproblem * >
 Ordered sequence of IK subproblems needed to solve a IK problem.
 
+using Solutions = std::vector< KDL::JntArray >
 Collection of global IK solutions.
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

~ScrewTheoryIkProblem ()
 Destructor.
 
ScrewTheoryIkProblem (const ScrewTheoryIkProblem &)=delete
 
+ScrewTheoryIkProblemoperator= (const ScrewTheoryIkProblem &)=delete
 
bool solve (const KDL::Frame &H_S_T, Solutions &solutions)
 Find all available solutions. More...
 
+int solutions () const
 Number of global IK solutions.
 
+const StepsgetSteps () const
 Solution of the IK problem (if available)
 
+bool isReversed () const
 Whether the computed solution is reversed.
 
+ + + + +

+Static Public Member Functions

static ScrewTheoryIkProblemcreate (const PoeExpression &poe, const Steps &steps, bool reversed=false)
 Creates an IK solver instance given a sequence of known subproblems. More...
 
+ + + + + + + +

+Private Types

enum  poe_term { EXP_KNOWN +, EXP_COMPUTED +, EXP_UNKNOWN + }
 
+using Frames = std::vector< KDL::Frame >
 
+using PoeTerms = std::vector< poe_term >
 
+ + + + + + + + + +

+Private Member Functions

ScrewTheoryIkProblem (const PoeExpression &poe, const Steps &steps, bool reversed)
 
+void recalculateFrames (const Solutions &solutions, Frames &frames, PoeTerms &poeTerms)
 
+bool recalculateFrames (const Solutions &solutions, Frames &frames, PoeTerms &poeTerms, bool backwards)
 
+KDL::Frame transformPoint (const KDL::JntArray &jointValues, const PoeTerms &poeTerms)
 
+ + + + + + + + + +

+Private Attributes

+const PoeExpression poe
 
+const Steps steps
 
+const bool reversed
 
+const int soln
 
+

Detailed Description

+

This class is immutable. Instantiation is allowed by means of a static builder method.

+
See also
ScrewTheoryIkProblemBuilder
+

Member Function Documentation

+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ScrewTheoryIkProblem * ScrewTheoryIkProblem::create (const PoeExpressionpoe,
const Stepssteps,
bool reversed = false 
)
+
+static
+
+
Parameters
+ + + + +
poeA product of exponentials (POE) formula.
stepsCollection of subproblems that solve this particular IK problem.
reversedTrue if the POE has been reversed (in order to find a valid solution).
+
+
+
Returns
An instance of an IK problem solver.
+ +
+
+ +

◆ solve()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ScrewTheoryIkProblem::solve (const KDL::Frame & H_S_T,
Solutionssolutions 
)
+
+
Parameters
+ + + +
H_S_TTarget pose in cartesian space.
solutionsOutput vector of solutions stored as joint arrays.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1ScrewTheoryIkProblemBuilder-members.html b/classroboticslab_1_1ScrewTheoryIkProblemBuilder-members.html new file mode 100644 index 000000000..9e0e8d898 --- /dev/null +++ b/classroboticslab_1_1ScrewTheoryIkProblemBuilder-members.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ScrewTheoryIkProblemBuilder Member List
+
+
+ +

This is the complete list of members for roboticslab::ScrewTheoryIkProblemBuilder, including all inherited members.

+ + + + + + + + + + + + + + + + +
build()roboticslab::ScrewTheoryIkProblemBuilder
MAX_SIMPLIFICATION_DEPTH (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivatestatic
poe (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
poeTerms (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
points (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
refreshSimplificationState() (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
ScrewTheoryIkProblemBuilder(const PoeExpression &poe)roboticslab::ScrewTheoryIkProblemBuilder
searchPoints(const PoeExpression &poe) (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivatestatic
searchSolutions() (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
simplify(int depth) (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
simplifyWithPadenKahanOne(const KDL::Vector &point) (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
simplifyWithPadenKahanThree(const KDL::Vector &point) (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
simplifyWithPardosOne() (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
testPoints (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
trySolve(int depth) (defined in roboticslab::ScrewTheoryIkProblemBuilder)roboticslab::ScrewTheoryIkProblemBuilderprivate
+ + + + diff --git a/classroboticslab_1_1ScrewTheoryIkProblemBuilder.html b/classroboticslab_1_1ScrewTheoryIkProblemBuilder.html new file mode 100644 index 000000000..c68e93d50 --- /dev/null +++ b/classroboticslab_1_1ScrewTheoryIkProblemBuilder.html @@ -0,0 +1,215 @@ + + + + + + + +kinematics-dynamics: roboticslab::ScrewTheoryIkProblemBuilder Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Automated IK solution finder. + More...

+ +

#include <ScrewTheoryIkProblem.hpp>

+ + + + + +

+Classes

struct  PoeTerm
 Helper structure that holds the state of a POE term. More...
 
+ + + + + + + +

+Public Member Functions

 ScrewTheoryIkProblemBuilder (const PoeExpression &poe)
 Constructor. More...
 
ScrewTheoryIkProblembuild ()
 Finds a valid sequence of geometric subproblems that solve a global IK problem. More...
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

+ScrewTheoryIkProblem::Steps searchSolutions ()
 
+void refreshSimplificationState ()
 
+void simplify (int depth)
 
+void simplifyWithPadenKahanOne (const KDL::Vector &point)
 
+void simplifyWithPadenKahanThree (const KDL::Vector &point)
 
+void simplifyWithPardosOne ()
 
+ScrewTheoryIkSubproblemtrySolve (int depth)
 
+ + + +

+Static Private Member Functions

+static std::vector< KDL::Vector > searchPoints (const PoeExpression &poe)
 
+ + + + + + + + + +

+Private Attributes

+PoeExpression poe
 
+std::vector< KDL::Vector > points
 
+std::vector< KDL::Vector > testPoints
 
+std::vector< PoeTermpoeTerms
 
+ + + +

+Static Private Attributes

+static const int MAX_SIMPLIFICATION_DEPTH = 2
 
+

Detailed Description

+

This class helps to automate the process for configuring a valid IK problem given its geometric data only. It is intended to take care of the generation and configuration of known subproblems, whereas particular joint-space solutions are meant to be computed on runtime by ScrewTheoryIkProblem.

+

Constructor & Destructor Documentation

+ +

◆ ScrewTheoryIkProblemBuilder()

+ +
+
+ + + + + + + + +
ScrewTheoryIkProblemBuilder::ScrewTheoryIkProblemBuilder (const PoeExpressionpoe)
+
+
Parameters
+ + +
poeProduct of exponentials (POE) formula.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ build()

+ +
+
+ + + + + + + +
ScrewTheoryIkProblem * ScrewTheoryIkProblemBuilder::build ()
+
+
Returns
An instance of an IK problem solver if valid, null otherwise.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1ScrewTheoryIkSubproblem-members.html b/classroboticslab_1_1ScrewTheoryIkSubproblem-members.html new file mode 100644 index 000000000..fd8a0203a --- /dev/null +++ b/classroboticslab_1_1ScrewTheoryIkSubproblem-members.html @@ -0,0 +1,95 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::ScrewTheoryIkSubproblem Member List
+
+
+ +

This is the complete list of members for roboticslab::ScrewTheoryIkSubproblem, including all inherited members.

+ + + + + + + + +
describe() const =0roboticslab::ScrewTheoryIkSubproblempure virtual
JointIdsToSolutions typedefroboticslab::ScrewTheoryIkSubproblem
JointIdToSolution typedefroboticslab::ScrewTheoryIkSubproblem
Solutions typedefroboticslab::ScrewTheoryIkSubproblem
solutions() const =0roboticslab::ScrewTheoryIkSubproblempure virtual
solve(const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const =0roboticslab::ScrewTheoryIkSubproblempure virtual
~ScrewTheoryIkSubproblem()=defaultroboticslab::ScrewTheoryIkSubproblemvirtual
+ + + + diff --git a/classroboticslab_1_1ScrewTheoryIkSubproblem.html b/classroboticslab_1_1ScrewTheoryIkSubproblem.html new file mode 100644 index 000000000..a0f1df414 --- /dev/null +++ b/classroboticslab_1_1ScrewTheoryIkSubproblem.html @@ -0,0 +1,212 @@ + + + + + + + +kinematics-dynamics: roboticslab::ScrewTheoryIkSubproblem Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::ScrewTheoryIkSubproblem Class Referenceabstract
+
+
+ +

Interface shared by all IK subproblems found in Screw Theory applied to Robotics. + More...

+ +

#include <ScrewTheoryIkProblem.hpp>

+
+Inheritance diagram for roboticslab::ScrewTheoryIkSubproblem:
+
+
+ + +roboticslab::PadenKahanOne +roboticslab::PadenKahanThree +roboticslab::PadenKahanTwo +roboticslab::PardosGotorFour +roboticslab::PardosGotorOne +roboticslab::PardosGotorThree +roboticslab::PardosGotorTwo + +
+ + + + + + + + + + + +

+Public Types

+using JointIdToSolution = std::pair< int, double >
 Maps a joint id to a screw magnitude.
 
+using JointIdsToSolutions = std::vector< JointIdToSolution >
 At least one joint-id+value pair per solution.
 
+using Solutions = std::vector< JointIdsToSolutions >
 Collection of local IK solutions.
 
+ + + + + + + + + + + + + +

+Public Member Functions

+virtual ~ScrewTheoryIkSubproblem ()=default
 Destructor.
 
virtual bool solve (const KDL::Frame &rhs, const KDL::Frame &pointTransform, Solutions &solutions) const =0
 Finds a closed geometric solution for this IK subproblem. More...
 
+virtual int solutions () const =0
 Number of local IK solutions.
 
+virtual const char * describe () const =0
 Return a human-readable description of this IK subproblem.
 
+

Detailed Description

+

Derived classes are considered to be immutable.

+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool roboticslab::ScrewTheoryIkSubproblem::solve (const KDL::Frame & rhs,
const KDL::Frame & pointTransform,
Solutionssolutions 
) const
+
+pure virtual
+
+

Given the product of exponentials (POE) formula \( \prod_i e\,^{\hat{\xi}_i\,{\theta_i}} \cdot H_{ST}(0) = H_{ST}(\theta) \) , , invariant and known terms are rearranged to the right side (rhs) as follows:

+

+\[ \prod_{i=j}^{j+k} e\,^{\hat{\xi}_i\,{\theta_i}} = \left [ \prod_{i=1}^{j-1} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \cdot H_{ST}(\theta) \cdot \left [ H_{ST}(0) \right ]^{-1} \cdot \left [ \prod_{i=j+k+1}^{N} e\,^{\hat{\xi}_i\,{\theta_i}} \right ]^{-1} \] +

+

where \( j = \{1, 2, ..., N\}, k = \{1, 2, ..., N-1\}, 1 <= j+k <= N \) .

+

Given \( N \) terms in the POE formula, \( j \) of which are unknowns, any characteristic point \( p \) postmultiplying this expression could be rewritten as \( p' \) per:

+

+\[ \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot \prod_{i=j+1}^N e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p = \prod_{i=1}^j e\,^{\hat{\xi}_i\,{\theta_i}} \cdot p' \] +

+

where pointTransform is the transformation matrix that produces \( p' \) from \( p \) .

+
Parameters
+ + + + +
rhsRight-hand side of the POE formula prior to being applied to the right-hand side of this subproblem.
pointTransformTransformation frame applied to the first (and perhaps only) characteristic point of this subproblem.
solutionsOutput vector of local solutions.
+
+
+
Returns
True if all solutions are reachable, false otherwise.
+ +

Implemented in roboticslab::PardosGotorFour, roboticslab::PardosGotorThree, roboticslab::PardosGotorTwo, roboticslab::PardosGotorOne, roboticslab::PadenKahanThree, roboticslab::PadenKahanTwo, and roboticslab::PadenKahanOne.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classroboticslab_1_1ScrewTheoryIkSubproblem.png b/classroboticslab_1_1ScrewTheoryIkSubproblem.png new file mode 100644 index 0000000000000000000000000000000000000000..7ccf84c5ed9a58b408f9d2eae2ccdc0ae71e7992 GIT binary patch literal 2220 zcmc&$dr*_v700eDJ`iSv6&04W8W6T(P+k!*S?dFm2t!jIF0X(f3gNMoHz8rmZcQ`F z!w_J3L&sp1M_@F>U?fmLWO>9P5HMhf1jI-pkdQ!3Ncxem+jge2{by(PH*>%5+;e~5 zIrp4%&z+AH;O}!_-_daxL3n|8i=0D@K45E+)wp9Qy{mo2YJCGU*m?nFGv~$YQLBlKgZ9t^o^G7Q zxhZNo?0pXLI-}OSD?g1u3JJl(evB~**Q_`fvc4L`(3dU>>&^(B%Q$bS-{w+M61{sR z*HEHWj{10W#!k3RhIovdv5x1r(fi&&3TW>#oDR#D4~qaG-{=bfPd3>O-`E(Nu*2tP zKJC;WBg>YS9a~tO^xluU<{cfop-i8+pL5jq|M&7=lwSCC#*8%Ke+>8C+5))6W73=A zo7WD9S@f0UVxtrNOk=RX47K;xM89*V{jCnS)20s?ho18cGdd;8cZc$8exP|0U)4mH zHpN#3^ZL22e#`OmfTI3CPhoPVh5S%iy+Sk}xz&P77zQF!HM7FWyj z7WhiQIWKe&D)`Zq&)Jn}m9&skCn`3hfHA5%H1Z5?D}DL~mmn`Fi&ci6$Rv9&sF99C zl8k)ejfb1e$JKgsAA7Y;dhXZ!xynInQZ3k=Nuvl*1WYb1{{wA7I@O^y$7dgIxAA0a zkCpR-lGKH(X6^^wdl~}(kgj&X-9qs<%a;h*M|EF1ww7d$ z=CB5)%{d|;(A(=2YioHU$my!pR-P(~z`OkD(lRgK1(A$vqY%6#QlhGRLKoA^zbs*a zT@bR$C6pNV8_3|vCh;fKb$2BZCC)ky_bRM+qGJ4?&U*_YcX(=)Sh1k~wp-_!{LDib zE%GiCbk4Dtte(Pog!)%?75jPGz6*@8qRj3hm6IUFe&~el@2S%7A_Nn1F&nwnUqEl2 z4yi0%a4D`B&oY5Y+Gn?1g?YEQOBEIh7Kc+d?tTn#3v!~4-it`GO@Sya&3kb?vmTYl=TQGl$ZE?gWNwf`Yjk;Mc+kamoK;+aIC|{sk;hQIY@v literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1SpnavSensorDevice-members.html b/classroboticslab_1_1SpnavSensorDevice-members.html new file mode 100644 index 000000000..fe6bfe592 --- /dev/null +++ b/classroboticslab_1_1SpnavSensorDevice-members.html @@ -0,0 +1,112 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::SpnavSensorDevice Member List
+
+
+ +

This is the complete list of members for roboticslab::SpnavSensorDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
acquireData() overrideroboticslab::SpnavSensorDevicevirtual
acquireInterfaces() overrideroboticslab::SpnavSensorDevicevirtual
actuatorState (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
buttonClose (defined in roboticslab::SpnavSensorDevice)roboticslab::SpnavSensorDeviceprivate
buttonOpen (defined in roboticslab::SpnavSensorDevice)roboticslab::SpnavSensorDeviceprivate
CentroidTransform (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprivate
configureFixedAxes(const yarp::os::Value &v)roboticslab::StreamingDeviceprivate
currentX (defined in roboticslab::SpnavSensorDevice)roboticslab::SpnavSensorDeviceprivate
data (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
fixedAxes (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
gain (defined in roboticslab::SpnavSensorDevice)roboticslab::SpnavSensorDeviceprivate
getActuatorState() overrideroboticslab::SpnavSensorDevicevirtual
hasValidMovementData() const overrideroboticslab::SpnavSensorDevicevirtual
iAnalogSensor (defined in roboticslab::SpnavSensorDevice)roboticslab::SpnavSensorDeviceprivate
iCartesianControl (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
initialize(bool usingStreamingPreset) overrideroboticslab::SpnavSensorDevicevirtual
sendMovementCommand(double timestamp) overrideroboticslab::SpnavSensorDevicevirtual
setCartesianControllerHandle(ICartesianControl *iCartesianControl)roboticslab::StreamingDeviceinline
SpnavSensorDevice(yarp::os::Searchable &config, bool usingMovi, double gain=0.0)roboticslab::SpnavSensorDevice
stopMotion() overrideroboticslab::SpnavSensorDevicevirtual
StreamingDevice(yarp::os::Searchable &config)roboticslab::StreamingDevice
transformData(double scaling) overrideroboticslab::SpnavSensorDevicevirtual
usingMovi (defined in roboticslab::SpnavSensorDevice)roboticslab::SpnavSensorDeviceprivate
~StreamingDevice()roboticslab::StreamingDevicevirtual
+ + + + diff --git a/classroboticslab_1_1SpnavSensorDevice.html b/classroboticslab_1_1SpnavSensorDevice.html new file mode 100644 index 000000000..6559274fb --- /dev/null +++ b/classroboticslab_1_1SpnavSensorDevice.html @@ -0,0 +1,405 @@ + + + + + + + +kinematics-dynamics: roboticslab::SpnavSensorDevice Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Represents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion. +

+ +

#include <SpnavSensorDevice.hpp>

+
+Inheritance diagram for roboticslab::SpnavSensorDevice:
+
+
+ + +roboticslab::StreamingDevice + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SpnavSensorDevice (yarp::os::Searchable &config, bool usingMovi, double gain=0.0)
 Constructor.
 
bool acquireInterfaces () override
 Acquires plugin interfaces. More...
 
bool initialize (bool usingStreamingPreset) override
 Perform any custom initialization needed. This method is called after the successful creation of the device and once all interface handles are acquired. More...
 
bool acquireData () override
 Acquires data from remote device. More...
 
bool transformData (double scaling) override
 Performs required operations on stored data. More...
 
int getActuatorState () override
 If actuator command data is available, return its current state. More...
 
bool hasValidMovementData () const override
 Checks whether the device may forward acquired and processed data to the controller. More...
 
void sendMovementCommand (double timestamp) override
 Sends movement command to the cartesian controller. More...
 
+void stopMotion () override
 Sends a movement command that would stop motion.
 
- Public Member Functions inherited from roboticslab::StreamingDevice
 StreamingDevice (yarp::os::Searchable &config)
 Constructor. More...
 
+virtual ~StreamingDevice ()
 Destructor.
 
void setCartesianControllerHandle (ICartesianControl *iCartesianControl)
 Stores handle to an ICartesianControl instance. More...
 
+ + + + + + + + + + + + + +

+Private Attributes

+yarp::dev::IAnalogSensor * iAnalogSensor
 
+std::vector< double > currentX
 
+bool usingMovi
 
+double gain
 
+bool buttonClose
 
+bool buttonOpen
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from roboticslab::StreamingDevice
+ICartesianControliCartesianControl
 
+std::vector< double > data
 
+std::vector< bool > fixedAxes
 
+int actuatorState
 
+

Member Function Documentation

+ +

◆ acquireData()

+ +
+
+ + + + + +
+ + + + + + + +
bool SpnavSensorDevice::acquireData ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ acquireInterfaces()

+ +
+
+ + + + + +
+ + + + + + + +
bool SpnavSensorDevice::acquireInterfaces ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ getActuatorState()

+ +
+
+ + + + + +
+ + + + + + + +
int SpnavSensorDevice::getActuatorState ()
+
+overridevirtual
+
+
Returns
integer value describing current actuator state
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ hasValidMovementData()

+ +
+
+ + + + + +
+ + + + + + + +
bool SpnavSensorDevice::hasValidMovementData () const
+
+overridevirtual
+
+
Returns
true if valid, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SpnavSensorDevice::initialize (bool usingStreamingPreset)
+
+overridevirtual
+
+
Parameters
+ + +
usingStreamingPresetWhether the cartesian controller supports streaming command presets or not.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ sendMovementCommand()

+ +
+
+ + + + + +
+ + + + + + + + +
void SpnavSensorDevice::sendMovementCommand (double timestamp)
+
+overridevirtual
+
+
Parameters
+ + +
timestampCurrent timestamp.
+
+
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ transformData()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SpnavSensorDevice::transformData (double scaling)
+
+overridevirtual
+
+
Parameters
+ + +
scalingScaling factor applied to each data value.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • programs/streamingDeviceController/SpnavSensorDevice.hpp
  • +
  • programs/streamingDeviceController/SpnavSensorDevice.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1SpnavSensorDevice.png b/classroboticslab_1_1SpnavSensorDevice.png new file mode 100644 index 0000000000000000000000000000000000000000..67f2a61659ef2d63122b3891b85850aaee42e2fc GIT binary patch literal 1127 zcmeAS@N?(olHy`uVBq!ia0vp^M}WA4gBeKnKic94q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0zj?YihEy=Vo%?p$XDtr5?I~vq{+HL> zs^M%iIqCD`c3|=K0L0KfBsp`#SSyl-1)m34)Ui@I3+e&f5F$?)xp{rb`!Uw@i$njPQV zIAeKa7Et?K|2H@HubSre)^p4CO76rttpeh&udY|{x!~)!gCWlO%9i_I?(uJYb33H< znMY2{HmjXE+fF`gj=e9;`#WlGNN9hl)tl(zoJ`d!{~&>I@CN zT_<<4T5?^CdgxWVsRFB3*=m6NdVzV-l%PDl2K#H`2kw656o`+PclgLDz~A;exQ4|g zOua$GL93Wafpr3t&*?b~9*j$j)ER;pR-WMmN^l*}21}iq!(g#GQKD^kx1-CGdtMxZ z6Xm7|C@I;#U|7`Qk=s8{e#75mUp{V^6cH@EWmD(J{Y+-ZPA)~Ib#EPd<~BsSJefMJ zQc3B#sNWTyYZSNEdH+Fh%cefHVy)Vj^@`rZOLmm^yQ4(S;F zU9+$0+_93VOD&I^XEMblnO)X#F+P4X zYPR@TB`(-`^{l7Mbr+W>JypAaQuaYk9UWg5vl z9#F${r1{}L5qZXmS2-8(tFk!odvP=X!;b+NKMYj?P7FZ33@;ox880*oF)d(6Q_vUc zrCBb{`T!W}P)#i#ocrUlgMatF+#JNP=Yr(yr5Q{Wt-Ze8=EnApW7p+`E$cgzf7MiUShUv za`o%1$H#86d|rDp>*@0RzozPfJ_`b(@4mTZxbE7I!>K;{8wwMym9QU@jBNvkbwkJZ zx}BESj-B70z}qrAPa*4BeA^BCE3 + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::StreamResponder Member List
+
+
+ +

This is the complete list of members for roboticslab::StreamResponder, including all inherited members.

+ + + + + + + + +
BiConsumerFun typedef (defined in roboticslab::StreamResponder)roboticslab::StreamResponderprivate
ConsumerFun typedef (defined in roboticslab::StreamResponder)roboticslab::StreamResponderprivate
handleBiConsumerCmdMsg(const yarp::os::Bottle &in, BiConsumerFun cmd) (defined in roboticslab::StreamResponder)roboticslab::StreamResponderprivate
handleConsumerCmdMsg(const yarp::os::Bottle &in, ConsumerFun cmd) (defined in roboticslab::StreamResponder)roboticslab::StreamResponderprivate
iCartesianControl (defined in roboticslab::StreamResponder)roboticslab::StreamResponderprivate
onRead(yarp::os::Bottle &b) override (defined in roboticslab::StreamResponder)roboticslab::StreamResponder
StreamResponder(roboticslab::ICartesianControl *_iCartesianControl) (defined in roboticslab::StreamResponder)roboticslab::StreamResponderinline
+ + + + diff --git a/classroboticslab_1_1StreamResponder.html b/classroboticslab_1_1StreamResponder.html new file mode 100644 index 000000000..164f677a8 --- /dev/null +++ b/classroboticslab_1_1StreamResponder.html @@ -0,0 +1,140 @@ + + + + + + + +kinematics-dynamics: roboticslab::StreamResponder Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Responds to streaming command messages. +

+ +

#include <CartesianControlServer.hpp>

+
+Inheritance diagram for roboticslab::StreamResponder:
+
+
+ +
+ + + + + + +

+Public Member Functions

StreamResponder (roboticslab::ICartesianControl *_iCartesianControl)
 
+void onRead (yarp::os::Bottle &b) override
 
+ + + + + +

+Private Types

+using ConsumerFun = void(ICartesianControl::*)(const std::vector< double > &)
 
+using BiConsumerFun = void(ICartesianControl::*)(const std::vector< double > &, double)
 
+ + + + + +

+Private Member Functions

+void handleConsumerCmdMsg (const yarp::os::Bottle &in, ConsumerFun cmd)
 
+void handleBiConsumerCmdMsg (const yarp::os::Bottle &in, BiConsumerFun cmd)
 
+ + + +

+Private Attributes

+roboticslab::ICartesianControliCartesianControl
 
+
The documentation for this class was generated from the following files:
    +
  • libraries/YarpPlugins/CartesianControlServer/CartesianControlServer.hpp
  • +
  • libraries/YarpPlugins/CartesianControlServer/StreamResponder.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1StreamResponder.png b/classroboticslab_1_1StreamResponder.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5be2d4e008e52638075d586b3e60605491bd58 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0y~yU{nLL12~w0WV4t?1CWvk@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+q}1jJy2p%HB1{R~^@^G(Y<-{Oz3kXZHH#+!bHP@A)sw^sVx` zipy$0S6{qxbmxj)<==~>SI;aGy}C_LbGn;&(R<<5POty5ulAf|x@F~=u*)yfZJA!( zyPdh!I&;bwyKl2(%cgmI1kK0HGF4y@ZIZ=*S)RTpYJsP=n{VR zKU=TJG#KBp-e`Z7CFHux<=1Hmq94LJnLBCT@UD%r1xpsF>(rIn^AGag#EzF#M*Fyzc6iv%^h5|0$aBV145BcKhvfo|$J?{mz+{J + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::StreamingDevice Member List
+
+
+ +

This is the complete list of members for roboticslab::StreamingDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
acquireData()=0roboticslab::StreamingDevicepure virtual
acquireInterfaces()=0roboticslab::StreamingDevicepure virtual
actuatorState (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
CentroidTransform (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprivate
configureFixedAxes(const yarp::os::Value &v)roboticslab::StreamingDeviceprivate
data (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
fixedAxes (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
getActuatorState()roboticslab::StreamingDeviceinlinevirtual
hasValidMovementData() constroboticslab::StreamingDevicevirtual
iCartesianControl (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
initialize(bool usingStreamingPreset)roboticslab::StreamingDeviceinlinevirtual
sendMovementCommand(double timestamp)=0roboticslab::StreamingDevicepure virtual
setCartesianControllerHandle(ICartesianControl *iCartesianControl)roboticslab::StreamingDeviceinline
stopMotion()=0roboticslab::StreamingDevicepure virtual
StreamingDevice(yarp::os::Searchable &config)roboticslab::StreamingDevice
transformData(double scaling)roboticslab::StreamingDevicevirtual
~StreamingDevice()roboticslab::StreamingDevicevirtual
+ + + + diff --git a/classroboticslab_1_1StreamingDevice.html b/classroboticslab_1_1StreamingDevice.html new file mode 100644 index 000000000..96794da87 --- /dev/null +++ b/classroboticslab_1_1StreamingDevice.html @@ -0,0 +1,453 @@ + + + + + + + +kinematics-dynamics: roboticslab::StreamingDevice Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Abstract class for a YARP streaming device. +

+ +

#include <StreamingDevice.hpp>

+
+Inheritance diagram for roboticslab::StreamingDevice:
+
+
+ + +roboticslab::InvalidDevice +roboticslab::LeapMotionSensorDevice +roboticslab::SpnavSensorDevice +roboticslab::WiimoteSensorDevice + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StreamingDevice (yarp::os::Searchable &config)
 Constructor. More...
 
+virtual ~StreamingDevice ()
 Destructor.
 
virtual bool acquireInterfaces ()=0
 Acquires plugin interfaces. More...
 
virtual bool initialize (bool usingStreamingPreset)
 Perform any custom initialization needed. This method is called after the successful creation of the device and once all interface handles are acquired. More...
 
virtual bool acquireData ()=0
 Acquires data from remote device. More...
 
virtual bool transformData (double scaling)
 Performs required operations on stored data. More...
 
virtual int getActuatorState ()
 If actuator command data is available, return its current state. More...
 
virtual bool hasValidMovementData () const
 Checks whether the device may forward acquired and processed data to the controller. More...
 
virtual void sendMovementCommand (double timestamp)=0
 Sends movement command to the cartesian controller. More...
 
+virtual void stopMotion ()=0
 Sends a movement command that would stop motion.
 
void setCartesianControllerHandle (ICartesianControl *iCartesianControl)
 Stores handle to an ICartesianControl instance. More...
 
+ + + + + + + + + +

+Protected Attributes

+ICartesianControliCartesianControl
 
+std::vector< double > data
 
+std::vector< bool > fixedAxes
 
+int actuatorState
 
+ + + + +

+Private Member Functions

+void configureFixedAxes (const yarp::os::Value &v)
 Stores vector of values representing axes that are always fixed.
 
+ + + +

+Private Attributes

+friend CentroidTransform
 
+

Constructor & Destructor Documentation

+ +

◆ StreamingDevice()

+ +
+
+ + + + + + + + +
StreamingDevice::StreamingDevice (yarp::os::Searchable & config)
+
+
Parameters
+ + +
configList of options the YARP device should be opened with.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ acquireData()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool roboticslab::StreamingDevice::acquireData ()
+
+pure virtual
+
+
+ +

◆ acquireInterfaces()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool roboticslab::StreamingDevice::acquireInterfaces ()
+
+pure virtual
+
+
+ +

◆ getActuatorState()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int roboticslab::StreamingDevice::getActuatorState ()
+
+inlinevirtual
+
+
Returns
integer value describing current actuator state
+ +

Reimplemented in roboticslab::SpnavSensorDevice, and roboticslab::LeapMotionSensorDevice.

+ +
+
+ +

◆ hasValidMovementData()

+ +
+
+ + + + + +
+ + + + + + + +
bool StreamingDevice::hasValidMovementData () const
+
+virtual
+
+
Returns
true if valid, false otherwise
+ +

Reimplemented in roboticslab::WiimoteSensorDevice, and roboticslab::SpnavSensorDevice.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool roboticslab::StreamingDevice::initialize (bool usingStreamingPreset)
+
+inlinevirtual
+
+
Parameters
+ + +
usingStreamingPresetWhether the cartesian controller supports streaming command presets or not.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented in roboticslab::WiimoteSensorDevice, roboticslab::SpnavSensorDevice, and roboticslab::LeapMotionSensorDevice.

+ +
+
+ +

◆ sendMovementCommand()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void roboticslab::StreamingDevice::sendMovementCommand (double timestamp)
+
+pure virtual
+
+
Parameters
+ + +
timestampCurrent timestamp.
+
+
+ +

Implemented in roboticslab::WiimoteSensorDevice, roboticslab::InvalidDevice, roboticslab::SpnavSensorDevice, and roboticslab::LeapMotionSensorDevice.

+ +
+
+ +

◆ setCartesianControllerHandle()

+ +
+
+ + + + + +
+ + + + + + + + +
void roboticslab::StreamingDevice::setCartesianControllerHandle (ICartesianControliCartesianControl)
+
+inline
+
+
Parameters
+ + +
iCartesianControlHandle to an ICartesianControl instance.
+
+
+ +
+
+ +

◆ transformData()

+ +
+
+ + + + + +
+ + + + + + + + +
bool StreamingDevice::transformData (double scaling)
+
+virtual
+
+
Parameters
+ + +
scalingScaling factor applied to each data value.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented in roboticslab::WiimoteSensorDevice, roboticslab::SpnavSensorDevice, and roboticslab::LeapMotionSensorDevice.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • programs/streamingDeviceController/StreamingDevice.hpp
  • +
  • programs/streamingDeviceController/StreamingDevice.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1StreamingDevice.png b/classroboticslab_1_1StreamingDevice.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7383eb7567820b579a4b55c4b591804ebc35c2 GIT binary patch literal 2342 zcmb7G2~bn#7Dh#(R9sN&#-ai$q6H;HQ31uURW4ZJf`ADi5(t?1SONk`tW`m3fdan7 zCMr+R*j^AR2#8@Dcn=y86k>=30wQHeSuRRQO4#0iGdi8Aoj3FD%suz~|9_V6Ki@f- zq@D0|)z{mkr=_K(@9su8sin1q5AnG<_ebL=$!s^DsZx9+OotWRZ?m*{iTgrM9? zU(p&Xo*(Y2*2n;AYo9gQo>qg-_^pDr)+HrAzy65SYpARppODb9gVr@nU-~)Safth< z?~Oq9+*w_NqGnvDZ>HYg;OD!!O82cRwx^R4^W^?>C%RP3i#yuZE-vH@#fxfC!5T8| z&KW7dwab!DMO%@g13aqSmESu|MQ>5c5B(Ii+*)0mkv|F0#R0wNdIxbap2IbTLE6WIhC)xe*=r&=&ov zCqXvcMHsj{H-V1Wbbigd4yrL>_5K#W7FK{jzuGWoYS4?Onwtz8i&ad=zR$!x6beXS zIk?xEoMb;P4cwCss`;NPNfxNi!jBPpi#m>j^F?1^ApasIbXoZ&twoDZ_b*wjty_%C zvjCFd;P4jv9{I4^lm1}Umb&-X_&_?P-2-wP;A_i~Z-ApVpsb96scaW4Jhp+I6b$?s z@T2LeJtmlXe>JrAqwkiw$Z0Ih?sNe2qwgZ$W*sap1#5+mX^I0JF!eZgcdd$-bYcY+ ztl^UB2M4ff7+^7-Kb0{rybn`n662(ahaD*D=}OkaQc;kMtnS`H0&qtLETFv>>v3}q zH-Fj03LVy2xdv;dO7+@=-fxW(8X5+bOvMx`i23Qz3OrRx>VHW!q@7C|?IeY~dTOL- zQVMndk%bkwd8(-@Yj`5|aoFISLitg|<;l-99djK^9_=B2hmoh{n{Ao~i7JXudB~OiU8IpEzk8zl6MqT)Uh2>Owg~!jIe#{8lM+8%oA|Xhy61 zp8Nq$$F!z4CBMH1|4RQLQ)0qfv1?8dkvc;`Y}lcxmyxEFW2r9P@!LP#=uGZgKWH~r z+mc@&TzKu%=MUQ9lvOk1JHdF^Qa-b#Utrs9~5&?>sBZ=aQo#S8X__`zji(k_1>v&)dkWP%7m00+<4fQ{UV>@oP5|WRyxYK@+c@M7eOpIYF~J+ z5v`aMyGvtpiiV5^Lw#ZBNx0p3Qk+RTOZ4yFRYiz2CblD-_AaY)M&es-H(r2yh`3h< ziE?0u&odAsAu<5Y0Yjad)1v=l6f^31GP~anDu_JEy3Pu7LUsLMYT{`T!o4v9P~MJh zN7JLxw#SEP^wiu`OBRzkH&bNzd&-3ze*Trv%lx)?!Hn~eXNG=bvo9>Ge?G>5vis%^ zu=G1OLE(*5-+yg9bIa|}Xb7_3s%gqq_0P6cUy=FEaeJ%fAWx-I&2(=S(hfS@c06V) zVug1La7N2!rxOkG5FVQ%3bmsWiMIE}aYfK14AYmya%;@oV=cV`4N>vc=qAp|Lj*rD zJ9oQkcauKX!K9k0Pkee;bA!q}xn<0qd3DG6@!tgfJr%sxOqiTF-$4q>@S~`s z6rWpl3rBla1A5-;K^I>nUgx(cdN!!^x%1`exs)XN-aADD6gGnJK=CczTlb3vIQy#m zR{A$z0ajxqG5!l_xV*IjI=qNqI-mGe731gnTr2e$^=GDX!4 z7ttf)^n^h~W(IoY?s$0f0^*3b=S@wJ?eGVc2MWc-?-m#f_oA!<0U7IYOuR5UyXAZ7 z7p6n~_y^n9O#5FZzYZ-8C5p~l>urrvBgxaPPgD^B zaG6t)<5L*6>dWA`!s3zXhQftpsbfn3JmqKr6(A&M(6?&SJPIr(W213?3uwo=&;D*+ zT!E!@xe$c3*O + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::StreamingDeviceController Member List
+
+
+ +

This is the complete list of members for roboticslab::StreamingDeviceController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
cartesianControlClientDevice (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
centroidPort (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
centroidTransform (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
close() override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceController
configure(yarp::os::ResourceFinder &rf) override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceController
disableSensorsLowLevel (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
getPeriod() override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceController
iCartesianControl (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
interruptModule() override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceController
isStopped (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
onRead(yarp::os::Bottle &bot) override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceController
period (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
proximityPort (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
scaling (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
streamingDevice (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
syncPort (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
thresholdAlertHigh (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
thresholdAlertLow (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
update(double timestamp) (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerprivate
updateModule() override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceController
~StreamingDeviceController() override (defined in roboticslab::StreamingDeviceController)roboticslab::StreamingDeviceControllerinline
+ + + + diff --git a/classroboticslab_1_1StreamingDeviceController.html b/classroboticslab_1_1StreamingDeviceController.html new file mode 100644 index 000000000..736abf678 --- /dev/null +++ b/classroboticslab_1_1StreamingDeviceController.html @@ -0,0 +1,175 @@ + + + + + + + +kinematics-dynamics: roboticslab::StreamingDeviceController Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Sends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator. +

+ +

#include <StreamingDeviceController.hpp>

+
+Inheritance diagram for roboticslab::StreamingDeviceController:
+
+
+ +
+ + + + + + + + + + + + + + +

+Public Member Functions

+bool configure (yarp::os::ResourceFinder &rf) override
 
+bool updateModule () override
 
+bool interruptModule () override
 
+bool close () override
 
+double getPeriod () override
 
+void onRead (yarp::os::Bottle &bot) override
 
+ + + +

+Private Member Functions

+bool update (double timestamp)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

+StreamingDevicestreamingDevice
 
+yarp::dev::PolyDriver cartesianControlClientDevice
 
+roboticslab::ICartesianControliCartesianControl
 
+yarp::os::BufferedPort< yarp::os::Bottle > proximityPort
 
+int thresholdAlertHigh
 
+int thresholdAlertLow
 
+bool disableSensorsLowLevel
 
+yarp::os::BufferedPort< yarp::os::Bottle > centroidPort
 
+CentroidTransform centroidTransform
 
+yarp::os::BufferedPort< yarp::os::Bottle > syncPort
 
+double period
 
+double scaling
 
+bool isStopped
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classroboticslab_1_1StreamingDeviceController.png b/classroboticslab_1_1StreamingDeviceController.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b1b5dcd5dad2076b54a75e979033eabc08929e GIT binary patch literal 1495 zcmbVMdox%IJ04Pa@-Ie8J>wL$P-Lg&7-ObB+b8}M$r{|^gf`^x7=*#5scnXYBq>L)Z zdk{PUnd$Qw=6hKIfIpIslJ3z>U9kC3h{yO5G_{o!ce9-? zT%E$txw8xTFfd^u_f-MxrPh?B=8|n&$+|;&J6gZ0AyzJFGSbil#)m%fJe%4O#$~^0 z;b_&?je_A(w85F_D#hSduJg-^^2k+t|6&B_5fe2MF3j(T)eN&faduV1xn+k6Z}>@WaPZ+%Z}A*sKe1)&^P>b9+27ehC(OX?j@tPVq|6nh?*h2 zqjb0n6ZUM5UD3u!BP)I#)c2;@BQs}aH%}9taQ9Ri}yZyHlNsKRA{xdLDGFBZvMAJ=|^ zJ7TSvod52ZAX)P;xXfE=4>-9w7HVq7D2g+tG$#iE*j-Y}fJ{G3h8&1-1J-TKGjRv36>`H#azJ(J581wE64TQVT;^O8OQs=N!{`vAFUeF2OI_~vk- z7Jx<|`2XdJD1_Px1A{)m0w}k!%us}H36M8d9FWy;apDo6WrNC4V`)0bWy@P+BIH6R zE(0!_$4!@(=|p&=p9a2js)A(bvdIu?(o!D$O}XTd3^J5)c(~eeaY>aqT7+8XrE`Tr#@yq&5R!)<_Bh- z9HAhocJ8ss#8pH_p2y7zd>6!Gjo%5d#$;; z6UsCN3#ZjcqEGkftAeiPyt4?b_1&zF!h?SK9KM)HtyUy*p`k$_;BwE4J-@v!lsK<0 zY2+M;2qd^kgl4-n + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::StreamingDeviceFactory Member List
+
+
+ +

This is the complete list of members for roboticslab::StreamingDeviceFactory, including all inherited members.

+ + + +
makeDevice(const std::string &deviceName, yarp::os::Searchable &config)roboticslab::StreamingDeviceFactorystatic
StreamingDeviceFactory() (defined in roboticslab::StreamingDeviceFactory)roboticslab::StreamingDeviceFactoryprivate
+ + + + diff --git a/classroboticslab_1_1StreamingDeviceFactory.html b/classroboticslab_1_1StreamingDeviceFactory.html new file mode 100644 index 000000000..775c13821 --- /dev/null +++ b/classroboticslab_1_1StreamingDeviceFactory.html @@ -0,0 +1,149 @@ + + + + + + + +kinematics-dynamics: roboticslab::StreamingDeviceFactory Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::StreamingDeviceFactory Class Reference
+
+
+ +

Factory class for creating instances of StreamingDevice. +

+ +

#include <StreamingDevice.hpp>

+ + + + + +

+Static Public Member Functions

static StreamingDevicemakeDevice (const std::string &deviceName, yarp::os::Searchable &config)
 Creates a new YARP device handle. More...
 
+

Member Function Documentation

+ +

◆ makeDevice()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
StreamingDevice * StreamingDeviceFactory::makeDevice (const std::string & deviceName,
yarp::os::Searchable & config 
)
+
+static
+
+
Parameters
+ + + +
deviceNameName of the device.
configList of options the YARP device should be opened with.
+
+
+
Returns
Pointer to an instance of a StreamingDevice.
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • programs/streamingDeviceController/StreamingDevice.hpp
  • +
  • programs/streamingDeviceController/StreamingDevice.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1WiimoteSensorDevice-members.html b/classroboticslab_1_1WiimoteSensorDevice-members.html new file mode 100644 index 000000000..05d281cec --- /dev/null +++ b/classroboticslab_1_1WiimoteSensorDevice-members.html @@ -0,0 +1,116 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::WiimoteSensorDevice Member List
+
+
+ +

This is the complete list of members for roboticslab::WiimoteSensorDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
acquireData() overrideroboticslab::WiimoteSensorDevicevirtual
acquireInterfaces() overrideroboticslab::WiimoteSensorDevicevirtual
actuatorState (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
BKWD enum value (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
buffer (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
CentroidTransform (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprivate
cmd_mode enum name (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
configureFixedAxes(const yarp::os::Value &v)roboticslab::StreamingDeviceprivate
data (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
fixedAxes (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
FWD enum value (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
getActuatorState()roboticslab::StreamingDeviceinlinevirtual
hasValidMovementData() const overrideroboticslab::WiimoteSensorDevicevirtual
iAnalogSensor (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
iCartesianControl (defined in roboticslab::StreamingDevice)roboticslab::StreamingDeviceprotected
initialize(bool usingStreamingPreset) overrideroboticslab::WiimoteSensorDevicevirtual
mode (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
NONE enum value (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
ROT enum value (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
sendMovementCommand(double timestamp) overrideroboticslab::WiimoteSensorDevicevirtual
setCartesianControllerHandle(ICartesianControl *iCartesianControl)roboticslab::StreamingDeviceinline
step (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
stopMotion() overrideroboticslab::WiimoteSensorDevicevirtual
StreamingDevice(yarp::os::Searchable &config)roboticslab::StreamingDevice
transformData(double scaling) overrideroboticslab::WiimoteSensorDevicevirtual
usingMovi (defined in roboticslab::WiimoteSensorDevice)roboticslab::WiimoteSensorDeviceprivate
WiimoteSensorDevice(yarp::os::Searchable &config, bool usingMovi)roboticslab::WiimoteSensorDevice
~StreamingDevice()roboticslab::StreamingDevicevirtual
+ + + + diff --git a/classroboticslab_1_1WiimoteSensorDevice.html b/classroboticslab_1_1WiimoteSensorDevice.html new file mode 100644 index 000000000..b17247778 --- /dev/null +++ b/classroboticslab_1_1WiimoteSensorDevice.html @@ -0,0 +1,384 @@ + + + + + + + +kinematics-dynamics: roboticslab::WiimoteSensorDevice Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Represents a Wiimote device wrapped as an analog sensor by YARP. +

+ +

#include <WiimoteSensorDevice.hpp>

+
+Inheritance diagram for roboticslab::WiimoteSensorDevice:
+
+
+ + +roboticslab::StreamingDevice + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

WiimoteSensorDevice (yarp::os::Searchable &config, bool usingMovi)
 Constructor.
 
bool acquireInterfaces () override
 Acquires plugin interfaces. More...
 
bool initialize (bool usingStreamingPreset) override
 Perform any custom initialization needed. This method is called after the successful creation of the device and once all interface handles are acquired. More...
 
bool acquireData () override
 Acquires data from remote device. More...
 
bool transformData (double scaling) override
 Performs required operations on stored data. More...
 
bool hasValidMovementData () const override
 Checks whether the device may forward acquired and processed data to the controller. More...
 
void sendMovementCommand (double timestamp) override
 Sends movement command to the cartesian controller. More...
 
+void stopMotion () override
 Sends a movement command that would stop motion.
 
- Public Member Functions inherited from roboticslab::StreamingDevice
 StreamingDevice (yarp::os::Searchable &config)
 Constructor. More...
 
+virtual ~StreamingDevice ()
 Destructor.
 
virtual int getActuatorState ()
 If actuator command data is available, return its current state. More...
 
void setCartesianControllerHandle (ICartesianControl *iCartesianControl)
 Stores handle to an ICartesianControl instance. More...
 
+ + + +

+Private Types

enum  cmd_mode { NONE +, FWD +, BKWD +, ROT + }
 
+ + + + + + + + + + + +

+Private Attributes

+yarp::dev::IAnalogSensor * iAnalogSensor
 
+cmd_mode mode
 
+std::vector< double > buffer
 
+bool usingMovi
 
+double step
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from roboticslab::StreamingDevice
+ICartesianControliCartesianControl
 
+std::vector< double > data
 
+std::vector< bool > fixedAxes
 
+int actuatorState
 
+

Member Function Documentation

+ +

◆ acquireData()

+ +
+
+ + + + + +
+ + + + + + + +
bool WiimoteSensorDevice::acquireData ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ acquireInterfaces()

+ +
+
+ + + + + +
+ + + + + + + +
bool WiimoteSensorDevice::acquireInterfaces ()
+
+overridevirtual
+
+
Returns
true on success, false otherwise
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ hasValidMovementData()

+ +
+
+ + + + + +
+ + + + + + + +
bool WiimoteSensorDevice::hasValidMovementData () const
+
+overridevirtual
+
+
Returns
true if valid, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + +
bool WiimoteSensorDevice::initialize (bool usingStreamingPreset)
+
+overridevirtual
+
+
Parameters
+ + +
usingStreamingPresetWhether the cartesian controller supports streaming command presets or not.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+ +

◆ sendMovementCommand()

+ +
+
+ + + + + +
+ + + + + + + + +
void WiimoteSensorDevice::sendMovementCommand (double timestamp)
+
+overridevirtual
+
+
Parameters
+ + +
timestampCurrent timestamp.
+
+
+ +

Implements roboticslab::StreamingDevice.

+ +
+
+ +

◆ transformData()

+ +
+
+ + + + + +
+ + + + + + + + +
bool WiimoteSensorDevice::transformData (double scaling)
+
+overridevirtual
+
+
Parameters
+ + +
scalingScaling factor applied to each data value.
+
+
+
Returns
true on success, false otherwise
+ +

Reimplemented from roboticslab::StreamingDevice.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • programs/streamingDeviceController/WiimoteSensorDevice.hpp
  • +
  • programs/streamingDeviceController/WiimoteSensorDevice.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1WiimoteSensorDevice.png b/classroboticslab_1_1WiimoteSensorDevice.png new file mode 100644 index 0000000000000000000000000000000000000000..3b941ad7329b67edbadaab146e9fdb5c9569a0c6 GIT binary patch literal 1141 zcmeAS@N?(olHy`uVBq!ia0vp^r-8VGgBeKHy?lQdNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?!guz0#ShEy=Votr!Du?7zV_s`PT|IFi# z$9qUvZ<~BCwQ|-nHAd!T44UzU8&ci&y#_Vs61{HJecYSv86EP1NBYE^i}gGu+dC3MFx zt=*EZ6I1p!d-bYUqVwi-uUgjBwYq*w%h8$MrC;X0F29_5FTTFBOz-yR+J-lL+0Qre zZ2kn)zC-l)>Ff|w(J9Y^;=bb=t5A zFt9MZ@2FtpU|?z}R*D0X3=igXh&M1OFj%NRVpU+^U^v%_kj^vYIedYWM@cDGKu<~O ztssc_cu%#{LofNP`HiZJrGK_(iwG9Jk=x%EdTh_kXA8SKb`(7@3e|e0q?Eqqv5U*Q z!UvO4VyX{S$`rU0u&MGK9vMe&ppSAy) zruNj>>p#z?h1U6g-gSNH?8IwJB?8PkIx6_iFEyI3a#A(FcHNZxjlZ+x)g~?ykw30i zrzB|jR9U?I_$uo(sp~WD?b=s*b5eVC(G(fGQcLSv>EHi+R6Ha5&ZTzWy_+i_sJY`o zk#$^O>?>#A%T|rI8+2d|JcWXB%IhPnVVcZpNJ(7=Op9dTY_XQ)T_1W^|mW zKe+h*RJK^Y_kA5FM5C;xFW#-JRMdLx9Z)LykgLlQTQK1^JyD{~j^Rgj9i!Dk<>~kD z*QHn$Nrvv4`0}LcCkcn{7H)@X;_(4pU_1(YFaSfI0T}QMZv#s|`X;Y^Gx_zqldCrc zNIt3duVjBP$I_nBVwLmyoeb;tlr!E4?%AzSymfy0%zbBP8`RBxUQxTIvij!yrOr3E z*6Dqolea22=3d43V|UDY=l#Ceq$A9c zEt74hubuV^kvdhpl1E{px81v#kKtMOPIi5}cXZx{-wiF#Zyde~UQJqV^z!)Li)k&o{WrC@)c!gWb~c&efBqrX1-3A3RSeA4c0bt9 YOrHPsSmZeoU>U*S>FVdQ&MBb@06&~B!T + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::test::AsibotSolverTestFromFile Member List
+
+ + + + + diff --git a/classroboticslab_1_1test_1_1AsibotSolverTestFromFile.html b/classroboticslab_1_1test_1_1AsibotSolverTestFromFile.html new file mode 100644 index 000000000..8dee4d7f3 --- /dev/null +++ b/classroboticslab_1_1test_1_1AsibotSolverTestFromFile.html @@ -0,0 +1,130 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::AsibotSolverTestFromFile Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::test::AsibotSolverTestFromFile Class Reference
+
+
+ +

Tests AsibotSolver ikin from loaded configuration file. +

+
+Inheritance diagram for roboticslab::test::AsibotSolverTestFromFile:
+
+
+ +
+ + + + + + +

+Public Member Functions

+void SetUp () override
 
+void TearDown () override
 
+ + + + + +

+Protected Attributes

+yarp::dev::PolyDriver solverDevice
 
+roboticslab::ICartesianSolveriCartesianSolver
 
+ + + + + +

+Static Protected Attributes

+static const double EPS_CART = 1e-6
 
+static const double EPS_JOINT = 1e-3
 
+
The documentation for this class was generated from the following file:
    +
  • tests/testAsibotSolverFromFile.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1test_1_1AsibotSolverTestFromFile.png b/classroboticslab_1_1test_1_1AsibotSolverTestFromFile.png new file mode 100644 index 0000000000000000000000000000000000000000..7644a68bac0ef262c7ef5acc18fd973e3388d0ef GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^zkoP^gBeJ&Z=KN&q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0GCf@!Ln;{G&b?T+#(=}MJnq?_|MKy# zS2TK9?ah@97hhAgtn=Um-j4NKu0{D>RMA|_6+3Cu$_uKRv-RBM&EubK+`smvm(lgD zk(KtlR9dap|4sd3+8=H7{o$-1kEeb7C&PDbQpv=1=YJjl=UWtRU}S$SWRl(`>x;Tm ze?H%27v+7)wTk)IwSDvK^)Iq#d+zdhe{$E{J?DOP_cyBiZF^UF{rB3+ga0c_?myf< zZ{PCYGiJ8%gUr)&o4&-qbn$oVi|gN~OftE;Hu8Q~^rXBCcUkp4&B2ZXxiZr+f9=*O zOgsGf8|Iwq{#UUi^?dif3F)c+J#n&f3iG*S6=oBUAFyo&1ptH5stb%j|1)mVbosu0 z+Rcp1&+}6A%B1GUtcjoXGwfS3%Z%5_n;(4p5b)xQ_KSwy|Kw}G2)mbWdcVA#(}?*? zw$%B$C8b|@?itn0OXP*EbxGyChs+njsd@3I%I z*n9Za_4S@nPfm)3bllr6GgoH)FUv!telF{r5}E+)rdl!p literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1test_1_1BasicCartesianControlTest-members.html b/classroboticslab_1_1test_1_1BasicCartesianControlTest-members.html new file mode 100644 index 000000000..d6acc24e4 --- /dev/null +++ b/classroboticslab_1_1test_1_1BasicCartesianControlTest-members.html @@ -0,0 +1,92 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::test::BasicCartesianControlTest Member List
+
+ + + + + diff --git a/classroboticslab_1_1test_1_1BasicCartesianControlTest.html b/classroboticslab_1_1test_1_1BasicCartesianControlTest.html new file mode 100644 index 000000000..5fa6ce671 --- /dev/null +++ b/classroboticslab_1_1test_1_1BasicCartesianControlTest.html @@ -0,0 +1,120 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::BasicCartesianControlTest Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::test::BasicCartesianControlTest Class Reference
+
+
+ +

Tests BasicCartesianControl ikin and idyn on a simple mechanism. +

+
+Inheritance diagram for roboticslab::test::BasicCartesianControlTest:
+
+
+ +
+ + + + + + +

+Public Member Functions

+void SetUp () override
 
+void TearDown () override
 
+ + + + + +

+Protected Attributes

+yarp::dev::PolyDriver cartesianControlDevice
 
+roboticslab::ICartesianControliCartesianControl
 
+
The documentation for this class was generated from the following file:
    +
  • tests/testBasicCartesianControl.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1test_1_1BasicCartesianControlTest.png b/classroboticslab_1_1test_1_1BasicCartesianControlTest.png new file mode 100644 index 0000000000000000000000000000000000000000..9b54bc79c3268be82cd8374ff7389bd46cceae0f GIT binary patch literal 733 zcmeAS@N?(olHy`uVBq!ia0vp^|A07vgBeKj#aa9XQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;(#eE_WoY^{(Xe^#wE{o zTATSl@Se2#@tu0v`o47DSGVQ}CrD>~i=Q=jtIFMF@h<=OI!`?Fc+0H$*Fq-cUC#d) zz3JKf&boYE&+RYOe{5Z%Yd`%5M5XKgw=wSjA1Nz({&(}=`}_9=i=Y3+e{B17J!*ej z?Q7G<_iI#Nn%(Ww_gr38@<07!ec)Y{%oXj6Qs1**^P{TfDxvsEi?R;s zFP*Z1sUk?fVMkZ*|Ekt!{k`@V-JkLI&7Uf-uue!`VHNTCfgvyiVgeZ!X?mR2JACtVL%x4W(|h&*>Oa&3ZU1m(UEb{buk2gH{&W0uX4>vQR^Io`bl>Fd zwO{(@>iz7U{BPE;#r)s@%zp9R{qx8Db>HV6u{rpDuFSghg8zIA>b1pB+8_F^^?$dm z)~(O+kGJVx^JdMv_xG3NORt~*SmU4PHrl + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::test::KdlSolverTest Member List
+
+
+ +

This is the complete list of members for roboticslab::test::KdlSolverTest, including all inherited members.

+ + + + + + +
eps (defined in roboticslab::test::KdlSolverTest)roboticslab::test::KdlSolverTestprotectedstatic
iCartesianSolver (defined in roboticslab::test::KdlSolverTest)roboticslab::test::KdlSolverTestprotected
SetUp() override (defined in roboticslab::test::KdlSolverTest)roboticslab::test::KdlSolverTestinline
solverDevice (defined in roboticslab::test::KdlSolverTest)roboticslab::test::KdlSolverTestprotected
TearDown() override (defined in roboticslab::test::KdlSolverTest)roboticslab::test::KdlSolverTestinline
+ + + + diff --git a/classroboticslab_1_1test_1_1KdlSolverTest.html b/classroboticslab_1_1test_1_1KdlSolverTest.html new file mode 100644 index 000000000..493a49f43 --- /dev/null +++ b/classroboticslab_1_1test_1_1KdlSolverTest.html @@ -0,0 +1,127 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::KdlSolverTest Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Tests KdlSolver ikin and idyn on a simple mechanism. +

+
+Inheritance diagram for roboticslab::test::KdlSolverTest:
+
+
+ +
+ + + + + + +

+Public Member Functions

+void SetUp () override
 
+void TearDown () override
 
+ + + + + +

+Protected Attributes

+yarp::dev::PolyDriver solverDevice
 
+roboticslab::ICartesianSolveriCartesianSolver
 
+ + + +

+Static Protected Attributes

+static constexpr double eps = 1e-9
 
+
The documentation for this class was generated from the following file:
    +
  • tests/testKdlSolver.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1test_1_1KdlSolverTest.png b/classroboticslab_1_1test_1_1KdlSolverTest.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3e6dedbff84f2642622669654c32d7bd4378d4 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^+krTMgBeKXd=!}uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0v^`xMLn;{G&b_#4wE~Z;xc=S$|Bqi^ zynyAym$2+}29sCbW@_8ep}22Ske6_misxm`9jYh&59)f>?K*z*}&eC7$t5)=gYx zFZ}*m)Fi!^cI9^Yx8LfPgA{(5T5)~u_m6eKRVpv{%AI_l{KCfn-?ZD;CdW8>E%+WM z`sx@+$HVtelh4UN*;oBVd*{=a}T-1(WuS`2eo2B9hT4qi8 z{dJabP0%~mYOfEGI~UJmsLlL9+r>8eYP5@a}wj;Zk;P-@eMCtZimR`n#jE54}9I>k{MDt<^u}^A5y>@9<84 zyso_Hn61qF9oMgI+q-n<&%Zylw;H{-k>0ZGn9Xe2jkn@&K3iSaeDv(T?T;4RdUGKC zXziJ^XAeJIaCzpuS!=^1-$ta#zf21||9y7kg3fa5@*I1QtIt$qE^c+qoqtO-IKJT+ueKRz%PLIG6oHC{i%| i`kA+6%B7ND>`(9JJ$!qeixrrZ7(8A5T-G@yGywodu}c*I literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1test_1_1KdlSolverTestFromFile-members.html b/classroboticslab_1_1test_1_1KdlSolverTestFromFile-members.html new file mode 100644 index 000000000..4a341d7ee --- /dev/null +++ b/classroboticslab_1_1test_1_1KdlSolverTestFromFile-members.html @@ -0,0 +1,92 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::test::KdlSolverTestFromFile Member List
+
+
+ +

This is the complete list of members for roboticslab::test::KdlSolverTestFromFile, including all inherited members.

+ + + + + +
iCartesianSolver (defined in roboticslab::test::KdlSolverTestFromFile)roboticslab::test::KdlSolverTestFromFileprotected
SetUp() override (defined in roboticslab::test::KdlSolverTestFromFile)roboticslab::test::KdlSolverTestFromFileinline
solverDevice (defined in roboticslab::test::KdlSolverTestFromFile)roboticslab::test::KdlSolverTestFromFileprotected
TearDown() override (defined in roboticslab::test::KdlSolverTestFromFile)roboticslab::test::KdlSolverTestFromFileinline
+ + + + diff --git a/classroboticslab_1_1test_1_1KdlSolverTestFromFile.html b/classroboticslab_1_1test_1_1KdlSolverTestFromFile.html new file mode 100644 index 000000000..b004fc86a --- /dev/null +++ b/classroboticslab_1_1test_1_1KdlSolverTestFromFile.html @@ -0,0 +1,120 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::KdlSolverTestFromFile Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::test::KdlSolverTestFromFile Class Reference
+
+
+ +

Tests KdlSolver ikin and idyn on a simple mechanism. +

+
+Inheritance diagram for roboticslab::test::KdlSolverTestFromFile:
+
+
+ +
+ + + + + + +

+Public Member Functions

+void SetUp () override
 
+void TearDown () override
 
+ + + + + +

+Protected Attributes

+yarp::dev::PolyDriver solverDevice
 
+roboticslab::ICartesianSolveriCartesianSolver
 
+
The documentation for this class was generated from the following file:
    +
  • tests/testKdlSolverFromFile.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1test_1_1KdlSolverTestFromFile.png b/classroboticslab_1_1test_1_1KdlSolverTestFromFile.png new file mode 100644 index 0000000000000000000000000000000000000000..1d17e63467b3c6b26f57ae9d1105542b4a9ad997 GIT binary patch literal 731 zcmeAS@N?(olHy`uVBq!ia0vp^FM&9KgBeJk)>)JTq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0vOHZJLn;{G&b?jsT7iePefpdK{~u4b zlIV^uzIEi>sta1ytjf)9Oh2bi35s%3@r-hC)biXXvSiW|Z}o}Wy6+u-Tw4@7CFPc- zUaXszr}Nk1`i_#*L4H^7-MthgH#1iL?y;yz_f~%{`n5H0(kinTGv%|jJl|gxT_Seq z&+4LEQQnuTOO-O$ne@+JzNB}n%HHtj&#v&zd;Z09=Cmc^C2wtQ<<9!Qk5^usoxg5d zwbAJlOEzzuw&eROl_1YwVb|aP;=FXZt53!E>%=+FCTn?Ke;K?yeA2qm30{-*Sy!t3 zyfoKj>69>m15bA`>MTt4$lo3sFkNwPvtH9KzRW9e4EbC^4DrO{hR;)iyu3SDHZ(Me z9GDKmZA-o`{=H(W<*}=0uH?La5*U}ay6v+0+i*sMx39k*eEe)_Q~SO2I-k|$l{c?#I-NHA(~|1TXQt0*+14AQ7nsxMx6?Fj z)y=iawoNg|*IGupv%NmDb@SIg-OSp9Z)ZK7RmMHzA z+-q;v)id4B@$0|!HTjY!*RL$Y!j&sMY%@dsejWPie5ug2>ft=TqAR;X7TGATy<}&% zcfXSCvyzbN&%W~4?!7(#CiMEfZI_-M3as}(8@ZNy?b)2|&kj6Qe7WHpQ$^SWrXN92 id?{#&=F%-q{}{jh?KAP;;oA#Li42~uelF{r5}E*i5@28e literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1test_1_1KinRepresentationTest-members.html b/classroboticslab_1_1test_1_1KinRepresentationTest-members.html new file mode 100644 index 000000000..b11a5bd2b --- /dev/null +++ b/classroboticslab_1_1test_1_1KinRepresentationTest-members.html @@ -0,0 +1,91 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::test::KinRepresentationTest Member List
+
+
+ +

This is the complete list of members for roboticslab::test::KinRepresentationTest, including all inherited members.

+ + + + +
EPS (defined in roboticslab::test::KinRepresentationTest)roboticslab::test::KinRepresentationTestprotectedstatic
SetUp() override (defined in roboticslab::test::KinRepresentationTest)roboticslab::test::KinRepresentationTestinline
TearDown() override (defined in roboticslab::test::KinRepresentationTest)roboticslab::test::KinRepresentationTestinline
+ + + + diff --git a/classroboticslab_1_1test_1_1KinRepresentationTest.html b/classroboticslab_1_1test_1_1KinRepresentationTest.html new file mode 100644 index 000000000..23751018b --- /dev/null +++ b/classroboticslab_1_1test_1_1KinRepresentationTest.html @@ -0,0 +1,117 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::KinRepresentationTest Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
roboticslab::test::KinRepresentationTest Class Reference
+
+
+ +

Tests KinRepresentation. +

+
+Inheritance diagram for roboticslab::test::KinRepresentationTest:
+
+
+ +
+ + + + + + +

+Public Member Functions

+void SetUp () override
 
+void TearDown () override
 
+ + + +

+Static Protected Attributes

+static const double EPS = 1e-9
 
+
The documentation for this class was generated from the following file:
    +
  • tests/testKinRepresentation.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1test_1_1KinRepresentationTest.png b/classroboticslab_1_1test_1_1KinRepresentationTest.png new file mode 100644 index 0000000000000000000000000000000000000000..e25ca5fda2174b61e5d25994145d9b0015665449 GIT binary patch literal 731 zcmeAS@N?(olHy`uVBq!ia0vp^&wx09gBeI#ssDTkq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0vOHZJLn;{G&b>IPS%JsZKknPV|MK~( zS1=~;zPs{W&MeLAO-Cj;8|+I;n-)JqB{e+JD@aUqnM&$K%^8bN-?oTbI@Qs0-Q11u zK@uze-l;!0=hNj$TS}IDf18fRGbl-$@po70V7Z$(b#X|%*eV#hMS=?7$QS} zSS0D&_PoUx)1=Fd+tY%Ve>R?O-w=Lf?e6HcS3?rAbAK57EXdw}kY~=mGnE_OHSe}Q zv(o(iv9;Fih5w`Nta2C6I+$^5rupXF?CE>w{|o1DlooI4UwAg3`-|gR$1ShzSlVwU z%~ZR7;@Uln8#Co*oz2mHm$tq9GHc-uo@3YkT+aKv=ja6Ae8H+a-&T81vY-7f(0=3F zZ&EiWb(}j}pxvc$@3(-l-4^?UZ}@UscDBfWWS?mIn{Q+B#k1wF<&xMG_w-b5IkayY zn`*`h?|P3tZsM^T64Bk8ch=h-s`+`Bhwp92&VHRL^Tp-aCEXjhy0?GhFkZFg`@g`Y zbL-B%4N!Zoez$tl@jIcn5|@_li%u~5?qA+1<7DwCk11yL=4K6_hSgsbXE3C%f(Gu3 fe+x~GPp`{&l*3- literal 0 HcmV?d00001 diff --git a/classroboticslab_1_1test_1_1ScrewTheoryTest-members.html b/classroboticslab_1_1test_1_1ScrewTheoryTest-members.html new file mode 100644 index 000000000..364d379a0 --- /dev/null +++ b/classroboticslab_1_1test_1_1ScrewTheoryTest-members.html @@ -0,0 +1,109 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
roboticslab::test::ScrewTheoryTest Member List
+
+
+ +

This is the complete list of members for roboticslab::test::ScrewTheoryTest, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
checkRobotKinematics(const KDL::Chain &chain, const PoeExpression &poe, int soln) (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
checkSolutions(const ScrewTheoryIkSubproblem::Solutions &actual, const ScrewTheoryIkSubproblem::Solutions &expected) (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
fillJointValues(int size, double value) (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
findTargetConfiguration(const ScrewTheoryIkProblem::Solutions &solutions, const KDL::JntArray &target) (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeAbbIrb120KinematicsFromDH() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeAbbIrb120KinematicsFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeAbbIrb6620lxFromDh() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeAbbIrb6620lxFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeAbbIrb910scKinematicsFromDH() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeAbbIrb910scKinematicsFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makePumaKinematicsFromDH() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makePumaKinematicsFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeStanfordKinematicsFromDH() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeStanfordKinematicsFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeTeoRightArmKinematicsFromDH() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeTeoRightArmKinematicsFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeTeoRightLegKinematicsFromDH() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
makeTeoRightLegKinematicsFromPoE() (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinlinestatic
SetUp() override (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinline
solutionComparator (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestprivatestatic
TearDown() override (defined in roboticslab::test::ScrewTheoryTest)roboticslab::test::ScrewTheoryTestinline
+ + + + diff --git a/classroboticslab_1_1test_1_1ScrewTheoryTest.html b/classroboticslab_1_1test_1_1ScrewTheoryTest.html new file mode 100644 index 000000000..73af1afa4 --- /dev/null +++ b/classroboticslab_1_1test_1_1ScrewTheoryTest.html @@ -0,0 +1,181 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::ScrewTheoryTest Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Tests classes related to Screw Theory. +

+
+Inheritance diagram for roboticslab::test::ScrewTheoryTest:
+
+
+ +
+ + + + +

+Classes

struct  compare_solutions
 
+ + + + + +

+Public Member Functions

+void SetUp () override
 
+void TearDown () override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static KDL::JntArray fillJointValues (int size, double value)
 
+static KDL::Chain makeTeoRightArmKinematicsFromDH ()
 
+static PoeExpression makeTeoRightArmKinematicsFromPoE ()
 
+static KDL::Chain makeTeoRightLegKinematicsFromDH ()
 
+static PoeExpression makeTeoRightLegKinematicsFromPoE ()
 
+static KDL::Chain makeAbbIrb120KinematicsFromDH ()
 
+static PoeExpression makeAbbIrb120KinematicsFromPoE ()
 
+static KDL::Chain makePumaKinematicsFromDH ()
 
+static PoeExpression makePumaKinematicsFromPoE ()
 
+static KDL::Chain makeStanfordKinematicsFromDH ()
 
+static PoeExpression makeStanfordKinematicsFromPoE ()
 
+static KDL::Chain makeAbbIrb910scKinematicsFromDH ()
 
+static PoeExpression makeAbbIrb910scKinematicsFromPoE ()
 
+static KDL::Chain makeAbbIrb6620lxFromDh ()
 
+static PoeExpression makeAbbIrb6620lxFromPoE ()
 
+static void checkSolutions (const ScrewTheoryIkSubproblem::Solutions &actual, const ScrewTheoryIkSubproblem::Solutions &expected)
 
+static void checkRobotKinematics (const KDL::Chain &chain, const PoeExpression &poe, int soln)
 
+static int findTargetConfiguration (const ScrewTheoryIkProblem::Solutions &solutions, const KDL::JntArray &target)
 
+ + + +

+Static Private Attributes

+static struct roboticslab::test::ScrewTheoryTest::compare_solutions solutionComparator
 
+
The documentation for this class was generated from the following file:
    +
  • tests/testScrewTheory.cpp
  • +
+
+ + + + diff --git a/classroboticslab_1_1test_1_1ScrewTheoryTest.png b/classroboticslab_1_1test_1_1ScrewTheoryTest.png new file mode 100644 index 0000000000000000000000000000000000000000..a45cb9576947f3ad8f3cc45aad7a4ddea05d89df GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^XMi|>gBeIBMP&T|QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;|uOsG*^I>k-UbJDSZ10IvyS$k9}uY?+u>IdI>Z*g7L^JwYC zrhfu%lXhj*e`ft0^Loz%@6R*md<`@_vpRC8>dWZZ88de-R++i_vR2;G&`JBQ`X`*K z6#MU!mbG1_cC~imr-OBO{Svi6oNnV_w&yb~HESk)nOIkow$1(b?K6r!Ytwet>1swU zR??gr4b&cLFsWpPb=ywXXNQdSJa_L>Hx92ARekBOJ=fUt*H$LCNj6#uDkm4K&6pA- z<-%b8g3+MMt*O$6ZIL8rT9RaYn#PP3X$*Fv1`Ki};Q5-M5a3MUVdZIX2jSAhH;Xk_ z*+%EoS#CJHlr16r{k6qM*>l4A?l&`@`KozlbKx%5d&OUMc+YJ9nlx|L`o8D&r;DCG zJ<)b6>&?w=x(l{WNnX1**Wl=lXRU{lcy2qep1D?apT6dt+ynzKZZ{>F)*vV_Wiy=+U&0hpI(|2=X0I>^pCOU z?Y_BH`3w3JZ~eWJvW$0H=C$Ot%M;U&&VGDFTO|GVo5#kNZ>CinaK3n1GJC7R@$_Zk zXP{ax@+afbQ6UG;3wY8KUJ t&1RI*Oke;8GJ{RlzZXlVT$1?3eu<^}e;PyFePA+U@O1TaS?83{1OO3#H~s(s literal 0 HcmV?d00001 diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/dir_1309cee196689adea45d11f37b8ed78d.html b/dir_1309cee196689adea45d11f37b8ed78d.html new file mode 100644 index 000000000..446037c07 --- /dev/null +++ b/dir_1309cee196689adea45d11f37b8ed78d.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: examples/cpp/exampleYarpTinyMath Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exampleYarpTinyMath Directory Reference
+
+
+
+ + + + diff --git a/dir_15768b185b6e8b816adf0c89b30bfe65.html b/dir_15768b185b6e8b816adf0c89b30bfe65.html new file mode 100644 index 000000000..bb603eb18 --- /dev/null +++ b/dir_15768b185b6e8b816adf0c89b30bfe65.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
streamingDeviceController Directory Reference
+
+
+
+ + + + diff --git a/dir_17d4fdefd982442a79427fe9d98568ae.html b/dir_17d4fdefd982442a79427fe9d98568ae.html new file mode 100644 index 000000000..bcc90bb47 --- /dev/null +++ b/dir_17d4fdefd982442a79427fe9d98568ae.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/AsibotSolver Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AsibotSolver Directory Reference
+
+
+
+ + + + diff --git a/dir_1d6bf2fb1d016ec6b197455d198424da.html b/dir_1d6bf2fb1d016ec6b197455d198424da.html new file mode 100644 index 000000000..5a11c85ef --- /dev/null +++ b/dir_1d6bf2fb1d016ec6b197455d198424da.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/CartesianControlServer Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CartesianControlServer Directory Reference
+
+
+
+ + + + diff --git a/dir_25c7435138c3ee6ac4c9babe8db7ecf9.html b/dir_25c7435138c3ee6ac4c9babe8db7ecf9.html new file mode 100644 index 000000000..485c6e891 --- /dev/null +++ b/dir_25c7435138c3ee6ac4c9babe8db7ecf9.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: programs/ftCompensation Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ftCompensation Directory Reference
+
+
+
+ + + + diff --git a/dir_387a94d47062d4e808cee3de63065fcd.html b/dir_387a94d47062d4e808cee3de63065fcd.html new file mode 100644 index 000000000..67994fead --- /dev/null +++ b/dir_387a94d47062d4e808cee3de63065fcd.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: programs/haarDetectionController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
haarDetectionController Directory Reference
+
+
+
+ + + + diff --git a/dir_487dfb5d6e3e441bbdba0aef32150596.html b/dir_487dfb5d6e3e441bbdba0aef32150596.html new file mode 100644 index 000000000..90270eb03 --- /dev/null +++ b/dir_487dfb5d6e3e441bbdba0aef32150596.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlTreeSolver Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KdlTreeSolver Directory Reference
+
+
+
+ + + + diff --git a/dir_49e6bd22918cee17ddc14df5c827b459.html b/dir_49e6bd22918cee17ddc14df5c827b459.html new file mode 100644 index 000000000..16d4c6cb5 --- /dev/null +++ b/dir_49e6bd22918cee17ddc14df5c827b459.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/KinematicRepresentationLib Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KinematicRepresentationLib Directory Reference
+
+
+
+ + + + diff --git a/dir_4e03118d576dd8e71b5dbe7081ce822d.html b/dir_4e03118d576dd8e71b5dbe7081ce822d.html new file mode 100644 index 000000000..e757e8210 --- /dev/null +++ b/dir_4e03118d576dd8e71b5dbe7081ce822d.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: programs/keyboardController Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
keyboardController Directory Reference
+
+
+
+ + + + diff --git a/dir_4f22d2c14b4bbce8870d40d37a8ebee2.html b/dir_4f22d2c14b4bbce8870d40d37a8ebee2.html new file mode 100644 index 000000000..a43c89f88 --- /dev/null +++ b/dir_4f22d2c14b4bbce8870d40d37a8ebee2.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/CartesianControlClient Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CartesianControlClient Directory Reference
+
+
+
+ + + + diff --git a/dir_51393f38608496e2be890df69ecb13f1.html b/dir_51393f38608496e2be890df69ecb13f1.html new file mode 100644 index 000000000..01c03c8ff --- /dev/null +++ b/dir_51393f38608496e2be890df69ecb13f1.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: examples/cpp/exampleCartesianControlClient Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exampleCartesianControlClient Directory Reference
+
+
+
+ + + + diff --git a/dir_59425e443f801f1f2fd8bbe4959a3ccf.html b/dir_59425e443f801f1f2fd8bbe4959a3ccf.html new file mode 100644 index 000000000..b2e7d4eda --- /dev/null +++ b/dir_59425e443f801f1f2fd8bbe4959a3ccf.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: tests Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
tests Directory Reference
+
+
+
+ + + + diff --git a/dir_75b15c0a6e736aa4482428563186dcc3.html b/dir_75b15c0a6e736aa4482428563186dcc3.html new file mode 100644 index 000000000..bc3f17e46 --- /dev/null +++ b/dir_75b15c0a6e736aa4482428563186dcc3.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/BasicCartesianControl Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BasicCartesianControl Directory Reference
+
+
+
+ + + + diff --git a/dir_7b0a5d1507c7f681cbfa1deb5990c6ea.html b/dir_7b0a5d1507c7f681cbfa1deb5990c6ea.html new file mode 100644 index 000000000..cfe62b4de --- /dev/null +++ b/dir_7b0a5d1507c7f681cbfa1deb5990c6ea.html @@ -0,0 +1,89 @@ + + + + + + + +kinematics-dynamics: programs Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
programs Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_8976e5d03119516083eaca3ddca61311.html b/dir_8976e5d03119516083eaca3ddca61311.html new file mode 100644 index 000000000..325389593 --- /dev/null +++ b/dir_8976e5d03119516083eaca3ddca61311.html @@ -0,0 +1,89 @@ + + + + + + + +kinematics-dynamics: examples/cpp Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cpp Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_a52c22a8b79e169194d9c4bbc7c46367.html b/dir_a52c22a8b79e169194d9c4bbc7c46367.html new file mode 100644 index 000000000..022a114cc --- /dev/null +++ b/dir_a52c22a8b79e169194d9c4bbc7c46367.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: doc/build Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
build Directory Reference
+
+
+
+ + + + diff --git a/dir_af0bcd1d9c8bf0be37b473fa7c916aed.html b/dir_af0bcd1d9c8bf0be37b473fa7c916aed.html new file mode 100644 index 000000000..96601bf11 --- /dev/null +++ b/dir_af0bcd1d9c8bf0be37b473fa7c916aed.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: examples/cpp/exampleScrewTheoryTrajectory Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exampleScrewTheoryTrajectory Directory Reference
+
+
+
+ + + + diff --git a/dir_bbdaf73c7839257653cfce0d61f80663.html b/dir_bbdaf73c7839257653cfce0d61f80663.html new file mode 100644 index 000000000..67777bf76 --- /dev/null +++ b/dir_bbdaf73c7839257653cfce0d61f80663.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpTinyMathLib Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
YarpTinyMathLib Directory Reference
+
+
+
+ + + + diff --git a/dir_bc0718b08fb2015b8e59c47b2805f60c.html b/dir_bc0718b08fb2015b8e59c47b2805f60c.html new file mode 100644 index 000000000..63236b409 --- /dev/null +++ b/dir_bc0718b08fb2015b8e59c47b2805f60c.html @@ -0,0 +1,89 @@ + + + + + + + +kinematics-dynamics: libraries Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
libraries Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/dir_bfeb62c1259859bb2c79e7bf678570c2.html b/dir_bfeb62c1259859bb2c79e7bf678570c2.html new file mode 100644 index 000000000..b6c59a7f1 --- /dev/null +++ b/dir_bfeb62c1259859bb2c79e7bf678570c2.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlSolver Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KdlSolver Directory Reference
+
+
+
+ + + + diff --git a/dir_d050070cc3e4bbd91d897ff8856046e0.html b/dir_d050070cc3e4bbd91d897ff8856046e0.html new file mode 100644 index 000000000..aa2827ed5 --- /dev/null +++ b/dir_d050070cc3e4bbd91d897ff8856046e0.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: examples/python Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
python Directory Reference
+
+
+
+ + + + diff --git a/dir_d28a4824dc47e487b107a5db32ef43c4.html b/dir_d28a4824dc47e487b107a5db32ef43c4.html new file mode 100644 index 000000000..4bcce0a2a --- /dev/null +++ b/dir_d28a4824dc47e487b107a5db32ef43c4.html @@ -0,0 +1,91 @@ + + + + + + + +kinematics-dynamics: examples Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
examples Directory Reference
+
+
+ + + + +

+Directories

directory  cpp
 
+
+ + + + diff --git a/dir_dfab584b716eccfc00a175735f16fb62.html b/dir_dfab584b716eccfc00a175735f16fb62.html new file mode 100644 index 000000000..f0122d727 --- /dev/null +++ b/dir_dfab584b716eccfc00a175735f16fb62.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ScrewTheoryLib Directory Reference
+
+
+
+ + + + diff --git a/dir_e68e8157741866f444e17edd764ebbae.html b/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 000000000..0f7d46d1b --- /dev/null +++ b/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: doc Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doc Directory Reference
+
+
+
+ + + + diff --git a/dir_f528a5afad561ac522bac3a41785be2e.html b/dir_f528a5afad561ac522bac3a41785be2e.html new file mode 100644 index 000000000..f625c7b01 --- /dev/null +++ b/dir_f528a5afad561ac522bac3a41785be2e.html @@ -0,0 +1,85 @@ + + + + + + + +kinematics-dynamics: libraries/KdlVectorConverterLib Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
KdlVectorConverterLib Directory Reference
+
+
+
+ + + + diff --git a/dir_f98f57c538677273d6e3d52c55355c28.html b/dir_f98f57c538677273d6e3d52c55355c28.html new file mode 100644 index 000000000..db5d5b1f7 --- /dev/null +++ b/dir_f98f57c538677273d6e3d52c55355c28.html @@ -0,0 +1,98 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
YarpPlugins Directory Reference
+
+
+ + +

+Directories

+ + + + + + + +

+Files

file  ICartesianControl.h [code]
 Contains roboticslab::ICartesianControl and related vocabs.
 
file  ICartesianSolver.h [code]
 Contains roboticslab::ICartesianSolver.
 
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..ffbff0224 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..d42dad52d --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..3174bd7be --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +kinematics-dynamics: File List + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  examples
  cpp
  exampleScrewTheoryTrajectory
 TrajectoryThread.hpp
  libraries
  KdlVectorConverterLib
 KdlVectorConverter.hpp
  KinematicRepresentationLib
 KinematicRepresentation.hpp
  ScrewTheoryLib
 ConfigurationSelector.hpp
 LogComponent.hpp
 MatrixExponential.hpp
 ProductOfExponentials.hpp
 ScrewTheoryIkProblem.hpp
 ScrewTheoryIkSubproblems.hpp
 ScrewTheoryTools.hpp
  YarpPlugins
  AsibotSolver
 AsibotConfiguration.hpp
 AsibotSolver.hpp
 LogComponent.hpp
 TrajGen.hpp
  BasicCartesianControl
 BasicCartesianControl.hpp
 LogComponent.hpp
  CartesianControlClient
 CartesianControlClient.hpp
 LogComponent.hpp
  CartesianControlServer
 CartesianControlServer.hpp
 LogComponent.hpp
  KdlSolver
 ChainFkSolverPos_ST.hpp
 ChainIkSolverPos_ID.hpp
 ChainIkSolverPos_ST.hpp
 KdlSolver.hpp
 LogComponent.hpp
  KdlTreeSolver
 KdlTreeSolver.hpp
 LogComponent.hpp
 ICartesianControl.hContains roboticslab::ICartesianControl and related vocabs
 ICartesianSolver.hContains roboticslab::ICartesianSolver
  YarpTinyMathLib
 YarpTinyMath.hpp
  programs
  ftCompensation
 FtCompensation.hpp
  haarDetectionController
 GrabberResponder.hpp
 HaarDetectionController.hpp
 LogComponent.hpp
  keyboardController
 KeyboardController.hpp
 LinearTrajectoryThread.hpp
 LogComponent.hpp
  streamingDeviceController
 CentroidTransform.hpp
 LeapMotionSensorDevice.hpp
 LogComponent.hpp
 SpnavSensorDevice.hpp
 StreamingDevice.hpp
 StreamingDeviceController.hpp
 WiimoteSensorDevice.hpp
+
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..921d458b6 --- /dev/null +++ b/functions.html @@ -0,0 +1,130 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..cae36c5dc --- /dev/null +++ b/functions_b.html @@ -0,0 +1,87 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..64ff8d990 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,154 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..af7507e70 --- /dev/null +++ b/functions_d.html @@ -0,0 +1,100 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..5d03bd3ad --- /dev/null +++ b/functions_e.html @@ -0,0 +1,111 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..3b9f91f53 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,91 @@ + + + + + + + +kinematics-dynamics: Class Members - Enumerations + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_eval.html b/functions_eval.html new file mode 100644 index 000000000..9d4a69644 --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,91 @@ + + + + + + + +kinematics-dynamics: Class Members - Enumerator + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..a11dd39a9 --- /dev/null +++ b/functions_f.html @@ -0,0 +1,105 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..adffe7061 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,130 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..77ce1d0ff --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..2c4c63a83 --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,151 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..ede4d658e --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,100 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..2f6858a32 --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,87 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..3464f20da --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,102 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_g.html b/functions_func_g.html new file mode 100644 index 000000000..42c711e90 --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,144 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..3df4e13de --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,86 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..3ce68ea9f --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,116 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_j.html b/functions_func_j.html new file mode 100644 index 000000000..9bf54e5d5 --- /dev/null +++ b/functions_func_j.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..30a112663 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..425c6d489 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,119 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..faf7dd5d9 --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,117 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..941b087ef --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,109 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..179a5eb04 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,169 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 000000000..a81f86dc0 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..c7d23becc --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,86 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 000000000..dcd51b295 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..792f65290 --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 000000000..95fa49049 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,105 @@ + + + + + + + +kinematics-dynamics: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- ~ -

+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 000000000..6b66587a5 --- /dev/null +++ b/functions_g.html @@ -0,0 +1,144 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..7927ebbd2 --- /dev/null +++ b/functions_h.html @@ -0,0 +1,86 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..fceae2ed5 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,116 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_j.html b/functions_j.html new file mode 100644 index 000000000..9cf1e732f --- /dev/null +++ b/functions_j.html @@ -0,0 +1,96 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- j -

+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..393e4dca4 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..071b6fa9f --- /dev/null +++ b/functions_m.html @@ -0,0 +1,125 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..f3aecf023 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,87 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..2491cd59f --- /dev/null +++ b/functions_p.html @@ -0,0 +1,117 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..b48c7bfab --- /dev/null +++ b/functions_r.html @@ -0,0 +1,115 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..e435d3ccc --- /dev/null +++ b/functions_s.html @@ -0,0 +1,180 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 000000000..728c647c7 --- /dev/null +++ b/functions_t.html @@ -0,0 +1,112 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..5ee5ca6a2 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,98 @@ + + + + + + + +kinematics-dynamics: Class Members - Typedefs + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..5acdd1ec7 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,86 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..1c078e7e4 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,87 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..71120d0da --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,118 @@ + + + + + + + +kinematics-dynamics: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 000000000..30fbfe3eb --- /dev/null +++ b/functions_w.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+ + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 000000000..f93c9b48d --- /dev/null +++ b/functions_~.html @@ -0,0 +1,105 @@ + + + + + + + +kinematics-dynamics: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 000000000..47a9c8a6d --- /dev/null +++ b/globals.html @@ -0,0 +1,195 @@ + + + + + + + +kinematics-dynamics: File Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented file members with links to the documentation:
+ +

- v -

+
+ + + + diff --git a/globals_vars.html b/globals_vars.html new file mode 100644 index 000000000..a726e5473 --- /dev/null +++ b/globals_vars.html @@ -0,0 +1,195 @@ + + + + + + + +kinematics-dynamics: File Members + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/group__AsibotSolver.html b/group__AsibotSolver.html new file mode 100644 index 000000000..47dd9309b --- /dev/null +++ b/group__AsibotSolver.html @@ -0,0 +1,106 @@ + + + + + + + +kinematics-dynamics: AsibotSolver + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

Contains roboticslab::AsibotSolver. +More...

+ + + + + + + + + + + + + + + + + +

+Classes

class  roboticslab::AsibotConfiguration
 Abstract base class for a robot configuration strategy selector. More...
 
class  roboticslab::AsibotConfigurationLeastOverallAngularDisplacement
 IK solver configuration strategy selector based on the overall angle displacement of all joints. More...
 
class  roboticslab::AsibotConfigurationFactory
 Base factory class for AsibotConfiguration. More...
 
class  roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory
 Implementation factory class for AsibotConfigurationLeastOverallAngularDisplacement. More...
 
class  roboticslab::AsibotSolver
 The AsibotSolver implements ICartesianSolver. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__BasicCartesianControl.html b/group__BasicCartesianControl.html new file mode 100644 index 000000000..032dddeae --- /dev/null +++ b/group__BasicCartesianControl.html @@ -0,0 +1,122 @@ + + + + + + + +kinematics-dynamics: BasicCartesianControl + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ +

Contains roboticslab::BasicCartesianControl. +More...

+ + + + + +

+Classes

class  roboticslab::BasicCartesianControl
 The BasicCartesianControl class implements ICartesianControl. More...
 
+

Detailed Description

+

+Example with a Fake robot

+

First we must run a YARP name server if it is not running in our current namespace:

+
[on terminal 1] yarp server
+

And then launch the actual library:

+
[on terminal 2] yarpdev --device BasicCartesianControl --robot EmulatedControlBoard --angleRepr axisAngle --link_0 "(A 1)"
+

Along the output, observe a line like the following.

[info] DeviceDriverImpl.cpp:26 open(): Using angleRepr: axisAngle.
+

This would mean we are using an axis/angle notation (par de rotaciรณn). Note that it is a variable parameter; in fact, we have forced it above.

+

We connect, can ask for help, etc. Here's an example interaction:

[on terminal 3] yarp rpc /CartesianControl/rpc_transform:s
+[>>] help
+Response: [stat] [inv] [movj] [movl] [movv] [gcmp] [forc] [stop]
+[>>] stat
+Response: [ccnc] 1.0 0.0 0.0 0.0 0.0 1.0 0.0
+

Stat returns the controller status, and forward kinematics. [ccnc] means Cartesian Control Not Controlling (also note that notation is in constant evolution, so put an issue if it's not updated!). The first 3 parameters of the forward kinnematics are X,Y,Z of the end-effector. The other parameters correspond to orientation in the previously set notation, which in this example is axis/angle, so this would read: on Z, 0 degrees.

+

Let's now move to a reachable position/orientation.

[>>] movj 1.0 0.0 0.0 0.0 0.0 1.0 0.0
+Response: [ok]
+

+Example with teoSim

+

What moslty changes is the library command line invocation. We also change the server port name. The following is an example for the simulated robot's right arm.

[on terminal 2] yarpdev --device BasicCartesianControl --name /teoSim/rightArm/CartesianControl --from /usr/local/share/teo-configuration-files/contexts/kinematics/rightArmKinematics.ini --angleRepr axisAngle --robot remote_controlboard --local /BasicCartesianControl/teoSim/rightArm --remote /teoSim/rightArm
+[on terminal 3] yarp rpc /teoSim/rightArm/CartesianControl/rpc_transform:s
+

+Example with real TEO

+

What moslty changes is the library command line invocation. We also change the server port name. The following is an example for the robot's right arm.

[on terminal 2] yarpdev --device BasicCartesianControl --name /teo/rightArm/CartesianControl  --from /usr/local/share/teo-configuration-files/contexts/kinematics/rightArmKinematics.ini --angleRepr axisAngle --robot remote_controlboard --local /BasicCartesianControl/teo/rightArm --remote /teo/rightArm
+[on terminal 3] yarp rpc /teo/rightArm/CartesianControl/rpc:s
+

On the real robot, you can even activate Gravity Compensation (warning: dangerous if kinematic/dynamic model has not been reviewed!).

[>>] gcmp
+

+Very Important

+

When you launch the BasicCartesianControl device as in [terminal 2], it's actually wrapped: CartesianControlServer is the device that is actually loaded, and BasicCartesianControl becomes its subdevice. The server is what allows us to interact via the YARP RPC port mechanism. If you are creating a C++ program, you do not have to sned these raw port commands. Use CartesianControlClient instead, because the server and client are YARP devices (further reading on why this is good: here (spanish)).

+
+ + + + diff --git a/group__CartesianControlClient.html b/group__CartesianControlClient.html new file mode 100644 index 000000000..7774e7d70 --- /dev/null +++ b/group__CartesianControlClient.html @@ -0,0 +1,97 @@ + + + + + + + +kinematics-dynamics: CartesianControlClient + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ +

Contains roboticslab::CartesianControlClient. +More...

+ + + + + + + + +

+Classes

class  roboticslab::FkStreamResponder
 Responds to streaming FK messages. More...
 
class  roboticslab::CartesianControlClient
 The CartesianControlClient class implements ICartesianControl client side. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__CartesianControlServer.html b/group__CartesianControlServer.html new file mode 100644 index 000000000..26114e171 --- /dev/null +++ b/group__CartesianControlServer.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: CartesianControlServer + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ +

Contains roboticslab::CartesianControlServer. +More...

+ + + + + + + + + + + + + + +

+Classes

class  roboticslab::CartesianControlServer
 The CartesianControlServer class implements ICartesianControl server side. More...
 
class  roboticslab::RpcResponder
 Responds to RPC command messages. More...
 
class  roboticslab::RpcTransformResponder
 Responds to RPC command messages, transforms incoming data. More...
 
class  roboticslab::StreamResponder
 Responds to streaming command messages. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__KdlSolver.html b/group__KdlSolver.html new file mode 100644 index 000000000..c16bf6475 --- /dev/null +++ b/group__KdlSolver.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: KdlSolver + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

Contains roboticslab::KdlSolver. +More...

+ + + + + + + + + + + + + + +

+Classes

class  roboticslab::ChainFkSolverPos_ST
 FK solver using Screw Theory. More...
 
class  roboticslab::ChainIkSolverPos_ID
 IK solver using infinitesimal displacement twists. More...
 
class  roboticslab::ChainIkSolverPos_ST
 IK solver using Screw Theory. More...
 
class  roboticslab::KdlSolver
 The KdlSolver class implements ICartesianSolver. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__KdlTreeSolver.html b/group__KdlTreeSolver.html new file mode 100644 index 000000000..a9a7745ec --- /dev/null +++ b/group__KdlTreeSolver.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: KdlTreeSolver + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

Contains roboticslab::KdlSolver. +More...

+ + + + + +

+Classes

class  roboticslab::KdlTreeSolver
 The KdlTreeSolver class implements ICartesianSolver. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__KdlVectorConverterLib.html b/group__KdlVectorConverterLib.html new file mode 100644 index 000000000..4b0b4833a --- /dev/null +++ b/group__KdlVectorConverterLib.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: KdlVectorConverterLib + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
KdlVectorConverterLib
+
+
+ +

Contains classes related to KDL and std::vector classes. +

+
+ + + + diff --git a/group__KinematicRepresentationLib.html b/group__KinematicRepresentationLib.html new file mode 100644 index 000000000..b79bcacb0 --- /dev/null +++ b/group__KinematicRepresentationLib.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: KinematicRepresentationLib + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
KinematicRepresentationLib
+
+
+ +

Contains utilities related to conversion mechanisms between different coordinate and orientation systems. +

+
+ + + + diff --git a/group__ScrewTheoryLib.html b/group__ScrewTheoryLib.html new file mode 100644 index 000000000..9d886c507 --- /dev/null +++ b/group__ScrewTheoryLib.html @@ -0,0 +1,229 @@ + + + + + + + +kinematics-dynamics: ScrewTheoryLib + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

Contains classes related to Screw Theory solvers and tools. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  roboticslab::ConfigurationSelector
 Abstract base class for a robot configuration strategy selector. More...
 
class  roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement
 IK solver configuration strategy selector based on the overall displacement of all joints. More...
 
class  roboticslab::ConfigurationSelectorHumanoidGait
 IK solver configuration strategy selector based on human walking. More...
 
class  roboticslab::ConfigurationSelectorFactory
 Base factory class for ConfigurationSelector. More...
 
class  roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory
 Implementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement. More...
 
class  roboticslab::ConfigurationSelectorHumanoidGaitFactory
 Implementation factory class for ConfigurationSelectorHumanoidGait. More...
 
class  roboticslab::MatrixExponential
 Abstraction of a term in a product of exponentials (POE) formula. More...
 
class  roboticslab::PoeExpression
 Abstraction of a product of exponentials (POE) formula. More...
 
class  roboticslab::ScrewTheoryIkSubproblem
 Interface shared by all IK subproblems found in Screw Theory applied to Robotics. More...
 
class  roboticslab::ScrewTheoryIkProblem
 Proxy IK problem solver class that iterates over a sequence of subproblems. More...
 
class  roboticslab::ScrewTheoryIkProblemBuilder
 Automated IK solution finder. More...
 
class  roboticslab::PadenKahanOne
 First Paden-Kahan subproblem. More...
 
class  roboticslab::PadenKahanTwo
 Second Paden-Kahan subproblem. More...
 
class  roboticslab::PadenKahanThree
 Third Paden-Kahan subproblem. More...
 
class  roboticslab::PardosGotorOne
 First Pardos-Gotor subproblem. More...
 
class  roboticslab::PardosGotorTwo
 Second Pardos-Gotor subproblem. More...
 
class  roboticslab::PardosGotorThree
 Third Pardos-Gotor subproblem. More...
 
class  roboticslab::PardosGotorFour
 Fourth Pardos-Gotor subproblem. More...
 
+ + + + + + + +

+Functions

KDL::Rotation roboticslab::vectorPow2 (const KDL::Vector &v)
 Multiply a vector by itself to obtain a square matrix. More...
 
double roboticslab::normalizeAngle (double angle)
 Clip an angle value between certain bounds. More...
 
+

Detailed Description

+

Proof of concept for a kinematics library based on screw theory concepts applied to robotics. This implementation is mainly focused on solving inverse kinematics problems in an efficient and effective manner via closed-form geometric solutions. Comparing this approach with a tradicional numeric-based approach yields ([1]):

    +
  • faster solutions, since there are no iterations involved;
  • +
  • exact solutions, since the direct formulation guarantees convergence;
  • +
  • multiple solutions and the possibility to choose the better ones.
  • +
+

Function Documentation

+ +

◆ normalizeAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
double roboticslab::normalizeAngle (double angle)
+
+inline
+
+

Values that exceed [-pi pi] are normalized to fit this range. Values close to -pi are approximated as pi.

+
Parameters
+ + +
angleMagnitude of the requested angle.
+
+
+
Returns
Normalized angle.
+ +
+
+ +

◆ vectorPow2()

+ +
+
+ + + + + +
+ + + + + + + + +
KDL::Rotation roboticslab::vectorPow2 (const KDL::Vector & v)
+
+inline
+
+

Given a column-vector v, computes v*v'.

+
Parameters
+ + +
vInput vector.
+
+
+
Returns
Resulting square matrix.
+ +
+
+
+ + + + diff --git a/group__TinyMath.html b/group__TinyMath.html new file mode 100644 index 000000000..b2ebc81ab --- /dev/null +++ b/group__TinyMath.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: TinyMath + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

A small mathematical library, mostly for performing transformations between angle representations. +

+
+ + + + diff --git a/group__TrajGen.html b/group__TrajGen.html new file mode 100644 index 000000000..a09ab27e4 --- /dev/null +++ b/group__TrajGen.html @@ -0,0 +1,101 @@ + + + + + + + +kinematics-dynamics: TrajGen + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

The TrajGen library is a collection of classes for trajectory generation. +More...

+ + + + + + + + + + + +

+Classes

class  Traj
 A base class for 1 degree-of-freedom trajectories. More...
 
class  OrderOneTraj
 Generates a 1DOF order-one trajectory. More...
 
class  OrderThreeTraj
 Generates a 1DOF order-three trajectory. More...
 
+

Detailed Description

+

The TrajGen library is a collection of classes for trajectory generation. For now the functions' implementations are so short that they have been programmed inline, so for now the library is actually header-based (no actual real static/dynamic library to be linked).

+
+ + + + diff --git a/group__YarpPlugins.html b/group__YarpPlugins.html new file mode 100644 index 000000000..62b747d41 --- /dev/null +++ b/group__YarpPlugins.html @@ -0,0 +1,119 @@ + + + + + + + +kinematics-dynamics: YarpPlugins + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ +

Contains kinematics-dynamics libraries that implement YARP device interfaces and therefore can be invoked as YARP plugins. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Modules

 AsibotSolver
 Contains roboticslab::AsibotSolver.
 
 BasicCartesianControl
 Contains roboticslab::BasicCartesianControl.
 
 CartesianControlClient
 Contains roboticslab::CartesianControlClient.
 
 CartesianControlServer
 Contains roboticslab::CartesianControlServer.
 
 KdlSolver
 Contains roboticslab::KdlSolver.
 
 KdlTreeSolver
 Contains roboticslab::KdlSolver.
 
+ + + + + + + +

+Files

file  ICartesianControl.h
 Contains roboticslab::ICartesianControl and related vocabs.
 
file  ICartesianSolver.h
 Contains roboticslab::ICartesianSolver.
 
+

Detailed Description

+
+ + + + diff --git a/group__cartesianControlExample.html b/group__cartesianControlExample.html new file mode 100644 index 000000000..28218c531 --- /dev/null +++ b/group__cartesianControlExample.html @@ -0,0 +1,86 @@ + + + + + + + +kinematics-dynamics: cartesianControlExample + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
cartesianControlExample
+
+
+

Running example with teoSim First we must run a YARP name server if it is not running in our current namespace:

[on terminal 1] yarp server
+

What mostly changes is the library command line invocation. We also change the server port name. The following is an example for the simulated robot's right arm.

[on terminal 2] teoSim
+[on terminal 3] yarpdev --device BasicCartesianControl --name /teoSim/rightArm/CartesianControl --kinematics teo-fixedTrunk-rightArm-fetch.ini --local /BasicCartesianControl/teoSim/rightArm --remote /teoSim/rightArm
+[on terminal 4] ./cartesianControlExample
+[on possible terminal 5] yarp rpc /teoSim/rightArm/CartesianControl/rpc:s (for manual operation)
+
+ + + + diff --git a/group__exampleYarpTinyMath.html b/group__exampleYarpTinyMath.html new file mode 100644 index 000000000..c32e9428b --- /dev/null +++ b/group__exampleYarpTinyMath.html @@ -0,0 +1,97 @@ + + + + + + + +kinematics-dynamics: exampleYarpTinyMath + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
exampleYarpTinyMath
+
+
+ +

This is an example of the use of YarpTinyMath. +

+

+Legal

+

Copyright: (C) 2013 Universidad Carlos III de Madrid

+

Author: Juan G. Victores

+

CopyPolicy: Released under the terms of the LGPLv2.1 or later, see license/LGPL.TXT

+

+Building

+
cd examples/cpp/exampleYarpTinyMath/
+mkdir build; cd build; cmake ..
+make -j3
+

+Running

+
./exampleYarpTinyMath
+
+ + + + diff --git a/group__ftCompensation.html b/group__ftCompensation.html new file mode 100644 index 000000000..e714e369a --- /dev/null +++ b/group__ftCompensation.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: ftCompensation + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ + +
+
+ +

Creates an instance of roboticslab::FtCompensation. +More...

+ + + + + +

+Classes

class  roboticslab::FtCompensation
 Produces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app). More...
 
+

Detailed Description

+
+ + + + diff --git a/group__haarDetectionController.html b/group__haarDetectionController.html new file mode 100644 index 000000000..3e08b437c --- /dev/null +++ b/group__haarDetectionController.html @@ -0,0 +1,97 @@ + + + + + + + +kinematics-dynamics: haarDetectionController + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
haarDetectionController
+
+
+ +

Creates an instance of roboticslab::HaarDetectionController. +More...

+ + + + + + + + +

+Classes

class  roboticslab::GrabberResponder
 Callback class for dealing with incoming grabber data streams. More...
 
class  roboticslab::HaarDetectionController
 Create seek-and-follow trajectories based on Haar detection algorithms. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__keyboardController.html b/group__keyboardController.html new file mode 100644 index 000000000..46c569ce9 --- /dev/null +++ b/group__keyboardController.html @@ -0,0 +1,97 @@ + + + + + + + +kinematics-dynamics: keyboardController + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ +

Creates an instance of roboticslab::KeyboardController. +More...

+ + + + + + + + +

+Classes

class  roboticslab::KeyboardController
 Sends streaming commands to the cartesian controller from a standard keyboard. More...
 
class  roboticslab::LinearTrajectoryThread
 Periodic thread that encapsulates a linear trajectory. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__kinematics-dynamics-applications.html b/group__kinematics-dynamics-applications.html new file mode 100644 index 000000000..f73adee0b --- /dev/null +++ b/group__kinematics-dynamics-applications.html @@ -0,0 +1,84 @@ + + + + + + + +kinematics-dynamics: kinematics-dynamics Applications (Collections of Programs) + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
kinematics-dynamics Applications (Collections of Programs)
+
+
+ +

kinematics-dynamics applications (collections of programs). +

+
+ + + + diff --git a/group__kinematics-dynamics-examples.html b/group__kinematics-dynamics-examples.html new file mode 100644 index 000000000..73daa2f7e --- /dev/null +++ b/group__kinematics-dynamics-examples.html @@ -0,0 +1,95 @@ + + + + + + + +kinematics-dynamics: kinematics-dynamics Examples + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
kinematics-dynamics Examples
+
+
+ +

kinematics-dynamics examples. +More...

+ + + + + + +

+Modules

 cartesianControlExample
 
 screwTheoryTrajectoryExample
 
+

Detailed Description

+
+ + + + diff --git a/group__kinematics-dynamics-libraries.html b/group__kinematics-dynamics-libraries.html new file mode 100644 index 000000000..ef92dcbcf --- /dev/null +++ b/group__kinematics-dynamics-libraries.html @@ -0,0 +1,109 @@ + + + + + + + +kinematics-dynamics: kinematics-dynamics Libraries + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
kinematics-dynamics Libraries
+
+
+ +

kinematics-dynamics libraries. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Modules

 YarpPlugins
 Contains kinematics-dynamics libraries that implement YARP device interfaces and therefore can be invoked as YARP plugins.
 
 KdlVectorConverterLib
 Contains classes related to KDL and std::vector classes.
 
 KinematicRepresentationLib
 Contains utilities related to conversion mechanisms between different coordinate and orientation systems.
 
 ScrewTheoryLib
 Contains classes related to Screw Theory solvers and tools.
 
 TrajGen
 The TrajGen library is a collection of classes for trajectory generation.
 
 TinyMath
 A small mathematical library, mostly for performing transformations between angle representations.
 
+

Detailed Description

+
+ + + + diff --git a/group__kinematics-dynamics-programs.html b/group__kinematics-dynamics-programs.html new file mode 100644 index 000000000..98a544fcb --- /dev/null +++ b/group__kinematics-dynamics-programs.html @@ -0,0 +1,103 @@ + + + + + + + +kinematics-dynamics: kinematics-dynamics Programs + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
kinematics-dynamics Programs
+
+
+ +

kinematics-dynamics programs. +More...

+ + + + + + + + + + + + + + +

+Modules

 ftCompensation
 Creates an instance of roboticslab::FtCompensation.
 
 haarDetectionController
 Creates an instance of roboticslab::HaarDetectionController.
 
 keyboardController
 Creates an instance of roboticslab::KeyboardController.
 
 streamingDeviceController
 Creates an instance of roboticslab::StreamingDeviceController.
 
+

Detailed Description

+
+ + + + diff --git a/group__kinematics-dynamics-tests.html b/group__kinematics-dynamics-tests.html new file mode 100644 index 000000000..37344476f --- /dev/null +++ b/group__kinematics-dynamics-tests.html @@ -0,0 +1,109 @@ + + + + + + + +kinematics-dynamics: kinematics-dynamics Tests + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
kinematics-dynamics Tests
+
+
+ +

kinematics-dynamics tests. +More...

+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  roboticslab::test::AsibotSolverTestFromFile
 Tests AsibotSolver ikin from loaded configuration file. More...
 
class  roboticslab::test::BasicCartesianControlTest
 Tests BasicCartesianControl ikin and idyn on a simple mechanism. More...
 
class  roboticslab::test::KdlSolverTest
 Tests KdlSolver ikin and idyn on a simple mechanism. More...
 
class  roboticslab::test::KdlSolverTestFromFile
 Tests KdlSolver ikin and idyn on a simple mechanism. More...
 
class  roboticslab::test::KinRepresentationTest
 Tests KinRepresentation. More...
 
class  roboticslab::test::ScrewTheoryTest
 Tests classes related to Screw Theory. More...
 
+

Detailed Description

+
+ + + + diff --git a/group__screwTheoryTrajectoryExample.html b/group__screwTheoryTrajectoryExample.html new file mode 100644 index 000000000..12ddb7d1a --- /dev/null +++ b/group__screwTheoryTrajectoryExample.html @@ -0,0 +1,91 @@ + + + + + + + +kinematics-dynamics: screwTheoryTrajectoryExample + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
screwTheoryTrajectoryExample
+
+
+

Legal

+

Copyright: (C) 2018 Universidad Carlos III de Madrid;

+

CopyPolicy: Released under the terms of the LGPLv2.1 or later, see license/LGPL.TXT

+

Building

cd examples/cpp/exampleScrewTheoryTrajectory/
+mkdir build; cd build; cmake ..
+make -j$(nproc)
+

Running example with teoSim First we must run a YARP name server if it is not running in our current namespace:

[on terminal 1] yarp server
+

What mostly changes is the library command line invocation. We also change the server port name. The following is an example for the simulated robot's right arm.

[on terminal 2] teoSim
+[on terminal 3] yarpdev --device BasicCartesianControl --name /teoSim/leftArm/CartesianControl --kinematics teo-fixedTrunk-leftArm-fetch.ini --robot remote_controlboard --local /BasicCartesianControl/teoSim/leftArm --remote /teoSim/leftArm --angleRepr axisAngle
+[on terminal 4] ./exampleScrewTheoryTrajectory
+
+ + + + diff --git a/group__streamingDeviceController.html b/group__streamingDeviceController.html new file mode 100644 index 000000000..fb565c2f6 --- /dev/null +++ b/group__streamingDeviceController.html @@ -0,0 +1,115 @@ + + + + + + + +kinematics-dynamics: streamingDeviceController + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
streamingDeviceController
+
+
+ +

Creates an instance of roboticslab::StreamingDeviceController. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  roboticslab::CentroidTransform
 ... More...
 
class  roboticslab::LeapMotionSensorDevice
 Represents a LeapMotion device wrapped as an analog sensor by YARP. More...
 
class  roboticslab::SpnavSensorDevice
 Represents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion. More...
 
class  roboticslab::StreamingDeviceFactory
 Factory class for creating instances of StreamingDevice. More...
 
class  roboticslab::StreamingDevice
 Abstract class for a YARP streaming device. More...
 
class  roboticslab::InvalidDevice
 Represents an invalid device. More...
 
class  roboticslab::StreamingDeviceController
 Sends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator. More...
 
class  roboticslab::WiimoteSensorDevice
 Represents a Wiimote device wrapped as an analog sensor by YARP. More...
 
+

Detailed Description

+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..05f54d1e1 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,169 @@ + + + + + + + +kinematics-dynamics: Class Hierarchy + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Croboticslab::AsibotConfigurationAbstract base class for a robot configuration strategy selector
 Croboticslab::AsibotConfigurationLeastOverallAngularDisplacementIK solver configuration strategy selector based on the overall angle displacement of all joints
 Croboticslab::AsibotConfigurationFactoryBase factory class for AsibotConfiguration
 Croboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactoryImplementation factory class for AsibotConfigurationLeastOverallAngularDisplacement
 Croboticslab::AsibotSolver::AsibotTcpFrame
 Croboticslab::CentroidTransform..
 CKDL::ChainFkSolverPos
 Croboticslab::ChainFkSolverPos_STFK solver using Screw Theory
 CKDL::ChainIkSolverPos
 Croboticslab::ChainIkSolverPos_IDIK solver using infinitesimal displacement twists
 Croboticslab::ChainIkSolverPos_STIK solver using Screw Theory
 Croboticslab::test::ScrewTheoryTest::compare_solutions
 Croboticslab::ConfigurationSelector::ConfigurationHelper class to store a specific robot configuration
 Croboticslab::ConfigurationSelectorAbstract base class for a robot configuration strategy selector
 Croboticslab::ConfigurationSelectorLeastOverallAngularDisplacementIK solver configuration strategy selector based on the overall displacement of all joints
 Croboticslab::ConfigurationSelectorHumanoidGaitIK solver configuration strategy selector based on human walking
 Croboticslab::ConfigurationSelectorFactoryBase factory class for ConfigurationSelector
 Croboticslab::ConfigurationSelectorHumanoidGaitFactoryImplementation factory class for ConfigurationSelectorHumanoidGait
 Croboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactoryImplementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement
 Cyarp::dev::DeviceDriver
 Croboticslab::AsibotSolverThe AsibotSolver implements ICartesianSolver
 Croboticslab::BasicCartesianControlImplements ICartesianControl
 Croboticslab::CartesianControlClientImplements ICartesianControl client side
 Croboticslab::CartesianControlServerImplements ICartesianControl server side
 Croboticslab::KdlSolverImplements ICartesianSolver
 Croboticslab::KdlTreeSolverImplements ICartesianSolver
 Cyarp::dev::DeviceResponder
 Croboticslab::RpcResponderResponds to RPC command messages
 Croboticslab::RpcTransformResponderResponds to RPC command messages, transforms incoming data
 Croboticslab::ICartesianControlAbstract base class for a cartesian controller
 Croboticslab::BasicCartesianControlImplements ICartesianControl
 Croboticslab::CartesianControlClientImplements ICartesianControl client side
 Croboticslab::ICartesianSolverAbstract base class for a cartesian solver
 Croboticslab::AsibotSolverThe AsibotSolver implements ICartesianSolver
 Croboticslab::KdlSolverImplements ICartesianSolver
 Croboticslab::KdlTreeSolverImplements ICartesianSolver
 Croboticslab::MatrixExponentialAbstraction of a term in a product of exponentials (POE) formula
 Cyarp::os::PeriodicThread
 CTrajectoryThread
 Croboticslab::BasicCartesianControlImplements ICartesianControl
 Croboticslab::CartesianControlServerImplements ICartesianControl server side
 Croboticslab::FtCompensationProduces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app)
 Croboticslab::LinearTrajectoryThreadPeriodic thread that encapsulates a linear trajectory
 Croboticslab::PoeExpressionAbstraction of a product of exponentials (POE) formula
 Croboticslab::ScrewTheoryIkProblemBuilder::PoeTermHelper structure that holds the state of a POE term
 Cyarp::dev::PolyDriver
 Croboticslab::StreamingDeviceAbstract class for a YARP streaming device
 Croboticslab::InvalidDeviceRepresents an invalid device
 Croboticslab::LeapMotionSensorDeviceRepresents a LeapMotion device wrapped as an analog sensor by YARP
 Croboticslab::SpnavSensorDeviceRepresents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion
 Croboticslab::WiimoteSensorDeviceRepresents a Wiimote device wrapped as an analog sensor by YARP
 Croboticslab::AsibotConfiguration::PoseHelper class to store a specific robot configuration
 Cyarp::os::RFModule
 Croboticslab::FtCompensationProduces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app)
 Croboticslab::HaarDetectionControllerCreate seek-and-follow trajectories based on Haar detection algorithms
 Croboticslab::KeyboardControllerSends streaming commands to the cartesian controller from a standard keyboard
 Croboticslab::StreamingDeviceControllerSends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator
 Croboticslab::ScrewTheoryIkProblemProxy IK problem solver class that iterates over a sequence of subproblems
 Croboticslab::ScrewTheoryIkProblemBuilderAutomated IK solution finder
 Croboticslab::ScrewTheoryIkSubproblemInterface shared by all IK subproblems found in Screw Theory applied to Robotics
 Croboticslab::PadenKahanOneFirst Paden-Kahan subproblem
 Croboticslab::PadenKahanThreeThird Paden-Kahan subproblem
 Croboticslab::PadenKahanTwoSecond Paden-Kahan subproblem
 Croboticslab::PardosGotorFourFourth Pardos-Gotor subproblem
 Croboticslab::PardosGotorOneFirst Pardos-Gotor subproblem
 Croboticslab::PardosGotorThreeThird Pardos-Gotor subproblem
 Croboticslab::PardosGotorTwoSecond Pardos-Gotor subproblem
 Croboticslab::BasicCartesianControl::StateWatcher
 Croboticslab::StreamingDeviceFactoryFactory class for creating instances of StreamingDevice
 Ctesting::Test
 Croboticslab::test::AsibotSolverTestFromFileTests AsibotSolver ikin from loaded configuration file
 Croboticslab::test::BasicCartesianControlTestTests BasicCartesianControl ikin and idyn on a simple mechanism
 Croboticslab::test::KdlSolverTestTests KdlSolver ikin and idyn on a simple mechanism
 Croboticslab::test::KdlSolverTestFromFileTests KdlSolver ikin and idyn on a simple mechanism
 Croboticslab::test::KinRepresentationTestTests KinRepresentation
 Croboticslab::test::ScrewTheoryTestTests classes related to Screw Theory
 CTrajA base class for 1 degree-of-freedom trajectories
 COrderOneTrajGenerates a 1DOF order-one trajectory
 COrderThreeTrajGenerates a 1DOF order-three trajectory
 Cyarp::os::TypedReaderCallback
 Croboticslab::FkStreamResponderResponds to streaming FK messages
 Croboticslab::GrabberResponderCallback class for dealing with incoming grabber data streams
 Croboticslab::StreamResponderResponds to streaming command messages
 Croboticslab::StreamingDeviceControllerSends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..1cdf5ff75 --- /dev/null +++ b/index.html @@ -0,0 +1,197 @@ + + + + + + + +kinematics-dynamics: Main Page + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
kinematics-dynamics Documentation
+
+
+

Teo-main Homepage

+

Kinematics and dynamics solvers and controllers.

+

Link to Doxygen generated documentation: https://robots.uc3m.es/kinematics-dynamics/

+

+

kinematics-dynamics image

+

+Installation

+

Installation instructions for installing from source can be found here.

+

+Contributing

+

+Posting Issues

+
    +
  1. Read CONTRIBUTING.md
  2. +
  3. Post an issue / Feature request / Specific documentation request
  4. +
+

+Fork & Pull Request

+
    +
  1. Fork the repository
  2. +
  3. Create your feature branch (git checkout -b my-new-feature) off the master branch, following the Forking Git workflow
  4. +
  5. Commit your changes
  6. +
  7. Push to the branch (git push origin my-new-feature)
  8. +
  9. Create a new Pull Request
  10. +
+

+Status

+

CI (Linux)

+

Coverage Status

+

Issues

+

+Similar and Related Projects

+

+Quaternions

+ +

+Fast Solvers

+ +

+IK-Solvers

+ +

+Kinematics and Dynamics

+ +

+Path-Planning, Trajectory generation and optimization

+ +

+Humanoid-oriented

+ +
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..103c32d79 --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler โ—‹ gmail โ€ข com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/libraries_2ScrewTheoryLib_2LogComponent_8hpp_source.html b/libraries_2ScrewTheoryLib_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..63fe7d9a7 --- /dev/null +++ b/libraries_2ScrewTheoryLib_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: libraries/ScrewTheoryLib/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __SCREW_THEORY_LOG_COMPONENT_HPP__
+
2 #define __SCREW_THEORY_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(ST)
+
7 
+
8 #endif // __SCREW_THEORY_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/libraries_2YarpPlugins_2AsibotSolver_2LogComponent_8hpp_source.html b/libraries_2YarpPlugins_2AsibotSolver_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..2adbb9c71 --- /dev/null +++ b/libraries_2YarpPlugins_2AsibotSolver_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/AsibotSolver/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __ASIBOT_SOLVER_LOG_COMPONENT_HPP__
+
2 #define __ASIBOT_SOLVER_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(ASIBOT)
+
7 
+
8 #endif // __ASIBOT_SOLVER_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/libraries_2YarpPlugins_2BasicCartesianControl_2LogComponent_8hpp_source.html b/libraries_2YarpPlugins_2BasicCartesianControl_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..bef5af7c3 --- /dev/null +++ b/libraries_2YarpPlugins_2BasicCartesianControl_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/BasicCartesianControl/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __BASIC_CARTESIAN_CONTROL_LOG_COMPONENT_HPP__
+
2 #define __BASIC_CARTESIAN_CONTROL_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(BCC)
+
7 
+
8 #endif // __BASIC_CARTESIAN_CONTROL_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/libraries_2YarpPlugins_2CartesianControlClient_2LogComponent_8hpp_source.html b/libraries_2YarpPlugins_2CartesianControlClient_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..9ce18ca8e --- /dev/null +++ b/libraries_2YarpPlugins_2CartesianControlClient_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/CartesianControlClient/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __CARTESIAN_CONTROL_CLIENT_LOG_COMPONENT_HPP__
+
2 #define __CARTESIAN_CONTROL_CLIENT_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(CCC)
+
7 
+
8 #endif // __CARTESIAN_CONTROL_CLIENT_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/libraries_2YarpPlugins_2CartesianControlServer_2LogComponent_8hpp_source.html b/libraries_2YarpPlugins_2CartesianControlServer_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..2a5cefa71 --- /dev/null +++ b/libraries_2YarpPlugins_2CartesianControlServer_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/CartesianControlServer/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __CARTESIAN_CONTROL_SERVER_LOG_COMPONENT_HPP__
+
2 #define __CARTESIAN_CONTROL_SERVER_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(CCS)
+
7 
+
8 #endif // __CARTESIAN_CONTROL_SERVER_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/libraries_2YarpPlugins_2KdlSolver_2LogComponent_8hpp_source.html b/libraries_2YarpPlugins_2KdlSolver_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..1b3fd00bc --- /dev/null +++ b/libraries_2YarpPlugins_2KdlSolver_2LogComponent_8hpp_source.html @@ -0,0 +1,94 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlSolver/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __KDL_SOLVER_LOG_COMPONENT_HPP__
+
2 #define __KDL_SOLVER_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(KDLS)
+
7 YARP_DECLARE_LOG_COMPONENT(KDLS_QUIET)
+
8 
+
9 #endif // __KDL_SOLVER_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/libraries_2YarpPlugins_2KdlTreeSolver_2LogComponent_8hpp_source.html b/libraries_2YarpPlugins_2KdlTreeSolver_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..34337c946 --- /dev/null +++ b/libraries_2YarpPlugins_2KdlTreeSolver_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: libraries/YarpPlugins/KdlTreeSolver/LogComponent.hpp Source File + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LogComponent.hpp
+
+
+
1 #ifndef __KDL_TREE_SOLVER_LOG_COMPONENT_HPP__
+
2 #define __KDL_TREE_SOLVER_LOG_COMPONENT_HPP__
+
3 
+
4 #include <yarp/os/LogComponent.h>
+
5 
+
6 YARP_DECLARE_LOG_COMPONENT(KDLS)
+
7 
+
8 #endif // __KDL_TREE_SOLVER_LOG_COMPONENT_HPP__
+
+ + + + diff --git a/md_doc_kinematics_dynamics_install.html b/md_doc_kinematics_dynamics_install.html new file mode 100644 index 000000000..4e36a5288 --- /dev/null +++ b/md_doc_kinematics_dynamics_install.html @@ -0,0 +1,128 @@ + + + + + + + +kinematics-dynamics: kinematics-dynamics: Installation from Source Code + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
kinematics-dynamics: Installation from Source Code
+
+
+

First install the dependencies:

+ +

We optionally use the ProximitySensorsClient device from yarp-devices in the haarDetectionController app. Refer to its installation guide for instructions.

+

For unit testing, you'll need the googletest source package. Refer to Install googletest.

+

+Install kinematics-dynamics on Ubuntu (working on all tested versions)

+

Our software integrates the previous dependencies. Note that you will be prompted for your password upon using sudo a couple of times:

+
cd # go home
+
mkdir -p repos; cd repos # create $HOME/repos if it does not exist; then, enter it
+
git clone https://github.com/roboticslab-uc3m/kinematics-dynamics.git # download kinematics-dynamics sources from GitHub
+
cd kinematics-dynamics; mkdir build; cd build; cmake .. # configure the project
+
make -j # compile
+
sudo make install; sudo ldconfig # install
+

Use ccmake instead of cmake for additional options.

+

+Install Bindings

+

Swig is needed in order to build all language bindings. Refer to Install SWIG.

+

+Install Python Bindings

+

First, install Python development packages.

+
sudo apt update
+
sudo apt install libpython3-dev # not installed by default on clean distros
+

You can follow these steps after installing kinematics-dynamics, or just activate the correct CMake options during the initial build.

+
cd # go home
+
cd repos/kinematics-dynamics/build # this should already exist, see previous section
+
cmake .. -DCREATE_PYTHON=ON -DCREATE_BINDINGS_PYTHON=ON # enable Python bindings
+
make -j # compile
+
sudo make install; sudo ldconfig; cd # install and go home
+

Note: You'll probably want YARP Python bindings (perma), too.

+

+Install Python bindings (checking)

+

Check your installation via (should output nothing; if bad, you will see a ModuleNotFoundError):

+
python3 -c "import kinematics_dynamics"
+

+Install Python bindings (troubleshooting)

+

CMake may not detect the correct Python3 installation directory. Toggle t in ccmake to see additional configuration. The CMAKE_INSTALL_PYTHONDIR variable may point to a wrong path such as lib/python3/dist-packages (relative to CMAKE_INSTALL_PREFIX, which usually resolves to /usr/local). You must pick the python3.x directory instead (check via python3 -V); on Ubuntu 20.04 and Python 3.8, this configuration variable should be changed to lib/python3.8/dist-packages.

+

+Even more!

+

Done! You are now probably interested in one of the following links:

+
+
+ + + + diff --git a/md_doc_teo_post_install.html b/md_doc_teo_post_install.html new file mode 100644 index 000000000..5eb2b6071 --- /dev/null +++ b/md_doc_teo_post_install.html @@ -0,0 +1,123 @@ + + + + + + + +kinematics-dynamics: Simulation and Basic Control: Now what can I do? + + + + + + + + + + + +
+
+ + + + + + +
+
kinematics-dynamics +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Simulation and Basic Control: Now what can I do?
+
+
+

Now that you have installed the basic TEO repository, you're probably wondering what to do.

+

+Initializing the communication server

+

Our current implementation uses YARP for communication. Basic use of YARP requires the use of a centralized server. This server associates the low-level implementation of the communication ports with the names we give them. Before executing any TEO program or application, please launch a yarp server:

+
[terminal 1] yarp server
+

+Launching the simulator

+

Launch with a single command:

+
[terminal 2] teoSim
+

You should get a window similar to the one depicted on Figure 1.

+

Fig. 1 - An instance of the teoSim program.

+Changing parameters

+

Each layer of TEO programs has parameters that can be modified three different ways. They are parsed in the following order (the second parsing overwrites the first, and the third one overwrites both):

+
    +
  • Default parameters defined in the class header files (*.h or *.hpp extension). You must recompile the project if you change any of these parameters.
  • +
  • Configuration files (*.ini or *.xml extension). These files are downloaded from kinematics-dynamics/share and installed to kinematics-dynamics/build/share/teo with the cmake command we issued. Within this folder, separate folders are maintained for programs and program layers.
  • +
  • Command line (on program execution). Parameters may be modified executing a program using the following format: ./program --parameter new_value.
  • +
+

Let's say, for example, our graphic card supports offscreen rendering and we want teoSim to load an enviroment that has cameras in the simulated environment. We can execute the program touching the parameters at the command line level which, as we have said, are parsed last:

+
[terminal 2] teoSim --env teo_kitchen_cameras.env.xml
+

This specific environment contains simulated cameras that Figure 2. You can learn how to make the connections in the testRaveBot documentation.

+
+ +
+

We can actually see the default parameters, and the final selected ones, with the --help parameter:

+
[terminal 2] teoSim --env teo_kitchen_cameras.env.xml --help
+

If we want to affect this parameter at a more persistent level, we can change the configuration file. For this specific case, the teoSim configuration file is located at $ROBOTICSLAB_KINEMATICS_DYNAMICS_ROOT/app/teoSim/conf/teoSim.ini. In this file, we can see that most parameters are commented out (the // characters). This is a common convention to indicate these are the default parameters set in the headers (the first parsed, as explained previously). Here, we would search to subsitute the line:

+
// env teo_kitchen.env.xml /// env [xml] environment name in abs or rel
+

With a new, uncommented line:

+
env teo_kitchen_cameras.env.xml /// env [xml] environment name in abs or rel
+

+Interfacing

+

We can interact with this program through port commands as described in testRaveBot and teoSim, or through the different language APIs as can be seen in the different TEO examples

+

+Even more!

+

Done! You are now probably interested in one of the following links:

+ +
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..2fe2214f2 --- /dev/null +++ b/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..69c55b1cb --- /dev/null +++ b/menudata.js @@ -0,0 +1,93 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"j",url:"functions_func_j.html#index_j"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"v",url:"globals.html#index_v"}]}, +{text:"Variables",url:"globals_vars.html",children:[ +{text:"v",url:"globals_vars.html#index_v"}]}]}]}]} diff --git a/modules.html b/modules.html new file mode 100644 index 000000000..f9c7fc2cf --- /dev/null +++ b/modules.html @@ -0,0 +1,109 @@ + + + + + + + +kinematics-dynamics: Modules + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + +
     kinematics-dynamics Applications (Collections of Programs)Kinematics-dynamics applications (collections of programs)
     kinematics-dynamics LibrariesKinematics-dynamics libraries
     YarpPluginsContains kinematics-dynamics libraries that implement YARP device interfaces and therefore can be invoked as YARP plugins
     AsibotSolverContains roboticslab::AsibotSolver
     BasicCartesianControlContains roboticslab::BasicCartesianControl
     CartesianControlClientContains roboticslab::CartesianControlClient
     CartesianControlServerContains roboticslab::CartesianControlServer
     KdlSolverContains roboticslab::KdlSolver
     KdlTreeSolverContains roboticslab::KdlSolver
     KdlVectorConverterLibContains classes related to KDL and std::vector classes
     KinematicRepresentationLibContains utilities related to conversion mechanisms between different coordinate and orientation systems
     ScrewTheoryLibContains classes related to Screw Theory solvers and tools
     TrajGenThe TrajGen library is a collection of classes for trajectory generation
     TinyMathA small mathematical library, mostly for performing transformations between angle representations
     kinematics-dynamics ProgramsKinematics-dynamics programs
     ftCompensationCreates an instance of roboticslab::FtCompensation
     haarDetectionControllerCreates an instance of roboticslab::HaarDetectionController
     keyboardControllerCreates an instance of roboticslab::KeyboardController
     streamingDeviceControllerCreates an instance of roboticslab::StreamingDeviceController
     kinematics-dynamics ExamplesKinematics-dynamics examples
     cartesianControlExample
     screwTheoryTrajectoryExample
     kinematics-dynamics TestsKinematics-dynamics tests
     exampleYarpTinyMathThis is an example of the use of YarpTinyMath
    +
    +
    + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..72fb63c0f --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,157 @@ + + + + + + + +kinematics-dynamics: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 000000000..46fd812f1 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,88 @@ + + + + + + + +kinematics-dynamics: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..f47c7a771 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,148 @@ + + + + + + + +kinematics-dynamics: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/namespaceroboticslab.html b/namespaceroboticslab.html new file mode 100644 index 000000000..79b7bb84e --- /dev/null +++ b/namespaceroboticslab.html @@ -0,0 +1,478 @@ + + + + + + + +kinematics-dynamics: roboticslab Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    roboticslab Namespace Reference
    +
    +
    + +

    The main, catch-all namespace for Robotics Lab UC3M. +

    + + + + + + + + + + + +

    +Namespaces

     KdlVectorConverter
     Collection of utilities related to KDL and std::vector classes.
     
     KinRepresentation
     Collection of static methods to perform geometric transformations.
     
     test
     Contains classes related to unit testing.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  ConfigurationSelector
     Abstract base class for a robot configuration strategy selector. More...
     
    class  ConfigurationSelectorLeastOverallAngularDisplacement
     IK solver configuration strategy selector based on the overall displacement of all joints. More...
     
    class  ConfigurationSelectorHumanoidGait
     IK solver configuration strategy selector based on human walking. More...
     
    class  ConfigurationSelectorFactory
     Base factory class for ConfigurationSelector. More...
     
    class  ConfigurationSelectorLeastOverallAngularDisplacementFactory
     Implementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement. More...
     
    class  ConfigurationSelectorHumanoidGaitFactory
     Implementation factory class for ConfigurationSelectorHumanoidGait. More...
     
    class  MatrixExponential
     Abstraction of a term in a product of exponentials (POE) formula. More...
     
    class  PoeExpression
     Abstraction of a product of exponentials (POE) formula. More...
     
    class  ScrewTheoryIkSubproblem
     Interface shared by all IK subproblems found in Screw Theory applied to Robotics. More...
     
    class  ScrewTheoryIkProblem
     Proxy IK problem solver class that iterates over a sequence of subproblems. More...
     
    class  ScrewTheoryIkProblemBuilder
     Automated IK solution finder. More...
     
    class  PadenKahanOne
     First Paden-Kahan subproblem. More...
     
    class  PadenKahanTwo
     Second Paden-Kahan subproblem. More...
     
    class  PadenKahanThree
     Third Paden-Kahan subproblem. More...
     
    class  PardosGotorOne
     First Pardos-Gotor subproblem. More...
     
    class  PardosGotorTwo
     Second Pardos-Gotor subproblem. More...
     
    class  PardosGotorThree
     Third Pardos-Gotor subproblem. More...
     
    class  PardosGotorFour
     Fourth Pardos-Gotor subproblem. More...
     
    class  AsibotConfiguration
     Abstract base class for a robot configuration strategy selector. More...
     
    class  AsibotConfigurationLeastOverallAngularDisplacement
     IK solver configuration strategy selector based on the overall angle displacement of all joints. More...
     
    class  AsibotConfigurationFactory
     Base factory class for AsibotConfiguration. More...
     
    class  AsibotConfigurationLeastOverallAngularDisplacementFactory
     Implementation factory class for AsibotConfigurationLeastOverallAngularDisplacement. More...
     
    class  AsibotSolver
     The AsibotSolver implements ICartesianSolver. More...
     
    class  BasicCartesianControl
     The BasicCartesianControl class implements ICartesianControl. More...
     
    class  FkStreamResponder
     Responds to streaming FK messages. More...
     
    class  CartesianControlClient
     The CartesianControlClient class implements ICartesianControl client side. More...
     
    class  CartesianControlServer
     The CartesianControlServer class implements ICartesianControl server side. More...
     
    class  RpcResponder
     Responds to RPC command messages. More...
     
    class  RpcTransformResponder
     Responds to RPC command messages, transforms incoming data. More...
     
    class  StreamResponder
     Responds to streaming command messages. More...
     
    class  ICartesianControl
     Abstract base class for a cartesian controller. More...
     
    class  ICartesianSolver
     Abstract base class for a cartesian solver. More...
     
    class  ChainFkSolverPos_ST
     FK solver using Screw Theory. More...
     
    class  ChainIkSolverPos_ID
     IK solver using infinitesimal displacement twists. More...
     
    class  ChainIkSolverPos_ST
     IK solver using Screw Theory. More...
     
    class  KdlSolver
     The KdlSolver class implements ICartesianSolver. More...
     
    class  KdlTreeSolver
     The KdlTreeSolver class implements ICartesianSolver. More...
     
    class  FtCompensation
     Produces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app). More...
     
    class  GrabberResponder
     Callback class for dealing with incoming grabber data streams. More...
     
    class  HaarDetectionController
     Create seek-and-follow trajectories based on Haar detection algorithms. More...
     
    class  KeyboardController
     Sends streaming commands to the cartesian controller from a standard keyboard. More...
     
    class  LinearTrajectoryThread
     Periodic thread that encapsulates a linear trajectory. More...
     
    class  CentroidTransform
     ... More...
     
    class  LeapMotionSensorDevice
     Represents a LeapMotion device wrapped as an analog sensor by YARP. More...
     
    class  SpnavSensorDevice
     Represents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion. More...
     
    class  StreamingDeviceFactory
     Factory class for creating instances of StreamingDevice. More...
     
    class  StreamingDevice
     Abstract class for a YARP streaming device. More...
     
    class  InvalidDevice
     Represents an invalid device. More...
     
    class  StreamingDeviceController
     Sends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator. More...
     
    class  WiimoteSensorDevice
     Represents a Wiimote device wrapped as an analog sensor by YARP. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    KDL::Rotation vectorPow2 (const KDL::Vector &v)
     Multiply a vector by itself to obtain a square matrix. More...
     
    double normalizeAngle (double angle)
     Clip an angle value between certain bounds. More...
     
    double toDeg (const double inRad)
     
    double toRad (const double inDeg)
     
    void xUpdateH (const yarp::sig::Vector &x, yarp::sig::Matrix &H)
     
    +yarp::sig::Matrix rotX (const double &inDeg)
     
    +yarp::sig::Matrix rotY (const double &inDeg)
     
    +yarp::sig::Matrix rotZ (const double &inDeg)
     
    yarp::sig::Matrix eulerZYZtoH (const yarp::sig::Vector &x, const yarp::sig::Vector &o)
     
    yarp::sig::Matrix eulerYZtoH (const yarp::sig::Vector &x, const yarp::sig::Vector &o)
     
    yarp::sig::Matrix axisAngleToH (const yarp::sig::Vector &x, const yarp::sig::Vector &o)
     
    +

    Function Documentation

    + +

    ◆ axisAngleToH()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    yarp::sig::Matrix roboticslab::axisAngleToH (const yarp::sig::Vector & x,
    const yarp::sig::Vector & o 
    )
    +
    +

    Thanks [Ugo Pattacini, Serena Ivaldi, Francesco Nori ((iCub ctrllib/math.h))] for axis2dcm().

    Parameters
    + + + +
    x3-vector in meters.
    o4-vector in degrees.
    +
    +
    +
    Returns
    Homogeneous matrix (4x4).
    + +
    +
    + +

    ◆ eulerYZtoH()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    yarp::sig::Matrix roboticslab::eulerYZtoH (const yarp::sig::Vector & x,
    const yarp::sig::Vector & o 
    )
    +
    +

    Uses x to compute rot(Z).

    Parameters
    + + + +
    x3-vector in meters.
    o2-vector in degrees.
    +
    +
    +
    Returns
    Homogeneous matrix (4x4).
    + +
    +
    + +

    ◆ eulerZYZtoH()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    yarp::sig::Matrix roboticslab::eulerZYZtoH (const yarp::sig::Vector & x,
    const yarp::sig::Vector & o 
    )
    +
    +
    Parameters
    + + + +
    x3-vector in meters.
    o3-vector in degrees.
    +
    +
    +
    Returns
    Homogeneous matrix (4x4).
    + +
    +
    + +

    ◆ toDeg()

    + +
    +
    + + + + + + + + +
    double roboticslab::toDeg (const double inRad)
    +
    +

    Simple function to pass from radians to degrees.

    Parameters
    + + +
    inRadangle value in radians.
    +
    +
    +
    Returns
    angle value in degrees.
    + +
    +
    + +

    ◆ toRad()

    + +
    +
    + + + + + + + + +
    double roboticslab::toRad (const double inDeg)
    +
    +

    Simple function to pass from degrees to radians.

    Parameters
    + + +
    inDegangle value in degrees.
    +
    +
    +
    Returns
    angle value in radians.
    + +
    +
    + +

    ◆ xUpdateH()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void roboticslab::xUpdateH (const yarp::sig::Vector & x,
    yarp::sig::Matrix & H 
    )
    +
    +

    Update x values of an homogeneous matrix.

    Parameters
    + + + +
    x3-vector input.
    Hhomogeneous matrix (4x4) that will be modified.
    +
    +
    + +
    +
    +
    + + + + diff --git a/namespaceroboticslab_1_1KdlVectorConverter.html b/namespaceroboticslab_1_1KdlVectorConverter.html new file mode 100644 index 000000000..7c8d37433 --- /dev/null +++ b/namespaceroboticslab_1_1KdlVectorConverter.html @@ -0,0 +1,263 @@ + + + + + + + +kinematics-dynamics: roboticslab::KdlVectorConverter Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::KdlVectorConverter Namespace Reference
    +
    +
    + +

    Collection of utilities related to KDL and std::vector classes. +

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    KDL::Frame vectorToFrame (const std::vector< double > &x)
     Convert from std::vector<double> to KDL::Frame. More...
     
    std::vector< double > frameToVector (const KDL::Frame &f)
     Convert from KDL::Frame to std::vector<double> More...
     
    KDL::Twist vectorToTwist (const std::vector< double > &xdot)
     Convert from std::vector<double> to KDL::Twist. More...
     
    std::vector< double > twistToVector (const KDL::Twist &t)
     Convert from KDL::Twist to std::vector<double> More...
     
    KDL::Wrench vectorToWrench (const std::vector< double > &f)
     Convert from std::vector<double> to KDL::Wrench. More...
     
    std::vector< double > wrenchToVector (const KDL::Wrench &w)
     Convert from KDL::Wrench to std::vector<double> More...
     
    +

    Function Documentation

    + +

    ◆ frameToVector()

    + +
    +
    + + + + + + + + +
    std::vector< double > roboticslab::KdlVectorConverter::frameToVector (const KDL::Frame & f)
    +
    +
    Parameters
    + + +
    fInput KDL::Frame object.
    +
    +
    +
    Returns
    Resulting 6-element vector describing a position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
    + +
    +
    + +

    ◆ twistToVector()

    + +
    +
    + + + + + + + + +
    std::vector< double > roboticslab::KdlVectorConverter::twistToVector (const KDL::Twist & t)
    +
    +
    Parameters
    + + +
    tInput KDL::Twist object
    +
    +
    +
    Returns
    Resulting 6-element vector describing a velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
    + +
    +
    + +

    ◆ vectorToFrame()

    + +
    +
    + + + + + + + + +
    KDL::Frame roboticslab::KdlVectorConverter::vectorToFrame (const std::vector< double > & x)
    +
    +
    Parameters
    + + +
    x6-element vector describing a position in cartesian space; first three elements denote translation (meters), last three denote rotation in scaled axis-angle representation (radians).
    +
    +
    +
    Returns
    Resulting KDL::Frame object.
    + +
    +
    + +

    ◆ vectorToTwist()

    + +
    +
    + + + + + + + + +
    KDL::Twist roboticslab::KdlVectorConverter::vectorToTwist (const std::vector< double > & xdot)
    +
    +
    Parameters
    + + +
    xdot6-element vector describing a velocity in cartesian space; first three elements denote translational velocity (meters/second), last three denote angular velocity (radians/second).
    +
    +
    +
    Returns
    Resulting KDL::Twist object.
    + +
    +
    + +

    ◆ vectorToWrench()

    + +
    +
    + + + + + + + + +
    KDL::Wrench roboticslab::KdlVectorConverter::vectorToWrench (const std::vector< double > & f)
    +
    +
    Parameters
    + + +
    xdot6-element vector describing a wrench in cartesian space; first three elements denote force (N), last three denote torque (Nm).
    +
    +
    +
    Returns
    Resulting KDL::Wrench object.
    + +
    +
    + +

    ◆ wrenchToVector()

    + +
    +
    + + + + + + + + +
    std::vector< double > roboticslab::KdlVectorConverter::wrenchToVector (const KDL::Wrench & w)
    +
    +
    Parameters
    + + +
    tInput KDL::Wrench object
    +
    +
    +
    Returns
    Resulting 6-element vector describing a wrench in cartesian space; first three elements denote force (N), last three denote torque (Nm).
    + +
    +
    +
    + + + + diff --git a/namespaceroboticslab_1_1KinRepresentation.html b/namespaceroboticslab_1_1KinRepresentation.html new file mode 100644 index 000000000..7ac729cf3 --- /dev/null +++ b/namespaceroboticslab_1_1KinRepresentation.html @@ -0,0 +1,863 @@ + + + + + + + +kinematics-dynamics: roboticslab::KinRepresentation Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::KinRepresentation Namespace Reference
    +
    +
    + +

    Collection of static methods to perform geometric transformations. +

    + + + + + + + + + + + +

    +Enumerations

    enum class  coordinate_system { CARTESIAN +, CYLINDRICAL +, SPHERICAL +, NONE + }
     Lists available translational representations. More...
     
    enum class  orientation_system {
    +  AXIS_ANGLE +, AXIS_ANGLE_SCALED +, RPY +, EULER_YZ +,
    +  EULER_ZYZ +, POLAR_AZIMUTH +, NONE +
    + }
     Lists available rotational representations. More...
     
    enum class  angular_units { DEGREES +, RADIANS + }
     Lists recognized angular units. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool encodePose (const std::vector< double > &x_in, std::vector< double > &x_out, coordinate_system coord, orientation_system orient, angular_units angle=angular_units::RADIANS)
     Converts the translation and rotation values of a specific pose to coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems. More...
     
    bool decodePose (const std::vector< double > &x_in, std::vector< double > &x_out, coordinate_system coord, orientation_system orient, angular_units angle=angular_units::RADIANS)
     Converts the translation and rotation values of a specific pose to the chosen representation systems. More...
     
    bool encodeVelocity (const std::vector< double > &x_in, const std::vector< double > &xdot_in, std::vector< double > &xdot_out, coordinate_system coord, orientation_system orient, angular_units angle=angular_units::RADIANS)
     Converts the translation and rotation values of a specific velocity to coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems. More...
     
    bool decodeVelocity (const std::vector< double > &x_in, const std::vector< double > &xdot_in, std::vector< double > &xdot_out, coordinate_system coord, orientation_system orient, angular_units angle=angular_units::RADIANS)
     Converts the translation and rotation values of a specific velocity to the chosen representation systems. More...
     
    bool encodeAcceleration (const std::vector< double > &x_in, const std::vector< double > &xdot_in, const std::vector< double > &xdotdot_in, std::vector< double > &xdotdot_out, coordinate_system coord, orientation_system orient, angular_units angle=angular_units::RADIANS)
     Converts the translation and rotation values of a specific acceleration to coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems. More...
     
    bool decodeAcceleration (const std::vector< double > &x_in, const std::vector< double > &xdot_in, const std::vector< double > &xdotdot_in, std::vector< double > &xdotdot_out, coordinate_system coord, orientation_system orient, angular_units angle=angular_units::RADIANS)
     Converts the translation and rotation values of a specific acceleration to the chosen representation systems. More...
     
    double degToRad (double deg)
     Converts degrees to radians. More...
     
    double radToDeg (double rad)
     Converts radians to degrees. More...
     
    bool parseEnumerator (const std::string &str, coordinate_system *coord, coordinate_system fallback=coordinate_system::CARTESIAN)
     Parses input string, returns matching enumerator value. More...
     
    bool parseEnumerator (const std::string &str, orientation_system *orient, orientation_system fallback=orientation_system::AXIS_ANGLE_SCALED)
     Parses input string, returns matching enumerator value. More...
     
    bool parseEnumerator (const std::string &str, angular_units *units, angular_units fallback=angular_units::RADIANS)
     Parses input string, returns matching enumerator value. More...
     
    +

    Enumeration Type Documentation

    + +

    ◆ angular_units

    + +
    +
    + + + + + +
    + + + + +
    enum roboticslab::KinRepresentation::angular_units
    +
    +strong
    +
    + + + +
    Enumerator
    DEGREES 

    degrees (deg)

    +
    RADIANS 

    radians (rad)

    +
    + +
    +
    + +

    ◆ coordinate_system

    + +
    +
    + + + + + +
    + + + + +
    enum roboticslab::KinRepresentation::coordinate_system
    +
    +strong
    +
    + + + + + +
    Enumerator
    CARTESIAN 

    (x distance, y distance, z distance)

    +
    CYLINDRICAL 

    (radial distance, azimuthal angle, height)

    +
    SPHERICAL 

    (radial distance, polar angle, azimuthal angle)

    +
    NONE 

    omit coordinate system in resulting combined coord+orient representation

    +
    + +
    +
    + +

    ◆ orientation_system

    + +
    +
    + + + + + +
    + + + + +
    enum roboticslab::KinRepresentation::orientation_system
    +
    +strong
    +
    + + + + + + + + +
    Enumerator
    AXIS_ANGLE 

    (axis_x, axis_y, axis_z, rotation angle) [axis needs not to be normalized]

    +
    AXIS_ANGLE_SCALED 

    (axis_x, axis_y, axis_z) [axis' norm is the rotation angle]

    +
    RPY 

    fixed axes, roll is axis_x

    +
    EULER_YZ 

    as EULER_ZYZ, preceded by rotation about the azimuthal angle got from x-y coordinates

    +
    EULER_ZYZ 

    mobile axes

    +
    POLAR_AZIMUTH 

    (polar angle, azimuthal angle)

    +
    NONE 

    omit orientation system in resulting combined coord+orient representation

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ decodeAcceleration()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::decodeAcceleration (const std::vector< double > & x_in,
    const std::vector< double > & xdot_in,
    const std::vector< double > & xdotdot_in,
    std::vector< double > & xdotdot_out,
    coordinate_system coord,
    orientation_system orient,
    angular_units angle = angular_units::RADIANS 
    )
    +
    +

    Supports in-place transformation.

    +
    Parameters
    + + + + + + + + +
    x_inInput vector describing a three-dimensional pose in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    xdot_inInput vector describing a three-dimensional velocity in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    xdotdot_inInput vector describing a three-dimensional acceleration in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    xdotdot_outOutput vector describing the same acceleration in the chosen representation system.
    coordCoordinate system for the translational part.
    orientOrientation system for the rotational part.
    angleUnits in which angular values are expressed.
    +
    +
    +
    Returns
    true on success, false otherwise.
    + +
    +
    + +

    ◆ decodePose()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::decodePose (const std::vector< double > & x_in,
    std::vector< double > & x_out,
    coordinate_system coord,
    orientation_system orient,
    angular_units angle = angular_units::RADIANS 
    )
    +
    +

    Supports in-place transformation.

    +
    Parameters
    + + + + + + +
    x_inInput vector describing a three-dimensional pose in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    x_outOutput vector describing the same pose in the chosen representation system.
    coordCoordinate system for the translational part.
    orientOrientation system for the rotational part.
    angleUnits in which angular values are expressed.
    +
    +
    +
    Returns
    true on success, false otherwise.
    + +
    +
    + +

    ◆ decodeVelocity()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::decodeVelocity (const std::vector< double > & x_in,
    const std::vector< double > & xdot_in,
    std::vector< double > & xdot_out,
    coordinate_system coord,
    orientation_system orient,
    angular_units angle = angular_units::RADIANS 
    )
    +
    +

    Supports in-place transformation.

    +
    Parameters
    + + + + + + + +
    x_inInput vector describing a three-dimensional pose in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    xdot_inInput vector describing a three-dimensional velocity in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    xdot_outOutput vector describing the same velocity in the chosen representation system.
    coordCoordinate system for the translational part.
    orientOrientation system for the rotational part.
    angleUnits in which angular values are expressed.
    +
    +
    +
    Returns
    true on success, false otherwise.
    + +
    +
    + +

    ◆ degToRad()

    + +
    +
    + + + + + + + + +
    double roboticslab::KinRepresentation::degToRad (double deg)
    +
    +
    Parameters
    + + +
    degAngle value expressed in degrees.
    +
    +
    +
    Returns
    Same value expressed in radians.
    + +
    +
    + +

    ◆ encodeAcceleration()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::encodeAcceleration (const std::vector< double > & x_in,
    const std::vector< double > & xdot_in,
    const std::vector< double > & xdotdot_in,
    std::vector< double > & xdotdot_out,
    coordinate_system coord,
    orientation_system orient,
    angular_units angle = angular_units::RADIANS 
    )
    +
    +

    Supports in-place transformation.

    +
    Parameters
    + + + + + + + + +
    x_inInput vector describing a three-dimensional pose (translation + rotation).
    xdot_inInput vector describing a three-dimensional velocity (translation + rotation).
    xdotdot_inInput vector describing a three-dimensional acceleration (translation + rotation).
    xdotdot_outOutput vector describing the same acceleration in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    coordCoordinate system for the translational part.
    orientOrientation system for the rotational part.
    angleUnits in which angular values are expressed.
    +
    +
    +
    Returns
    true on success, false otherwise.
    + +
    +
    + +

    ◆ encodePose()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::encodePose (const std::vector< double > & x_in,
    std::vector< double > & x_out,
    coordinate_system coord,
    orientation_system orient,
    angular_units angle = angular_units::RADIANS 
    )
    +
    +

    Supports in-place transformation.

    +
    Parameters
    + + + + + + +
    x_inInput vector describing a three-dimensional pose (translation + rotation).
    x_outOutput vector describing the same pose in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED notation.
    coordCoordinate system for the translational part.
    orientOrientation system for the rotational part.
    angleUnits in which angular values are expressed.
    +
    +
    +
    Returns
    true on success, false otherwise.
    + +
    +
    + +

    ◆ encodeVelocity()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::encodeVelocity (const std::vector< double > & x_in,
    const std::vector< double > & xdot_in,
    std::vector< double > & xdot_out,
    coordinate_system coord,
    orientation_system orient,
    angular_units angle = angular_units::RADIANS 
    )
    +
    +

    Supports in-place transformation.

    +
    Parameters
    + + + + + + + +
    x_inInput vector describing a three-dimensional pose (translation + rotation).
    xdot_inInput vector describing a three-dimensional velocity (translation + rotation).
    xdot_outOutput vector describing the same velocity in coordinate_system::CARTESIAN and orientation_system::AXIS_ANGLE_SCALED systems.
    coordCoordinate system for the translational part.
    orientOrientation system for the rotational part.
    angleUnits in which angular values are expressed.
    +
    +
    +
    Returns
    true on success, false otherwise.
    + +
    +
    + +

    ◆ parseEnumerator() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::parseEnumerator (const std::string & str,
    angular_unitsunits,
    angular_units fallback = angular_units::RADIANS 
    )
    +
    + + + + + + + +
    Input string Enum value
    degrees angular_units::DEGREES
    radians angular_units::RADIANS
    +
    Parameters
    + + + + +
    strInput string.
    unitsSee angular_units.
    fallbackDefault value if no match found.
    +
    +
    +
    Returns
    true if match found, false otherwise
    + +
    +
    + +

    ◆ parseEnumerator() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::parseEnumerator (const std::string & str,
    coordinate_systemcoord,
    coordinate_system fallback = coordinate_system::CARTESIAN 
    )
    +
    + + + + + + + + + + + +
    Input string Enum value
    cartesian coordinate_system::CARTESIAN
    cylindrical coordinate_system::CYLINDRICAL
    spherical coordinate_system::SPHERICAL
    none coordinate_system::NONE
    +
    Parameters
    + + + + +
    strInput string.
    coordSee coordinate_system.
    fallbackDefault value if no match found.
    +
    +
    +
    Returns
    true if match found, false otherwise
    + +
    +
    + +

    ◆ parseEnumerator() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool roboticslab::KinRepresentation::parseEnumerator (const std::string & str,
    orientation_systemorient,
    orientation_system fallback = orientation_system::AXIS_ANGLE_SCALED 
    )
    +
    + + + + + + + + + + + + + + + + + +
    Input string Enum value
    axisAngle orientation_system::AXIS_ANGLE
    axisAngleScaled orientation_system::AXIS_ANGLE_SCALED
    RPY orientation_system::RPY
    eulerYZ orientation_system::EULER_YZ
    eulerZYZ orientation_system::EULER_ZYZ
    polarAzimuth orientation_system::POLAR_AZIMUTH
    none orientation_system::NONE
    +
    Parameters
    + + + + +
    strInput string.
    orientSee orientation_system.
    fallbackDefault value if no match found.
    +
    +
    +
    Returns
    true if match found, false otherwise
    + +
    +
    + +

    ◆ radToDeg()

    + +
    +
    + + + + + + + + +
    double roboticslab::KinRepresentation::radToDeg (double rad)
    +
    +
    Parameters
    + + +
    radAngle value expressed in radians.
    +
    +
    +
    Returns
    Same value expressed in degrees.
    + +
    +
    +
    + + + + diff --git a/namespaceroboticslab_1_1test.html b/namespaceroboticslab_1_1test.html new file mode 100644 index 000000000..744580cea --- /dev/null +++ b/namespaceroboticslab_1_1test.html @@ -0,0 +1,323 @@ + + + + + + + +kinematics-dynamics: roboticslab::test Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::test Namespace Reference
    +
    +
    + +

    Contains classes related to unit testing. +

    + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  AsibotSolverTestFromFile
     Tests AsibotSolver ikin from loaded configuration file. More...
     
    class  BasicCartesianControlTest
     Tests BasicCartesianControl ikin and idyn on a simple mechanism. More...
     
    class  KdlSolverTest
     Tests KdlSolver ikin and idyn on a simple mechanism. More...
     
    class  KdlSolverTestFromFile
     Tests KdlSolver ikin and idyn on a simple mechanism. More...
     
    class  KinRepresentationTest
     Tests KinRepresentation. More...
     
    class  ScrewTheoryTest
     Tests classes related to Screw Theory. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    TEST_F (AsibotSolverTestFromFile, AsibotSolverAppendLink)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverRestoreOriginalChain)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverFwdKin1)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverFwdKin2)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverFwdKinTool)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverPoseDiff)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverInvKin1)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverInvKin2)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverInvKin3)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverInvKin4)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverInvKin5)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverInvKinTool)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverDiffInvKin)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverDiffInvKinEE)
     
    TEST_F (AsibotSolverTestFromFile, AsibotSolverDiffInvKinTool)
     
    TEST_F (BasicCartesianControlTest, BasicCartesianControlStat)
     
    TEST_F (BasicCartesianControlTest, BasicCartesianControlInv1)
     
    TEST_F (BasicCartesianControlTest, BasicCartesianControlInv2)
     
    TEST_F (BasicCartesianControlTest, BasicCartesianControlTool)
     
    TEST_F (KdlSolverTest, ChainSize)
     
    TEST_F (KdlSolverTest, FwdKin1)
     
    TEST_F (KdlSolverTest, FwdKin2)
     
    TEST_F (KdlSolverTest, InvKin1)
     
    TEST_F (KdlSolverTest, InvKin2)
     
    TEST_F (KdlSolverTest, InvDyn1)
     
    TEST_F (KdlSolverTest, InvDyn2)
     
    TEST_F (KdlSolverTest, InvDyn3)
     
    TEST_F (KdlSolverTest, InvDyn4)
     
    TEST_F (KdlSolverTest, InvDyn5)
     
    TEST_F (KdlSolverTestFromFile, KdlSolverFwdKin1)
     
    TEST_F (KdlSolverTestFromFile, KdlSolverFwdKin2)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePoseAxisAngle)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePoseAxisAngleScaled)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePoseRPY)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePoseEulerYZ)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePoseEulerZYZ)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePosePolarAzimuth)
     
    TEST_F (KinRepresentationTest, KinRepresentationEncodePoseRadians)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePoseAxisAngle)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePoseAxisAngleScaled)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePoseRPY)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePoseEulerYZ)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePoseEulerZYZ)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePosePolarAzimuth)
     
    TEST_F (KinRepresentationTest, KinRepresentationDecodePoseRadians)
     
    TEST_F (ScrewTheoryTest, MatrixExponentialInit)
     
    TEST_F (ScrewTheoryTest, MatrixExponentialRotation)
     
    TEST_F (ScrewTheoryTest, MatrixExponentialTranslation)
     
    TEST_F (ScrewTheoryTest, ProductOfExponentialsInit)
     
    TEST_F (ScrewTheoryTest, ProductOfExponentialsFromChain)
     
    TEST_F (ScrewTheoryTest, ProductOfExponentialsToChain)
     
    TEST_F (ScrewTheoryTest, ProductOfExponentialsIntegrity)
     
    TEST_F (ScrewTheoryTest, ProductOfExponentialsReverse)
     
    TEST_F (ScrewTheoryTest, PadenKahanOne)
     
    TEST_F (ScrewTheoryTest, PadenKahanTwo)
     
    TEST_F (ScrewTheoryTest, PadenKahanThree)
     
    TEST_F (ScrewTheoryTest, PardosOne)
     
    TEST_F (ScrewTheoryTest, PardosTwo)
     
    TEST_F (ScrewTheoryTest, PardosThree)
     
    TEST_F (ScrewTheoryTest, PardosFour)
     
    TEST_F (ScrewTheoryTest, AbbIrb120Kinematics)
     
    TEST_F (ScrewTheoryTest, PumaKinematics)
     
    TEST_F (ScrewTheoryTest, StanfordKinematics)
     
    TEST_F (ScrewTheoryTest, AbbIrb910scKinematics)
     
    TEST_F (ScrewTheoryTest, AbbIrb6620lxKinematics)
     
    TEST_F (ScrewTheoryTest, TeoRightArmKinematics)
     
    TEST_F (ScrewTheoryTest, TeoRightLegKinematics)
     
    TEST_F (ScrewTheoryTest, ConfigurationSelector)
     
    TEST_F (ScrewTheoryTest, ConfigurationSelectorGait)
     
    +
    + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 000000000..793b9b3c1 --- /dev/null +++ b/namespaces.html @@ -0,0 +1,153 @@ + + + + + + + +kinematics-dynamics: Namespace List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     NexampleCartesianControlClient
     NexampleKdlSolverFromFile
     NroboticslabThe main, catch-all namespace for Robotics Lab UC3M
     NKdlVectorConverterCollection of utilities related to KDL and std::vector classes
     NKinRepresentationCollection of static methods to perform geometric transformations
     NtestContains classes related to unit testing
     CAsibotSolverTestFromFileTests AsibotSolver ikin from loaded configuration file
     CBasicCartesianControlTestTests BasicCartesianControl ikin and idyn on a simple mechanism
     CKdlSolverTestTests KdlSolver ikin and idyn on a simple mechanism
     CKdlSolverTestFromFileTests KdlSolver ikin and idyn on a simple mechanism
     CKinRepresentationTestTests KinRepresentation
     CScrewTheoryTestTests classes related to Screw Theory
     Ccompare_solutions
     CConfigurationSelectorAbstract base class for a robot configuration strategy selector
     CConfigurationHelper class to store a specific robot configuration
     CConfigurationSelectorLeastOverallAngularDisplacementIK solver configuration strategy selector based on the overall displacement of all joints
     CConfigurationSelectorHumanoidGaitIK solver configuration strategy selector based on human walking
     CConfigurationSelectorFactoryBase factory class for ConfigurationSelector
     CConfigurationSelectorLeastOverallAngularDisplacementFactoryImplementation factory class for ConfigurationSelectorLeastOverallAngularDisplacement
     CConfigurationSelectorHumanoidGaitFactoryImplementation factory class for ConfigurationSelectorHumanoidGait
     CMatrixExponentialAbstraction of a term in a product of exponentials (POE) formula
     CPoeExpressionAbstraction of a product of exponentials (POE) formula
     CScrewTheoryIkSubproblemInterface shared by all IK subproblems found in Screw Theory applied to Robotics
     CScrewTheoryIkProblemProxy IK problem solver class that iterates over a sequence of subproblems
     CScrewTheoryIkProblemBuilderAutomated IK solution finder
     CPoeTermHelper structure that holds the state of a POE term
     CPadenKahanOneFirst Paden-Kahan subproblem
     CPadenKahanTwoSecond Paden-Kahan subproblem
     CPadenKahanThreeThird Paden-Kahan subproblem
     CPardosGotorOneFirst Pardos-Gotor subproblem
     CPardosGotorTwoSecond Pardos-Gotor subproblem
     CPardosGotorThreeThird Pardos-Gotor subproblem
     CPardosGotorFourFourth Pardos-Gotor subproblem
     CAsibotConfigurationAbstract base class for a robot configuration strategy selector
     CPoseHelper class to store a specific robot configuration
     CAsibotConfigurationLeastOverallAngularDisplacementIK solver configuration strategy selector based on the overall angle displacement of all joints
     CAsibotConfigurationFactoryBase factory class for AsibotConfiguration
     CAsibotConfigurationLeastOverallAngularDisplacementFactoryImplementation factory class for AsibotConfigurationLeastOverallAngularDisplacement
     CAsibotSolverThe AsibotSolver implements ICartesianSolver
     CAsibotTcpFrame
     CBasicCartesianControlImplements ICartesianControl
     CStateWatcher
     CFkStreamResponderResponds to streaming FK messages
     CCartesianControlClientImplements ICartesianControl client side
     CCartesianControlServerImplements ICartesianControl server side
     CRpcResponderResponds to RPC command messages
     CRpcTransformResponderResponds to RPC command messages, transforms incoming data
     CStreamResponderResponds to streaming command messages
     CICartesianControlAbstract base class for a cartesian controller
     CICartesianSolverAbstract base class for a cartesian solver
     CChainFkSolverPos_STFK solver using Screw Theory
     CChainIkSolverPos_IDIK solver using infinitesimal displacement twists
     CChainIkSolverPos_STIK solver using Screw Theory
     CKdlSolverImplements ICartesianSolver
     CKdlTreeSolverImplements ICartesianSolver
     CFtCompensationProduces motion in the direction of an externally applied force measured by a force-torque sensor (pretty much mimicking a classical gravity compensation app)
     CGrabberResponderCallback class for dealing with incoming grabber data streams
     CHaarDetectionControllerCreate seek-and-follow trajectories based on Haar detection algorithms
     CKeyboardControllerSends streaming commands to the cartesian controller from a standard keyboard
     CLinearTrajectoryThreadPeriodic thread that encapsulates a linear trajectory
     CCentroidTransform..
     CLeapMotionSensorDeviceRepresents a LeapMotion device wrapped as an analog sensor by YARP
     CSpnavSensorDeviceRepresents a spacenav-compatible device, like the SpaceNavigator 6-DOF mouse from 3Dconnexion
     CStreamingDeviceFactoryFactory class for creating instances of StreamingDevice
     CStreamingDeviceAbstract class for a YARP streaming device
     CInvalidDeviceRepresents an invalid device
     CStreamingDeviceControllerSends streaming commands to the cartesian controller from a streaming input device like the 3Dconnexion Space Navigator
     CWiimoteSensorDeviceRepresents a Wiimote device wrapped as an analog sensor by YARP
    +
    +
    + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +kinematics-dynamics: Related Pages + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    + + + + + diff --git a/programs_2haarDetectionController_2LogComponent_8hpp_source.html b/programs_2haarDetectionController_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..56c75c5bf --- /dev/null +++ b/programs_2haarDetectionController_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: programs/haarDetectionController/LogComponent.hpp Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    LogComponent.hpp
    +
    +
    +
    1 #ifndef __HAAR_DETECTION_CONTROLLER_LOG_COMPONENT_HPP__
    +
    2 #define __HAAR_DETECTION_CONTROLLER_LOG_COMPONENT_HPP__
    +
    3 
    +
    4 #include <yarp/os/LogComponent.h>
    +
    5 
    +
    6 YARP_DECLARE_LOG_COMPONENT(HDC)
    +
    7 
    +
    8 #endif // __HAAR_DETECTION_CONTROLLER_LOG_COMPONENT_HPP__
    +
    + + + + diff --git a/programs_2keyboardController_2LogComponent_8hpp_source.html b/programs_2keyboardController_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..21fad7d94 --- /dev/null +++ b/programs_2keyboardController_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: programs/keyboardController/LogComponent.hpp Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    LogComponent.hpp
    +
    +
    +
    1 #ifndef __KEYBOARD_CONTROLLER_LOG_COMPONENT_HPP__
    +
    2 #define __KEYBOARD_CONTROLLER_LOG_COMPONENT_HPP__
    +
    3 
    +
    4 #include <yarp/os/LogComponent.h>
    +
    5 
    +
    6 YARP_DECLARE_LOG_COMPONENT(KC)
    +
    7 
    +
    8 #endif // __KEYBOARD_CONTROLLER_LOG_COMPONENT_HPP__
    +
    + + + + diff --git a/programs_2streamingDeviceController_2LogComponent_8hpp_source.html b/programs_2streamingDeviceController_2LogComponent_8hpp_source.html new file mode 100644 index 000000000..f6883c728 --- /dev/null +++ b/programs_2streamingDeviceController_2LogComponent_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +kinematics-dynamics: programs/streamingDeviceController/LogComponent.hpp Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    LogComponent.hpp
    +
    +
    +
    1 #ifndef __STREAMING_DEVICE_CONTROLLER_LOG_COMPONENT_HPP__
    +
    2 #define __STREAMING_DEVICE_CONTROLLER_LOG_COMPONENT_HPP__
    +
    3 
    +
    4 #include <yarp/os/LogComponent.h>
    +
    5 
    +
    6 YARP_DECLARE_LOG_COMPONENT(SDC)
    +
    7 
    +
    8 #endif // __STREAMING_DEVICE_CONTROLLER_LOG_COMPONENT_HPP__
    +
    + + + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 000000000..1ec5b2d59 --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..ba77d3e07 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['acceptbottle_0',['acceptBottle',['../classroboticslab_1_1CentroidTransform.html#a742ffb1a068b31849f561b4fb48c4856',1,'roboticslab::CentroidTransform']]], + ['acquiredata_1',['acquireData',['../classroboticslab_1_1LeapMotionSensorDevice.html#aeabdc3895252b9a7990e006b2d273473',1,'roboticslab::LeapMotionSensorDevice::acquireData()'],['../classroboticslab_1_1SpnavSensorDevice.html#a05c4b0193a0e23177473da979973948c',1,'roboticslab::SpnavSensorDevice::acquireData()'],['../classroboticslab_1_1StreamingDevice.html#a1613bb573788d68dc9f494517e44c24c',1,'roboticslab::StreamingDevice::acquireData()'],['../classroboticslab_1_1InvalidDevice.html#a7975f9d9d88c39df99bbe951e382f255',1,'roboticslab::InvalidDevice::acquireData()'],['../classroboticslab_1_1WiimoteSensorDevice.html#af348b87aabce85311917450ec9066ef8',1,'roboticslab::WiimoteSensorDevice::acquireData() override']]], + ['acquireinterfaces_2',['acquireInterfaces',['../classroboticslab_1_1WiimoteSensorDevice.html#aa92e30f9099151bcbb4a1302bc946c03',1,'roboticslab::WiimoteSensorDevice::acquireInterfaces()'],['../classroboticslab_1_1InvalidDevice.html#a2a69da2e256cfbc3f0b97603e6c465b1',1,'roboticslab::InvalidDevice::acquireInterfaces()'],['../classroboticslab_1_1StreamingDevice.html#a67b266a928db0dd303a8cbdfa9ee759d',1,'roboticslab::StreamingDevice::acquireInterfaces()'],['../classroboticslab_1_1SpnavSensorDevice.html#a8247d8478522e56eada24bbabaa98dfd',1,'roboticslab::SpnavSensorDevice::acquireInterfaces()'],['../classroboticslab_1_1LeapMotionSensorDevice.html#ac19eb7eda129deafae749606d106bbbe',1,'roboticslab::LeapMotionSensorDevice::acquireInterfaces()']]], + ['act_3',['act',['../classroboticslab_1_1ICartesianControl.html#a4f8fd2a8ea2bbf7f806ac9f430ddf106',1,'roboticslab::ICartesianControl::act()'],['../classroboticslab_1_1CartesianControlClient.html#ad96f1731c4ff4684459e379b025fd17c',1,'roboticslab::CartesianControlClient::act()'],['../classroboticslab_1_1BasicCartesianControl.html#a13c10f3319b96e8917af44d9702d4f60',1,'roboticslab::BasicCartesianControl::act()']]], + ['angular_5funits_4',['angular_units',['../namespaceroboticslab_1_1KinRepresentation.html#abd99bdf0387bd4b86ff0cde410071fc1',1,'roboticslab::KinRepresentation']]], + ['append_5',['append',['../classroboticslab_1_1PoeExpression.html#aa77dd7536b9a39f43e8f7b8c26dceb46',1,'roboticslab::PoeExpression::append(const MatrixExponential &exp, const KDL::Frame &H_new_old=KDL::Frame::Identity())'],['../classroboticslab_1_1PoeExpression.html#ac0aa19974aa240fab26d35d5bf3a59eb',1,'roboticslab::PoeExpression::append(const PoeExpression &poe, const KDL::Frame &H_new_old=KDL::Frame::Identity())']]], + ['appendlink_6',['appendLink',['../classroboticslab_1_1AsibotSolver.html#af1112202beb401a386fed38016360783',1,'roboticslab::AsibotSolver::appendLink()'],['../classroboticslab_1_1ICartesianSolver.html#a1eb540a0765aa24dea0bd50e6ed3dbbf',1,'roboticslab::ICartesianSolver::appendLink()'],['../classroboticslab_1_1KdlSolver.html#afa91b7f388d2bc2a76214247deb2d136',1,'roboticslab::KdlSolver::appendLink()'],['../classroboticslab_1_1KdlTreeSolver.html#ac4b5a5c992b1f006b6bcbe339836420f',1,'roboticslab::KdlTreeSolver::appendLink()']]], + ['applyconstraints_7',['applyConstraints',['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html#a704ac1da52c51d6c1308fcc954f8de0f',1,'roboticslab::ConfigurationSelectorHumanoidGait']]], + ['asframe_8',['asFrame',['../classroboticslab_1_1MatrixExponential.html#a2ce5bb0ca42820b120b212d66bab6e79',1,'roboticslab::MatrixExponential']]], + ['asibotconfiguration_9',['AsibotConfiguration',['../classroboticslab_1_1AsibotConfiguration.html#a94a9fc7d97b254ff8e98361763c7fd38',1,'roboticslab::AsibotConfiguration::AsibotConfiguration()'],['../classroboticslab_1_1AsibotConfiguration.html',1,'roboticslab::AsibotConfiguration']]], + ['asibotconfigurationfactory_10',['AsibotConfigurationFactory',['../classroboticslab_1_1AsibotConfigurationFactory.html#a50c48cc23e8a61ecb8b3ab67186a5344',1,'roboticslab::AsibotConfigurationFactory::AsibotConfigurationFactory()'],['../classroboticslab_1_1AsibotConfigurationFactory.html',1,'roboticslab::AsibotConfigurationFactory']]], + ['asibotconfigurationleastoverallangulardisplacement_11',['AsibotConfigurationLeastOverallAngularDisplacement',['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html#a596e64bd6421c25cfa8b392a32fcd6fa',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement::AsibotConfigurationLeastOverallAngularDisplacement()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement']]], + ['asibotconfigurationleastoverallangulardisplacementfactory_12',['AsibotConfigurationLeastOverallAngularDisplacementFactory',['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html#afb68b16efe06544cd8c35295dc5dcd2b',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory::AsibotConfigurationLeastOverallAngularDisplacementFactory()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory']]], + ['asibotsolver_13',['AsibotSolver',['../group__AsibotSolver.html',1,'(Global Namespace)'],['../classroboticslab_1_1AsibotSolver.html',1,'roboticslab::AsibotSolver']]], + ['asibotsolvertestfromfile_14',['AsibotSolverTestFromFile',['../classroboticslab_1_1test_1_1AsibotSolverTestFromFile.html',1,'roboticslab::test']]], + ['asibottcpframe_15',['AsibotTcpFrame',['../structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame.html',1,'roboticslab::AsibotSolver']]], + ['axis_5fangle_16',['AXIS_ANGLE',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a5d81c471f0748c0aa213b648f9d8202d',1,'roboticslab::KinRepresentation']]], + ['axis_5fangle_5fscaled_17',['AXIS_ANGLE_SCALED',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3af8dc198991524cf747f3b4d3c8c05cac',1,'roboticslab::KinRepresentation']]], + ['axisangletoh_18',['axisAngleToH',['../namespaceroboticslab.html#a22b08a4e2ed2f99d50b5832157a1121d',1,'roboticslab']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 000000000..9f80e9043 --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..1f5186f5f --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['base_5fframe_19',['BASE_FRAME',['../classroboticslab_1_1ICartesianSolver.html#addbfbdd708eb1a77a8b5c96ac5313211a98689bb484e4e1f8110323a5009258ef',1,'roboticslab::ICartesianSolver']]], + ['basiccartesiancontrol_20',['BasicCartesianControl',['../group__BasicCartesianControl.html',1,'(Global Namespace)'],['../classroboticslab_1_1BasicCartesianControl.html',1,'roboticslab::BasicCartesianControl']]], + ['basiccartesiancontroltest_21',['BasicCartesianControlTest',['../classroboticslab_1_1test_1_1BasicCartesianControlTest.html',1,'roboticslab::test']]], + ['bibliography_22',['Bibliography',['../citelist.html',1,'']]], + ['build_23',['build',['../classroboticslab_1_1ScrewTheoryIkProblemBuilder.html#ac175d241db0a10ea62cdbe850cd6a8ce',1,'roboticslab::ScrewTheoryIkProblemBuilder']]] +]; diff --git a/search/all_10.html b/search/all_10.html new file mode 100644 index 000000000..3bf11961f --- /dev/null +++ b/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..88dedaa93 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['kdlvectorconverter_175',['KdlVectorConverter',['../namespaceroboticslab_1_1KdlVectorConverter.html',1,'roboticslab']]], + ['kinrepresentation_176',['KinRepresentation',['../namespaceroboticslab_1_1KinRepresentation.html',1,'roboticslab']]], + ['radians_177',['RADIANS',['../namespaceroboticslab_1_1KinRepresentation.html#abd99bdf0387bd4b86ff0cde410071fc1aea3c82298fac1c706a4076b4aff53015',1,'roboticslab::KinRepresentation']]], + ['radtodeg_178',['radToDeg',['../namespaceroboticslab_1_1KinRepresentation.html#a161e7ab9d012bbcac3d8ec925c745c72',1,'roboticslab::KinRepresentation']]], + ['reference_5fframe_179',['reference_frame',['../classroboticslab_1_1ICartesianSolver.html#addbfbdd708eb1a77a8b5c96ac5313211',1,'roboticslab::ICartesianSolver']]], + ['registerstreamingdevice_180',['registerStreamingDevice',['../classroboticslab_1_1CentroidTransform.html#a330cdceee971c24294c97a8b68d20576',1,'roboticslab::CentroidTransform']]], + ['relj_181',['relj',['../classroboticslab_1_1ICartesianControl.html#a56868375932296f5bf846e6e1e3a86f8',1,'roboticslab::ICartesianControl::relj()'],['../classroboticslab_1_1BasicCartesianControl.html#ad4e7cf25cd610a55bb0da39e885c8582',1,'roboticslab::BasicCartesianControl::relj()'],['../classroboticslab_1_1CartesianControlClient.html#a743598d423d27c2f5d91d92a6ac16663',1,'roboticslab::CartesianControlClient::relj()']]], + ['respond_182',['respond',['../classroboticslab_1_1RpcResponder.html#ab8c40f6e011f156d22a095b52f8f8958',1,'roboticslab::RpcResponder']]], + ['restoreoriginalchain_183',['restoreOriginalChain',['../classroboticslab_1_1AsibotSolver.html#a3a541df031be40fb025e4bb4da880021',1,'roboticslab::AsibotSolver::restoreOriginalChain()'],['../classroboticslab_1_1ICartesianSolver.html#a4f8ddd7689b251cee640202facaaab9b',1,'roboticslab::ICartesianSolver::restoreOriginalChain()'],['../classroboticslab_1_1KdlSolver.html#a09d862bc551a1406d95d1cc6f83a7cd6',1,'roboticslab::KdlSolver::restoreOriginalChain()'],['../classroboticslab_1_1KdlTreeSolver.html#a719356319bc3ce2e448a01e2bae1d8cc',1,'roboticslab::KdlTreeSolver::restoreOriginalChain()']]], + ['retrieveangles_184',['retrieveAngles',['../classroboticslab_1_1AsibotConfiguration.html#ab9c263b703119e6f7666ed3562a35c71',1,'roboticslab::AsibotConfiguration::retrieveAngles()'],['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a2adefeb016baa178ac022cefcd5c315c',1,'roboticslab::AsibotConfiguration::Pose::retrieveAngles()']]], + ['retrievepose_185',['retrievePose',['../classroboticslab_1_1ConfigurationSelector.html#af8383e58effe8debab8dad874dbcc676',1,'roboticslab::ConfigurationSelector::retrievePose()'],['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a21dec1e41298d142486eb2086618921e',1,'roboticslab::ConfigurationSelector::Configuration::retrievePose()']]], + ['reverseself_186',['reverseSelf',['../classroboticslab_1_1PoeExpression.html#a1f5ee69686e2910f8220c994b71f63db',1,'roboticslab::PoeExpression']]], + ['roboticslab_187',['roboticslab',['../namespaceroboticslab.html',1,'']]], + ['rotation_188',['ROTATION',['../classroboticslab_1_1MatrixExponential.html#a25a925f192e6799524214b90035b37c9aeb1d102970576fa5d0c7f4d631e73e46',1,'roboticslab::MatrixExponential']]], + ['rpcresponder_189',['RpcResponder',['../classroboticslab_1_1RpcResponder.html',1,'roboticslab']]], + ['rpctransformresponder_190',['RpcTransformResponder',['../classroboticslab_1_1RpcTransformResponder.html',1,'roboticslab']]], + ['rpy_191',['RPY',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a00cfec4ee1a58af8026a5f4baa2d5c3f',1,'roboticslab::KinRepresentation']]], + ['test_192',['test',['../namespaceroboticslab_1_1test.html',1,'roboticslab']]] +]; diff --git a/search/all_11.html b/search/all_11.html new file mode 100644 index 000000000..c9f79d289 --- /dev/null +++ b/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..3e9b72366 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['screwtheoryikproblem_193',['ScrewTheoryIkProblem',['../classroboticslab_1_1ScrewTheoryIkProblem.html',1,'roboticslab']]], + ['screwtheoryikproblembuilder_194',['ScrewTheoryIkProblemBuilder',['../classroboticslab_1_1ScrewTheoryIkProblemBuilder.html',1,'roboticslab::ScrewTheoryIkProblemBuilder'],['../classroboticslab_1_1ScrewTheoryIkProblemBuilder.html#aff5382b001b6973283188533424a0fa0',1,'roboticslab::ScrewTheoryIkProblemBuilder::ScrewTheoryIkProblemBuilder()']]], + ['screwtheoryiksubproblem_195',['ScrewTheoryIkSubproblem',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html',1,'roboticslab']]], + ['screwtheorylib_196',['ScrewTheoryLib',['../group__ScrewTheoryLib.html',1,'']]], + ['screwtheorytest_197',['ScrewTheoryTest',['../classroboticslab_1_1test_1_1ScrewTheoryTest.html',1,'roboticslab::test']]], + ['screwtheorytrajectoryexample_198',['screwTheoryTrajectoryExample',['../group__screwTheoryTrajectoryExample.html',1,'']]], + ['sendmovementcommand_199',['sendMovementCommand',['../classroboticslab_1_1LeapMotionSensorDevice.html#a1d07c50d5c7bf5d27cdfc4ac8caa81cf',1,'roboticslab::LeapMotionSensorDevice::sendMovementCommand()'],['../classroboticslab_1_1WiimoteSensorDevice.html#a6f3d97af2c452df406acd0fd5fcdb217',1,'roboticslab::WiimoteSensorDevice::sendMovementCommand()'],['../classroboticslab_1_1InvalidDevice.html#ab3a29a299739dbdca1dffa3e20ceda14',1,'roboticslab::InvalidDevice::sendMovementCommand()'],['../classroboticslab_1_1StreamingDevice.html#a590064cec19650ac4acbec40f48664f0',1,'roboticslab::StreamingDevice::sendMovementCommand()'],['../classroboticslab_1_1SpnavSensorDevice.html#a1fa7c48362861885e135c1695812e6ec',1,'roboticslab::SpnavSensorDevice::sendMovementCommand()']]], + ['setcartesiancontrollerhandle_200',['setCartesianControllerHandle',['../classroboticslab_1_1StreamingDevice.html#a79eddef2112cb7184d02a6eeb9447f09',1,'roboticslab::StreamingDevice']]], + ['setparameter_201',['setParameter',['../classroboticslab_1_1BasicCartesianControl.html#ae451ad853b34e2657b726cca87eb7741',1,'roboticslab::BasicCartesianControl::setParameter()'],['../classroboticslab_1_1CartesianControlClient.html#a69b676bf389d10d9addaaccd676809e6',1,'roboticslab::CartesianControlClient::setParameter()'],['../classroboticslab_1_1ICartesianControl.html#a8089e8dedb77281f8834f4754528855e',1,'roboticslab::ICartesianControl::setParameter(int vocab, double value)=0']]], + ['setparameters_202',['setParameters',['../classroboticslab_1_1ICartesianControl.html#a899a3de6f03652c80add0de972439abf',1,'roboticslab::ICartesianControl::setParameters()'],['../classroboticslab_1_1BasicCartesianControl.html#adc2013dbea72b6efa281de1eedd4006a',1,'roboticslab::BasicCartesianControl::setParameters()'],['../classroboticslab_1_1CartesianControlClient.html#ac30599997c741f23f256adbb4654bdac',1,'roboticslab::CartesianControlClient::setParameters()']]], + ['setpermanencetime_203',['setPermanenceTime',['../classroboticslab_1_1CentroidTransform.html#a0a8b890362b7d743b297aeaf3f589708',1,'roboticslab::CentroidTransform']]], + ['settcptocamerarotation_204',['setTcpToCameraRotation',['../classroboticslab_1_1CentroidTransform.html#a3eed406e2a69d837222f32538b4a0fe0',1,'roboticslab::CentroidTransform']]], + ['simulation_20and_20basic_20control_3a_20now_20what_20can_20i_20do_3f_205',['Simulation and Basic Control: Now what can I do?',['../md_doc_teo_post_install.html',1,'']]], + ['size_206',['size',['../classroboticslab_1_1PoeExpression.html#ac2e9286c152cdd2f4c672560f3f60c34',1,'roboticslab::PoeExpression']]], + ['solutions_207',['Solutions',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a09d9cb9a3febf4469b143d5ced8c3219',1,'roboticslab::ScrewTheoryIkSubproblem::Solutions()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#a5ba30f58696f332c24c9bc4e41117069',1,'roboticslab::ScrewTheoryIkProblem::Solutions()']]], + ['solutions_208',['solutions',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a93f5ceb045bf1886af94fcea48ccf25f',1,'roboticslab::ScrewTheoryIkSubproblem::solutions()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#af8233df52cf04d5b8150a8715bc66dc9',1,'roboticslab::ScrewTheoryIkProblem::solutions()'],['../classroboticslab_1_1PadenKahanOne.html#ae48c426700f6f242eb95da3fa2fe06ee',1,'roboticslab::PadenKahanOne::solutions()'],['../classroboticslab_1_1PadenKahanTwo.html#ad71a6f11babaf34020b7a40d5a6949e3',1,'roboticslab::PadenKahanTwo::solutions()'],['../classroboticslab_1_1PadenKahanThree.html#a929ed3abd40340fa3c090b68fa1d338d',1,'roboticslab::PadenKahanThree::solutions()'],['../classroboticslab_1_1PardosGotorOne.html#a2a06e5dc171695c41eaacd010a7428f6',1,'roboticslab::PardosGotorOne::solutions()'],['../classroboticslab_1_1PardosGotorTwo.html#adf59c58e633dae7e25bc6bdc56c2c39a',1,'roboticslab::PardosGotorTwo::solutions()'],['../classroboticslab_1_1PardosGotorThree.html#a933188c49bf6ce4d819f9daecaf1290a',1,'roboticslab::PardosGotorThree::solutions()'],['../classroboticslab_1_1PardosGotorFour.html#a5b13b167bc9c3690522755f95dfe73d2',1,'roboticslab::PardosGotorFour::solutions()']]], + ['solve_209',['solve',['../classroboticslab_1_1PadenKahanTwo.html#a3085eea9ca679ab9d8c6e7b8589de9af',1,'roboticslab::PadenKahanTwo::solve()'],['../classroboticslab_1_1PardosGotorFour.html#a49562b2ab9c2d58f542f15f938e4b9f3',1,'roboticslab::PardosGotorFour::solve()'],['../classroboticslab_1_1PadenKahanThree.html#a270a7c86791639d32c36ff34b6402d8a',1,'roboticslab::PadenKahanThree::solve()'],['../classroboticslab_1_1PardosGotorOne.html#a36bc3c8e1f604ab93780e18b2e18d715',1,'roboticslab::PardosGotorOne::solve()'],['../classroboticslab_1_1PardosGotorTwo.html#a38cb7640cd0b27473eb9f892180a35f1',1,'roboticslab::PardosGotorTwo::solve()'],['../classroboticslab_1_1PardosGotorThree.html#aa2ebf902f9b43f59f1a49f7854d1ebc6',1,'roboticslab::PardosGotorThree::solve()'],['../classroboticslab_1_1PadenKahanOne.html#a3c2e8d62e462d1b04112c3a9b99b6642',1,'roboticslab::PadenKahanOne::solve()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#a39b3cb4c74656f25b96f3cb9123d0618',1,'roboticslab::ScrewTheoryIkProblem::solve()'],['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#ad2d0dbe398d37d2e2582e8730299dfa6',1,'roboticslab::ScrewTheoryIkSubproblem::solve()']]], + ['spherical_210',['SPHERICAL',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aa7f7d7e3a21bf7decf99d6fd26848772d',1,'roboticslab::KinRepresentation']]], + ['spnavsensordevice_211',['SpnavSensorDevice',['../classroboticslab_1_1SpnavSensorDevice.html',1,'roboticslab::SpnavSensorDevice'],['../classroboticslab_1_1SpnavSensorDevice.html#a6c94f09724d2fe81e191531208eead25',1,'roboticslab::SpnavSensorDevice::SpnavSensorDevice()']]], + ['stat_212',['stat',['../classroboticslab_1_1BasicCartesianControl.html#a9935b9db791373bf8f6b9ce986a706ef',1,'roboticslab::BasicCartesianControl::stat()'],['../classroboticslab_1_1CartesianControlClient.html#a474519f89e996b2cff06e182c193065c',1,'roboticslab::CartesianControlClient::stat()'],['../classroboticslab_1_1ICartesianControl.html#a2b2485ff009ffd7d15e9105d74a54ddb',1,'roboticslab::ICartesianControl::stat()']]], + ['statewatcher_213',['StateWatcher',['../classroboticslab_1_1BasicCartesianControl_1_1StateWatcher.html',1,'roboticslab::BasicCartesianControl']]], + ['steps_214',['Steps',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a96e0ad375e50d13619f31cf09bc1f0c9',1,'roboticslab::ScrewTheoryIkProblem']]], + ['stopcontrol_215',['stopControl',['../classroboticslab_1_1BasicCartesianControl.html#a5a95cc4de51e2547ae45f737eeb1566e',1,'roboticslab::BasicCartesianControl::stopControl()'],['../classroboticslab_1_1CartesianControlClient.html#a0092c2fa59cf2c526340e5502129f93d',1,'roboticslab::CartesianControlClient::stopControl()'],['../classroboticslab_1_1ICartesianControl.html#ae7e23dc66a87e7fb49218e120827e736',1,'roboticslab::ICartesianControl::stopControl()']]], + ['stopmotion_216',['stopMotion',['../classroboticslab_1_1WiimoteSensorDevice.html#ad900776f8369ad21b3365e43184017ba',1,'roboticslab::WiimoteSensorDevice::stopMotion()'],['../classroboticslab_1_1InvalidDevice.html#a06e2e2b8a4d08721f526d14149e20b24',1,'roboticslab::InvalidDevice::stopMotion()'],['../classroboticslab_1_1StreamingDevice.html#a193eec67e9e2734c9258098b09c85f74',1,'roboticslab::StreamingDevice::stopMotion()'],['../classroboticslab_1_1SpnavSensorDevice.html#a16d86ee15bd145248dc05a44c6e2c026',1,'roboticslab::SpnavSensorDevice::stopMotion()'],['../classroboticslab_1_1LeapMotionSensorDevice.html#add496426391201bf00490570a7247fc0',1,'roboticslab::LeapMotionSensorDevice::stopMotion()']]], + ['store_217',['store',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a64aedf824567b7025395331bd5053062',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['storeangles_218',['storeAngles',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a6bd78d1f3fe44c1fdd17e6c43fe16705',1,'roboticslab::AsibotConfiguration::Pose']]], + ['streamingdevice_219',['StreamingDevice',['../classroboticslab_1_1StreamingDevice.html',1,'roboticslab::StreamingDevice'],['../classroboticslab_1_1StreamingDevice.html#ae8508cc5d91053e080cbdd69450fc9cd',1,'roboticslab::StreamingDevice::StreamingDevice()']]], + ['streamingdevicecontroller_220',['StreamingDeviceController',['../classroboticslab_1_1StreamingDeviceController.html',1,'roboticslab']]], + ['streamingdevicecontroller_221',['streamingDeviceController',['../group__streamingDeviceController.html',1,'']]], + ['streamingdevicefactory_222',['StreamingDeviceFactory',['../classroboticslab_1_1StreamingDeviceFactory.html',1,'roboticslab']]], + ['streamresponder_223',['StreamResponder',['../classroboticslab_1_1StreamResponder.html',1,'roboticslab']]], + ['strerror_224',['strError',['../classroboticslab_1_1ChainFkSolverPos__ST.html#ad06793c44777791df5525e154f4f1dec',1,'roboticslab::ChainFkSolverPos_ST::strError()'],['../classroboticslab_1_1ChainIkSolverPos__ID.html#afc28a2a6581641e09cc09cc6f91b25ae',1,'roboticslab::ChainIkSolverPos_ID::strError()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#ab8575a57d32a445ca1f304227b21a9a4',1,'roboticslab::ChainIkSolverPos_ST::strError()']]] +]; diff --git a/search/all_12.html b/search/all_12.html new file mode 100644 index 000000000..ab934722c --- /dev/null +++ b/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..c779a485d --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['tcp_5fframe_225',['TCP_FRAME',['../classroboticslab_1_1ICartesianSolver.html#addbfbdd708eb1a77a8b5c96ac5313211a8ca5c1a477b9d5da2723a4eb9b79f8f7',1,'roboticslab::ICartesianSolver']]], + ['tinymath_226',['TinyMath',['../group__TinyMath.html',1,'']]], + ['tochain_227',['toChain',['../classroboticslab_1_1PoeExpression.html#a06e7df68730ae620ff531ff9224b8150',1,'roboticslab::PoeExpression']]], + ['todeg_228',['toDeg',['../namespaceroboticslab.html#a3df65ed44413f1a25a977e405cf5cdce',1,'roboticslab']]], + ['tool_229',['tool',['../classroboticslab_1_1BasicCartesianControl.html#a32260acd5b9734c8dc74ed8bbba864c5',1,'roboticslab::BasicCartesianControl::tool()'],['../classroboticslab_1_1CartesianControlClient.html#a11b7a94d05a53027c45469f4b5336810',1,'roboticslab::CartesianControlClient::tool()'],['../classroboticslab_1_1ICartesianControl.html#a541281403910467f0775c83918b67b9f',1,'roboticslab::ICartesianControl::tool()']]], + ['torad_230',['toRad',['../namespaceroboticslab.html#adf4f3545dd621683ac983b500981fc3d',1,'roboticslab']]], + ['tostring_231',['toString',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#af41cd145a17e2d61bc6f341d4bc9c713',1,'roboticslab::AsibotConfiguration::Pose']]], + ['traj_232',['Traj',['../classTraj.html',1,'']]], + ['trajectories_233',['trajectories',['../classroboticslab_1_1BasicCartesianControl.html#a2c930c1895916cf82ee76debd417faf1',1,'roboticslab::BasicCartesianControl']]], + ['trajectorythread_234',['TrajectoryThread',['../classTrajectoryThread.html',1,'']]], + ['trajgen_235',['TrajGen',['../group__TrajGen.html',1,'']]], + ['transformdata_236',['transformData',['../classroboticslab_1_1WiimoteSensorDevice.html#a99801413610bafff25f2a310d20f26c8',1,'roboticslab::WiimoteSensorDevice::transformData()'],['../classroboticslab_1_1StreamingDevice.html#a0cf867c29eaee727dd865a2dba2f9a0b',1,'roboticslab::StreamingDevice::transformData()'],['../classroboticslab_1_1SpnavSensorDevice.html#a4b40d23baedfe5f61a934dd25be34555',1,'roboticslab::SpnavSensorDevice::transformData()'],['../classroboticslab_1_1LeapMotionSensorDevice.html#a6b44cc6f96ddca20df502e591f50d7e9',1,'roboticslab::LeapMotionSensorDevice::transformData()']]], + ['translation_237',['TRANSLATION',['../classroboticslab_1_1MatrixExponential.html#a25a925f192e6799524214b90035b37c9a108565bfe62228108af5612f5b69e7f8',1,'roboticslab::MatrixExponential']]], + ['twist_238',['twist',['../classroboticslab_1_1BasicCartesianControl.html#a836cb4b4195e959f8510458d48c4894f',1,'roboticslab::BasicCartesianControl::twist()'],['../classroboticslab_1_1CartesianControlClient.html#a5e55bb6f83000a5f3b007d6bb4637dd0',1,'roboticslab::CartesianControlClient::twist()'],['../classroboticslab_1_1ICartesianControl.html#aac96088767083ca01d6f47a45f48e9f2',1,'roboticslab::ICartesianControl::twist()']]], + ['twisttovector_239',['twistToVector',['../namespaceroboticslab_1_1KdlVectorConverter.html#abd170f3386a74e5b5ee1aacc10a9317c',1,'roboticslab::KdlVectorConverter']]] +]; diff --git a/search/all_13.html b/search/all_13.html new file mode 100644 index 000000000..51172c2f3 --- /dev/null +++ b/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..b2862dc5d --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['updateinternaldatastructures_240',['updateInternalDataStructures',['../classroboticslab_1_1ChainFkSolverPos__ST.html#a221a38899c9d870167e6aba3d66b6d07',1,'roboticslab::ChainFkSolverPos_ST::updateInternalDataStructures()'],['../classroboticslab_1_1ChainIkSolverPos__ID.html#a2c3268078b0e98c404d73315e033d304',1,'roboticslab::ChainIkSolverPos_ID::updateInternalDataStructures()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#a82c44a73bf94294d78ad030bb701a231',1,'roboticslab::ChainIkSolverPos_ST::updateInternalDataStructures()']]] +]; diff --git a/search/all_14.html b/search/all_14.html new file mode 100644 index 000000000..afecf5634 --- /dev/null +++ b/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..09821f7c3 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['validate_241',['validate',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a3d593554ba6a10b2d9b3e8cad2976316',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['vectorpow2_242',['vectorPow2',['../group__ScrewTheoryLib.html#ga102221bc75f54f75a8dcbda20fc2bc0c',1,'roboticslab']]], + ['vectortoframe_243',['vectorToFrame',['../namespaceroboticslab_1_1KdlVectorConverter.html#a423a5ebb1cbca3d2fa388c865373c587',1,'roboticslab::KdlVectorConverter']]], + ['vectortotwist_244',['vectorToTwist',['../namespaceroboticslab_1_1KdlVectorConverter.html#a7c7152d456fe9cb8156770bca734f1a8',1,'roboticslab::KdlVectorConverter']]], + ['vectortowrench_245',['vectorToWrench',['../namespaceroboticslab_1_1KdlVectorConverter.html#a966f687eb47c56aa2dedd9a56de74380',1,'roboticslab::KdlVectorConverter']]], + ['vmostored_246',['vmoStored',['../classroboticslab_1_1BasicCartesianControl.html#a796971d7d383609060b0895809e9741d',1,'roboticslab::BasicCartesianControl']]], + ['vocab_5fcc_5fact_247',['VOCAB_CC_ACT',['../ICartesianControl_8h.html#a9da1ef0b7c564b2904e61d0c04f53d53',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fclose_5fgripper_248',['VOCAB_CC_ACTUATOR_CLOSE_GRIPPER',['../ICartesianControl_8h.html#a123310fe19eee91d2bdd5a61f8f1275e',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fgeneric_249',['VOCAB_CC_ACTUATOR_GENERIC',['../ICartesianControl_8h.html#a9d6bbaad1462e501419af7a5ade0285e',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fnone_250',['VOCAB_CC_ACTUATOR_NONE',['../ICartesianControl_8h.html#a1735d10e622c676fbf29083d3cc6b34a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fopen_5fgripper_251',['VOCAB_CC_ACTUATOR_OPEN_GRIPPER',['../ICartesianControl_8h.html#ad3133b001e78143a6a86b408781183af',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fstop_5fgripper_252',['VOCAB_CC_ACTUATOR_STOP_GRIPPER',['../ICartesianControl_8h.html#a7051875af20894cdc62680aa8aa49899',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fcmc_5fperiod_253',['VOCAB_CC_CONFIG_CMC_PERIOD',['../ICartesianControl_8h.html#abc702bebca794011cd93a4682084136f',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fframe_254',['VOCAB_CC_CONFIG_FRAME',['../ICartesianControl_8h.html#a6a73508a213d9cd2465b5e32903d6101',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fgain_255',['VOCAB_CC_CONFIG_GAIN',['../ICartesianControl_8h.html#abea2960186545705eb42011f2f31db7e',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fparams_256',['VOCAB_CC_CONFIG_PARAMS',['../ICartesianControl_8h.html#a562244bde1f002affd470c6fa83709a1',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fstreaming_5fcmd_257',['VOCAB_CC_CONFIG_STREAMING_CMD',['../ICartesianControl_8h.html#ac74dd2d6427104c99b7d75221aa4bc00',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5ftraj_5fduration_258',['VOCAB_CC_CONFIG_TRAJ_DURATION',['../ICartesianControl_8h.html#a3b007997f2db075b04d29162b271961a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fwait_5fperiod_259',['VOCAB_CC_CONFIG_WAIT_PERIOD',['../ICartesianControl_8h.html#ab374b2682255a38dc76034e88d372c7f',1,'ICartesianControl.h']]], + ['vocab_5fcc_5ffailed_260',['VOCAB_CC_FAILED',['../ICartesianControl_8h.html#ab736598e19568e3e2092cccc4768c6c4',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fforc_261',['VOCAB_CC_FORC',['../ICartesianControl_8h.html#a1a1fc1eff7f307b068bfe60a8bbd0209',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fforc_5fcontrolling_262',['VOCAB_CC_FORC_CONTROLLING',['../ICartesianControl_8h.html#a23ec9bc95eb267b60a52ae3ac593eb2a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fgcmp_263',['VOCAB_CC_GCMP',['../ICartesianControl_8h.html#a46dfb347580dac6a2df684a1a17a572a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fgcmp_5fcontrolling_264',['VOCAB_CC_GCMP_CONTROLLING',['../ICartesianControl_8h.html#a36cfa5c2e1df2a8ab4227f9a504ff2d0',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fget_265',['VOCAB_CC_GET',['../ICartesianControl_8h.html#a8eaa88e65c46adc862ba54a1b851b44c',1,'ICartesianControl.h']]], + ['vocab_5fcc_5finv_266',['VOCAB_CC_INV',['../ICartesianControl_8h.html#a5962f382c250640afe1204df70445e87',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovi_267',['VOCAB_CC_MOVI',['../ICartesianControl_8h.html#a91afd721b5f5458ed921ed1b9da418b0',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovj_268',['VOCAB_CC_MOVJ',['../ICartesianControl_8h.html#a172a72b7d3352dd2540bd7b8aad337c8',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovj_5fcontrolling_269',['VOCAB_CC_MOVJ_CONTROLLING',['../ICartesianControl_8h.html#afb795f558f0db7a306b2bd9b3ad8eeaa',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovl_270',['VOCAB_CC_MOVL',['../ICartesianControl_8h.html#ae8ac4e2367ff3eba65b5614e3b93f9e1',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovl_5fcontrolling_271',['VOCAB_CC_MOVL_CONTROLLING',['../ICartesianControl_8h.html#ac776d2ff62aeae28c53f193e5348ffd6',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovv_272',['VOCAB_CC_MOVV',['../ICartesianControl_8h.html#af8a80d19863874ab1940712111879271',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovv_5fcontrolling_273',['VOCAB_CC_MOVV_CONTROLLING',['../ICartesianControl_8h.html#abde4673e54571138ddf2c15c1c22e4bc',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fnot_5fcontrolling_274',['VOCAB_CC_NOT_CONTROLLING',['../ICartesianControl_8h.html#ab7bf4659857140ac5dae54c41e99f0f8',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fnot_5fset_275',['VOCAB_CC_NOT_SET',['../ICartesianControl_8h.html#a9b38d7505b7d651fb38077ad487a5405',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fok_276',['VOCAB_CC_OK',['../ICartesianControl_8h.html#a84aad6f0fa7bc204973841b0e245ea03',1,'ICartesianControl.h']]], + ['vocab_5fcc_5frelj_277',['VOCAB_CC_RELJ',['../ICartesianControl_8h.html#a0e43012835feec8935eebf0a45eb813d',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fset_278',['VOCAB_CC_SET',['../ICartesianControl_8h.html#a522c9ba30f960803f101bc7e9bfeddad',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fstat_279',['VOCAB_CC_STAT',['../ICartesianControl_8h.html#a01a6315b554657e45e23fed90d5b82c8',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fstop_280',['VOCAB_CC_STOP',['../ICartesianControl_8h.html#acb3305c35bd58ac33d3d610c266822d9',1,'ICartesianControl.h']]], + ['vocab_5fcc_5ftool_281',['VOCAB_CC_TOOL',['../ICartesianControl_8h.html#a182c7f6601b974f592455ca7160d68a5',1,'ICartesianControl.h']]], + ['vocab_5fcc_5ftwist_282',['VOCAB_CC_TWIST',['../ICartesianControl_8h.html#ab0614b1d49bf7e41a14f7f790793839d',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fwait_283',['VOCAB_CC_WAIT',['../ICartesianControl_8h.html#ab62101f35cd7f7c09bd29ca793d15683',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fwrench_284',['VOCAB_CC_WRENCH',['../ICartesianControl_8h.html#a93f53217e8977424bcd4d2c196316807',1,'ICartesianControl.h']]] +]; diff --git a/search/all_15.html b/search/all_15.html new file mode 100644 index 000000000..69f382b31 --- /dev/null +++ b/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 000000000..0f3ed37a6 --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['wait_285',['wait',['../classroboticslab_1_1BasicCartesianControl.html#a3a17a840b0aacce31a1817be22c07fce',1,'roboticslab::BasicCartesianControl::wait()'],['../classroboticslab_1_1CartesianControlClient.html#af6b75bbbd6f89a1336a1c1f406a943e3',1,'roboticslab::CartesianControlClient::wait()'],['../classroboticslab_1_1ICartesianControl.html#aa93a722ac60a804d8d0c5b95604c13b4',1,'roboticslab::ICartesianControl::wait()']]], + ['wiimotesensordevice_286',['WiimoteSensorDevice',['../classroboticslab_1_1WiimoteSensorDevice.html',1,'roboticslab::WiimoteSensorDevice'],['../classroboticslab_1_1WiimoteSensorDevice.html#a8148644a0ed7db1d07507d4c8c12ae22',1,'roboticslab::WiimoteSensorDevice::WiimoteSensorDevice()']]], + ['wrench_287',['wrench',['../classroboticslab_1_1BasicCartesianControl.html#a1b47a5f17b5df420e16627726de76b9d',1,'roboticslab::BasicCartesianControl::wrench()'],['../classroboticslab_1_1CartesianControlClient.html#a866b07377768cdd748802d8045e31b37',1,'roboticslab::CartesianControlClient::wrench()'],['../classroboticslab_1_1ICartesianControl.html#ae7fe2a1b7a3c7d0281ea90bdfb8722fd',1,'roboticslab::ICartesianControl::wrench()']]], + ['wrenchtovector_288',['wrenchToVector',['../namespaceroboticslab_1_1KdlVectorConverter.html#af06f85fefeb26784a8302ce977863a61',1,'roboticslab::KdlVectorConverter']]] +]; diff --git a/search/all_16.html b/search/all_16.html new file mode 100644 index 000000000..b19867ad9 --- /dev/null +++ b/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 000000000..9d8eb2df3 --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xupdateh_289',['xUpdateH',['../namespaceroboticslab.html#a40a94b80ea94690ef4cd5adfcdec8a65',1,'roboticslab']]] +]; diff --git a/search/all_17.html b/search/all_17.html new file mode 100644 index 000000000..1ad5d34b4 --- /dev/null +++ b/search/all_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 000000000..0466e0137 --- /dev/null +++ b/search/all_17.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yarpplugins_290',['YarpPlugins',['../group__YarpPlugins.html',1,'']]] +]; diff --git a/search/all_18.html b/search/all_18.html new file mode 100644 index 000000000..507d0f856 --- /dev/null +++ b/search/all_18.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_18.js b/search/all_18.js new file mode 100644 index 000000000..53098cd57 --- /dev/null +++ b/search/all_18.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_7easibotconfiguration_291',['~AsibotConfiguration',['../classroboticslab_1_1AsibotConfiguration.html#a04530a29a893239e0cd56284ceb62df4',1,'roboticslab::AsibotConfiguration']]], + ['_7echainiksolverpos_5fst_292',['~ChainIkSolverPos_ST',['../classroboticslab_1_1ChainIkSolverPos__ST.html#aae89ea0f571f2796233f14a17ba26ff3',1,'roboticslab::ChainIkSolverPos_ST']]], + ['_7econfigurationselector_293',['~ConfigurationSelector',['../classroboticslab_1_1ConfigurationSelector.html#a9effe44b46c35cb824c33d04008a39ac',1,'roboticslab::ConfigurationSelector']]], + ['_7eicartesiancontrol_294',['~ICartesianControl',['../classroboticslab_1_1ICartesianControl.html#a0793d83f5afacddc111a33e15d48f890',1,'roboticslab::ICartesianControl']]], + ['_7eicartesiansolver_295',['~ICartesianSolver',['../classroboticslab_1_1ICartesianSolver.html#a6923898386e1a777d92abc39537933a7',1,'roboticslab::ICartesianSolver']]], + ['_7escrewtheoryikproblem_296',['~ScrewTheoryIkProblem',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a60ad47d68b43796cbc31fac0b49c13de',1,'roboticslab::ScrewTheoryIkProblem']]], + ['_7escrewtheoryiksubproblem_297',['~ScrewTheoryIkSubproblem',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a9f705300e8d60941ce0986933f8a9417',1,'roboticslab::ScrewTheoryIkSubproblem']]], + ['_7estreamingdevice_298',['~StreamingDevice',['../classroboticslab_1_1StreamingDevice.html#a9232b61aaa461360bab8d699629730b4',1,'roboticslab::StreamingDevice']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 000000000..02cfffc2e --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..a2ed3fcfc --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['cartesian_24',['CARTESIAN',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aac02304094f2866a43251b12946a9a21b',1,'roboticslab::KinRepresentation']]], + ['cartesiancontrolclient_25',['CartesianControlClient',['../group__CartesianControlClient.html',1,'(Global Namespace)'],['../classroboticslab_1_1CartesianControlClient.html',1,'roboticslab::CartesianControlClient']]], + ['cartesiancontrolexample_26',['cartesianControlExample',['../group__cartesianControlExample.html',1,'']]], + ['cartesiancontrolserver_27',['CartesianControlServer',['../group__CartesianControlServer.html',1,'(Global Namespace)'],['../classroboticslab_1_1CartesianControlServer.html',1,'roboticslab::CartesianControlServer']]], + ['carttojnt_28',['CartToJnt',['../classroboticslab_1_1ChainIkSolverPos__ID.html#adf57ebfd38c5e155230d66100c98fe32',1,'roboticslab::ChainIkSolverPos_ID::CartToJnt()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#a8dc08e4f9cfb81f4dc2bf1683623d0fb',1,'roboticslab::ChainIkSolverPos_ST::CartToJnt()']]], + ['centroidtransform_29',['CentroidTransform',['../classroboticslab_1_1CentroidTransform.html#aa7ec227473fdbeb23bc948c80ae7d071',1,'roboticslab::CentroidTransform::CentroidTransform()'],['../classroboticslab_1_1CentroidTransform.html',1,'roboticslab::CentroidTransform']]], + ['chain_30',['chain',['../classroboticslab_1_1KdlSolver.html#aa57a040771966f275e1855dda07a4902',1,'roboticslab::KdlSolver']]], + ['chainfksolverpos_5fst_31',['ChainFkSolverPos_ST',['../classroboticslab_1_1ChainFkSolverPos__ST.html',1,'roboticslab']]], + ['chainiksolverpos_5fid_32',['ChainIkSolverPos_ID',['../classroboticslab_1_1ChainIkSolverPos__ID.html#acbd429a31df64286d293aaccc6a9c217',1,'roboticslab::ChainIkSolverPos_ID::ChainIkSolverPos_ID()'],['../classroboticslab_1_1ChainIkSolverPos__ID.html',1,'roboticslab::ChainIkSolverPos_ID']]], + ['chainiksolverpos_5fst_33',['ChainIkSolverPos_ST',['../classroboticslab_1_1ChainIkSolverPos__ST.html',1,'roboticslab']]], + ['changebase_34',['changeBase',['../classroboticslab_1_1MatrixExponential.html#a7798b517259b49658aadabf0851ad87e',1,'roboticslab::MatrixExponential']]], + ['changebaseframe_35',['changeBaseFrame',['../classroboticslab_1_1PoeExpression.html#a60d08a056b9110f0d728a4c15857067b',1,'roboticslab::PoeExpression']]], + ['changeorigin_36',['changeOrigin',['../classroboticslab_1_1ICartesianSolver.html#a59efe59ea330504e2ed943e81309628f',1,'roboticslab::ICartesianSolver::changeOrigin()'],['../classroboticslab_1_1AsibotSolver.html#ac8544de053f20b49f9cf50ae09eb4cf6',1,'roboticslab::AsibotSolver::changeOrigin()'],['../classroboticslab_1_1KdlSolver.html#a6014d78a0cc9ceffe6f167bcf759add8',1,'roboticslab::KdlSolver::changeOrigin()'],['../classroboticslab_1_1KdlTreeSolver.html#ade6710af704657b8f6c25590025a14a4',1,'roboticslab::KdlTreeSolver::changeOrigin()']]], + ['changetoolframe_37',['changeToolFrame',['../classroboticslab_1_1PoeExpression.html#afa2408ed0d4e9ffb58c257295362019d',1,'roboticslab::PoeExpression']]], + ['checkjointsinlimits_38',['checkJointsInLimits',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a594d5843f08f2646a57b266c0b4ef2cf',1,'roboticslab::AsibotConfiguration::Pose']]], + ['clonewithbase_39',['cloneWithBase',['../classroboticslab_1_1MatrixExponential.html#a2272da42bd2cb5b3eae6ddefd7242e6a',1,'roboticslab::MatrixExponential']]], + ['compare_5fsolutions_40',['compare_solutions',['../structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions.html',1,'roboticslab::test::ScrewTheoryTest']]], + ['configuration_41',['Configuration',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a3bc0d7d291c503bd03e8f137a83c0c34',1,'roboticslab::ConfigurationSelector::Configuration::Configuration()'],['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['configurationselector_42',['ConfigurationSelector',['../classroboticslab_1_1ConfigurationSelector.html#a0b6087f8f39859f47c4f903ab8edb7ff',1,'roboticslab::ConfigurationSelector::ConfigurationSelector()'],['../classroboticslab_1_1ConfigurationSelector.html',1,'roboticslab::ConfigurationSelector']]], + ['configurationselectorfactory_43',['ConfigurationSelectorFactory',['../classroboticslab_1_1ConfigurationSelectorFactory.html#a6e3086c7296075e71bab027cc8b68ac1',1,'roboticslab::ConfigurationSelectorFactory::ConfigurationSelectorFactory()'],['../classroboticslab_1_1ConfigurationSelectorFactory.html',1,'roboticslab::ConfigurationSelectorFactory']]], + ['configurationselectorhumanoidgait_44',['ConfigurationSelectorHumanoidGait',['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html#afcb59d591b4935da51c0243492dd3fc3',1,'roboticslab::ConfigurationSelectorHumanoidGait::ConfigurationSelectorHumanoidGait()'],['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html',1,'roboticslab::ConfigurationSelectorHumanoidGait']]], + ['configurationselectorhumanoidgaitfactory_45',['ConfigurationSelectorHumanoidGaitFactory',['../classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html#a9d30646f048b3d8608be3d83e45baa72',1,'roboticslab::ConfigurationSelectorHumanoidGaitFactory::ConfigurationSelectorHumanoidGaitFactory()'],['../classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html',1,'roboticslab::ConfigurationSelectorHumanoidGaitFactory']]], + ['configurationselectorleastoverallangulardisplacement_46',['ConfigurationSelectorLeastOverallAngularDisplacement',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html#a876d541f9db87462dd975f833cafdf15',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement::ConfigurationSelectorLeastOverallAngularDisplacement()'],['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement']]], + ['configurationselectorleastoverallangulardisplacementfactory_47',['ConfigurationSelectorLeastOverallAngularDisplacementFactory',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html#af9429faf34e52f73c2775df1d7a92e08',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory::ConfigurationSelectorLeastOverallAngularDisplacementFactory()'],['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory']]], + ['configure_48',['configure',['../classOrderThreeTraj.html#ac963631faaee834c43d3892bb812a5c1',1,'OrderThreeTraj::configure()'],['../classroboticslab_1_1ConfigurationSelector.html#ac4eec640bdedd39172c2623865665041',1,'roboticslab::ConfigurationSelector::configure()'],['../classroboticslab_1_1AsibotConfiguration.html#aa510bb099625935c49ea8edcb1b25ba5',1,'roboticslab::AsibotConfiguration::configure()'],['../classOrderThreeTraj.html#af351a5b610d2185289f898864e000095',1,'OrderThreeTraj::configure()']]], + ['configurefixedaxes_49',['configureFixedAxes',['../classroboticslab_1_1StreamingDevice.html#acb732c75c786e274e1bd0d9a6f942804',1,'roboticslab::StreamingDevice']]], + ['coordinate_5fsystem_50',['coordinate_system',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397a',1,'roboticslab::KinRepresentation']]], + ['create_51',['create',['../classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html#affc1e25eb0f147bce62953e4b407a19c',1,'roboticslab::ConfigurationSelectorHumanoidGaitFactory::create()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#a1a4283bfafcb0d2bc57121c4b363f10a',1,'roboticslab::ScrewTheoryIkProblem::create()'],['../classroboticslab_1_1AsibotConfigurationFactory.html#a6556fc6567fc15e9d3dbe095195dd38c',1,'roboticslab::AsibotConfigurationFactory::create()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html#a2ce53992faaad7a69e1fe22cd5c81754',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory::create()'],['../classroboticslab_1_1ChainFkSolverPos__ST.html#ab12dcb13477d3145cb8c950200718c78',1,'roboticslab::ChainFkSolverPos_ST::create()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#a0d3861e0844d8ed8cf86cb5b6e829066',1,'roboticslab::ChainIkSolverPos_ST::create()'],['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html#a82372a790a37f4f9a852e802c670e7b4',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory::create()'],['../classroboticslab_1_1ConfigurationSelectorFactory.html#ac9bc212f7e557de03f23797258d9f97e',1,'roboticslab::ConfigurationSelectorFactory::create()']]], + ['cylindrical_52',['CYLINDRICAL',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aaf6840fd287b44b1616267bd19305909a',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 000000000..39767b85b --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..fcf5f2a43 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['decodeacceleration_53',['decodeAcceleration',['../namespaceroboticslab_1_1KinRepresentation.html#ae21918323ff365dcbf1d443d06f0f6b4',1,'roboticslab::KinRepresentation']]], + ['decodepose_54',['decodePose',['../namespaceroboticslab_1_1KinRepresentation.html#ae1ff45b7a2b1a2848ff76f9c22e88ba1',1,'roboticslab::KinRepresentation']]], + ['decodevelocity_55',['decodeVelocity',['../namespaceroboticslab_1_1KinRepresentation.html#a92ffc77823212389627275c6d9533a98',1,'roboticslab::KinRepresentation']]], + ['degrees_56',['DEGREES',['../namespaceroboticslab_1_1KinRepresentation.html#abd99bdf0387bd4b86ff0cde410071fc1afee20551b6d06fd83aa56a486e557307',1,'roboticslab::KinRepresentation']]], + ['degtorad_57',['degToRad',['../namespaceroboticslab_1_1KinRepresentation.html#a6b8e0208a000b271a53bf5d351615344',1,'roboticslab::KinRepresentation']]], + ['describe_58',['describe',['../classroboticslab_1_1PadenKahanOne.html#ac7a6878f90b4281e71ddf671b7064e5c',1,'roboticslab::PadenKahanOne::describe()'],['../classroboticslab_1_1PardosGotorFour.html#ad1f9a049ed11faf9a88d74bd47f17617',1,'roboticslab::PardosGotorFour::describe()'],['../classroboticslab_1_1PardosGotorThree.html#a28640f5c9e15d8f4dc11f9a9966d8c8e',1,'roboticslab::PardosGotorThree::describe()'],['../classroboticslab_1_1PardosGotorTwo.html#aa42fecaa7064639284d74dd4c9f87638',1,'roboticslab::PardosGotorTwo::describe()'],['../classroboticslab_1_1PardosGotorOne.html#ae8ec6fea2bdacda59f26be4810b0c868',1,'roboticslab::PardosGotorOne::describe()'],['../classroboticslab_1_1PadenKahanThree.html#a3a9867170102a8af264e0d9c83cfa323',1,'roboticslab::PadenKahanThree::describe()'],['../classroboticslab_1_1PadenKahanTwo.html#ae781f6e280da51bbc50821e5693de38d',1,'roboticslab::PadenKahanTwo::describe()'],['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#ad842a6c20ddd83a12fa2694c3b85972f',1,'roboticslab::ScrewTheoryIkSubproblem::describe()']]], + ['diffinvkin_59',['diffInvKin',['../classroboticslab_1_1AsibotSolver.html#a058f10e3f8f2aee22c2e07590c4e3378',1,'roboticslab::AsibotSolver::diffInvKin()'],['../classroboticslab_1_1ICartesianSolver.html#a910ada1b432e137f381731a9943120e9',1,'roboticslab::ICartesianSolver::diffInvKin()'],['../classroboticslab_1_1KdlSolver.html#ab765926ddbffbeabd7f374b2769fd9a7',1,'roboticslab::KdlSolver::diffInvKin()'],['../classroboticslab_1_1KdlTreeSolver.html#a6e6274c011a18b4b72e2a95c8329000d',1,'roboticslab::KdlTreeSolver::diffInvKin()']]], + ['dump_60',['dump',['../classOrderThreeTraj.html#a0b0899bf7aed48bda0714730cd257127',1,'OrderThreeTraj']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 000000000..fc40463c8 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..2e3383c33 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['e_5ffksolverpos_5ffailed_61',['E_FKSOLVERPOS_FAILED',['../classroboticslab_1_1ChainIkSolverPos__ID.html#a4d25fef36d920871f459ee8d8280785a',1,'roboticslab::ChainIkSolverPos_ID']]], + ['e_5fillegal_5fargument_5fsize_62',['E_ILLEGAL_ARGUMENT_SIZE',['../classroboticslab_1_1ChainFkSolverPos__ST.html#a455a495513c1fee7aa94e73b9485de81',1,'roboticslab::ChainFkSolverPos_ST']]], + ['e_5fjacsolver_5ffailed_63',['E_JACSOLVER_FAILED',['../classroboticslab_1_1ChainIkSolverPos__ID.html#ab41cc517a8ed8bb77879d2f3326b81be',1,'roboticslab::ChainIkSolverPos_ID']]], + ['e_5fnot_5freachable_64',['E_NOT_REACHABLE',['../classroboticslab_1_1ChainIkSolverPos__ST.html#ab4391a5b4341bd92c46c5f2f642ccf70',1,'roboticslab::ChainIkSolverPos_ST']]], + ['e_5foperation_5fnot_5fsupported_65',['E_OPERATION_NOT_SUPPORTED',['../classroboticslab_1_1ChainFkSolverPos__ST.html#a628d4fe26487e86058c7a6e84b2019ff',1,'roboticslab::ChainFkSolverPos_ST']]], + ['e_5fout_5fof_5flimits_66',['E_OUT_OF_LIMITS',['../classroboticslab_1_1ChainIkSolverPos__ST.html#a9da456eee2d581696d107e79c2200620',1,'roboticslab::ChainIkSolverPos_ST']]], + ['e_5fsolution_5fnot_5ffound_67',['E_SOLUTION_NOT_FOUND',['../classroboticslab_1_1ChainIkSolverPos__ST.html#a23ce11bf5f6a1a3cf1077d3fed81fe3d',1,'roboticslab::ChainIkSolverPos_ST']]], + ['elbow_68',['elbow',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#ad3142dda6dc876c8b1e5b6616e730d3a',1,'roboticslab::AsibotConfiguration::Pose']]], + ['encodeacceleration_69',['encodeAcceleration',['../namespaceroboticslab_1_1KinRepresentation.html#a6cdf3260cfb1b1548082587ead8f7dbe',1,'roboticslab::KinRepresentation']]], + ['encodepose_70',['encodePose',['../namespaceroboticslab_1_1KinRepresentation.html#a68d34b0fa5c844da492eb0d68d405b91',1,'roboticslab::KinRepresentation']]], + ['encodevelocity_71',['encodeVelocity',['../namespaceroboticslab_1_1KinRepresentation.html#ac984377f13ca02018f120b0d8be63466',1,'roboticslab::KinRepresentation']]], + ['euler_5fyz_72',['EULER_YZ',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a5cfe2d6a065e7207d421272b391f88da',1,'roboticslab::KinRepresentation']]], + ['euler_5fzyz_73',['EULER_ZYZ',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a68b156f567f219fed0f577cee1d03146',1,'roboticslab::KinRepresentation']]], + ['euleryztoh_74',['eulerYZtoH',['../namespaceroboticslab.html#af470c21e8c0a23b71fe1227a563a42a6',1,'roboticslab']]], + ['eulerzyztoh_75',['eulerZYZtoH',['../namespaceroboticslab.html#a742657ff7dd7bfdda9d06a8f26fb63be',1,'roboticslab']]], + ['evaluate_76',['evaluate',['../classroboticslab_1_1PoeExpression.html#a453c039c1253e3a97920604b6cfa6765',1,'roboticslab::PoeExpression']]], + ['exampleyarptinymath_77',['exampleYarpTinyMath',['../group__exampleYarpTinyMath.html',1,'']]], + ['exponentialatjoint_78',['exponentialAtJoint',['../classroboticslab_1_1PoeExpression.html#a60f29480e238dc43a8b8c3fced61d328',1,'roboticslab::PoeExpression']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 000000000..9dd9344b0 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..a05a74364 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['fd_79',['fd',['../classroboticslab_1_1BasicCartesianControl.html#a41c611225dc443da76f296b49392fca1',1,'roboticslab::BasicCartesianControl']]], + ['findoptimalconfiguration_80',['findOptimalConfiguration',['../classroboticslab_1_1ConfigurationSelector.html#a353fa629a8b0a075eeeffbd1a3084e80',1,'roboticslab::ConfigurationSelector::findOptimalConfiguration()'],['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html#ac8be16dc2a6d5a45f34b858a5278f746',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement::findOptimalConfiguration()'],['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html#adffa6e819161168b47d704851ec03ecc',1,'roboticslab::ConfigurationSelectorHumanoidGait::findOptimalConfiguration()'],['../classroboticslab_1_1AsibotConfiguration.html#a0cd9c584f35bc8ca4b950f44eeda8ca3',1,'roboticslab::AsibotConfiguration::findOptimalConfiguration()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html#a97e98540da4ddd9a76a6f7352bbef373',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement::findOptimalConfiguration()']]], + ['fkstreamresponder_81',['FkStreamResponder',['../classroboticslab_1_1FkStreamResponder.html',1,'roboticslab']]], + ['forc_82',['forc',['../classroboticslab_1_1BasicCartesianControl.html#aa866e4b1404b7675a42b362e223b63d0',1,'roboticslab::BasicCartesianControl::forc()'],['../classroboticslab_1_1CartesianControlClient.html#a0685acd4903d553fc8732120c397c664',1,'roboticslab::CartesianControlClient::forc()'],['../classroboticslab_1_1ICartesianControl.html#adeb99c8fb30c5d4d4a04cfb9a758d730',1,'roboticslab::ICartesianControl::forc()']]], + ['frametovector_83',['frameToVector',['../namespaceroboticslab_1_1KdlVectorConverter.html#a647545bd661912775f0c967268b57016',1,'roboticslab::KdlVectorConverter']]], + ['fromchain_84',['fromChain',['../classroboticslab_1_1PoeExpression.html#a5416073dd90b5237747eee1a9fe52f57',1,'roboticslab::PoeExpression']]], + ['ftcompensation_85',['ftCompensation',['../group__ftCompensation.html',1,'']]], + ['ftcompensation_86',['FtCompensation',['../classroboticslab_1_1FtCompensation.html',1,'roboticslab']]], + ['fwdkin_87',['fwdKin',['../classroboticslab_1_1ICartesianSolver.html#a49690d22fdd220ba4b907f14c151435f',1,'roboticslab::ICartesianSolver::fwdKin()'],['../classroboticslab_1_1KdlSolver.html#ab95ab0b11656c27425f75d6847933aba',1,'roboticslab::KdlSolver::fwdKin()'],['../classroboticslab_1_1KdlTreeSolver.html#a9bdff0f1eb6151343cfba38bf4f82a8a',1,'roboticslab::KdlTreeSolver::fwdKin()'],['../classroboticslab_1_1AsibotSolver.html#a2ede20e969ef643f04a48f8f5c8d3872',1,'roboticslab::AsibotSolver::fwdKin()']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 000000000..f1e516d75 --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..201368699 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['gcmp_88',['gcmp',['../classroboticslab_1_1BasicCartesianControl.html#ab69589d938ddc37bfa42390bdb86fdf8',1,'roboticslab::BasicCartesianControl::gcmp()'],['../classroboticslab_1_1CartesianControlClient.html#a66b9befe986c5134a0ba7839cab332f0',1,'roboticslab::CartesianControlClient::gcmp()'],['../classroboticslab_1_1ICartesianControl.html#aad338c264d84df5cbb0aa4541150bc7a',1,'roboticslab::ICartesianControl::gcmp()']]], + ['get_89',['get',['../classOrderThreeTraj.html#ab72bf9f914156a81a7e425900827f8ce',1,'OrderThreeTraj']]], + ['getactuatorstate_90',['getActuatorState',['../classroboticslab_1_1LeapMotionSensorDevice.html#ab057f2567ecbd20b737e67d397337b23',1,'roboticslab::LeapMotionSensorDevice::getActuatorState()'],['../classroboticslab_1_1SpnavSensorDevice.html#aa66a22963d7178e8d8776207d7e9a574',1,'roboticslab::SpnavSensorDevice::getActuatorState()'],['../classroboticslab_1_1StreamingDevice.html#a314159bdd4234db9d7b42de474b50846',1,'roboticslab::StreamingDevice::getActuatorState()']]], + ['getaxis_91',['getAxis',['../classroboticslab_1_1MatrixExponential.html#a50cb8cb28ca982043f9d5589a46bb20d',1,'roboticslab::MatrixExponential']]], + ['getdiffs_92',['getDiffs',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html#a9b1a6a3a41896ed37ada24c11e0c57c5',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement::getDiffs()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html#a48e6a6547d242e4f0abed79ef55f8592',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement::getDiffs()']]], + ['getdot_93',['getdot',['../classOrderThreeTraj.html#a7a0adabdd1926f11ac44ab374bf2a1ea',1,'OrderThreeTraj']]], + ['getdotdot_94',['getdotdot',['../classOrderThreeTraj.html#aae56577b26f19a7520b5f20f0dc7bd34',1,'OrderThreeTraj']]], + ['getmotiontype_95',['getMotionType',['../classroboticslab_1_1MatrixExponential.html#a533b4c15dab146f378f71ca1959ae207',1,'roboticslab::MatrixExponential']]], + ['getnumjoints_96',['getNumJoints',['../classroboticslab_1_1KdlSolver.html#aab9372277ac2ec5c7c43c67ef6ba1fe6',1,'roboticslab::KdlSolver::getNumJoints()'],['../classroboticslab_1_1KdlTreeSolver.html#a88f9d04f875757e2bb3941e54b109afc',1,'roboticslab::KdlTreeSolver::getNumJoints()'],['../classroboticslab_1_1ICartesianSolver.html#ad9cca105691fc5b95a07766430355fe8',1,'roboticslab::ICartesianSolver::getNumJoints()'],['../classroboticslab_1_1AsibotSolver.html#ad30b79611b6a2d31403f131a08dba2ec',1,'roboticslab::AsibotSolver::getNumJoints() override']]], + ['getnumtcps_97',['getNumTcps',['../classroboticslab_1_1AsibotSolver.html#a78ae903d7a4649824699dce5181e7183',1,'roboticslab::AsibotSolver::getNumTcps()'],['../classroboticslab_1_1ICartesianSolver.html#a0171d5b8930f6887a2500b93cc60a30f',1,'roboticslab::ICartesianSolver::getNumTcps()'],['../classroboticslab_1_1KdlSolver.html#ab2e2cfa9bee851fd215916764d038653',1,'roboticslab::KdlSolver::getNumTcps()'],['../classroboticslab_1_1KdlTreeSolver.html#addf29c15a21de7f137fdac5ab50b69ee',1,'roboticslab::KdlTreeSolver::getNumTcps()']]], + ['getorigin_98',['getOrigin',['../classroboticslab_1_1MatrixExponential.html#a35fa4128a7e251fae88ba42d111c942d',1,'roboticslab::MatrixExponential']]], + ['getparameter_99',['getParameter',['../classroboticslab_1_1BasicCartesianControl.html#a732976a98d6b28d98a80d4a0f2341006',1,'roboticslab::BasicCartesianControl::getParameter()'],['../classroboticslab_1_1CartesianControlClient.html#a8f0ed4798101b1296a2175ce5adec8de',1,'roboticslab::CartesianControlClient::getParameter()'],['../classroboticslab_1_1ICartesianControl.html#a9d491a555669cb444fdde38a452476fd',1,'roboticslab::ICartesianControl::getParameter()']]], + ['getparameters_100',['getParameters',['../classroboticslab_1_1BasicCartesianControl.html#a6c36f0be7eb63bbe9c2acf0e76307fca',1,'roboticslab::BasicCartesianControl::getParameters()'],['../classroboticslab_1_1CartesianControlClient.html#acbd8412409d0ba4269dddf5cbb5ea68f',1,'roboticslab::CartesianControlClient::getParameters()'],['../classroboticslab_1_1ICartesianControl.html#ad03698d984f27d454c159dadc40d8998',1,'roboticslab::ICartesianControl::getParameters()']]], + ['getsteps_101',['getSteps',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a1c008710f97e29944f152e7def795508',1,'roboticslab::ScrewTheoryIkProblem']]], + ['gett_102',['getT',['../classOrderThreeTraj.html#a92dd2d77ab3b1fb6cdafc483e34f5762',1,'OrderThreeTraj']]], + ['gettransform_103',['getTransform',['../classroboticslab_1_1PoeExpression.html#a706daeed50babdf013136205d038cce2',1,'roboticslab::PoeExpression']]], + ['grabberresponder_104',['GrabberResponder',['../classroboticslab_1_1GrabberResponder.html',1,'roboticslab']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 000000000..8ddbf6c8e --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..66372aac8 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['haardetectioncontroller_105',['haarDetectionController',['../group__haarDetectionController.html',1,'']]], + ['haardetectioncontroller_106',['HaarDetectionController',['../classroboticslab_1_1HaarDetectionController.html',1,'roboticslab']]], + ['hasvalidmovementdata_107',['hasValidMovementData',['../classroboticslab_1_1SpnavSensorDevice.html#afd22a1846735024f1b682b0e0f29bf4a',1,'roboticslab::SpnavSensorDevice::hasValidMovementData()'],['../classroboticslab_1_1StreamingDevice.html#a1c3e1aa6a553a6db8a087c4b6aef099a',1,'roboticslab::StreamingDevice::hasValidMovementData()'],['../classroboticslab_1_1WiimoteSensorDevice.html#a8121dc7f04525d95d0aff3df02b353d4',1,'roboticslab::WiimoteSensorDevice::hasValidMovementData()']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 000000000..83c55ae22 --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..113722940 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['icartesiancontrol_108',['ICartesianControl',['../classroboticslab_1_1ICartesianControl.html',1,'roboticslab']]], + ['icartesiancontrol_2eh_109',['ICartesianControl.h',['../ICartesianControl_8h.html',1,'']]], + ['icartesiansolver_110',['ICartesianSolver',['../classroboticslab_1_1ICartesianSolver.html',1,'roboticslab']]], + ['icartesiansolver_2eh_111',['ICartesianSolver.h',['../ICartesianSolver_8h.html',1,'']]], + ['initialize_112',['initialize',['../classroboticslab_1_1LeapMotionSensorDevice.html#aab5af58de53a64f30a89305050f76df5',1,'roboticslab::LeapMotionSensorDevice::initialize()'],['../classroboticslab_1_1SpnavSensorDevice.html#aaa173adb1f3b826875b1eee7b62ce4b8',1,'roboticslab::SpnavSensorDevice::initialize()'],['../classroboticslab_1_1StreamingDevice.html#a7ccbc2b2b685669fd17df8c415b7ce33',1,'roboticslab::StreamingDevice::initialize()'],['../classroboticslab_1_1WiimoteSensorDevice.html#aa889d94db1c584adefd68fd455946f79',1,'roboticslab::WiimoteSensorDevice::initialize()']]], + ['inv_113',['inv',['../classroboticslab_1_1BasicCartesianControl.html#afa156ade37313b7881ded73c28e0ab9e',1,'roboticslab::BasicCartesianControl::inv()'],['../classroboticslab_1_1ICartesianControl.html#abd463e46e4a4603cd435c69451105f40',1,'roboticslab::ICartesianControl::inv()'],['../classroboticslab_1_1CartesianControlClient.html#a21d6db101aad590ea68eeed6aa69b53e',1,'roboticslab::CartesianControlClient::inv()']]], + ['invalidate_114',['invalidate',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#ab90933a0f4bd4331ac147d2f2d749dbd',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['invaliddevice_115',['InvalidDevice',['../classroboticslab_1_1InvalidDevice.html#abc8a8a6ee4d805e32f368f5a41c1b89f',1,'roboticslab::InvalidDevice::InvalidDevice()'],['../classroboticslab_1_1InvalidDevice.html',1,'roboticslab::InvalidDevice']]], + ['invdyn_116',['invDyn',['../classroboticslab_1_1AsibotSolver.html#aac0b0ced741534e694f37943fb7fb380',1,'roboticslab::AsibotSolver::invDyn()'],['../classroboticslab_1_1KdlTreeSolver.html#a8769558a1901e08b964ce054d11d11b0',1,'roboticslab::KdlTreeSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override'],['../classroboticslab_1_1KdlTreeSolver.html#a594d6aa9ab863788c2d3b664ce5237fc',1,'roboticslab::KdlTreeSolver::invDyn(const std::vector< double > &q, std::vector< double > &t) override'],['../classroboticslab_1_1KdlSolver.html#aa5c34f5c58b001f59a73b99d824e8fb1',1,'roboticslab::KdlSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override'],['../classroboticslab_1_1KdlSolver.html#a34d0657f71f95179c00130e7c584c2d3',1,'roboticslab::KdlSolver::invDyn(const std::vector< double > &q, std::vector< double > &t) override'],['../classroboticslab_1_1ICartesianSolver.html#a3b940fe3b68d2eac0eaf5fd8d479f95e',1,'roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame=BASE_FRAME)=0'],['../classroboticslab_1_1ICartesianSolver.html#ac68a125a66dc89f1dcaab7bc0c6c1b93',1,'roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< std::vector< double >> &fexts, std::vector< double > &t)'],['../classroboticslab_1_1ICartesianSolver.html#afb7a780f246baa39cda943dab2a14d45',1,'roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, std::vector< double > &t)=0'],['../classroboticslab_1_1AsibotSolver.html#ada7111579ba3bc4b6ee7eb2c5f19550d',1,'roboticslab::AsibotSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override']]], + ['invkin_117',['invKin',['../classroboticslab_1_1AsibotSolver.html#ab34f0e1d33fcac117db648ccb234de9a',1,'roboticslab::AsibotSolver::invKin()'],['../classroboticslab_1_1ICartesianSolver.html#a571b1a730ea7d6e089598eb874bca600',1,'roboticslab::ICartesianSolver::invKin()'],['../classroboticslab_1_1KdlSolver.html#a47eb528cd1213b7fa5acb36f1e7661d4',1,'roboticslab::KdlSolver::invKin()'],['../classroboticslab_1_1KdlTreeSolver.html#a83ad8ecac4bd3a930646b0f29c2189ff',1,'roboticslab::KdlTreeSolver::invKin()']]], + ['isreversed_118',['isReversed',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a8d805cb14d7ffeaca699ac1a55031746',1,'roboticslab::ScrewTheoryIkProblem']]], + ['isvalid_119',['isValid',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a66960d2cd8fee7dd8ddd563ee66379d6',1,'roboticslab::ConfigurationSelector::Configuration']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 000000000..1e263c134 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..ff27d7131 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jnttocart_120',['JntToCart',['../classroboticslab_1_1ChainFkSolverPos__ST.html#ae2d6766c6b2bf80b88a42a405c03cc3c',1,'roboticslab::ChainFkSolverPos_ST::JntToCart(const KDL::JntArray &q_in, KDL::Frame &p_out, int segmentNr=-1) override'],['../classroboticslab_1_1ChainFkSolverPos__ST.html#a56dfb376b6d4edea6f2db624b527c662',1,'roboticslab::ChainFkSolverPos_ST::JntToCart(const KDL::JntArray &q_in, std::vector< KDL::Frame > &p_out, int segmentNr=-1) override']]], + ['jointidstosolutions_121',['JointIdsToSolutions',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a17e2aab1b986ad8feece04ea41b3df7c',1,'roboticslab::ScrewTheoryIkSubproblem']]], + ['jointidtosolution_122',['JointIdToSolution',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#afcf02a9a113aa4a44b2f574e97b84ccd',1,'roboticslab::ScrewTheoryIkSubproblem']]], + ['jointsin_123',['JointsIn',['../classroboticslab_1_1AsibotConfiguration.html#abbf14b37f256665f99485c9e4a2030dd',1,'roboticslab::AsibotConfiguration']]], + ['jointsout_124',['JointsOut',['../classroboticslab_1_1AsibotConfiguration.html#aefbf1ba28ad741a550f2def1baa6df51',1,'roboticslab::AsibotConfiguration']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 000000000..3a6cac108 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..7f24a735b --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['kdlsolver_125',['KdlSolver',['../group__KdlSolver.html',1,'(Global Namespace)'],['../classroboticslab_1_1KdlSolver.html',1,'roboticslab::KdlSolver']]], + ['kdlsolvertest_126',['KdlSolverTest',['../classroboticslab_1_1test_1_1KdlSolverTest.html',1,'roboticslab::test']]], + ['kdlsolvertestfromfile_127',['KdlSolverTestFromFile',['../classroboticslab_1_1test_1_1KdlSolverTestFromFile.html',1,'roboticslab::test']]], + ['kdltreesolver_128',['KdlTreeSolver',['../group__KdlTreeSolver.html',1,'(Global Namespace)'],['../classroboticslab_1_1KdlTreeSolver.html',1,'roboticslab::KdlTreeSolver']]], + ['kdlvectorconverterlib_129',['KdlVectorConverterLib',['../group__KdlVectorConverterLib.html',1,'']]], + ['keyboardcontroller_130',['keyboardController',['../group__keyboardController.html',1,'']]], + ['keyboardcontroller_131',['KeyboardController',['../classroboticslab_1_1KeyboardController.html',1,'roboticslab']]], + ['kinematicrepresentationlib_132',['KinematicRepresentationLib',['../group__KinematicRepresentationLib.html',1,'']]], + ['kinematics_2ddynamics_20applications_20_28collections_20of_20programs_29_133',['kinematics-dynamics Applications (Collections of Programs)',['../group__kinematics-dynamics-applications.html',1,'']]], + ['kinematics_2ddynamics_20examples_134',['kinematics-dynamics Examples',['../group__kinematics-dynamics-examples.html',1,'']]], + ['kinematics_2ddynamics_20libraries_135',['kinematics-dynamics Libraries',['../group__kinematics-dynamics-libraries.html',1,'']]], + ['kinematics_2ddynamics_20programs_136',['kinematics-dynamics Programs',['../group__kinematics-dynamics-programs.html',1,'']]], + ['kinematics_2ddynamics_20tests_137',['kinematics-dynamics Tests',['../group__kinematics-dynamics-tests.html',1,'']]], + ['kinematics_2ddynamics_3a_20installation_20from_20source_20code_138',['kinematics-dynamics: Installation from Source Code',['../md_doc_kinematics_dynamics_install.html',1,'']]], + ['kinrepresentationtest_139',['KinRepresentationTest',['../classroboticslab_1_1test_1_1KinRepresentationTest.html',1,'roboticslab::test']]] +]; diff --git a/search/all_b.html b/search/all_b.html new file mode 100644 index 000000000..130deb4ed --- /dev/null +++ b/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..df77e5b3e --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['leapmotionsensordevice_140',['LeapMotionSensorDevice',['../classroboticslab_1_1LeapMotionSensorDevice.html#a2ab0d5a6c3e2a82850ca75e31b182a69',1,'roboticslab::LeapMotionSensorDevice::LeapMotionSensorDevice()'],['../classroboticslab_1_1LeapMotionSensorDevice.html',1,'roboticslab::LeapMotionSensorDevice']]], + ['lineartrajectorythread_141',['LinearTrajectoryThread',['../classroboticslab_1_1LinearTrajectoryThread.html',1,'roboticslab']]] +]; diff --git a/search/all_c.html b/search/all_c.html new file mode 100644 index 000000000..3dd5af06d --- /dev/null +++ b/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..22af8d4f1 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['makedevice_142',['makeDevice',['../classroboticslab_1_1StreamingDeviceFactory.html#adbf5f06e6527225e7ef0a9aac38b8cb1',1,'roboticslab::StreamingDeviceFactory']]], + ['makereverse_143',['makeReverse',['../classroboticslab_1_1PoeExpression.html#aedaaf516912a8730fc20b0bc745f5e48',1,'roboticslab::PoeExpression']]], + ['makeusage_144',['makeUsage',['../classroboticslab_1_1RpcResponder.html#a5ed20afb6aeb0e547874b5ca32c3de21',1,'roboticslab::RpcResponder']]], + ['matrixexponential_145',['MatrixExponential',['../classroboticslab_1_1MatrixExponential.html#aab61d652294cf23c70950042c45143f6',1,'roboticslab::MatrixExponential::MatrixExponential()'],['../classroboticslab_1_1MatrixExponential.html',1,'roboticslab::MatrixExponential']]], + ['maxaccbelow_146',['maxAccBelow',['../classOrderThreeTraj.html#a43fe0dcb486e6b27d3a0e660374e1e89',1,'OrderThreeTraj']]], + ['maxvelbelow_147',['maxVelBelow',['../classOrderThreeTraj.html#a3e488422118ce9b573ce6fe410713ba7',1,'OrderThreeTraj']]], + ['motion_148',['motion',['../classroboticslab_1_1MatrixExponential.html#a25a925f192e6799524214b90035b37c9',1,'roboticslab::MatrixExponential']]], + ['movementstarttime_149',['movementStartTime',['../classroboticslab_1_1BasicCartesianControl.html#a59f40b2829b672250dacadaf9deb258c',1,'roboticslab::BasicCartesianControl']]], + ['movi_150',['movi',['../classroboticslab_1_1CartesianControlClient.html#a1caecd5a3020871433c1af26cdc9beb8',1,'roboticslab::CartesianControlClient::movi()'],['../classroboticslab_1_1ICartesianControl.html#a77d106dc9e9b37307f9777773fdc7779',1,'roboticslab::ICartesianControl::movi()'],['../classroboticslab_1_1BasicCartesianControl.html#a6a3de44fe7d31c145945f0a73599449d',1,'roboticslab::BasicCartesianControl::movi(const std::vector< double > &x) override']]], + ['movj_151',['movj',['../classroboticslab_1_1BasicCartesianControl.html#a8408762e79f422eaf78c4f11c34713a8',1,'roboticslab::BasicCartesianControl::movj()'],['../classroboticslab_1_1CartesianControlClient.html#a9c05fbe148fada6e73bd60ae20ab42dd',1,'roboticslab::CartesianControlClient::movj()'],['../classroboticslab_1_1ICartesianControl.html#adfc55dd3e5efeef72ff85a35642b3044',1,'roboticslab::ICartesianControl::movj()']]], + ['movl_152',['movl',['../classroboticslab_1_1BasicCartesianControl.html#a1a82a11f2deb2b06ed90e1f7b5ab667d',1,'roboticslab::BasicCartesianControl::movl()'],['../classroboticslab_1_1CartesianControlClient.html#a20a872a0fb74a1e391ee9f30e3076b8f',1,'roboticslab::CartesianControlClient::movl()'],['../classroboticslab_1_1ICartesianControl.html#aa03b60efa1128233a440073b6f4cd618',1,'roboticslab::ICartesianControl::movl()']]], + ['movv_153',['movv',['../classroboticslab_1_1BasicCartesianControl.html#ab25fc7effe19c43f5edfbc416ff2a622',1,'roboticslab::BasicCartesianControl::movv()'],['../classroboticslab_1_1CartesianControlClient.html#a909a971a530fd3d0dfc02d2af1bf7e40',1,'roboticslab::CartesianControlClient::movv()'],['../classroboticslab_1_1ICartesianControl.html#aaf5597273dfff261cc3e8cceb711d747',1,'roboticslab::ICartesianControl::movv()']]] +]; diff --git a/search/all_d.html b/search/all_d.html new file mode 100644 index 000000000..af7f2f0f5 --- /dev/null +++ b/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..93bb366fc --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['none_154',['NONE',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aab50339a10e1de285ac99d4c3990b8693',1,'roboticslab::KinRepresentation::NONE()'],['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3ab50339a10e1de285ac99d4c3990b8693',1,'roboticslab::KinRepresentation::NONE()']]], + ['normalizeangle_155',['normalizeAngle',['../group__ScrewTheoryLib.html#ga96418455c005860b8c95266aaa9af56c',1,'roboticslab']]] +]; diff --git a/search/all_e.html b/search/all_e.html new file mode 100644 index 000000000..e25df423a --- /dev/null +++ b/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..db68f172a --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['orderonetraj_156',['OrderOneTraj',['../classOrderOneTraj.html',1,'']]], + ['orderthreetraj_157',['OrderThreeTraj',['../classOrderThreeTraj.html',1,'']]], + ['orientation_158',['orientation',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a6d7bccc776e05aafe446be9f4e290cf5',1,'roboticslab::AsibotConfiguration::Pose']]], + ['orientation_5fsystem_159',['orientation_system',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3',1,'roboticslab::KinRepresentation']]], + ['originalchain_160',['originalChain',['../classroboticslab_1_1KdlSolver.html#ae8deb920d5eb83c0e4a254812c6a3152',1,'roboticslab::KdlSolver']]] +]; diff --git a/search/all_f.html b/search/all_f.html new file mode 100644 index 000000000..b23da6ce4 --- /dev/null +++ b/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 000000000..391cb7d2a --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['padenkahanone_161',['PadenKahanOne',['../classroboticslab_1_1PadenKahanOne.html#a278df14a56151a879daf07d165901223',1,'roboticslab::PadenKahanOne::PadenKahanOne()'],['../classroboticslab_1_1PadenKahanOne.html',1,'roboticslab::PadenKahanOne']]], + ['padenkahanthree_162',['PadenKahanThree',['../classroboticslab_1_1PadenKahanThree.html#aadab868cb45d01a3594fda1bfb6cb83a',1,'roboticslab::PadenKahanThree::PadenKahanThree()'],['../classroboticslab_1_1PadenKahanThree.html',1,'roboticslab::PadenKahanThree']]], + ['padenkahantwo_163',['PadenKahanTwo',['../classroboticslab_1_1PadenKahanTwo.html#a716530df1c33500819ceffd6f7227427',1,'roboticslab::PadenKahanTwo::PadenKahanTwo()'],['../classroboticslab_1_1PadenKahanTwo.html',1,'roboticslab::PadenKahanTwo']]], + ['pardosgotorfour_164',['PardosGotorFour',['../classroboticslab_1_1PardosGotorFour.html#a27eef5d8598452d725ba48ca64e9c61a',1,'roboticslab::PardosGotorFour::PardosGotorFour()'],['../classroboticslab_1_1PardosGotorFour.html',1,'roboticslab::PardosGotorFour']]], + ['pardosgotorone_165',['PardosGotorOne',['../classroboticslab_1_1PardosGotorOne.html#ada4e731a9d3b438ea96937b27751acec',1,'roboticslab::PardosGotorOne::PardosGotorOne()'],['../classroboticslab_1_1PardosGotorOne.html',1,'roboticslab::PardosGotorOne']]], + ['pardosgotorthree_166',['PardosGotorThree',['../classroboticslab_1_1PardosGotorThree.html#ae85565526e1e83ad85fb5c39989d226e',1,'roboticslab::PardosGotorThree::PardosGotorThree()'],['../classroboticslab_1_1PardosGotorThree.html',1,'roboticslab::PardosGotorThree']]], + ['pardosgotortwo_167',['PardosGotorTwo',['../classroboticslab_1_1PardosGotorTwo.html#a6e251323a3aac4280a7b6ffd8c5f54e7',1,'roboticslab::PardosGotorTwo::PardosGotorTwo()'],['../classroboticslab_1_1PardosGotorTwo.html',1,'roboticslab::PardosGotorTwo']]], + ['parseenumerator_168',['parseEnumerator',['../namespaceroboticslab_1_1KinRepresentation.html#ae14a97b14e4bb02c1988b7eb5499299d',1,'roboticslab::KinRepresentation::parseEnumerator(const std::string &str, angular_units *units, angular_units fallback=angular_units::RADIANS)'],['../namespaceroboticslab_1_1KinRepresentation.html#a6743860d7706318b23c5b5430fdf2d93',1,'roboticslab::KinRepresentation::parseEnumerator(const std::string &str, orientation_system *orient, orientation_system fallback=orientation_system::AXIS_ANGLE_SCALED)'],['../namespaceroboticslab_1_1KinRepresentation.html#a6a37bec312da8503398ba5960416d9c3',1,'roboticslab::KinRepresentation::parseEnumerator(const std::string &str, coordinate_system *coord, coordinate_system fallback=coordinate_system::CARTESIAN)']]], + ['poeexpression_169',['PoeExpression',['../classroboticslab_1_1PoeExpression.html#ad18affec4e1f86b0b4d95cfbe6ed29dd',1,'roboticslab::PoeExpression::PoeExpression()'],['../classroboticslab_1_1PoeExpression.html',1,'roboticslab::PoeExpression']]], + ['poeterm_170',['PoeTerm',['../structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm.html',1,'roboticslab::ScrewTheoryIkProblemBuilder']]], + ['polar_5fazimuth_171',['POLAR_AZIMUTH',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3ab630aa7478850e3532c87f8201e402b5',1,'roboticslab::KinRepresentation']]], + ['pose_172',['Pose',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a76cc3db3dfb5050a9a92d1bd8b7186f7',1,'roboticslab::AsibotConfiguration::Pose::Pose()'],['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html',1,'roboticslab::AsibotConfiguration::Pose']]], + ['posediff_173',['poseDiff',['../classroboticslab_1_1KdlSolver.html#a3d1529cf00311beda0eb8bb70e3c3ab7',1,'roboticslab::KdlSolver::poseDiff()'],['../classroboticslab_1_1KdlTreeSolver.html#a13d80bbbf0929a0399627667c7c39c95',1,'roboticslab::KdlTreeSolver::poseDiff()'],['../classroboticslab_1_1ICartesianSolver.html#ae57b44cd21218cac9a9981592b1790cb',1,'roboticslab::ICartesianSolver::poseDiff()'],['../classroboticslab_1_1AsibotSolver.html#aa565e06deca54c520061d6a64d67fa58',1,'roboticslab::AsibotSolver::poseDiff()']]], + ['processstoredbottle_174',['processStoredBottle',['../classroboticslab_1_1CentroidTransform.html#adcfe9b2f0512aa4d6af5363dd83bf036',1,'roboticslab::CentroidTransform']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 000000000..af8159ee6 --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..59ed11a9b --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['asibotconfiguration_299',['AsibotConfiguration',['../classroboticslab_1_1AsibotConfiguration.html',1,'roboticslab']]], + ['asibotconfigurationfactory_300',['AsibotConfigurationFactory',['../classroboticslab_1_1AsibotConfigurationFactory.html',1,'roboticslab']]], + ['asibotconfigurationleastoverallangulardisplacement_301',['AsibotConfigurationLeastOverallAngularDisplacement',['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html',1,'roboticslab']]], + ['asibotconfigurationleastoverallangulardisplacementfactory_302',['AsibotConfigurationLeastOverallAngularDisplacementFactory',['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html',1,'roboticslab']]], + ['asibotsolver_303',['AsibotSolver',['../classroboticslab_1_1AsibotSolver.html',1,'roboticslab']]], + ['asibotsolvertestfromfile_304',['AsibotSolverTestFromFile',['../classroboticslab_1_1test_1_1AsibotSolverTestFromFile.html',1,'roboticslab::test']]], + ['asibottcpframe_305',['AsibotTcpFrame',['../structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame.html',1,'roboticslab::AsibotSolver']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 000000000..576e91689 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..21998db37 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['basiccartesiancontrol_306',['BasicCartesianControl',['../classroboticslab_1_1BasicCartesianControl.html',1,'roboticslab']]], + ['basiccartesiancontroltest_307',['BasicCartesianControlTest',['../classroboticslab_1_1test_1_1BasicCartesianControlTest.html',1,'roboticslab::test']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 000000000..956405e5a --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..26ba05ffb --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['cartesiancontrolclient_308',['CartesianControlClient',['../classroboticslab_1_1CartesianControlClient.html',1,'roboticslab']]], + ['cartesiancontrolserver_309',['CartesianControlServer',['../classroboticslab_1_1CartesianControlServer.html',1,'roboticslab']]], + ['centroidtransform_310',['CentroidTransform',['../classroboticslab_1_1CentroidTransform.html',1,'roboticslab']]], + ['chainfksolverpos_5fst_311',['ChainFkSolverPos_ST',['../classroboticslab_1_1ChainFkSolverPos__ST.html',1,'roboticslab']]], + ['chainiksolverpos_5fid_312',['ChainIkSolverPos_ID',['../classroboticslab_1_1ChainIkSolverPos__ID.html',1,'roboticslab']]], + ['chainiksolverpos_5fst_313',['ChainIkSolverPos_ST',['../classroboticslab_1_1ChainIkSolverPos__ST.html',1,'roboticslab']]], + ['compare_5fsolutions_314',['compare_solutions',['../structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions.html',1,'roboticslab::test::ScrewTheoryTest']]], + ['configuration_315',['Configuration',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html',1,'roboticslab::ConfigurationSelector']]], + ['configurationselector_316',['ConfigurationSelector',['../classroboticslab_1_1ConfigurationSelector.html',1,'roboticslab']]], + ['configurationselectorfactory_317',['ConfigurationSelectorFactory',['../classroboticslab_1_1ConfigurationSelectorFactory.html',1,'roboticslab']]], + ['configurationselectorhumanoidgait_318',['ConfigurationSelectorHumanoidGait',['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html',1,'roboticslab']]], + ['configurationselectorhumanoidgaitfactory_319',['ConfigurationSelectorHumanoidGaitFactory',['../classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html',1,'roboticslab']]], + ['configurationselectorleastoverallangulardisplacement_320',['ConfigurationSelectorLeastOverallAngularDisplacement',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html',1,'roboticslab']]], + ['configurationselectorleastoverallangulardisplacementfactory_321',['ConfigurationSelectorLeastOverallAngularDisplacementFactory',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html',1,'roboticslab']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 000000000..d33343bc1 --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 000000000..8ba6cb086 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fkstreamresponder_322',['FkStreamResponder',['../classroboticslab_1_1FkStreamResponder.html',1,'roboticslab']]], + ['ftcompensation_323',['FtCompensation',['../classroboticslab_1_1FtCompensation.html',1,'roboticslab']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 000000000..8430b07fe --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 000000000..b0a859d42 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['grabberresponder_324',['GrabberResponder',['../classroboticslab_1_1GrabberResponder.html',1,'roboticslab']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 000000000..c2f1b767b --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..42c99dc1a --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['haardetectioncontroller_325',['HaarDetectionController',['../classroboticslab_1_1HaarDetectionController.html',1,'roboticslab']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 000000000..e39847ce8 --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 000000000..0af21c45f --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['icartesiancontrol_326',['ICartesianControl',['../classroboticslab_1_1ICartesianControl.html',1,'roboticslab']]], + ['icartesiansolver_327',['ICartesianSolver',['../classroboticslab_1_1ICartesianSolver.html',1,'roboticslab']]], + ['invaliddevice_328',['InvalidDevice',['../classroboticslab_1_1InvalidDevice.html',1,'roboticslab']]] +]; diff --git a/search/classes_7.html b/search/classes_7.html new file mode 100644 index 000000000..a2c4d1a39 --- /dev/null +++ b/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..058365f9c --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['kdlsolver_329',['KdlSolver',['../classroboticslab_1_1KdlSolver.html',1,'roboticslab']]], + ['kdlsolvertest_330',['KdlSolverTest',['../classroboticslab_1_1test_1_1KdlSolverTest.html',1,'roboticslab::test']]], + ['kdlsolvertestfromfile_331',['KdlSolverTestFromFile',['../classroboticslab_1_1test_1_1KdlSolverTestFromFile.html',1,'roboticslab::test']]], + ['kdltreesolver_332',['KdlTreeSolver',['../classroboticslab_1_1KdlTreeSolver.html',1,'roboticslab']]], + ['keyboardcontroller_333',['KeyboardController',['../classroboticslab_1_1KeyboardController.html',1,'roboticslab']]], + ['kinrepresentationtest_334',['KinRepresentationTest',['../classroboticslab_1_1test_1_1KinRepresentationTest.html',1,'roboticslab::test']]] +]; diff --git a/search/classes_8.html b/search/classes_8.html new file mode 100644 index 000000000..17003e480 --- /dev/null +++ b/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 000000000..970c97110 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['leapmotionsensordevice_335',['LeapMotionSensorDevice',['../classroboticslab_1_1LeapMotionSensorDevice.html',1,'roboticslab']]], + ['lineartrajectorythread_336',['LinearTrajectoryThread',['../classroboticslab_1_1LinearTrajectoryThread.html',1,'roboticslab']]] +]; diff --git a/search/classes_9.html b/search/classes_9.html new file mode 100644 index 000000000..b8afa8cba --- /dev/null +++ b/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..2d4514a6c --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['matrixexponential_337',['MatrixExponential',['../classroboticslab_1_1MatrixExponential.html',1,'roboticslab']]] +]; diff --git a/search/classes_a.html b/search/classes_a.html new file mode 100644 index 000000000..6788af270 --- /dev/null +++ b/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..15a491563 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['orderonetraj_338',['OrderOneTraj',['../classOrderOneTraj.html',1,'']]], + ['orderthreetraj_339',['OrderThreeTraj',['../classOrderThreeTraj.html',1,'']]] +]; diff --git a/search/classes_b.html b/search/classes_b.html new file mode 100644 index 000000000..3fcb49858 --- /dev/null +++ b/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..520d6fdda --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['padenkahanone_340',['PadenKahanOne',['../classroboticslab_1_1PadenKahanOne.html',1,'roboticslab']]], + ['padenkahanthree_341',['PadenKahanThree',['../classroboticslab_1_1PadenKahanThree.html',1,'roboticslab']]], + ['padenkahantwo_342',['PadenKahanTwo',['../classroboticslab_1_1PadenKahanTwo.html',1,'roboticslab']]], + ['pardosgotorfour_343',['PardosGotorFour',['../classroboticslab_1_1PardosGotorFour.html',1,'roboticslab']]], + ['pardosgotorone_344',['PardosGotorOne',['../classroboticslab_1_1PardosGotorOne.html',1,'roboticslab']]], + ['pardosgotorthree_345',['PardosGotorThree',['../classroboticslab_1_1PardosGotorThree.html',1,'roboticslab']]], + ['pardosgotortwo_346',['PardosGotorTwo',['../classroboticslab_1_1PardosGotorTwo.html',1,'roboticslab']]], + ['poeexpression_347',['PoeExpression',['../classroboticslab_1_1PoeExpression.html',1,'roboticslab']]], + ['poeterm_348',['PoeTerm',['../structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm.html',1,'roboticslab::ScrewTheoryIkProblemBuilder']]], + ['pose_349',['Pose',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html',1,'roboticslab::AsibotConfiguration']]] +]; diff --git a/search/classes_c.html b/search/classes_c.html new file mode 100644 index 000000000..2f7b1f3da --- /dev/null +++ b/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 000000000..2c37f3d65 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rpcresponder_350',['RpcResponder',['../classroboticslab_1_1RpcResponder.html',1,'roboticslab']]], + ['rpctransformresponder_351',['RpcTransformResponder',['../classroboticslab_1_1RpcTransformResponder.html',1,'roboticslab']]] +]; diff --git a/search/classes_d.html b/search/classes_d.html new file mode 100644 index 000000000..f9011e70f --- /dev/null +++ b/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 000000000..f39e04b47 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['screwtheoryikproblem_352',['ScrewTheoryIkProblem',['../classroboticslab_1_1ScrewTheoryIkProblem.html',1,'roboticslab']]], + ['screwtheoryikproblembuilder_353',['ScrewTheoryIkProblemBuilder',['../classroboticslab_1_1ScrewTheoryIkProblemBuilder.html',1,'roboticslab']]], + ['screwtheoryiksubproblem_354',['ScrewTheoryIkSubproblem',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html',1,'roboticslab']]], + ['screwtheorytest_355',['ScrewTheoryTest',['../classroboticslab_1_1test_1_1ScrewTheoryTest.html',1,'roboticslab::test']]], + ['spnavsensordevice_356',['SpnavSensorDevice',['../classroboticslab_1_1SpnavSensorDevice.html',1,'roboticslab']]], + ['statewatcher_357',['StateWatcher',['../classroboticslab_1_1BasicCartesianControl_1_1StateWatcher.html',1,'roboticslab::BasicCartesianControl']]], + ['streamingdevice_358',['StreamingDevice',['../classroboticslab_1_1StreamingDevice.html',1,'roboticslab']]], + ['streamingdevicecontroller_359',['StreamingDeviceController',['../classroboticslab_1_1StreamingDeviceController.html',1,'roboticslab']]], + ['streamingdevicefactory_360',['StreamingDeviceFactory',['../classroboticslab_1_1StreamingDeviceFactory.html',1,'roboticslab']]], + ['streamresponder_361',['StreamResponder',['../classroboticslab_1_1StreamResponder.html',1,'roboticslab']]] +]; diff --git a/search/classes_e.html b/search/classes_e.html new file mode 100644 index 000000000..bb33dcfa5 --- /dev/null +++ b/search/classes_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..819209f8e --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['traj_362',['Traj',['../classTraj.html',1,'']]], + ['trajectorythread_363',['TrajectoryThread',['../classTrajectoryThread.html',1,'']]] +]; diff --git a/search/classes_f.html b/search/classes_f.html new file mode 100644 index 000000000..d1b67daa6 --- /dev/null +++ b/search/classes_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..29905065a --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wiimotesensordevice_364',['WiimoteSensorDevice',['../classroboticslab_1_1WiimoteSensorDevice.html',1,'roboticslab']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 000000000..a933eea1a --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/enums_0.html b/search/enums_0.html new file mode 100644 index 000000000..141fff57b --- /dev/null +++ b/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..ec2335b3a --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['angular_5funits_583',['angular_units',['../namespaceroboticslab_1_1KinRepresentation.html#abd99bdf0387bd4b86ff0cde410071fc1',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enums_1.html b/search/enums_1.html new file mode 100644 index 000000000..d29f3b16d --- /dev/null +++ b/search/enums_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..7ee48c586 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['coordinate_5fsystem_584',['coordinate_system',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397a',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enums_2.html b/search/enums_2.html new file mode 100644 index 000000000..59aadf2cb --- /dev/null +++ b/search/enums_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 000000000..b9506ca8a --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['elbow_585',['elbow',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#ad3142dda6dc876c8b1e5b6616e730d3a',1,'roboticslab::AsibotConfiguration::Pose']]] +]; diff --git a/search/enums_3.html b/search/enums_3.html new file mode 100644 index 000000000..87c174430 --- /dev/null +++ b/search/enums_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 000000000..16ebc43fd --- /dev/null +++ b/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['motion_586',['motion',['../classroboticslab_1_1MatrixExponential.html#a25a925f192e6799524214b90035b37c9',1,'roboticslab::MatrixExponential']]] +]; diff --git a/search/enums_4.html b/search/enums_4.html new file mode 100644 index 000000000..90dda139c --- /dev/null +++ b/search/enums_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_4.js b/search/enums_4.js new file mode 100644 index 000000000..70fd5577b --- /dev/null +++ b/search/enums_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['orientation_587',['orientation',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a6d7bccc776e05aafe446be9f4e290cf5',1,'roboticslab::AsibotConfiguration::Pose']]], + ['orientation_5fsystem_588',['orientation_system',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enums_5.html b/search/enums_5.html new file mode 100644 index 000000000..c57b88590 --- /dev/null +++ b/search/enums_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_5.js b/search/enums_5.js new file mode 100644 index 000000000..b12d935c9 --- /dev/null +++ b/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reference_5fframe_589',['reference_frame',['../classroboticslab_1_1ICartesianSolver.html#addbfbdd708eb1a77a8b5c96ac5313211',1,'roboticslab::ICartesianSolver']]] +]; diff --git a/search/enumvalues_0.html b/search/enumvalues_0.html new file mode 100644 index 000000000..0d131d95b --- /dev/null +++ b/search/enumvalues_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 000000000..d8350b894 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['axis_5fangle_590',['AXIS_ANGLE',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a5d81c471f0748c0aa213b648f9d8202d',1,'roboticslab::KinRepresentation']]], + ['axis_5fangle_5fscaled_591',['AXIS_ANGLE_SCALED',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3af8dc198991524cf747f3b4d3c8c05cac',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_1.html b/search/enumvalues_1.html new file mode 100644 index 000000000..cd9187ab3 --- /dev/null +++ b/search/enumvalues_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 000000000..4345208f1 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['base_5fframe_592',['BASE_FRAME',['../classroboticslab_1_1ICartesianSolver.html#addbfbdd708eb1a77a8b5c96ac5313211a98689bb484e4e1f8110323a5009258ef',1,'roboticslab::ICartesianSolver']]] +]; diff --git a/search/enumvalues_2.html b/search/enumvalues_2.html new file mode 100644 index 000000000..2b95d9204 --- /dev/null +++ b/search/enumvalues_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 000000000..dd28afac0 --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['cartesian_593',['CARTESIAN',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aac02304094f2866a43251b12946a9a21b',1,'roboticslab::KinRepresentation']]], + ['cylindrical_594',['CYLINDRICAL',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aaf6840fd287b44b1616267bd19305909a',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_3.html b/search/enumvalues_3.html new file mode 100644 index 000000000..bc0ac8a97 --- /dev/null +++ b/search/enumvalues_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 000000000..313caa2f5 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['degrees_595',['DEGREES',['../namespaceroboticslab_1_1KinRepresentation.html#abd99bdf0387bd4b86ff0cde410071fc1afee20551b6d06fd83aa56a486e557307',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_4.html b/search/enumvalues_4.html new file mode 100644 index 000000000..ef94dd8d7 --- /dev/null +++ b/search/enumvalues_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 000000000..53d003510 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['euler_5fyz_596',['EULER_YZ',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a5cfe2d6a065e7207d421272b391f88da',1,'roboticslab::KinRepresentation']]], + ['euler_5fzyz_597',['EULER_ZYZ',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a68b156f567f219fed0f577cee1d03146',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_5.html b/search/enumvalues_5.html new file mode 100644 index 000000000..1c2e2f33d --- /dev/null +++ b/search/enumvalues_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 000000000..5866c7043 --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['none_598',['NONE',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aab50339a10e1de285ac99d4c3990b8693',1,'roboticslab::KinRepresentation::NONE()'],['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3ab50339a10e1de285ac99d4c3990b8693',1,'roboticslab::KinRepresentation::NONE()']]] +]; diff --git a/search/enumvalues_6.html b/search/enumvalues_6.html new file mode 100644 index 000000000..f985df91d --- /dev/null +++ b/search/enumvalues_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 000000000..269a70198 --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['polar_5fazimuth_599',['POLAR_AZIMUTH',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3ab630aa7478850e3532c87f8201e402b5',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_7.html b/search/enumvalues_7.html new file mode 100644 index 000000000..7fdf663dd --- /dev/null +++ b/search/enumvalues_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 000000000..b96431bb0 --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['radians_600',['RADIANS',['../namespaceroboticslab_1_1KinRepresentation.html#abd99bdf0387bd4b86ff0cde410071fc1aea3c82298fac1c706a4076b4aff53015',1,'roboticslab::KinRepresentation']]], + ['rotation_601',['ROTATION',['../classroboticslab_1_1MatrixExponential.html#a25a925f192e6799524214b90035b37c9aeb1d102970576fa5d0c7f4d631e73e46',1,'roboticslab::MatrixExponential']]], + ['rpy_602',['RPY',['../namespaceroboticslab_1_1KinRepresentation.html#a79948144e92d1719ce8f5830a6c4a8c3a00cfec4ee1a58af8026a5f4baa2d5c3f',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_8.html b/search/enumvalues_8.html new file mode 100644 index 000000000..674ccda69 --- /dev/null +++ b/search/enumvalues_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js new file mode 100644 index 000000000..79d99c938 --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['spherical_603',['SPHERICAL',['../namespaceroboticslab_1_1KinRepresentation.html#a099613684bdbdfc371186ed7d13c397aa7f7d7e3a21bf7decf99d6fd26848772d',1,'roboticslab::KinRepresentation']]] +]; diff --git a/search/enumvalues_9.html b/search/enumvalues_9.html new file mode 100644 index 000000000..60f15ee38 --- /dev/null +++ b/search/enumvalues_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 000000000..0f24fcae8 --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tcp_5fframe_604',['TCP_FRAME',['../classroboticslab_1_1ICartesianSolver.html#addbfbdd708eb1a77a8b5c96ac5313211a8ca5c1a477b9d5da2723a4eb9b79f8f7',1,'roboticslab::ICartesianSolver']]], + ['translation_605',['TRANSLATION',['../classroboticslab_1_1MatrixExponential.html#a25a925f192e6799524214b90035b37c9a108565bfe62228108af5612f5b69e7f8',1,'roboticslab::MatrixExponential']]] +]; diff --git a/search/files_0.html b/search/files_0.html new file mode 100644 index 000000000..9498842a6 --- /dev/null +++ b/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 000000000..bd062b04e --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['icartesiancontrol_2eh_369',['ICartesianControl.h',['../ICartesianControl_8h.html',1,'']]], + ['icartesiansolver_2eh_370',['ICartesianSolver.h',['../ICartesianSolver_8h.html',1,'']]] +]; diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 000000000..eb4c5014c --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..85cb262bc --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['acceptbottle_371',['acceptBottle',['../classroboticslab_1_1CentroidTransform.html#a742ffb1a068b31849f561b4fb48c4856',1,'roboticslab::CentroidTransform']]], + ['acquiredata_372',['acquireData',['../classroboticslab_1_1LeapMotionSensorDevice.html#aeabdc3895252b9a7990e006b2d273473',1,'roboticslab::LeapMotionSensorDevice::acquireData()'],['../classroboticslab_1_1SpnavSensorDevice.html#a05c4b0193a0e23177473da979973948c',1,'roboticslab::SpnavSensorDevice::acquireData()'],['../classroboticslab_1_1StreamingDevice.html#a1613bb573788d68dc9f494517e44c24c',1,'roboticslab::StreamingDevice::acquireData()'],['../classroboticslab_1_1InvalidDevice.html#a7975f9d9d88c39df99bbe951e382f255',1,'roboticslab::InvalidDevice::acquireData()'],['../classroboticslab_1_1WiimoteSensorDevice.html#af348b87aabce85311917450ec9066ef8',1,'roboticslab::WiimoteSensorDevice::acquireData()']]], + ['acquireinterfaces_373',['acquireInterfaces',['../classroboticslab_1_1LeapMotionSensorDevice.html#ac19eb7eda129deafae749606d106bbbe',1,'roboticslab::LeapMotionSensorDevice::acquireInterfaces()'],['../classroboticslab_1_1SpnavSensorDevice.html#a8247d8478522e56eada24bbabaa98dfd',1,'roboticslab::SpnavSensorDevice::acquireInterfaces()'],['../classroboticslab_1_1StreamingDevice.html#a67b266a928db0dd303a8cbdfa9ee759d',1,'roboticslab::StreamingDevice::acquireInterfaces()'],['../classroboticslab_1_1InvalidDevice.html#a2a69da2e256cfbc3f0b97603e6c465b1',1,'roboticslab::InvalidDevice::acquireInterfaces()'],['../classroboticslab_1_1WiimoteSensorDevice.html#aa92e30f9099151bcbb4a1302bc946c03',1,'roboticslab::WiimoteSensorDevice::acquireInterfaces()']]], + ['act_374',['act',['../classroboticslab_1_1ICartesianControl.html#a4f8fd2a8ea2bbf7f806ac9f430ddf106',1,'roboticslab::ICartesianControl::act()'],['../classroboticslab_1_1CartesianControlClient.html#ad96f1731c4ff4684459e379b025fd17c',1,'roboticslab::CartesianControlClient::act()'],['../classroboticslab_1_1BasicCartesianControl.html#a13c10f3319b96e8917af44d9702d4f60',1,'roboticslab::BasicCartesianControl::act()']]], + ['append_375',['append',['../classroboticslab_1_1PoeExpression.html#aa77dd7536b9a39f43e8f7b8c26dceb46',1,'roboticslab::PoeExpression::append(const MatrixExponential &exp, const KDL::Frame &H_new_old=KDL::Frame::Identity())'],['../classroboticslab_1_1PoeExpression.html#ac0aa19974aa240fab26d35d5bf3a59eb',1,'roboticslab::PoeExpression::append(const PoeExpression &poe, const KDL::Frame &H_new_old=KDL::Frame::Identity())']]], + ['appendlink_376',['appendLink',['../classroboticslab_1_1AsibotSolver.html#af1112202beb401a386fed38016360783',1,'roboticslab::AsibotSolver::appendLink()'],['../classroboticslab_1_1ICartesianSolver.html#a1eb540a0765aa24dea0bd50e6ed3dbbf',1,'roboticslab::ICartesianSolver::appendLink()'],['../classroboticslab_1_1KdlSolver.html#afa91b7f388d2bc2a76214247deb2d136',1,'roboticslab::KdlSolver::appendLink()'],['../classroboticslab_1_1KdlTreeSolver.html#ac4b5a5c992b1f006b6bcbe339836420f',1,'roboticslab::KdlTreeSolver::appendLink()']]], + ['applyconstraints_377',['applyConstraints',['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html#a704ac1da52c51d6c1308fcc954f8de0f',1,'roboticslab::ConfigurationSelectorHumanoidGait']]], + ['asframe_378',['asFrame',['../classroboticslab_1_1MatrixExponential.html#a2ce5bb0ca42820b120b212d66bab6e79',1,'roboticslab::MatrixExponential']]], + ['asibotconfiguration_379',['AsibotConfiguration',['../classroboticslab_1_1AsibotConfiguration.html#a94a9fc7d97b254ff8e98361763c7fd38',1,'roboticslab::AsibotConfiguration']]], + ['asibotconfigurationfactory_380',['AsibotConfigurationFactory',['../classroboticslab_1_1AsibotConfigurationFactory.html#a50c48cc23e8a61ecb8b3ab67186a5344',1,'roboticslab::AsibotConfigurationFactory']]], + ['asibotconfigurationleastoverallangulardisplacement_381',['AsibotConfigurationLeastOverallAngularDisplacement',['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html#a596e64bd6421c25cfa8b392a32fcd6fa',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement']]], + ['asibotconfigurationleastoverallangulardisplacementfactory_382',['AsibotConfigurationLeastOverallAngularDisplacementFactory',['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html#afb68b16efe06544cd8c35295dc5dcd2b',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory']]], + ['axisangletoh_383',['axisAngleToH',['../namespaceroboticslab.html#a22b08a4e2ed2f99d50b5832157a1121d',1,'roboticslab']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 000000000..ef4088b89 --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..245a53b5e --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['build_384',['build',['../classroboticslab_1_1ScrewTheoryIkProblemBuilder.html#ac175d241db0a10ea62cdbe850cd6a8ce',1,'roboticslab::ScrewTheoryIkProblemBuilder']]] +]; diff --git a/search/functions_10.html b/search/functions_10.html new file mode 100644 index 000000000..1bdc12572 --- /dev/null +++ b/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..96b45f3f8 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['tochain_499',['toChain',['../classroboticslab_1_1PoeExpression.html#a06e7df68730ae620ff531ff9224b8150',1,'roboticslab::PoeExpression']]], + ['todeg_500',['toDeg',['../namespaceroboticslab.html#a3df65ed44413f1a25a977e405cf5cdce',1,'roboticslab']]], + ['tool_501',['tool',['../classroboticslab_1_1BasicCartesianControl.html#a32260acd5b9734c8dc74ed8bbba864c5',1,'roboticslab::BasicCartesianControl::tool()'],['../classroboticslab_1_1CartesianControlClient.html#a11b7a94d05a53027c45469f4b5336810',1,'roboticslab::CartesianControlClient::tool()'],['../classroboticslab_1_1ICartesianControl.html#a541281403910467f0775c83918b67b9f',1,'roboticslab::ICartesianControl::tool()']]], + ['torad_502',['toRad',['../namespaceroboticslab.html#adf4f3545dd621683ac983b500981fc3d',1,'roboticslab']]], + ['tostring_503',['toString',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#af41cd145a17e2d61bc6f341d4bc9c713',1,'roboticslab::AsibotConfiguration::Pose']]], + ['transformdata_504',['transformData',['../classroboticslab_1_1LeapMotionSensorDevice.html#a6b44cc6f96ddca20df502e591f50d7e9',1,'roboticslab::LeapMotionSensorDevice::transformData()'],['../classroboticslab_1_1SpnavSensorDevice.html#a4b40d23baedfe5f61a934dd25be34555',1,'roboticslab::SpnavSensorDevice::transformData()'],['../classroboticslab_1_1StreamingDevice.html#a0cf867c29eaee727dd865a2dba2f9a0b',1,'roboticslab::StreamingDevice::transformData()'],['../classroboticslab_1_1WiimoteSensorDevice.html#a99801413610bafff25f2a310d20f26c8',1,'roboticslab::WiimoteSensorDevice::transformData()']]], + ['twist_505',['twist',['../classroboticslab_1_1BasicCartesianControl.html#a836cb4b4195e959f8510458d48c4894f',1,'roboticslab::BasicCartesianControl::twist()'],['../classroboticslab_1_1CartesianControlClient.html#a5e55bb6f83000a5f3b007d6bb4637dd0',1,'roboticslab::CartesianControlClient::twist()'],['../classroboticslab_1_1ICartesianControl.html#aac96088767083ca01d6f47a45f48e9f2',1,'roboticslab::ICartesianControl::twist()']]], + ['twisttovector_506',['twistToVector',['../namespaceroboticslab_1_1KdlVectorConverter.html#abd170f3386a74e5b5ee1aacc10a9317c',1,'roboticslab::KdlVectorConverter']]] +]; diff --git a/search/functions_11.html b/search/functions_11.html new file mode 100644 index 000000000..188076ef2 --- /dev/null +++ b/search/functions_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..9263332ec --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['updateinternaldatastructures_507',['updateInternalDataStructures',['../classroboticslab_1_1ChainFkSolverPos__ST.html#a221a38899c9d870167e6aba3d66b6d07',1,'roboticslab::ChainFkSolverPos_ST::updateInternalDataStructures()'],['../classroboticslab_1_1ChainIkSolverPos__ID.html#a2c3268078b0e98c404d73315e033d304',1,'roboticslab::ChainIkSolverPos_ID::updateInternalDataStructures()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#a82c44a73bf94294d78ad030bb701a231',1,'roboticslab::ChainIkSolverPos_ST::updateInternalDataStructures()']]] +]; diff --git a/search/functions_12.html b/search/functions_12.html new file mode 100644 index 000000000..eb29d8f9a --- /dev/null +++ b/search/functions_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 000000000..af0c46372 --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['validate_508',['validate',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a3d593554ba6a10b2d9b3e8cad2976316',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['vectorpow2_509',['vectorPow2',['../group__ScrewTheoryLib.html#ga102221bc75f54f75a8dcbda20fc2bc0c',1,'roboticslab']]], + ['vectortoframe_510',['vectorToFrame',['../namespaceroboticslab_1_1KdlVectorConverter.html#a423a5ebb1cbca3d2fa388c865373c587',1,'roboticslab::KdlVectorConverter']]], + ['vectortotwist_511',['vectorToTwist',['../namespaceroboticslab_1_1KdlVectorConverter.html#a7c7152d456fe9cb8156770bca734f1a8',1,'roboticslab::KdlVectorConverter']]], + ['vectortowrench_512',['vectorToWrench',['../namespaceroboticslab_1_1KdlVectorConverter.html#a966f687eb47c56aa2dedd9a56de74380',1,'roboticslab::KdlVectorConverter']]] +]; diff --git a/search/functions_13.html b/search/functions_13.html new file mode 100644 index 000000000..3da2ea69c --- /dev/null +++ b/search/functions_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..bd32234be --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['wait_513',['wait',['../classroboticslab_1_1BasicCartesianControl.html#a3a17a840b0aacce31a1817be22c07fce',1,'roboticslab::BasicCartesianControl::wait()'],['../classroboticslab_1_1CartesianControlClient.html#af6b75bbbd6f89a1336a1c1f406a943e3',1,'roboticslab::CartesianControlClient::wait()'],['../classroboticslab_1_1ICartesianControl.html#aa93a722ac60a804d8d0c5b95604c13b4',1,'roboticslab::ICartesianControl::wait()']]], + ['wiimotesensordevice_514',['WiimoteSensorDevice',['../classroboticslab_1_1WiimoteSensorDevice.html#a8148644a0ed7db1d07507d4c8c12ae22',1,'roboticslab::WiimoteSensorDevice']]], + ['wrench_515',['wrench',['../classroboticslab_1_1BasicCartesianControl.html#a1b47a5f17b5df420e16627726de76b9d',1,'roboticslab::BasicCartesianControl::wrench()'],['../classroboticslab_1_1CartesianControlClient.html#a866b07377768cdd748802d8045e31b37',1,'roboticslab::CartesianControlClient::wrench()'],['../classroboticslab_1_1ICartesianControl.html#ae7fe2a1b7a3c7d0281ea90bdfb8722fd',1,'roboticslab::ICartesianControl::wrench()']]], + ['wrenchtovector_516',['wrenchToVector',['../namespaceroboticslab_1_1KdlVectorConverter.html#af06f85fefeb26784a8302ce977863a61',1,'roboticslab::KdlVectorConverter']]] +]; diff --git a/search/functions_14.html b/search/functions_14.html new file mode 100644 index 000000000..29237b44c --- /dev/null +++ b/search/functions_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_14.js b/search/functions_14.js new file mode 100644 index 000000000..d21917f11 --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xupdateh_517',['xUpdateH',['../namespaceroboticslab.html#a40a94b80ea94690ef4cd5adfcdec8a65',1,'roboticslab']]] +]; diff --git a/search/functions_15.html b/search/functions_15.html new file mode 100644 index 000000000..6d5decd70 --- /dev/null +++ b/search/functions_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_15.js b/search/functions_15.js new file mode 100644 index 000000000..e53814e23 --- /dev/null +++ b/search/functions_15.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_7easibotconfiguration_518',['~AsibotConfiguration',['../classroboticslab_1_1AsibotConfiguration.html#a04530a29a893239e0cd56284ceb62df4',1,'roboticslab::AsibotConfiguration']]], + ['_7echainiksolverpos_5fst_519',['~ChainIkSolverPos_ST',['../classroboticslab_1_1ChainIkSolverPos__ST.html#aae89ea0f571f2796233f14a17ba26ff3',1,'roboticslab::ChainIkSolverPos_ST']]], + ['_7econfigurationselector_520',['~ConfigurationSelector',['../classroboticslab_1_1ConfigurationSelector.html#a9effe44b46c35cb824c33d04008a39ac',1,'roboticslab::ConfigurationSelector']]], + ['_7eicartesiancontrol_521',['~ICartesianControl',['../classroboticslab_1_1ICartesianControl.html#a0793d83f5afacddc111a33e15d48f890',1,'roboticslab::ICartesianControl']]], + ['_7eicartesiansolver_522',['~ICartesianSolver',['../classroboticslab_1_1ICartesianSolver.html#a6923898386e1a777d92abc39537933a7',1,'roboticslab::ICartesianSolver']]], + ['_7escrewtheoryikproblem_523',['~ScrewTheoryIkProblem',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a60ad47d68b43796cbc31fac0b49c13de',1,'roboticslab::ScrewTheoryIkProblem']]], + ['_7escrewtheoryiksubproblem_524',['~ScrewTheoryIkSubproblem',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a9f705300e8d60941ce0986933f8a9417',1,'roboticslab::ScrewTheoryIkSubproblem']]], + ['_7estreamingdevice_525',['~StreamingDevice',['../classroboticslab_1_1StreamingDevice.html#a9232b61aaa461360bab8d699629730b4',1,'roboticslab::StreamingDevice']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 000000000..ca5aa10e6 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..f402d6f6b --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['carttojnt_385',['CartToJnt',['../classroboticslab_1_1ChainIkSolverPos__ST.html#a8dc08e4f9cfb81f4dc2bf1683623d0fb',1,'roboticslab::ChainIkSolverPos_ST::CartToJnt()'],['../classroboticslab_1_1ChainIkSolverPos__ID.html#adf57ebfd38c5e155230d66100c98fe32',1,'roboticslab::ChainIkSolverPos_ID::CartToJnt()']]], + ['centroidtransform_386',['CentroidTransform',['../classroboticslab_1_1CentroidTransform.html#aa7ec227473fdbeb23bc948c80ae7d071',1,'roboticslab::CentroidTransform']]], + ['chainiksolverpos_5fid_387',['ChainIkSolverPos_ID',['../classroboticslab_1_1ChainIkSolverPos__ID.html#acbd429a31df64286d293aaccc6a9c217',1,'roboticslab::ChainIkSolverPos_ID']]], + ['changebase_388',['changeBase',['../classroboticslab_1_1MatrixExponential.html#a7798b517259b49658aadabf0851ad87e',1,'roboticslab::MatrixExponential']]], + ['changebaseframe_389',['changeBaseFrame',['../classroboticslab_1_1PoeExpression.html#a60d08a056b9110f0d728a4c15857067b',1,'roboticslab::PoeExpression']]], + ['changeorigin_390',['changeOrigin',['../classroboticslab_1_1AsibotSolver.html#ac8544de053f20b49f9cf50ae09eb4cf6',1,'roboticslab::AsibotSolver::changeOrigin()'],['../classroboticslab_1_1ICartesianSolver.html#a59efe59ea330504e2ed943e81309628f',1,'roboticslab::ICartesianSolver::changeOrigin()'],['../classroboticslab_1_1KdlSolver.html#a6014d78a0cc9ceffe6f167bcf759add8',1,'roboticslab::KdlSolver::changeOrigin()'],['../classroboticslab_1_1KdlTreeSolver.html#ade6710af704657b8f6c25590025a14a4',1,'roboticslab::KdlTreeSolver::changeOrigin()']]], + ['changetoolframe_391',['changeToolFrame',['../classroboticslab_1_1PoeExpression.html#afa2408ed0d4e9ffb58c257295362019d',1,'roboticslab::PoeExpression']]], + ['checkjointsinlimits_392',['checkJointsInLimits',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a594d5843f08f2646a57b266c0b4ef2cf',1,'roboticslab::AsibotConfiguration::Pose']]], + ['clonewithbase_393',['cloneWithBase',['../classroboticslab_1_1MatrixExponential.html#a2272da42bd2cb5b3eae6ddefd7242e6a',1,'roboticslab::MatrixExponential']]], + ['configuration_394',['Configuration',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a3bc0d7d291c503bd03e8f137a83c0c34',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['configurationselector_395',['ConfigurationSelector',['../classroboticslab_1_1ConfigurationSelector.html#a0b6087f8f39859f47c4f903ab8edb7ff',1,'roboticslab::ConfigurationSelector']]], + ['configurationselectorfactory_396',['ConfigurationSelectorFactory',['../classroboticslab_1_1ConfigurationSelectorFactory.html#a6e3086c7296075e71bab027cc8b68ac1',1,'roboticslab::ConfigurationSelectorFactory']]], + ['configurationselectorhumanoidgait_397',['ConfigurationSelectorHumanoidGait',['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html#afcb59d591b4935da51c0243492dd3fc3',1,'roboticslab::ConfigurationSelectorHumanoidGait']]], + ['configurationselectorhumanoidgaitfactory_398',['ConfigurationSelectorHumanoidGaitFactory',['../classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html#a9d30646f048b3d8608be3d83e45baa72',1,'roboticslab::ConfigurationSelectorHumanoidGaitFactory']]], + ['configurationselectorleastoverallangulardisplacement_399',['ConfigurationSelectorLeastOverallAngularDisplacement',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html#a876d541f9db87462dd975f833cafdf15',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement']]], + ['configurationselectorleastoverallangulardisplacementfactory_400',['ConfigurationSelectorLeastOverallAngularDisplacementFactory',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html#af9429faf34e52f73c2775df1d7a92e08',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory']]], + ['configure_401',['configure',['../classroboticslab_1_1ConfigurationSelector.html#ac4eec640bdedd39172c2623865665041',1,'roboticslab::ConfigurationSelector::configure()'],['../classroboticslab_1_1AsibotConfiguration.html#aa510bb099625935c49ea8edcb1b25ba5',1,'roboticslab::AsibotConfiguration::configure()'],['../classOrderThreeTraj.html#af351a5b610d2185289f898864e000095',1,'OrderThreeTraj::configure(const double xi, const double xf, const double _T)'],['../classOrderThreeTraj.html#ac963631faaee834c43d3892bb812a5c1',1,'OrderThreeTraj::configure(const double xi, const double xf, const double xdoti, const double xdotf, const double _T)']]], + ['configurefixedaxes_402',['configureFixedAxes',['../classroboticslab_1_1StreamingDevice.html#acb732c75c786e274e1bd0d9a6f942804',1,'roboticslab::StreamingDevice']]], + ['create_403',['create',['../classroboticslab_1_1ConfigurationSelectorFactory.html#ac9bc212f7e557de03f23797258d9f97e',1,'roboticslab::ConfigurationSelectorFactory::create()'],['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacementFactory.html#a82372a790a37f4f9a852e802c670e7b4',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacementFactory::create()'],['../classroboticslab_1_1ConfigurationSelectorHumanoidGaitFactory.html#affc1e25eb0f147bce62953e4b407a19c',1,'roboticslab::ConfigurationSelectorHumanoidGaitFactory::create()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#a1a4283bfafcb0d2bc57121c4b363f10a',1,'roboticslab::ScrewTheoryIkProblem::create()'],['../classroboticslab_1_1AsibotConfigurationFactory.html#a6556fc6567fc15e9d3dbe095195dd38c',1,'roboticslab::AsibotConfigurationFactory::create()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacementFactory.html#a2ce53992faaad7a69e1fe22cd5c81754',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacementFactory::create()'],['../classroboticslab_1_1ChainFkSolverPos__ST.html#ab12dcb13477d3145cb8c950200718c78',1,'roboticslab::ChainFkSolverPos_ST::create()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#a0d3861e0844d8ed8cf86cb5b6e829066',1,'roboticslab::ChainIkSolverPos_ST::create()']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 000000000..d79f55b8e --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 000000000..aba388e94 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['decodeacceleration_404',['decodeAcceleration',['../namespaceroboticslab_1_1KinRepresentation.html#ae21918323ff365dcbf1d443d06f0f6b4',1,'roboticslab::KinRepresentation']]], + ['decodepose_405',['decodePose',['../namespaceroboticslab_1_1KinRepresentation.html#ae1ff45b7a2b1a2848ff76f9c22e88ba1',1,'roboticslab::KinRepresentation']]], + ['decodevelocity_406',['decodeVelocity',['../namespaceroboticslab_1_1KinRepresentation.html#a92ffc77823212389627275c6d9533a98',1,'roboticslab::KinRepresentation']]], + ['degtorad_407',['degToRad',['../namespaceroboticslab_1_1KinRepresentation.html#a6b8e0208a000b271a53bf5d351615344',1,'roboticslab::KinRepresentation']]], + ['describe_408',['describe',['../classroboticslab_1_1PadenKahanOne.html#ac7a6878f90b4281e71ddf671b7064e5c',1,'roboticslab::PadenKahanOne::describe()'],['../classroboticslab_1_1PardosGotorFour.html#ad1f9a049ed11faf9a88d74bd47f17617',1,'roboticslab::PardosGotorFour::describe()'],['../classroboticslab_1_1PardosGotorThree.html#a28640f5c9e15d8f4dc11f9a9966d8c8e',1,'roboticslab::PardosGotorThree::describe()'],['../classroboticslab_1_1PardosGotorTwo.html#aa42fecaa7064639284d74dd4c9f87638',1,'roboticslab::PardosGotorTwo::describe()'],['../classroboticslab_1_1PardosGotorOne.html#ae8ec6fea2bdacda59f26be4810b0c868',1,'roboticslab::PardosGotorOne::describe()'],['../classroboticslab_1_1PadenKahanThree.html#a3a9867170102a8af264e0d9c83cfa323',1,'roboticslab::PadenKahanThree::describe()'],['../classroboticslab_1_1PadenKahanTwo.html#ae781f6e280da51bbc50821e5693de38d',1,'roboticslab::PadenKahanTwo::describe()'],['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#ad842a6c20ddd83a12fa2694c3b85972f',1,'roboticslab::ScrewTheoryIkSubproblem::describe()']]], + ['diffinvkin_409',['diffInvKin',['../classroboticslab_1_1AsibotSolver.html#a058f10e3f8f2aee22c2e07590c4e3378',1,'roboticslab::AsibotSolver::diffInvKin()'],['../classroboticslab_1_1ICartesianSolver.html#a910ada1b432e137f381731a9943120e9',1,'roboticslab::ICartesianSolver::diffInvKin()'],['../classroboticslab_1_1KdlSolver.html#ab765926ddbffbeabd7f374b2769fd9a7',1,'roboticslab::KdlSolver::diffInvKin()'],['../classroboticslab_1_1KdlTreeSolver.html#a6e6274c011a18b4b72e2a95c8329000d',1,'roboticslab::KdlTreeSolver::diffInvKin()']]], + ['dump_410',['dump',['../classOrderThreeTraj.html#a0b0899bf7aed48bda0714730cd257127',1,'OrderThreeTraj']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 000000000..1657cad0d --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..19177d351 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['encodeacceleration_411',['encodeAcceleration',['../namespaceroboticslab_1_1KinRepresentation.html#a6cdf3260cfb1b1548082587ead8f7dbe',1,'roboticslab::KinRepresentation']]], + ['encodepose_412',['encodePose',['../namespaceroboticslab_1_1KinRepresentation.html#a68d34b0fa5c844da492eb0d68d405b91',1,'roboticslab::KinRepresentation']]], + ['encodevelocity_413',['encodeVelocity',['../namespaceroboticslab_1_1KinRepresentation.html#ac984377f13ca02018f120b0d8be63466',1,'roboticslab::KinRepresentation']]], + ['euleryztoh_414',['eulerYZtoH',['../namespaceroboticslab.html#af470c21e8c0a23b71fe1227a563a42a6',1,'roboticslab']]], + ['eulerzyztoh_415',['eulerZYZtoH',['../namespaceroboticslab.html#a742657ff7dd7bfdda9d06a8f26fb63be',1,'roboticslab']]], + ['evaluate_416',['evaluate',['../classroboticslab_1_1PoeExpression.html#a453c039c1253e3a97920604b6cfa6765',1,'roboticslab::PoeExpression']]], + ['exponentialatjoint_417',['exponentialAtJoint',['../classroboticslab_1_1PoeExpression.html#a60f29480e238dc43a8b8c3fced61d328',1,'roboticslab::PoeExpression']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 000000000..9301d6b9c --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..bcde3259e --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['findoptimalconfiguration_418',['findOptimalConfiguration',['../classroboticslab_1_1ConfigurationSelector.html#a353fa629a8b0a075eeeffbd1a3084e80',1,'roboticslab::ConfigurationSelector::findOptimalConfiguration()'],['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html#ac8be16dc2a6d5a45f34b858a5278f746',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement::findOptimalConfiguration()'],['../classroboticslab_1_1ConfigurationSelectorHumanoidGait.html#adffa6e819161168b47d704851ec03ecc',1,'roboticslab::ConfigurationSelectorHumanoidGait::findOptimalConfiguration()'],['../classroboticslab_1_1AsibotConfiguration.html#a0cd9c584f35bc8ca4b950f44eeda8ca3',1,'roboticslab::AsibotConfiguration::findOptimalConfiguration()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html#a97e98540da4ddd9a76a6f7352bbef373',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement::findOptimalConfiguration()']]], + ['forc_419',['forc',['../classroboticslab_1_1BasicCartesianControl.html#aa866e4b1404b7675a42b362e223b63d0',1,'roboticslab::BasicCartesianControl::forc()'],['../classroboticslab_1_1CartesianControlClient.html#a0685acd4903d553fc8732120c397c664',1,'roboticslab::CartesianControlClient::forc()'],['../classroboticslab_1_1ICartesianControl.html#adeb99c8fb30c5d4d4a04cfb9a758d730',1,'roboticslab::ICartesianControl::forc()']]], + ['frametovector_420',['frameToVector',['../namespaceroboticslab_1_1KdlVectorConverter.html#a647545bd661912775f0c967268b57016',1,'roboticslab::KdlVectorConverter']]], + ['fromchain_421',['fromChain',['../classroboticslab_1_1PoeExpression.html#a5416073dd90b5237747eee1a9fe52f57',1,'roboticslab::PoeExpression']]], + ['fwdkin_422',['fwdKin',['../classroboticslab_1_1AsibotSolver.html#a2ede20e969ef643f04a48f8f5c8d3872',1,'roboticslab::AsibotSolver::fwdKin()'],['../classroboticslab_1_1ICartesianSolver.html#a49690d22fdd220ba4b907f14c151435f',1,'roboticslab::ICartesianSolver::fwdKin()'],['../classroboticslab_1_1KdlSolver.html#ab95ab0b11656c27425f75d6847933aba',1,'roboticslab::KdlSolver::fwdKin()'],['../classroboticslab_1_1KdlTreeSolver.html#a9bdff0f1eb6151343cfba38bf4f82a8a',1,'roboticslab::KdlTreeSolver::fwdKin()']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 000000000..9c4f5fc65 --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..21b2d29ae --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['gcmp_423',['gcmp',['../classroboticslab_1_1CartesianControlClient.html#a66b9befe986c5134a0ba7839cab332f0',1,'roboticslab::CartesianControlClient::gcmp()'],['../classroboticslab_1_1ICartesianControl.html#aad338c264d84df5cbb0aa4541150bc7a',1,'roboticslab::ICartesianControl::gcmp()'],['../classroboticslab_1_1BasicCartesianControl.html#ab69589d938ddc37bfa42390bdb86fdf8',1,'roboticslab::BasicCartesianControl::gcmp()']]], + ['get_424',['get',['../classOrderThreeTraj.html#ab72bf9f914156a81a7e425900827f8ce',1,'OrderThreeTraj']]], + ['getactuatorstate_425',['getActuatorState',['../classroboticslab_1_1LeapMotionSensorDevice.html#ab057f2567ecbd20b737e67d397337b23',1,'roboticslab::LeapMotionSensorDevice::getActuatorState()'],['../classroboticslab_1_1SpnavSensorDevice.html#aa66a22963d7178e8d8776207d7e9a574',1,'roboticslab::SpnavSensorDevice::getActuatorState()'],['../classroboticslab_1_1StreamingDevice.html#a314159bdd4234db9d7b42de474b50846',1,'roboticslab::StreamingDevice::getActuatorState()']]], + ['getaxis_426',['getAxis',['../classroboticslab_1_1MatrixExponential.html#a50cb8cb28ca982043f9d5589a46bb20d',1,'roboticslab::MatrixExponential']]], + ['getdiffs_427',['getDiffs',['../classroboticslab_1_1ConfigurationSelectorLeastOverallAngularDisplacement.html#a9b1a6a3a41896ed37ada24c11e0c57c5',1,'roboticslab::ConfigurationSelectorLeastOverallAngularDisplacement::getDiffs()'],['../classroboticslab_1_1AsibotConfigurationLeastOverallAngularDisplacement.html#a48e6a6547d242e4f0abed79ef55f8592',1,'roboticslab::AsibotConfigurationLeastOverallAngularDisplacement::getDiffs()']]], + ['getdot_428',['getdot',['../classOrderThreeTraj.html#a7a0adabdd1926f11ac44ab374bf2a1ea',1,'OrderThreeTraj']]], + ['getdotdot_429',['getdotdot',['../classOrderThreeTraj.html#aae56577b26f19a7520b5f20f0dc7bd34',1,'OrderThreeTraj']]], + ['getmotiontype_430',['getMotionType',['../classroboticslab_1_1MatrixExponential.html#a533b4c15dab146f378f71ca1959ae207',1,'roboticslab::MatrixExponential']]], + ['getnumjoints_431',['getNumJoints',['../classroboticslab_1_1KdlSolver.html#aab9372277ac2ec5c7c43c67ef6ba1fe6',1,'roboticslab::KdlSolver::getNumJoints()'],['../classroboticslab_1_1KdlTreeSolver.html#a88f9d04f875757e2bb3941e54b109afc',1,'roboticslab::KdlTreeSolver::getNumJoints()'],['../classroboticslab_1_1ICartesianSolver.html#ad9cca105691fc5b95a07766430355fe8',1,'roboticslab::ICartesianSolver::getNumJoints()'],['../classroboticslab_1_1AsibotSolver.html#ad30b79611b6a2d31403f131a08dba2ec',1,'roboticslab::AsibotSolver::getNumJoints() override']]], + ['getnumtcps_432',['getNumTcps',['../classroboticslab_1_1AsibotSolver.html#a78ae903d7a4649824699dce5181e7183',1,'roboticslab::AsibotSolver::getNumTcps()'],['../classroboticslab_1_1ICartesianSolver.html#a0171d5b8930f6887a2500b93cc60a30f',1,'roboticslab::ICartesianSolver::getNumTcps()'],['../classroboticslab_1_1KdlSolver.html#ab2e2cfa9bee851fd215916764d038653',1,'roboticslab::KdlSolver::getNumTcps()'],['../classroboticslab_1_1KdlTreeSolver.html#addf29c15a21de7f137fdac5ab50b69ee',1,'roboticslab::KdlTreeSolver::getNumTcps()']]], + ['getorigin_433',['getOrigin',['../classroboticslab_1_1MatrixExponential.html#a35fa4128a7e251fae88ba42d111c942d',1,'roboticslab::MatrixExponential']]], + ['getparameter_434',['getParameter',['../classroboticslab_1_1BasicCartesianControl.html#a732976a98d6b28d98a80d4a0f2341006',1,'roboticslab::BasicCartesianControl::getParameter()'],['../classroboticslab_1_1CartesianControlClient.html#a8f0ed4798101b1296a2175ce5adec8de',1,'roboticslab::CartesianControlClient::getParameter()'],['../classroboticslab_1_1ICartesianControl.html#a9d491a555669cb444fdde38a452476fd',1,'roboticslab::ICartesianControl::getParameter()']]], + ['getparameters_435',['getParameters',['../classroboticslab_1_1BasicCartesianControl.html#a6c36f0be7eb63bbe9c2acf0e76307fca',1,'roboticslab::BasicCartesianControl::getParameters()'],['../classroboticslab_1_1CartesianControlClient.html#acbd8412409d0ba4269dddf5cbb5ea68f',1,'roboticslab::CartesianControlClient::getParameters()'],['../classroboticslab_1_1ICartesianControl.html#ad03698d984f27d454c159dadc40d8998',1,'roboticslab::ICartesianControl::getParameters()']]], + ['getsteps_436',['getSteps',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a1c008710f97e29944f152e7def795508',1,'roboticslab::ScrewTheoryIkProblem']]], + ['gett_437',['getT',['../classOrderThreeTraj.html#a92dd2d77ab3b1fb6cdafc483e34f5762',1,'OrderThreeTraj']]], + ['gettransform_438',['getTransform',['../classroboticslab_1_1PoeExpression.html#a706daeed50babdf013136205d038cce2',1,'roboticslab::PoeExpression']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 000000000..46b5c0f61 --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 000000000..c52072978 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hasvalidmovementdata_439',['hasValidMovementData',['../classroboticslab_1_1SpnavSensorDevice.html#afd22a1846735024f1b682b0e0f29bf4a',1,'roboticslab::SpnavSensorDevice::hasValidMovementData()'],['../classroboticslab_1_1StreamingDevice.html#a1c3e1aa6a553a6db8a087c4b6aef099a',1,'roboticslab::StreamingDevice::hasValidMovementData()'],['../classroboticslab_1_1WiimoteSensorDevice.html#a8121dc7f04525d95d0aff3df02b353d4',1,'roboticslab::WiimoteSensorDevice::hasValidMovementData()']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 000000000..31a1d9503 --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..af004aa4e --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['initialize_440',['initialize',['../classroboticslab_1_1SpnavSensorDevice.html#aaa173adb1f3b826875b1eee7b62ce4b8',1,'roboticslab::SpnavSensorDevice::initialize()'],['../classroboticslab_1_1StreamingDevice.html#a7ccbc2b2b685669fd17df8c415b7ce33',1,'roboticslab::StreamingDevice::initialize()'],['../classroboticslab_1_1WiimoteSensorDevice.html#aa889d94db1c584adefd68fd455946f79',1,'roboticslab::WiimoteSensorDevice::initialize()'],['../classroboticslab_1_1LeapMotionSensorDevice.html#aab5af58de53a64f30a89305050f76df5',1,'roboticslab::LeapMotionSensorDevice::initialize()']]], + ['inv_441',['inv',['../classroboticslab_1_1BasicCartesianControl.html#afa156ade37313b7881ded73c28e0ab9e',1,'roboticslab::BasicCartesianControl::inv()'],['../classroboticslab_1_1CartesianControlClient.html#a21d6db101aad590ea68eeed6aa69b53e',1,'roboticslab::CartesianControlClient::inv()'],['../classroboticslab_1_1ICartesianControl.html#abd463e46e4a4603cd435c69451105f40',1,'roboticslab::ICartesianControl::inv()']]], + ['invalidate_442',['invalidate',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#ab90933a0f4bd4331ac147d2f2d749dbd',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['invaliddevice_443',['InvalidDevice',['../classroboticslab_1_1InvalidDevice.html#abc8a8a6ee4d805e32f368f5a41c1b89f',1,'roboticslab::InvalidDevice']]], + ['invdyn_444',['invDyn',['../classroboticslab_1_1ICartesianSolver.html#ac68a125a66dc89f1dcaab7bc0c6c1b93',1,'roboticslab::ICartesianSolver::invDyn()'],['../classroboticslab_1_1KdlTreeSolver.html#a8769558a1901e08b964ce054d11d11b0',1,'roboticslab::KdlTreeSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override'],['../classroboticslab_1_1KdlTreeSolver.html#a594d6aa9ab863788c2d3b664ce5237fc',1,'roboticslab::KdlTreeSolver::invDyn(const std::vector< double > &q, std::vector< double > &t) override'],['../classroboticslab_1_1KdlSolver.html#aa5c34f5c58b001f59a73b99d824e8fb1',1,'roboticslab::KdlSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override'],['../classroboticslab_1_1KdlSolver.html#a34d0657f71f95179c00130e7c584c2d3',1,'roboticslab::KdlSolver::invDyn(const std::vector< double > &q, std::vector< double > &t) override'],['../classroboticslab_1_1ICartesianSolver.html#a3b940fe3b68d2eac0eaf5fd8d479f95e',1,'roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame=BASE_FRAME)=0'],['../classroboticslab_1_1ICartesianSolver.html#afb7a780f246baa39cda943dab2a14d45',1,'roboticslab::ICartesianSolver::invDyn(const std::vector< double > &q, std::vector< double > &t)=0'],['../classroboticslab_1_1AsibotSolver.html#ada7111579ba3bc4b6ee7eb2c5f19550d',1,'roboticslab::AsibotSolver::invDyn(const std::vector< double > &q, const std::vector< double > &qdot, const std::vector< double > &qdotdot, const std::vector< double > &ftip, std::vector< double > &t, reference_frame frame) override'],['../classroboticslab_1_1AsibotSolver.html#aac0b0ced741534e694f37943fb7fb380',1,'roboticslab::AsibotSolver::invDyn(const std::vector< double > &q, std::vector< double > &t) override']]], + ['invkin_445',['invKin',['../classroboticslab_1_1AsibotSolver.html#ab34f0e1d33fcac117db648ccb234de9a',1,'roboticslab::AsibotSolver::invKin()'],['../classroboticslab_1_1ICartesianSolver.html#a571b1a730ea7d6e089598eb874bca600',1,'roboticslab::ICartesianSolver::invKin()'],['../classroboticslab_1_1KdlSolver.html#a47eb528cd1213b7fa5acb36f1e7661d4',1,'roboticslab::KdlSolver::invKin()'],['../classroboticslab_1_1KdlTreeSolver.html#a83ad8ecac4bd3a930646b0f29c2189ff',1,'roboticslab::KdlTreeSolver::invKin()']]], + ['isreversed_446',['isReversed',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a8d805cb14d7ffeaca699ac1a55031746',1,'roboticslab::ScrewTheoryIkProblem']]], + ['isvalid_447',['isValid',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a66960d2cd8fee7dd8ddd563ee66379d6',1,'roboticslab::ConfigurationSelector::Configuration']]] +]; diff --git a/search/functions_9.html b/search/functions_9.html new file mode 100644 index 000000000..9a8e4290c --- /dev/null +++ b/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 000000000..10919b3c0 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jnttocart_448',['JntToCart',['../classroboticslab_1_1ChainFkSolverPos__ST.html#ae2d6766c6b2bf80b88a42a405c03cc3c',1,'roboticslab::ChainFkSolverPos_ST::JntToCart(const KDL::JntArray &q_in, KDL::Frame &p_out, int segmentNr=-1) override'],['../classroboticslab_1_1ChainFkSolverPos__ST.html#a56dfb376b6d4edea6f2db624b527c662',1,'roboticslab::ChainFkSolverPos_ST::JntToCart(const KDL::JntArray &q_in, std::vector< KDL::Frame > &p_out, int segmentNr=-1) override']]] +]; diff --git a/search/functions_a.html b/search/functions_a.html new file mode 100644 index 000000000..5ecc152ca --- /dev/null +++ b/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..ac5c8b096 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['leapmotionsensordevice_449',['LeapMotionSensorDevice',['../classroboticslab_1_1LeapMotionSensorDevice.html#a2ab0d5a6c3e2a82850ca75e31b182a69',1,'roboticslab::LeapMotionSensorDevice']]] +]; diff --git a/search/functions_b.html b/search/functions_b.html new file mode 100644 index 000000000..e301fedd7 --- /dev/null +++ b/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..e6f0dd21e --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['makedevice_450',['makeDevice',['../classroboticslab_1_1StreamingDeviceFactory.html#adbf5f06e6527225e7ef0a9aac38b8cb1',1,'roboticslab::StreamingDeviceFactory']]], + ['makereverse_451',['makeReverse',['../classroboticslab_1_1PoeExpression.html#aedaaf516912a8730fc20b0bc745f5e48',1,'roboticslab::PoeExpression']]], + ['makeusage_452',['makeUsage',['../classroboticslab_1_1RpcResponder.html#a5ed20afb6aeb0e547874b5ca32c3de21',1,'roboticslab::RpcResponder']]], + ['matrixexponential_453',['MatrixExponential',['../classroboticslab_1_1MatrixExponential.html#aab61d652294cf23c70950042c45143f6',1,'roboticslab::MatrixExponential']]], + ['maxaccbelow_454',['maxAccBelow',['../classOrderThreeTraj.html#a43fe0dcb486e6b27d3a0e660374e1e89',1,'OrderThreeTraj']]], + ['maxvelbelow_455',['maxVelBelow',['../classOrderThreeTraj.html#a3e488422118ce9b573ce6fe410713ba7',1,'OrderThreeTraj']]], + ['movi_456',['movi',['../classroboticslab_1_1BasicCartesianControl.html#a6a3de44fe7d31c145945f0a73599449d',1,'roboticslab::BasicCartesianControl::movi()'],['../classroboticslab_1_1CartesianControlClient.html#a1caecd5a3020871433c1af26cdc9beb8',1,'roboticslab::CartesianControlClient::movi()'],['../classroboticslab_1_1ICartesianControl.html#a77d106dc9e9b37307f9777773fdc7779',1,'roboticslab::ICartesianControl::movi()']]], + ['movj_457',['movj',['../classroboticslab_1_1BasicCartesianControl.html#a8408762e79f422eaf78c4f11c34713a8',1,'roboticslab::BasicCartesianControl::movj()'],['../classroboticslab_1_1ICartesianControl.html#adfc55dd3e5efeef72ff85a35642b3044',1,'roboticslab::ICartesianControl::movj()'],['../classroboticslab_1_1CartesianControlClient.html#a9c05fbe148fada6e73bd60ae20ab42dd',1,'roboticslab::CartesianControlClient::movj()']]], + ['movl_458',['movl',['../classroboticslab_1_1BasicCartesianControl.html#a1a82a11f2deb2b06ed90e1f7b5ab667d',1,'roboticslab::BasicCartesianControl::movl()'],['../classroboticslab_1_1CartesianControlClient.html#a20a872a0fb74a1e391ee9f30e3076b8f',1,'roboticslab::CartesianControlClient::movl()'],['../classroboticslab_1_1ICartesianControl.html#aa03b60efa1128233a440073b6f4cd618',1,'roboticslab::ICartesianControl::movl()']]], + ['movv_459',['movv',['../classroboticslab_1_1BasicCartesianControl.html#ab25fc7effe19c43f5edfbc416ff2a622',1,'roboticslab::BasicCartesianControl::movv()'],['../classroboticslab_1_1CartesianControlClient.html#a909a971a530fd3d0dfc02d2af1bf7e40',1,'roboticslab::CartesianControlClient::movv()'],['../classroboticslab_1_1ICartesianControl.html#aaf5597273dfff261cc3e8cceb711d747',1,'roboticslab::ICartesianControl::movv()']]] +]; diff --git a/search/functions_c.html b/search/functions_c.html new file mode 100644 index 000000000..c4f326877 --- /dev/null +++ b/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..525b6ca45 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['normalizeangle_460',['normalizeAngle',['../group__ScrewTheoryLib.html#ga96418455c005860b8c95266aaa9af56c',1,'roboticslab']]] +]; diff --git a/search/functions_d.html b/search/functions_d.html new file mode 100644 index 000000000..7a1ed065d --- /dev/null +++ b/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..ec6ff8504 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['padenkahanone_461',['PadenKahanOne',['../classroboticslab_1_1PadenKahanOne.html#a278df14a56151a879daf07d165901223',1,'roboticslab::PadenKahanOne']]], + ['padenkahanthree_462',['PadenKahanThree',['../classroboticslab_1_1PadenKahanThree.html#aadab868cb45d01a3594fda1bfb6cb83a',1,'roboticslab::PadenKahanThree']]], + ['padenkahantwo_463',['PadenKahanTwo',['../classroboticslab_1_1PadenKahanTwo.html#a716530df1c33500819ceffd6f7227427',1,'roboticslab::PadenKahanTwo']]], + ['pardosgotorfour_464',['PardosGotorFour',['../classroboticslab_1_1PardosGotorFour.html#a27eef5d8598452d725ba48ca64e9c61a',1,'roboticslab::PardosGotorFour']]], + ['pardosgotorone_465',['PardosGotorOne',['../classroboticslab_1_1PardosGotorOne.html#ada4e731a9d3b438ea96937b27751acec',1,'roboticslab::PardosGotorOne']]], + ['pardosgotorthree_466',['PardosGotorThree',['../classroboticslab_1_1PardosGotorThree.html#ae85565526e1e83ad85fb5c39989d226e',1,'roboticslab::PardosGotorThree']]], + ['pardosgotortwo_467',['PardosGotorTwo',['../classroboticslab_1_1PardosGotorTwo.html#a6e251323a3aac4280a7b6ffd8c5f54e7',1,'roboticslab::PardosGotorTwo']]], + ['parseenumerator_468',['parseEnumerator',['../namespaceroboticslab_1_1KinRepresentation.html#ae14a97b14e4bb02c1988b7eb5499299d',1,'roboticslab::KinRepresentation::parseEnumerator(const std::string &str, angular_units *units, angular_units fallback=angular_units::RADIANS)'],['../namespaceroboticslab_1_1KinRepresentation.html#a6743860d7706318b23c5b5430fdf2d93',1,'roboticslab::KinRepresentation::parseEnumerator(const std::string &str, orientation_system *orient, orientation_system fallback=orientation_system::AXIS_ANGLE_SCALED)'],['../namespaceroboticslab_1_1KinRepresentation.html#a6a37bec312da8503398ba5960416d9c3',1,'roboticslab::KinRepresentation::parseEnumerator(const std::string &str, coordinate_system *coord, coordinate_system fallback=coordinate_system::CARTESIAN)']]], + ['poeexpression_469',['PoeExpression',['../classroboticslab_1_1PoeExpression.html#ad18affec4e1f86b0b4d95cfbe6ed29dd',1,'roboticslab::PoeExpression']]], + ['pose_470',['Pose',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a76cc3db3dfb5050a9a92d1bd8b7186f7',1,'roboticslab::AsibotConfiguration::Pose']]], + ['posediff_471',['poseDiff',['../classroboticslab_1_1ICartesianSolver.html#ae57b44cd21218cac9a9981592b1790cb',1,'roboticslab::ICartesianSolver::poseDiff()'],['../classroboticslab_1_1KdlSolver.html#a3d1529cf00311beda0eb8bb70e3c3ab7',1,'roboticslab::KdlSolver::poseDiff()'],['../classroboticslab_1_1KdlTreeSolver.html#a13d80bbbf0929a0399627667c7c39c95',1,'roboticslab::KdlTreeSolver::poseDiff()'],['../classroboticslab_1_1AsibotSolver.html#aa565e06deca54c520061d6a64d67fa58',1,'roboticslab::AsibotSolver::poseDiff()']]], + ['processstoredbottle_472',['processStoredBottle',['../classroboticslab_1_1CentroidTransform.html#adcfe9b2f0512aa4d6af5363dd83bf036',1,'roboticslab::CentroidTransform']]] +]; diff --git a/search/functions_e.html b/search/functions_e.html new file mode 100644 index 000000000..22d2a6bf5 --- /dev/null +++ b/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..9580b5f68 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['radtodeg_473',['radToDeg',['../namespaceroboticslab_1_1KinRepresentation.html#a161e7ab9d012bbcac3d8ec925c745c72',1,'roboticslab::KinRepresentation']]], + ['registerstreamingdevice_474',['registerStreamingDevice',['../classroboticslab_1_1CentroidTransform.html#a330cdceee971c24294c97a8b68d20576',1,'roboticslab::CentroidTransform']]], + ['relj_475',['relj',['../classroboticslab_1_1BasicCartesianControl.html#ad4e7cf25cd610a55bb0da39e885c8582',1,'roboticslab::BasicCartesianControl::relj()'],['../classroboticslab_1_1CartesianControlClient.html#a743598d423d27c2f5d91d92a6ac16663',1,'roboticslab::CartesianControlClient::relj()'],['../classroboticslab_1_1ICartesianControl.html#a56868375932296f5bf846e6e1e3a86f8',1,'roboticslab::ICartesianControl::relj()']]], + ['respond_476',['respond',['../classroboticslab_1_1RpcResponder.html#ab8c40f6e011f156d22a095b52f8f8958',1,'roboticslab::RpcResponder']]], + ['restoreoriginalchain_477',['restoreOriginalChain',['../classroboticslab_1_1AsibotSolver.html#a3a541df031be40fb025e4bb4da880021',1,'roboticslab::AsibotSolver::restoreOriginalChain()'],['../classroboticslab_1_1ICartesianSolver.html#a4f8ddd7689b251cee640202facaaab9b',1,'roboticslab::ICartesianSolver::restoreOriginalChain()'],['../classroboticslab_1_1KdlSolver.html#a09d862bc551a1406d95d1cc6f83a7cd6',1,'roboticslab::KdlSolver::restoreOriginalChain()'],['../classroboticslab_1_1KdlTreeSolver.html#a719356319bc3ce2e448a01e2bae1d8cc',1,'roboticslab::KdlTreeSolver::restoreOriginalChain()']]], + ['retrieveangles_478',['retrieveAngles',['../classroboticslab_1_1AsibotConfiguration.html#ab9c263b703119e6f7666ed3562a35c71',1,'roboticslab::AsibotConfiguration::retrieveAngles()'],['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a2adefeb016baa178ac022cefcd5c315c',1,'roboticslab::AsibotConfiguration::Pose::retrieveAngles()']]], + ['retrievepose_479',['retrievePose',['../classroboticslab_1_1ConfigurationSelector.html#af8383e58effe8debab8dad874dbcc676',1,'roboticslab::ConfigurationSelector::retrievePose()'],['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a21dec1e41298d142486eb2086618921e',1,'roboticslab::ConfigurationSelector::Configuration::retrievePose()']]], + ['reverseself_480',['reverseSelf',['../classroboticslab_1_1PoeExpression.html#a1f5ee69686e2910f8220c994b71f63db',1,'roboticslab::PoeExpression']]] +]; diff --git a/search/functions_f.html b/search/functions_f.html new file mode 100644 index 000000000..54b7dee08 --- /dev/null +++ b/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..4a921e5dc --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['screwtheoryikproblembuilder_481',['ScrewTheoryIkProblemBuilder',['../classroboticslab_1_1ScrewTheoryIkProblemBuilder.html#aff5382b001b6973283188533424a0fa0',1,'roboticslab::ScrewTheoryIkProblemBuilder']]], + ['sendmovementcommand_482',['sendMovementCommand',['../classroboticslab_1_1LeapMotionSensorDevice.html#a1d07c50d5c7bf5d27cdfc4ac8caa81cf',1,'roboticslab::LeapMotionSensorDevice::sendMovementCommand()'],['../classroboticslab_1_1SpnavSensorDevice.html#a1fa7c48362861885e135c1695812e6ec',1,'roboticslab::SpnavSensorDevice::sendMovementCommand()'],['../classroboticslab_1_1StreamingDevice.html#a590064cec19650ac4acbec40f48664f0',1,'roboticslab::StreamingDevice::sendMovementCommand()'],['../classroboticslab_1_1InvalidDevice.html#ab3a29a299739dbdca1dffa3e20ceda14',1,'roboticslab::InvalidDevice::sendMovementCommand()'],['../classroboticslab_1_1WiimoteSensorDevice.html#a6f3d97af2c452df406acd0fd5fcdb217',1,'roboticslab::WiimoteSensorDevice::sendMovementCommand()']]], + ['setcartesiancontrollerhandle_483',['setCartesianControllerHandle',['../classroboticslab_1_1StreamingDevice.html#a79eddef2112cb7184d02a6eeb9447f09',1,'roboticslab::StreamingDevice']]], + ['setparameter_484',['setParameter',['../classroboticslab_1_1BasicCartesianControl.html#ae451ad853b34e2657b726cca87eb7741',1,'roboticslab::BasicCartesianControl::setParameter()'],['../classroboticslab_1_1CartesianControlClient.html#a69b676bf389d10d9addaaccd676809e6',1,'roboticslab::CartesianControlClient::setParameter()'],['../classroboticslab_1_1ICartesianControl.html#a8089e8dedb77281f8834f4754528855e',1,'roboticslab::ICartesianControl::setParameter()']]], + ['setparameters_485',['setParameters',['../classroboticslab_1_1BasicCartesianControl.html#adc2013dbea72b6efa281de1eedd4006a',1,'roboticslab::BasicCartesianControl::setParameters()'],['../classroboticslab_1_1CartesianControlClient.html#ac30599997c741f23f256adbb4654bdac',1,'roboticslab::CartesianControlClient::setParameters()'],['../classroboticslab_1_1ICartesianControl.html#a899a3de6f03652c80add0de972439abf',1,'roboticslab::ICartesianControl::setParameters()']]], + ['setpermanencetime_486',['setPermanenceTime',['../classroboticslab_1_1CentroidTransform.html#a0a8b890362b7d743b297aeaf3f589708',1,'roboticslab::CentroidTransform']]], + ['settcptocamerarotation_487',['setTcpToCameraRotation',['../classroboticslab_1_1CentroidTransform.html#a3eed406e2a69d837222f32538b4a0fe0',1,'roboticslab::CentroidTransform']]], + ['size_488',['size',['../classroboticslab_1_1PoeExpression.html#ac2e9286c152cdd2f4c672560f3f60c34',1,'roboticslab::PoeExpression']]], + ['solutions_489',['solutions',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a93f5ceb045bf1886af94fcea48ccf25f',1,'roboticslab::ScrewTheoryIkSubproblem::solutions()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#af8233df52cf04d5b8150a8715bc66dc9',1,'roboticslab::ScrewTheoryIkProblem::solutions()'],['../classroboticslab_1_1PadenKahanOne.html#ae48c426700f6f242eb95da3fa2fe06ee',1,'roboticslab::PadenKahanOne::solutions()'],['../classroboticslab_1_1PadenKahanTwo.html#ad71a6f11babaf34020b7a40d5a6949e3',1,'roboticslab::PadenKahanTwo::solutions()'],['../classroboticslab_1_1PadenKahanThree.html#a929ed3abd40340fa3c090b68fa1d338d',1,'roboticslab::PadenKahanThree::solutions()'],['../classroboticslab_1_1PardosGotorOne.html#a2a06e5dc171695c41eaacd010a7428f6',1,'roboticslab::PardosGotorOne::solutions()'],['../classroboticslab_1_1PardosGotorTwo.html#adf59c58e633dae7e25bc6bdc56c2c39a',1,'roboticslab::PardosGotorTwo::solutions()'],['../classroboticslab_1_1PardosGotorThree.html#a933188c49bf6ce4d819f9daecaf1290a',1,'roboticslab::PardosGotorThree::solutions()'],['../classroboticslab_1_1PardosGotorFour.html#a5b13b167bc9c3690522755f95dfe73d2',1,'roboticslab::PardosGotorFour::solutions() const override']]], + ['solve_490',['solve',['../classroboticslab_1_1PardosGotorFour.html#a49562b2ab9c2d58f542f15f938e4b9f3',1,'roboticslab::PardosGotorFour::solve()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#a39b3cb4c74656f25b96f3cb9123d0618',1,'roboticslab::ScrewTheoryIkProblem::solve()'],['../classroboticslab_1_1PardosGotorThree.html#aa2ebf902f9b43f59f1a49f7854d1ebc6',1,'roboticslab::PardosGotorThree::solve()'],['../classroboticslab_1_1PardosGotorTwo.html#a38cb7640cd0b27473eb9f892180a35f1',1,'roboticslab::PardosGotorTwo::solve()'],['../classroboticslab_1_1PardosGotorOne.html#a36bc3c8e1f604ab93780e18b2e18d715',1,'roboticslab::PardosGotorOne::solve()'],['../classroboticslab_1_1PadenKahanTwo.html#a3085eea9ca679ab9d8c6e7b8589de9af',1,'roboticslab::PadenKahanTwo::solve()'],['../classroboticslab_1_1PadenKahanOne.html#a3c2e8d62e462d1b04112c3a9b99b6642',1,'roboticslab::PadenKahanOne::solve()'],['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#ad2d0dbe398d37d2e2582e8730299dfa6',1,'roboticslab::ScrewTheoryIkSubproblem::solve()'],['../classroboticslab_1_1PadenKahanThree.html#a270a7c86791639d32c36ff34b6402d8a',1,'roboticslab::PadenKahanThree::solve()']]], + ['spnavsensordevice_491',['SpnavSensorDevice',['../classroboticslab_1_1SpnavSensorDevice.html#a6c94f09724d2fe81e191531208eead25',1,'roboticslab::SpnavSensorDevice']]], + ['stat_492',['stat',['../classroboticslab_1_1BasicCartesianControl.html#a9935b9db791373bf8f6b9ce986a706ef',1,'roboticslab::BasicCartesianControl::stat()'],['../classroboticslab_1_1CartesianControlClient.html#a474519f89e996b2cff06e182c193065c',1,'roboticslab::CartesianControlClient::stat()'],['../classroboticslab_1_1ICartesianControl.html#a2b2485ff009ffd7d15e9105d74a54ddb',1,'roboticslab::ICartesianControl::stat()']]], + ['stopcontrol_493',['stopControl',['../classroboticslab_1_1BasicCartesianControl.html#a5a95cc4de51e2547ae45f737eeb1566e',1,'roboticslab::BasicCartesianControl::stopControl()'],['../classroboticslab_1_1CartesianControlClient.html#a0092c2fa59cf2c526340e5502129f93d',1,'roboticslab::CartesianControlClient::stopControl()'],['../classroboticslab_1_1ICartesianControl.html#ae7e23dc66a87e7fb49218e120827e736',1,'roboticslab::ICartesianControl::stopControl()']]], + ['stopmotion_494',['stopMotion',['../classroboticslab_1_1LeapMotionSensorDevice.html#add496426391201bf00490570a7247fc0',1,'roboticslab::LeapMotionSensorDevice::stopMotion()'],['../classroboticslab_1_1WiimoteSensorDevice.html#ad900776f8369ad21b3365e43184017ba',1,'roboticslab::WiimoteSensorDevice::stopMotion()'],['../classroboticslab_1_1InvalidDevice.html#a06e2e2b8a4d08721f526d14149e20b24',1,'roboticslab::InvalidDevice::stopMotion()'],['../classroboticslab_1_1StreamingDevice.html#a193eec67e9e2734c9258098b09c85f74',1,'roboticslab::StreamingDevice::stopMotion()'],['../classroboticslab_1_1SpnavSensorDevice.html#a16d86ee15bd145248dc05a44c6e2c026',1,'roboticslab::SpnavSensorDevice::stopMotion()']]], + ['store_495',['store',['../classroboticslab_1_1ConfigurationSelector_1_1Configuration.html#a64aedf824567b7025395331bd5053062',1,'roboticslab::ConfigurationSelector::Configuration']]], + ['storeangles_496',['storeAngles',['../structroboticslab_1_1AsibotConfiguration_1_1Pose.html#a6bd78d1f3fe44c1fdd17e6c43fe16705',1,'roboticslab::AsibotConfiguration::Pose']]], + ['streamingdevice_497',['StreamingDevice',['../classroboticslab_1_1StreamingDevice.html#ae8508cc5d91053e080cbdd69450fc9cd',1,'roboticslab::StreamingDevice']]], + ['strerror_498',['strError',['../classroboticslab_1_1ChainFkSolverPos__ST.html#ad06793c44777791df5525e154f4f1dec',1,'roboticslab::ChainFkSolverPos_ST::strError()'],['../classroboticslab_1_1ChainIkSolverPos__ID.html#afc28a2a6581641e09cc09cc6f91b25ae',1,'roboticslab::ChainIkSolverPos_ID::strError()'],['../classroboticslab_1_1ChainIkSolverPos__ST.html#ab8575a57d32a445ca1f304227b21a9a4',1,'roboticslab::ChainIkSolverPos_ST::strError()']]] +]; diff --git a/search/groups_0.html b/search/groups_0.html new file mode 100644 index 000000000..c600b4970 --- /dev/null +++ b/search/groups_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 000000000..9781d7f63 --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['asibotsolver_606',['AsibotSolver',['../group__AsibotSolver.html',1,'']]] +]; diff --git a/search/groups_1.html b/search/groups_1.html new file mode 100644 index 000000000..2eb3550dc --- /dev/null +++ b/search/groups_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 000000000..9b97fd15f --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['basiccartesiancontrol_607',['BasicCartesianControl',['../group__BasicCartesianControl.html',1,'']]] +]; diff --git a/search/groups_2.html b/search/groups_2.html new file mode 100644 index 000000000..12f4af7a0 --- /dev/null +++ b/search/groups_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_2.js b/search/groups_2.js new file mode 100644 index 000000000..02a10ce3b --- /dev/null +++ b/search/groups_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['cartesiancontrolclient_608',['CartesianControlClient',['../group__CartesianControlClient.html',1,'']]], + ['cartesiancontrolexample_609',['cartesianControlExample',['../group__cartesianControlExample.html',1,'']]], + ['cartesiancontrolserver_610',['CartesianControlServer',['../group__CartesianControlServer.html',1,'']]] +]; diff --git a/search/groups_3.html b/search/groups_3.html new file mode 100644 index 000000000..5e235b53c --- /dev/null +++ b/search/groups_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_3.js b/search/groups_3.js new file mode 100644 index 000000000..5486ccf0a --- /dev/null +++ b/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exampleyarptinymath_611',['exampleYarpTinyMath',['../group__exampleYarpTinyMath.html',1,'']]] +]; diff --git a/search/groups_4.html b/search/groups_4.html new file mode 100644 index 000000000..99405e159 --- /dev/null +++ b/search/groups_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_4.js b/search/groups_4.js new file mode 100644 index 000000000..df66bc309 --- /dev/null +++ b/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ftcompensation_612',['ftCompensation',['../group__ftCompensation.html',1,'']]] +]; diff --git a/search/groups_5.html b/search/groups_5.html new file mode 100644 index 000000000..583f5f58a --- /dev/null +++ b/search/groups_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_5.js b/search/groups_5.js new file mode 100644 index 000000000..f99269e00 --- /dev/null +++ b/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['haardetectioncontroller_613',['haarDetectionController',['../group__haarDetectionController.html',1,'']]] +]; diff --git a/search/groups_6.html b/search/groups_6.html new file mode 100644 index 000000000..df6a310f8 --- /dev/null +++ b/search/groups_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_6.js b/search/groups_6.js new file mode 100644 index 000000000..c9808e93b --- /dev/null +++ b/search/groups_6.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['kdlsolver_614',['KdlSolver',['../group__KdlSolver.html',1,'']]], + ['kdltreesolver_615',['KdlTreeSolver',['../group__KdlTreeSolver.html',1,'']]], + ['kdlvectorconverterlib_616',['KdlVectorConverterLib',['../group__KdlVectorConverterLib.html',1,'']]], + ['keyboardcontroller_617',['keyboardController',['../group__keyboardController.html',1,'']]], + ['kinematicrepresentationlib_618',['KinematicRepresentationLib',['../group__KinematicRepresentationLib.html',1,'']]], + ['kinematics_2ddynamics_20applications_20_28collections_20of_20programs_29_619',['kinematics-dynamics Applications (Collections of Programs)',['../group__kinematics-dynamics-applications.html',1,'']]], + ['kinematics_2ddynamics_20examples_620',['kinematics-dynamics Examples',['../group__kinematics-dynamics-examples.html',1,'']]], + ['kinematics_2ddynamics_20libraries_621',['kinematics-dynamics Libraries',['../group__kinematics-dynamics-libraries.html',1,'']]], + ['kinematics_2ddynamics_20programs_622',['kinematics-dynamics Programs',['../group__kinematics-dynamics-programs.html',1,'']]], + ['kinematics_2ddynamics_20tests_623',['kinematics-dynamics Tests',['../group__kinematics-dynamics-tests.html',1,'']]] +]; diff --git a/search/groups_7.html b/search/groups_7.html new file mode 100644 index 000000000..8964e0508 --- /dev/null +++ b/search/groups_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_7.js b/search/groups_7.js new file mode 100644 index 000000000..d19a4e590 --- /dev/null +++ b/search/groups_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['screwtheorylib_624',['ScrewTheoryLib',['../group__ScrewTheoryLib.html',1,'']]], + ['screwtheorytrajectoryexample_625',['screwTheoryTrajectoryExample',['../group__screwTheoryTrajectoryExample.html',1,'']]], + ['streamingdevicecontroller_626',['streamingDeviceController',['../group__streamingDeviceController.html',1,'']]] +]; diff --git a/search/groups_8.html b/search/groups_8.html new file mode 100644 index 000000000..7987ca395 --- /dev/null +++ b/search/groups_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_8.js b/search/groups_8.js new file mode 100644 index 000000000..704d0c390 --- /dev/null +++ b/search/groups_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['tinymath_627',['TinyMath',['../group__TinyMath.html',1,'']]], + ['trajgen_628',['TrajGen',['../group__TrajGen.html',1,'']]] +]; diff --git a/search/groups_9.html b/search/groups_9.html new file mode 100644 index 000000000..4567ddf21 --- /dev/null +++ b/search/groups_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/groups_9.js b/search/groups_9.js new file mode 100644 index 000000000..550e67f53 --- /dev/null +++ b/search/groups_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['yarpplugins_629',['YarpPlugins',['../group__YarpPlugins.html',1,'']]] +]; diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 000000000..03626f64a --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/namespaces_0.html b/search/namespaces_0.html new file mode 100644 index 000000000..21db2c3a5 --- /dev/null +++ b/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 000000000..1d2981d40 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['kdlvectorconverter_365',['KdlVectorConverter',['../namespaceroboticslab_1_1KdlVectorConverter.html',1,'roboticslab']]], + ['kinrepresentation_366',['KinRepresentation',['../namespaceroboticslab_1_1KinRepresentation.html',1,'roboticslab']]], + ['roboticslab_367',['roboticslab',['../namespaceroboticslab.html',1,'']]], + ['test_368',['test',['../namespaceroboticslab_1_1test.html',1,'roboticslab']]] +]; diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 000000000..2b9360b6b --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 000000000..8517b48f0 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..916a3979e --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bibliography_630',['Bibliography',['../citelist.html',1,'']]] +]; diff --git a/search/pages_1.html b/search/pages_1.html new file mode 100644 index 000000000..a0fb67963 --- /dev/null +++ b/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 000000000..077be8038 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kinematics_2ddynamics_3a_20installation_20from_20source_20code_631',['kinematics-dynamics: Installation from Source Code',['../md_doc_kinematics_dynamics_install.html',1,'']]] +]; diff --git a/search/pages_2.html b/search/pages_2.html new file mode 100644 index 000000000..084edfd03 --- /dev/null +++ b/search/pages_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 000000000..9dfe8fb7b --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['simulation_20and_20basic_20control_3a_20now_20what_20can_20i_20do_3f_632',['Simulation and Basic Control: Now what can I do?',['../md_doc_teo_post_install.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..9074198f8 --- /dev/null +++ b/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 000000000..fb226f734 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/search/search_r.png b/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/search/searchdata.js b/search/searchdata.js new file mode 100644 index 000000000..1ce358a35 --- /dev/null +++ b/search/searchdata.js @@ -0,0 +1,45 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghijklmnoprstuvwxy~", + 1: "abcfghiklmoprstw", + 2: "r", + 3: "i", + 4: "abcdefghijlmnprstuvwx~", + 5: "cefmotv", + 6: "js", + 7: "acemor", + 8: "abcdenprst", + 9: "abcefhksty", + 10: "bks" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "typedefs", + 7: "enums", + 8: "enumvalues", + 9: "groups", + 10: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Typedefs", + 7: "Enumerations", + 8: "Enumerator", + 9: "Modules", + 10: "Pages" +}; + diff --git a/search/typedefs_0.html b/search/typedefs_0.html new file mode 100644 index 000000000..a4684c4ad --- /dev/null +++ b/search/typedefs_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_0.js b/search/typedefs_0.js new file mode 100644 index 000000000..c25a8ac05 --- /dev/null +++ b/search/typedefs_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['jointidstosolutions_577',['JointIdsToSolutions',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a17e2aab1b986ad8feece04ea41b3df7c',1,'roboticslab::ScrewTheoryIkSubproblem']]], + ['jointidtosolution_578',['JointIdToSolution',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#afcf02a9a113aa4a44b2f574e97b84ccd',1,'roboticslab::ScrewTheoryIkSubproblem']]], + ['jointsin_579',['JointsIn',['../classroboticslab_1_1AsibotConfiguration.html#abbf14b37f256665f99485c9e4a2030dd',1,'roboticslab::AsibotConfiguration']]], + ['jointsout_580',['JointsOut',['../classroboticslab_1_1AsibotConfiguration.html#aefbf1ba28ad741a550f2def1baa6df51',1,'roboticslab::AsibotConfiguration']]] +]; diff --git a/search/typedefs_1.html b/search/typedefs_1.html new file mode 100644 index 000000000..46cf01e62 --- /dev/null +++ b/search/typedefs_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/typedefs_1.js b/search/typedefs_1.js new file mode 100644 index 000000000..9ac100c36 --- /dev/null +++ b/search/typedefs_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['solutions_581',['Solutions',['../classroboticslab_1_1ScrewTheoryIkSubproblem.html#a09d9cb9a3febf4469b143d5ced8c3219',1,'roboticslab::ScrewTheoryIkSubproblem::Solutions()'],['../classroboticslab_1_1ScrewTheoryIkProblem.html#a5ba30f58696f332c24c9bc4e41117069',1,'roboticslab::ScrewTheoryIkProblem::Solutions()']]], + ['steps_582',['Steps',['../classroboticslab_1_1ScrewTheoryIkProblem.html#a96e0ad375e50d13619f31cf09bc1f0c9',1,'roboticslab::ScrewTheoryIkProblem']]] +]; diff --git a/search/variables_0.html b/search/variables_0.html new file mode 100644 index 000000000..1e477c08c --- /dev/null +++ b/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 000000000..7cad95171 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['chain_526',['chain',['../classroboticslab_1_1KdlSolver.html#aa57a040771966f275e1855dda07a4902',1,'roboticslab::KdlSolver']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 000000000..ea73d9a49 --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 000000000..1240d5f65 --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['e_5ffksolverpos_5ffailed_527',['E_FKSOLVERPOS_FAILED',['../classroboticslab_1_1ChainIkSolverPos__ID.html#a4d25fef36d920871f459ee8d8280785a',1,'roboticslab::ChainIkSolverPos_ID']]], + ['e_5fillegal_5fargument_5fsize_528',['E_ILLEGAL_ARGUMENT_SIZE',['../classroboticslab_1_1ChainFkSolverPos__ST.html#a455a495513c1fee7aa94e73b9485de81',1,'roboticslab::ChainFkSolverPos_ST']]], + ['e_5fjacsolver_5ffailed_529',['E_JACSOLVER_FAILED',['../classroboticslab_1_1ChainIkSolverPos__ID.html#ab41cc517a8ed8bb77879d2f3326b81be',1,'roboticslab::ChainIkSolverPos_ID']]], + ['e_5fnot_5freachable_530',['E_NOT_REACHABLE',['../classroboticslab_1_1ChainIkSolverPos__ST.html#ab4391a5b4341bd92c46c5f2f642ccf70',1,'roboticslab::ChainIkSolverPos_ST']]], + ['e_5foperation_5fnot_5fsupported_531',['E_OPERATION_NOT_SUPPORTED',['../classroboticslab_1_1ChainFkSolverPos__ST.html#a628d4fe26487e86058c7a6e84b2019ff',1,'roboticslab::ChainFkSolverPos_ST']]], + ['e_5fout_5fof_5flimits_532',['E_OUT_OF_LIMITS',['../classroboticslab_1_1ChainIkSolverPos__ST.html#a9da456eee2d581696d107e79c2200620',1,'roboticslab::ChainIkSolverPos_ST']]], + ['e_5fsolution_5fnot_5ffound_533',['E_SOLUTION_NOT_FOUND',['../classroboticslab_1_1ChainIkSolverPos__ST.html#a23ce11bf5f6a1a3cf1077d3fed81fe3d',1,'roboticslab::ChainIkSolverPos_ST']]] +]; diff --git a/search/variables_2.html b/search/variables_2.html new file mode 100644 index 000000000..0580462e9 --- /dev/null +++ b/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_2.js b/search/variables_2.js new file mode 100644 index 000000000..d86a6d6d4 --- /dev/null +++ b/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fd_534',['fd',['../classroboticslab_1_1BasicCartesianControl.html#a41c611225dc443da76f296b49392fca1',1,'roboticslab::BasicCartesianControl']]] +]; diff --git a/search/variables_3.html b/search/variables_3.html new file mode 100644 index 000000000..0d69e7619 --- /dev/null +++ b/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_3.js b/search/variables_3.js new file mode 100644 index 000000000..d3caf9744 --- /dev/null +++ b/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['movementstarttime_535',['movementStartTime',['../classroboticslab_1_1BasicCartesianControl.html#a59f40b2829b672250dacadaf9deb258c',1,'roboticslab::BasicCartesianControl']]] +]; diff --git a/search/variables_4.html b/search/variables_4.html new file mode 100644 index 000000000..a4b6506bb --- /dev/null +++ b/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_4.js b/search/variables_4.js new file mode 100644 index 000000000..11bc02f94 --- /dev/null +++ b/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['originalchain_536',['originalChain',['../classroboticslab_1_1KdlSolver.html#ae8deb920d5eb83c0e4a254812c6a3152',1,'roboticslab::KdlSolver']]] +]; diff --git a/search/variables_5.html b/search/variables_5.html new file mode 100644 index 000000000..7e345d16c --- /dev/null +++ b/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_5.js b/search/variables_5.js new file mode 100644 index 000000000..b05df3d14 --- /dev/null +++ b/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['trajectories_537',['trajectories',['../classroboticslab_1_1BasicCartesianControl.html#a2c930c1895916cf82ee76debd417faf1',1,'roboticslab::BasicCartesianControl']]] +]; diff --git a/search/variables_6.html b/search/variables_6.html new file mode 100644 index 000000000..7d48e75e2 --- /dev/null +++ b/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_6.js b/search/variables_6.js new file mode 100644 index 000000000..f87d0d428 --- /dev/null +++ b/search/variables_6.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['vmostored_538',['vmoStored',['../classroboticslab_1_1BasicCartesianControl.html#a796971d7d383609060b0895809e9741d',1,'roboticslab::BasicCartesianControl']]], + ['vocab_5fcc_5fact_539',['VOCAB_CC_ACT',['../ICartesianControl_8h.html#a9da1ef0b7c564b2904e61d0c04f53d53',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fclose_5fgripper_540',['VOCAB_CC_ACTUATOR_CLOSE_GRIPPER',['../ICartesianControl_8h.html#a123310fe19eee91d2bdd5a61f8f1275e',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fgeneric_541',['VOCAB_CC_ACTUATOR_GENERIC',['../ICartesianControl_8h.html#a9d6bbaad1462e501419af7a5ade0285e',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fnone_542',['VOCAB_CC_ACTUATOR_NONE',['../ICartesianControl_8h.html#a1735d10e622c676fbf29083d3cc6b34a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fopen_5fgripper_543',['VOCAB_CC_ACTUATOR_OPEN_GRIPPER',['../ICartesianControl_8h.html#ad3133b001e78143a6a86b408781183af',1,'ICartesianControl.h']]], + ['vocab_5fcc_5factuator_5fstop_5fgripper_544',['VOCAB_CC_ACTUATOR_STOP_GRIPPER',['../ICartesianControl_8h.html#a7051875af20894cdc62680aa8aa49899',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fcmc_5fperiod_545',['VOCAB_CC_CONFIG_CMC_PERIOD',['../ICartesianControl_8h.html#abc702bebca794011cd93a4682084136f',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fframe_546',['VOCAB_CC_CONFIG_FRAME',['../ICartesianControl_8h.html#a6a73508a213d9cd2465b5e32903d6101',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fgain_547',['VOCAB_CC_CONFIG_GAIN',['../ICartesianControl_8h.html#abea2960186545705eb42011f2f31db7e',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fparams_548',['VOCAB_CC_CONFIG_PARAMS',['../ICartesianControl_8h.html#a562244bde1f002affd470c6fa83709a1',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fstreaming_5fcmd_549',['VOCAB_CC_CONFIG_STREAMING_CMD',['../ICartesianControl_8h.html#ac74dd2d6427104c99b7d75221aa4bc00',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5ftraj_5fduration_550',['VOCAB_CC_CONFIG_TRAJ_DURATION',['../ICartesianControl_8h.html#a3b007997f2db075b04d29162b271961a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fconfig_5fwait_5fperiod_551',['VOCAB_CC_CONFIG_WAIT_PERIOD',['../ICartesianControl_8h.html#ab374b2682255a38dc76034e88d372c7f',1,'ICartesianControl.h']]], + ['vocab_5fcc_5ffailed_552',['VOCAB_CC_FAILED',['../ICartesianControl_8h.html#ab736598e19568e3e2092cccc4768c6c4',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fforc_553',['VOCAB_CC_FORC',['../ICartesianControl_8h.html#a1a1fc1eff7f307b068bfe60a8bbd0209',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fforc_5fcontrolling_554',['VOCAB_CC_FORC_CONTROLLING',['../ICartesianControl_8h.html#a23ec9bc95eb267b60a52ae3ac593eb2a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fgcmp_555',['VOCAB_CC_GCMP',['../ICartesianControl_8h.html#a46dfb347580dac6a2df684a1a17a572a',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fgcmp_5fcontrolling_556',['VOCAB_CC_GCMP_CONTROLLING',['../ICartesianControl_8h.html#a36cfa5c2e1df2a8ab4227f9a504ff2d0',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fget_557',['VOCAB_CC_GET',['../ICartesianControl_8h.html#a8eaa88e65c46adc862ba54a1b851b44c',1,'ICartesianControl.h']]], + ['vocab_5fcc_5finv_558',['VOCAB_CC_INV',['../ICartesianControl_8h.html#a5962f382c250640afe1204df70445e87',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovi_559',['VOCAB_CC_MOVI',['../ICartesianControl_8h.html#a91afd721b5f5458ed921ed1b9da418b0',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovj_560',['VOCAB_CC_MOVJ',['../ICartesianControl_8h.html#a172a72b7d3352dd2540bd7b8aad337c8',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovj_5fcontrolling_561',['VOCAB_CC_MOVJ_CONTROLLING',['../ICartesianControl_8h.html#afb795f558f0db7a306b2bd9b3ad8eeaa',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovl_562',['VOCAB_CC_MOVL',['../ICartesianControl_8h.html#ae8ac4e2367ff3eba65b5614e3b93f9e1',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovl_5fcontrolling_563',['VOCAB_CC_MOVL_CONTROLLING',['../ICartesianControl_8h.html#ac776d2ff62aeae28c53f193e5348ffd6',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovv_564',['VOCAB_CC_MOVV',['../ICartesianControl_8h.html#af8a80d19863874ab1940712111879271',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fmovv_5fcontrolling_565',['VOCAB_CC_MOVV_CONTROLLING',['../ICartesianControl_8h.html#abde4673e54571138ddf2c15c1c22e4bc',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fnot_5fcontrolling_566',['VOCAB_CC_NOT_CONTROLLING',['../ICartesianControl_8h.html#ab7bf4659857140ac5dae54c41e99f0f8',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fnot_5fset_567',['VOCAB_CC_NOT_SET',['../ICartesianControl_8h.html#a9b38d7505b7d651fb38077ad487a5405',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fok_568',['VOCAB_CC_OK',['../ICartesianControl_8h.html#a84aad6f0fa7bc204973841b0e245ea03',1,'ICartesianControl.h']]], + ['vocab_5fcc_5frelj_569',['VOCAB_CC_RELJ',['../ICartesianControl_8h.html#a0e43012835feec8935eebf0a45eb813d',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fset_570',['VOCAB_CC_SET',['../ICartesianControl_8h.html#a522c9ba30f960803f101bc7e9bfeddad',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fstat_571',['VOCAB_CC_STAT',['../ICartesianControl_8h.html#a01a6315b554657e45e23fed90d5b82c8',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fstop_572',['VOCAB_CC_STOP',['../ICartesianControl_8h.html#acb3305c35bd58ac33d3d610c266822d9',1,'ICartesianControl.h']]], + ['vocab_5fcc_5ftool_573',['VOCAB_CC_TOOL',['../ICartesianControl_8h.html#a182c7f6601b974f592455ca7160d68a5',1,'ICartesianControl.h']]], + ['vocab_5fcc_5ftwist_574',['VOCAB_CC_TWIST',['../ICartesianControl_8h.html#ab0614b1d49bf7e41a14f7f790793839d',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fwait_575',['VOCAB_CC_WAIT',['../ICartesianControl_8h.html#ab62101f35cd7f7c09bd29ca793d15683',1,'ICartesianControl.h']]], + ['vocab_5fcc_5fwrench_576',['VOCAB_CC_WRENCH',['../ICartesianControl_8h.html#a93f53217e8977424bcd4d2c196316807',1,'ICartesianControl.h']]] +]; diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/structroboticslab_1_1AsibotConfiguration_1_1Pose-members.html b/structroboticslab_1_1AsibotConfiguration_1_1Pose-members.html new file mode 100644 index 000000000..33abcccf1 --- /dev/null +++ b/structroboticslab_1_1AsibotConfiguration_1_1Pose-members.html @@ -0,0 +1,107 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    roboticslab::AsibotConfiguration::Pose Member List
    +
    +
    + +

    This is the complete list of members for roboticslab::AsibotConfiguration::Pose, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + +
    _elb (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    _orient (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    _q1 (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    _q2 (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    _q3 (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    _q4 (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    _q5 (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    checkJointsInLimits(JointsIn qMin, JointsIn qMax) constroboticslab::AsibotConfiguration::Pose
    DOWN enum value (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    elbow enum nameroboticslab::AsibotConfiguration::Pose
    FORWARD enum value (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    orientation enum nameroboticslab::AsibotConfiguration::Pose
    Pose()roboticslab::AsibotConfiguration::Poseinline
    retrieveAngles(JointsOut q) constroboticslab::AsibotConfiguration::Pose
    REVERSED enum value (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    storeAngles(double q1, double q2, double q3, double q4, double q5, orientation orient, elbow elb)roboticslab::AsibotConfiguration::Pose
    toString() constroboticslab::AsibotConfiguration::Pose
    UP enum value (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    valid (defined in roboticslab::AsibotConfiguration::Pose)roboticslab::AsibotConfiguration::Pose
    + + + + diff --git a/structroboticslab_1_1AsibotConfiguration_1_1Pose.html b/structroboticslab_1_1AsibotConfiguration_1_1Pose.html new file mode 100644 index 000000000..f0d62f02e --- /dev/null +++ b/structroboticslab_1_1AsibotConfiguration_1_1Pose.html @@ -0,0 +1,163 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotConfiguration::Pose Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::AsibotConfiguration::Pose Struct Reference
    +
    +
    + +

    Helper class to store a specific robot configuration. +

    + +

    #include <AsibotConfiguration.hpp>

    + + + + + + + + +

    +Public Types

    enum  orientation { FORWARD +, REVERSED + }
     Orientation of axis 1 ('forward' or 180ยบ offset).
     
    enum  elbow { UP +, DOWN + }
     Orientation of axes 2-3 (elbow up/down).
     
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    Pose ()
     Constructor.
     
    +void storeAngles (double q1, double q2, double q3, double q4, double q5, orientation orient, elbow elb)
     Initializes angle values (in degrees).
     
    +bool checkJointsInLimits (JointsIn qMin, JointsIn qMax) const
     Checks whether current configuration is reachable.
     
    +void retrieveAngles (JointsOut q) const
     Returns stored angles.
     
    +std::string toString () const
     Serializes stored data.
     
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +double _q1
     
    +double _q2
     
    +double _q3
     
    +double _q4
     
    +double _q5
     
    +bool valid
     
    +orientation _orient
     
    +elbow _elb
     
    +
    The documentation for this struct was generated from the following files:
      +
    • libraries/YarpPlugins/AsibotSolver/AsibotConfiguration.hpp
    • +
    • libraries/YarpPlugins/AsibotSolver/AsibotConfiguration.cpp
    • +
    +
    + + + + diff --git a/structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame-members.html b/structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame-members.html new file mode 100644 index 000000000..01dba539b --- /dev/null +++ b/structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame-members.html @@ -0,0 +1,90 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    roboticslab::AsibotSolver::AsibotTcpFrame Member List
    +
    + + + + + diff --git a/structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame.html b/structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame.html new file mode 100644 index 000000000..3aa88738a --- /dev/null +++ b/structroboticslab_1_1AsibotSolver_1_1AsibotTcpFrame.html @@ -0,0 +1,101 @@ + + + + + + + +kinematics-dynamics: roboticslab::AsibotSolver::AsibotTcpFrame Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::AsibotSolver::AsibotTcpFrame Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +bool hasFrame
     
    +yarp::sig::Matrix frameTcp
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm-members.html b/structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm-members.html new file mode 100644 index 000000000..070a4ce2c --- /dev/null +++ b/structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm-members.html @@ -0,0 +1,91 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    roboticslab::ScrewTheoryIkProblemBuilder::PoeTerm Member List
    +
    + + + + + diff --git a/structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm.html b/structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm.html new file mode 100644 index 000000000..2bdc358cc --- /dev/null +++ b/structroboticslab_1_1ScrewTheoryIkProblemBuilder_1_1PoeTerm.html @@ -0,0 +1,106 @@ + + + + + + + +kinematics-dynamics: roboticslab::ScrewTheoryIkProblemBuilder::PoeTerm Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::ScrewTheoryIkProblemBuilder::PoeTerm Struct Reference
    +
    +
    + +

    Helper structure that holds the state of a POE term. +

    + +

    #include <ScrewTheoryIkProblem.hpp>

    + + + + + + +

    +Public Attributes

    +bool known
     
    +bool simplified
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions-members.html b/structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions-members.html new file mode 100644 index 000000000..b8dec102a --- /dev/null +++ b/structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions-members.html @@ -0,0 +1,89 @@ + + + + + + + +kinematics-dynamics: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    roboticslab::test::ScrewTheoryTest::compare_solutions Member List
    +
    +
    + +

    This is the complete list of members for roboticslab::test::ScrewTheoryTest::compare_solutions, including all inherited members.

    + + +
    operator()(const std::pair< int, double > &lhs, const std::pair< int, double > &rhs) (defined in roboticslab::test::ScrewTheoryTest::compare_solutions)roboticslab::test::ScrewTheoryTest::compare_solutionsinline
    + + + + diff --git a/structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions.html b/structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions.html new file mode 100644 index 000000000..bd5138dec --- /dev/null +++ b/structroboticslab_1_1test_1_1ScrewTheoryTest_1_1compare__solutions.html @@ -0,0 +1,98 @@ + + + + + + + +kinematics-dynamics: roboticslab::test::ScrewTheoryTest::compare_solutions Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    kinematics-dynamics +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    roboticslab::test::ScrewTheoryTest::compare_solutions Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    +bool operator() (const std::pair< int, double > &lhs, const std::pair< int, double > &rhs)
     
    +
    The documentation for this struct was generated from the following file:
      +
    • tests/testScrewTheory.cpp
    • +
    +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..7d45d36c1 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}