dart
SharedLibraryWamIkFast.hpp
1 /*
2  * Copyright (c) 2011-2021, The DART development contributors
3  * All rights reserved.
4  *
5  * The list of contributors can be found at:
6  * https://github.com/dartsim/dart/blob/master/LICENSE
7  *
8  * This file is provided under the following "BSD-style" License:
9  * Redistribution and use in source and binary forms, with or
10  * without modification, are permitted provided that the following
11  * conditions are met:
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/or other materials provided
17  * with the distribution.
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
19  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
20  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef DART_TEST_SHAREDLIBRARYWAMIKFAST_HPP_
34 #define DART_TEST_SHAREDLIBRARYWAMIKFAST_HPP_
35 
36 #include "dart/common/SharedLibrary.hpp"
37 #include "dart/dynamics/IkFast.hpp"
38 
40 {
41 public:
44  const std::vector<std::size_t>& dofMap,
45  const std::vector<std::size_t>& freeDofMap,
46  const std::string& methodName = "IKFast",
47  const Analytical::Properties& properties = Analytical::Properties());
48 
49  // Documentation inherited.
50  auto clone(dart::dynamics::InverseKinematics* newIK) const
51  -> std::unique_ptr<GradientMethod> override;
52 
53 protected:
54  // Documentation inherited.
55  int getNumFreeParameters() const override;
56 
57  // Documentation inherited.
58  int* getFreeParameters() const override;
59 
60  // Documentation inherited.
61  int getNumJoints() const override;
62 
63  // Documentation inherited.
64  int getIkRealSize() const override;
65 
66  // Documentation inherited.
67  int getIkType() const override;
68 
69  // Documentation inherited.
70  bool computeIk(
71  const IkReal* targetTranspose,
72  const IkReal* targetRotation,
73  const IkReal* freeParams,
74  ikfast::IkSolutionListBase<IkReal>& solutions) override;
75 
76  // Documentation inherited.
77  void computeFk(
78  const IkReal* parameters,
79  IkReal* targetTranspose,
80  IkReal* targetRotation) override;
81 
82  // Documentation inherited.
83  const char* getKinematicsHash() override;
84 
85  // Documentation inherited.
86  const char* getIkFastVersion() override;
87 };
88 
89 #endif // DART_TEST_SHAREDLIBRARYWAMIKFAST_HPP_
Definition: SharedLibraryWamIkFast.hpp:39
bool computeIk(const IkReal *targetTranspose, const IkReal *targetRotation, const IkReal *freeParams, ikfast::IkSolutionListBase< IkReal > &solutions) override
Computes the inverse kinematics solutions using the generated IKFast code.
Definition: SharedLibraryWamIkFast.cpp:39075
The InverseKinematics class provides a convenient way of setting up an IK optimization problem...
Definition: InverseKinematics.hpp:75
void computeFk(const IkReal *parameters, IkReal *targetTranspose, IkReal *targetRotation) override
Computes the forward kinematics solutions using the generated IKFast code.
Definition: SharedLibraryWamIkFast.cpp:39085
const char * getKinematicsHash() override
Returns a hash of all the chain values used for double checking that the correct IK is used...
Definition: SharedLibraryWamIkFast.cpp:39092
A base class for IkFast-based analytical inverse kinematics classes.
Definition: IkFast.hpp:50
int getNumJoints() const override
Returns the total number of indices of the chane.
Definition: SharedLibraryWamIkFast.cpp:39057
int getNumFreeParameters() const override
Returns the number of free parameters users has to set apriori.
Definition: SharedLibraryWamIkFast.cpp:39045
int * getFreeParameters() const override
Returns the indicies of the free parameters indexed by the chain joints.
Definition: SharedLibraryWamIkFast.cpp:39051
int getIkType() const override
Returns the IK type.
Definition: SharedLibraryWamIkFast.cpp:39069
int getIkRealSize() const override
Returns the size in bytes of the configured number type.
Definition: SharedLibraryWamIkFast.cpp:39063
auto clone(dart::dynamics::InverseKinematics *newIK) const -> std::unique_ptr< GradientMethod > override
Enable this GradientMethod to be cloned to a new IK module.
Definition: SharedLibraryWamIkFast.cpp:39038
const char * getIkFastVersion() override
Returns the IkFast version used to generate this file.
Definition: SharedLibraryWamIkFast.cpp:39098