Tesseract
Motion Planning Environment
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
utils.h File Reference

Kinematics utility functions. More...

#include <tesseract_common/macros.h>
#include <vector>
#include <Eigen/Core>
#include <Eigen/Geometry>
#include <Eigen/Eigenvalues>
#include <console_bridge/console.h>
#include <tesseract_scene_graph/graph.h>
#include <tesseract_kinematics/core/forward_kinematics.h>
#include <tesseract_kinematics/core/kinematic_group.h>
Include dependency graph for utils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tesseract_kinematics::ManipulabilityEllipsoid
 Used to store Manipulability and Force Ellipsoid data. More...
 
struct  tesseract_kinematics::Manipulability
 Contains both manipulability ellipsoid and force ellipsoid data. More...
 

Namespaces

namespace  tesseract_kinematics
 

Typedefs

template<typename FloatType >
using tesseract_kinematics::VectorX = Eigen::Matrix< FloatType, Eigen::Dynamic, 1 >
 

Functions

static void tesseract_kinematics::numericalJacobian (Eigen::Ref< Eigen::MatrixXd > jacobian, const Eigen::Isometry3d &change_base, const tesseract_kinematics::ForwardKinematics &kin, const Eigen::Ref< const Eigen::VectorXd > &joint_values, const std::string &link_name, const Eigen::Ref< const Eigen::Vector3d > &link_point)
 Numerically calculate a jacobian. This is mainly used for testing. More...
 
static void tesseract_kinematics::numericalJacobian (Eigen::Ref< Eigen::MatrixXd > jacobian, const JointGroup &joint_group, const Eigen::Ref< const Eigen::VectorXd > &joint_values, const std::string &link_name, const Eigen::Ref< const Eigen::Vector3d > &link_point)
 Numerically calculate a jacobian. This is mainly used for testing. More...
 
static bool tesseract_kinematics::solvePInv (const Eigen::Ref< const Eigen::MatrixXd > &A, const Eigen::Ref< const Eigen::VectorXd > &b, Eigen::Ref< Eigen::VectorXd > x)
 Solve equation Ax=b for x Use this SVD to compute A+ (pseudoinverse of A). Weighting still TBD. More...
 
static bool tesseract_kinematics::dampedPInv (const Eigen::Ref< const Eigen::MatrixXd > &A, Eigen::Ref< Eigen::MatrixXd > P, const double eps=0.011, const double lambda=0.01)
 Calculate Damped Pseudoinverse Use this SVD to compute A+ (pseudoinverse of A). Weighting still TBD. More...
 
bool tesseract_kinematics::isNearSingularity (const Eigen::Ref< const Eigen::MatrixXd > &jacobian, double threshold=0.01)
 Check if the provided jacobian is near a singularity. More...
 
Manipulability tesseract_kinematics::calcManipulability (const Eigen::Ref< const Eigen::MatrixXd > &jacobian)
 Calculate manipulability data about the provided jacobian. More...
 
template<typename FloatType >
void tesseract_kinematics::getRedundantSolutionsHelper (std::vector< VectorX< FloatType > > &redundant_sols, const Eigen::Ref< const Eigen::VectorXd > &sol, const Eigen::MatrixX2d &limits, std::vector< Eigen::Index >::const_iterator current_index, std::vector< Eigen::Index >::const_iterator end_index)
 This a recursive function for calculating all permutations of the redundant solutions. More...
 
template<typename FloatType >
std::vector< VectorX< FloatType > > tesseract_kinematics::getRedundantSolutions (const Eigen::Ref< const VectorX< FloatType > > &sol, const Eigen::MatrixX2d &limits, const std::vector< Eigen::Index > &redundancy_capable_joints)
 Kinematics only return solution between PI and -PI. Provided the limits it will append redundant solutions. More...
 
template<typename FloatType >
bool tesseract_kinematics::isValid (const std::array< FloatType, 6 > &qs)
 Given a vector of floats, this check if they are finite. More...
 
template<typename FloatType >
void tesseract_kinematics::harmonizeTowardZero (Eigen::Ref< VectorX< FloatType > > qs, const std::vector< Eigen::Index > &redundancy_capable_joints)
 This take an array of floats and modifies them in place to be between [-PI, PI]. More...
 

Detailed Description

Kinematics utility functions.

Author
Levi Armstrong
Date
April 15, 2018
Version
TODO
Bug:
No known bugs
License
Software License Agreement (Apache License)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.