Aikido
util.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_ROBOT_UTIL_HPP_
2 #define AIKIDO_ROBOT_UTIL_HPP_
3 
4 #include <dart/dart.hpp>
5 #include <dart/dynamics/dynamics.hpp>
6 
8 #include "aikido/common/RNG.hpp"
14 #include "aikido/io/yaml.hpp"
19 
20 namespace aikido {
21 namespace robot {
22 
23 // TODO: These are mostly planning methods used in Robot classes.
24 // The planning methods will be removed once we have a Planner API.
25 namespace util {
26 
29 const std::vector<double> defaultVFParams{
30  0.03, // distanceTolerance (offset-only)
31  0.004, // positionTolerance
32  0.01, // angularTolerance
33  0.01, // initialStepSize
34  1e-3, // jointlimitTolerance
35  1e-3, // constraintCheckResolution
36  1.5, // timeout (s)
37  0.01, // goalTolerance (twist-only)
38  1.0 // angle-to-distance ratio (twist-only)
39 };
40 
43 {
60  double initialStepSize = defaultVFParams[3],
63  std::chrono::duration<double> timeout
64  = std::chrono::duration<double>(defaultVFParams[6]),
65  double goalTolerance = defaultVFParams[7],
73  , timeout(timeout)
76  // Do nothing
77  };
78 
79  double distanceTolerance;
85  std::chrono::duration<double> timeout;
86  double goalTolerance;
88 };
89 
91 {
93  common::RNG* rng = nullptr,
94  std::size_t maxNumTrials = 5,
95  double maxExtensionDistance = std::numeric_limits<double>::infinity(),
96  double maxDistanceBtwProjections = 0.1,
97  double minStepSize = 0.05,
98  double minTreeConnectionDistance = 0.1,
99  std::size_t projectionMaxIteration = 20,
100  double projectionTolerance = 1e-4)
101  : rng(rng)
109  {
110  // Do nothing
111  }
112 
114  std::size_t maxNumTrials;
117  double minStepSize;
121 };
122 
124 {
126  std::size_t maxSamplingTries = 1,
127  std::size_t batchSize = 100,
128  std::size_t maxBatches = 1,
129  std::size_t numMaxIterations = 500)
134  {
135  // Do nothing
136  }
137 
138  std::size_t maxSamplingTries;
139  std::size_t batchSize;
140  std::size_t maxBatches;
141  std::size_t numMaxIterations;
142 };
143 
147 std::unordered_map<std::string, const Eigen::VectorXd>
148 parseYAMLToNamedConfigurations(const YAML::Node& node);
149 
160  const dart::dynamics::BodyNodePtr& bodyNode,
161  const Eigen::Vector3d& direction,
162  double distance,
163  const constraint::dart::TSRPtr& goal,
164  const constraint::dart::TSRPtr& constraint,
165  double positionTolerance = 1e-3,
166  double angularTolerance = 1e-3);
167 
172 Eigen::Isometry3d getLookAtIsometry(
173  const Eigen::Vector3d& positionFrom, const Eigen::Vector3d& positionTo);
174 
180 const dart::dynamics::BodyNode* getBodyNodeOrThrow(
181  const dart::dynamics::MetaSkeleton& skeleton,
182  const std::string& bodyNodeName);
183 
189 dart::dynamics::BodyNode* getBodyNodeOrThrow(
190  dart::dynamics::MetaSkeleton& skeleton, const std::string& bodyNodeName);
191 
195 inline std::set<std::string> dofNamesFromSkeleton(
196  const dart::dynamics::MetaSkeletonPtr& skeleton)
197 {
198  std::set<std::string> ret;
199  if (!skeleton)
200  return ret;
201  for (const auto& dof : skeleton->getDofs())
202  {
203  ret.insert(dof->getName());
204  }
205  return ret;
206 }
207 
208 } // namespace util
209 } // namespace robot
210 } // namespace aikido
211 
212 #endif // AIKIDO_ROBOT_UTIL_HPP_
aikido::robot::util::CRRTPlannerParameters::minStepSize
double minStepSize
Definition: util.hpp:117
aikido::robot::util::VectorFieldPlannerParameters::constraintCheckResolution
double constraintCheckResolution
Definition: util.hpp:84
aikido::robot::util::VectorFieldPlannerParameters::goalTolerance
double goalTolerance
Definition: util.hpp:86
aikido::robot::util::CRRTPlannerParameters::CRRTPlannerParameters
CRRTPlannerParameters(common::RNG *rng=nullptr, std::size_t maxNumTrials=5, double maxExtensionDistance=std::numeric_limits< double >::infinity(), double maxDistanceBtwProjections=0.1, double minStepSize=0.05, double minTreeConnectionDistance=0.1, std::size_t projectionMaxIteration=20, double projectionTolerance=1e-4)
Definition: util.hpp:92
RNG.hpp
ConfigurationRanker.hpp
aikido::robot::util::VectorFieldPlannerParameters::VectorFieldPlannerParameters
VectorFieldPlannerParameters(double distanceTolerance=defaultVFParams[0], double positionTolerance=defaultVFParams[1], double angularTolerance=defaultVFParams[2], double initialStepSize=defaultVFParams[3], double jointLimitTolerance=defaultVFParams[4], double constraintCheckResolution=defaultVFParams[5], std::chrono::duration< double > timeout=std::chrono::duration< double >(defaultVFParams[6]), double goalTolerance=defaultVFParams[7], double angleDistanceRatio=defaultVFParams[8])
Struct Constructor.
Definition: util.hpp:56
aikido::robot::util::VectorFieldPlannerParameters
Paramters for Vector Field Planner.
Definition: util.hpp:42
aikido::robot::util::VectorFieldPlannerParameters::timeout
std::chrono::duration< double > timeout
Definition: util.hpp:85
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::robot::util::dofNamesFromSkeleton
std::set< std::string > dofNamesFromSkeleton(const dart::dynamics::MetaSkeletonPtr &skeleton)
Get a set of degree-of-freedom names from MetaSkeleton.
Definition: util.hpp:195
aikido::constraint::dart::TSRPtr
std::shared_ptr< TSR > TSRPtr
Definition: TSR.hpp:17
aikido::robot::util::VectorFieldPlannerParameters::angularTolerance
double angularTolerance
Definition: util.hpp:81
aikido::robot::util::VectorFieldPlannerParameters::jointLimitTolerance
double jointLimitTolerance
Definition: util.hpp:83
TSR.hpp
aikido::robot::util::defaultVFParams
const std::vector< double > defaultVFParams
Default Vector Field Planner Parameters Suitable for ADA-robot end-effector movements.
Definition: util.hpp:29
aikido::robot::util::CRRTPlannerParameters::projectionTolerance
double projectionTolerance
Definition: util.hpp:120
Spline.hpp
Interpolated.hpp
aikido::robot::util::VectorFieldPlannerParameters::positionTolerance
double positionTolerance
Definition: util.hpp:80
aikido::robot::util::PlanToTSRParameters::PlanToTSRParameters
PlanToTSRParameters(std::size_t maxSamplingTries=1, std::size_t batchSize=100, std::size_t maxBatches=1, std::size_t numMaxIterations=500)
Definition: util.hpp:125
aikido::robot::util::VectorFieldPlannerParameters::angleDistanceRatio
double angleDistanceRatio
Definition: util.hpp:87
aikido::robot::util::VectorFieldPlannerParameters::distanceTolerance
double distanceTolerance
Definition: util.hpp:77
aikido::robot::util::PlanToTSRParameters::maxBatches
std::size_t maxBatches
Definition: util.hpp:140
yaml.hpp
aikido::robot::util::CRRTPlannerParameters
Definition: util.hpp:90
aikido::robot::util::getLookAtIsometry
Eigen::Isometry3d getLookAtIsometry(const Eigen::Vector3d &positionFrom, const Eigen::Vector3d &positionTo)
Get a pose at a point looking at another point.
aikido::common::RNG
Implementation of the C++11 "random engine" concept that uses virtual function calls to erase the typ...
Definition: RNG.hpp:24
CollisionFree.hpp
aikido::robot::util::PlanToTSRParameters::maxSamplingTries
std::size_t maxSamplingTries
Definition: util.hpp:138
Trajectory.hpp
aikido::robot::util::CRRTPlannerParameters::maxExtensionDistance
double maxExtensionDistance
Definition: util.hpp:115
aikido::robot::util::PlanToTSRParameters
Definition: util.hpp:123
aikido::robot::util::PlanToTSRParameters::numMaxIterations
std::size_t numMaxIterations
Definition: util.hpp:141
aikido::robot::util::getBodyNodeOrThrow
const dart::dynamics::BodyNode * getBodyNodeOrThrow(const dart::dynamics::MetaSkeleton &skeleton, const std::string &bodyNodeName)
Get a specific BodyNode of a MetaSkeleton or throw an execption if it doesn't exist.
Testable.hpp
MetaSkeletonStateSpace.hpp
aikido::robot::util::CRRTPlannerParameters::maxDistanceBtwProjections
double maxDistanceBtwProjections
Definition: util.hpp:116
aikido::robot::util::CRRTPlannerParameters::rng
common::RNG * rng
Definition: util.hpp:113
aikido::robot::util::PlanToTSRParameters::batchSize
std::size_t batchSize
Definition: util.hpp:139
aikido::robot::util::CRRTPlannerParameters::maxNumTrials
std::size_t maxNumTrials
Definition: util.hpp:114
ExecutorThread.hpp
aikido::robot::util::VectorFieldPlannerParameters::initialStepSize
double initialStepSize
Definition: util.hpp:82
aikido::robot::util::getGoalAndConstraintTSRForEndEffectorOffset
bool getGoalAndConstraintTSRForEndEffectorOffset(const dart::dynamics::BodyNodePtr &bodyNode, const Eigen::Vector3d &direction, double distance, const constraint::dart::TSRPtr &goal, const constraint::dart::TSRPtr &constraint, double positionTolerance=1e-3, double angularTolerance=1e-3)
Gets Goal and Constraint TSR for end-effector.
TrajectoryExecutor.hpp
aikido::robot::util::CRRTPlannerParameters::projectionMaxIteration
std::size_t projectionMaxIteration
Definition: util.hpp:119
aikido::robot::util::parseYAMLToNamedConfigurations
std::unordered_map< std::string, const Eigen::VectorXd > parseYAMLToNamedConfigurations(const YAML::Node &node)
Parses YAML node for named configurtaions.
aikido::robot::util::CRRTPlannerParameters::minTreeConnectionDistance
double minTreeConnectionDistance
Definition: util.hpp:118