Drake
Drake C++ Documentation
geodesic_convexity.h File Reference

Detailed Description

A robot that has revolute joints without any limits has an inherently non-Euclidean configuration space, but one can still consider "geodesically-convex" sets, akin to convex sets in Euclidean space.

In practice, this only requires that the width of the set along each dimension corresponding to an unbounded revolute joint be strictly less than π. These functions are primarily used by GcsTrajectoryOptimization to make motion plans for these types of robots.

#include <tuple>
#include <utility>
#include <vector>
#include "drake/geometry/optimization/convex_set.h"
#include "drake/geometry/optimization/intersection.h"
#include "drake/solvers/mathematical_program.h"
Include dependency graph for geodesic_convexity.h:

Namespaces

 drake
 
 drake::geometry
 
 drake::geometry::optimization
 

Functions

bool CheckIfSatisfiesConvexityRadius (const geometry::optimization::ConvexSet &convex_set, const std::vector< int > &continuous_revolute_joints)
 Given a convex set, and a list of indices corresponding to continuous revolute joints, checks whether or not the set satisfies the convexity radius. More...
 
geometry::optimization::ConvexSets PartitionConvexSet (const geometry::optimization::ConvexSet &convex_set, const std::vector< int > &continuous_revolute_joints, const double epsilon=1e-5)
 Partitions a convex set into (smaller) convex sets whose union is the original set and that each respect the convexity radius as in CheckIfSatisfiesConvexityRadius. More...
 
geometry::optimization::ConvexSets PartitionConvexSet (const geometry::optimization::ConvexSets &convex_sets, const std::vector< int > &continuous_revolute_joints, const double epsilon=1e-5)
 Function overload to take in a list of convex sets, and partition all so as to respect the convexity radius. More...
 
std::vector< std::tuple< int, int, Eigen::VectorXd > > CalcPairwiseIntersections (const ConvexSets &convex_sets_A, const ConvexSets &convex_sets_B, const std::vector< int > &continuous_revolute_joints)
 Computes the pairwise intersections edges between two lists of convex sets. More...
 
std::vector< std::tuple< int, int, Eigen::VectorXd > > CalcPairwiseIntersections (const ConvexSets &convex_sets, const std::vector< int > &continuous_revolute_joints)
 Convenience overload to compute pairwise intersections within a list of convex sets. More...