kinematics_metrics.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2012, Willow Garage, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of Willow Garage nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
35 /* Author: Sachin Chitta */
36 
37 #ifndef MOVEIT_KINEMATICS_METRICS_KINEMATICS_METRICS_
38 #define MOVEIT_KINEMATICS_METRICS_KINEMATICS_METRICS_
39 
42 
45 {
47 
53 {
54 public:
56  KinematicsMetrics(const robot_model::RobotModelConstPtr& robot_model)
57  : robot_model_(robot_model), penalty_multiplier_(0.0)
58  {
59  }
60 
68  bool getManipulabilityIndex(const robot_state::RobotState& state, const std::string& group_name,
69  double& manipulability_index, bool translation = false) const;
70 
79  const robot_model::JointModelGroup* joint_model_group, double& manipulability_index,
80  bool translation = false) const;
81 
90  bool getManipulabilityEllipsoid(const robot_state::RobotState& state, const std::string& group_name,
91  Eigen::MatrixXcd& eigen_values, Eigen::MatrixXcd& eigen_vectors) const;
92 
102  const robot_model::JointModelGroup* joint_model_group, Eigen::MatrixXcd& eigen_values,
103  Eigen::MatrixXcd& eigen_vectors) const;
104 
114  bool getManipulability(const robot_state::RobotState& state, const std::string& group_name, double& condition_number,
115  bool translation = false) const;
116 
126  bool getManipulability(const robot_state::RobotState& state, const robot_model::JointModelGroup* joint_model_group,
127  double& condition_number, bool translation = false) const;
128 
129  void setPenaltyMultiplier(double multiplier)
130  {
131  penalty_multiplier_ = fabs(multiplier);
132  }
133 
134  const double& getPenaltyMultiplier() const
135  {
136  return penalty_multiplier_;
137  }
138 
139 protected:
140  robot_model::RobotModelConstPtr robot_model_;
141 
142 private:
156  const robot_model::JointModelGroup* joint_model_group) const;
157 
159 };
160 }
161 
162 #endif
Core components of MoveIt!
MOVEIT_CLASS_FORWARD(KinematicsMetrics)
double getJointLimitsPenalty(const robot_state::RobotState &state, const robot_model::JointModelGroup *joint_model_group) const
Defines a multiplier for the manipulabilty = 1 - exp ( -penalty_multipler_ * product_{i=1}{n} (distan...
const double & getPenaltyMultiplier() const
Compute different kinds of metrics for kinematics evaluation. Currently includes manipulability.
bool getManipulabilityEllipsoid(const robot_state::RobotState &state, const std::string &group_name, Eigen::MatrixXcd &eigen_values, Eigen::MatrixXcd &eigen_vectors) const
Get the (translation) manipulability ellipsoid for a given group at a given joint configuration...
bool getManipulability(const robot_state::RobotState &state, const std::string &group_name, double &condition_number, bool translation=false) const
Get the manipulability = sigma_min/sigma_max where sigma_min and sigma_max are the smallest and large...
void setPenaltyMultiplier(double multiplier)
robot_model::RobotModelConstPtr robot_model_
Representation of a robot's state. This includes position, velocity, acceleration and effort...
Definition: robot_state.h:123
bool getManipulabilityIndex(const robot_state::RobotState &state, const std::string &group_name, double &manipulability_index, bool translation=false) const
Get the manipulability for a given group at a given joint configuration.
KinematicsMetrics(const robot_model::RobotModelConstPtr &robot_model)
Construct a KinematicsMetricss from a RobotModel.
Namespace for kinematics metrics.


moveit_core
Author(s): Ioan Sucan , Sachin Chitta , Acorn Pooley
autogenerated on Sun Oct 18 2020 13:16:33