|
MoveIt Pro API
Core Behaviors for MoveIt Pro
|
This library exposes an API to compute Velocity and Path Inverse Kinematics:
Inverse Kinematics rely heavily on the computation of Jacobian matrices. These relate joint-space velocities with Cartesian velocities. We have an efficient implementation of Jacobian computation both for kinematic chains and kinematic trees (e.g. dual arm systems).
Checkout the C++ API documentation in the jacobian.hpp header.
This is a C++ library that provides a simple interface to compute the joint velocities that will achieve a desired Cartesian velocity. The computation is done using a damped least squares Jacobian inverse, which is robust to singularities and fast to compute (about 5x faster than a truncated pseudo-inverse approach). We support the definition of additional joint-space tasks to be executed in the nullspace of the primary task. The functions are templated to allow their use with dynamic or static-sized Eigen types (i.e. suitable for real-time systems).
Checkout the C++ API documentation in the velocity_inverse_kinematics.hpp header.
A library that exposes functions to compute joint-space paths that correspond to Cartesian space paths:
Checkout the C++ API documentation in the path_ik.hpp header.
The pathIK solver converts a Cartesian reference path into a dense joint-space path using incremental inverse kinematics. The algorithm:
PathIKOptions, to internally guarantee a path dense enough for the algorithm requirements.max_optimizer_iterations iterations per waypoint, to accommodate nullspace optimization.setTipConstraint) if a more lenient solve is desired.The output is a dense joint-space path without timing information. Before execution, the path must be timed via a trajectory timing algorithm (e.g., TOTG).
The density of the output joint-space path is determined by the interpolation step sizes, and may not be accurate at the blending points:
For a straight-line translational path, the output will contain approximately 1000 waypoints per meter. After IK solving, the path can be downsampled using the downsamplePath function in path_utils.hpp.
Checkout these files for additional support functions:
damped_least_squares_inverse.hpp: Implementation of a damped least squares Jacobian inverse.interpolate.hpp: Path interpolation functions.nullspace_tasks.hpp: Implementation of common nullspace tasks.path_utils.hpp: Utility functions for path computation (e.g. path downsampling, etc.).math.hpp: Various math functions.