This class tries to find large axis-aligned bounding boxes in the configuration space, such that all configurations in the boxes are collision free.
Note that we don't guarantee to find the largest box.
|
| | ~CspaceFreeBox () override |
| | CspaceFreeBox (const multibody::MultibodyPlant< double > *plant, const geometry::SceneGraph< double > *scene_graph, SeparatingPlaneOrder plane_order, const Options &options=Options{}) |
| bool | FindSeparationCertificateGivenBox (const Eigen::Ref< const Eigen::VectorXd > &q_box_lower, const Eigen::Ref< const Eigen::VectorXd > &q_box_upper, const IgnoredCollisionPairs &ignored_collision_pairs, const FindSeparationCertificateOptions &options, std::unordered_map< SortedPair< geometry::GeometryId >, SeparationCertificateResult > *certificates) const |
| | Finds the certificates that the C-space box {q | q_box_lower <= q <= q_box_upper} is collision free.
|
| | CspaceFreeBox (const CspaceFreeBox &)=delete |
| CspaceFreeBox & | operator= (const CspaceFreeBox &)=delete |
| | CspaceFreeBox (CspaceFreeBox &&)=delete |
| CspaceFreeBox & | operator= (CspaceFreeBox &&)=delete |
| virtual | ~CspaceFreePolytopeBase () |
| const multibody::RationalForwardKinematics & | rational_forward_kin () const |
| | Getter for the rational forward kinematics object that computes the forward kinematics as rational functions.
|
| const std::unordered_map< SortedPair< geometry::GeometryId >, int > & | map_geometries_to_separating_planes () const |
| | separating_planes()[map_geometries_to_separating_planes.at(geometry1_id,
geometry2_id)] is the separating plane that separates geometry 1 and geometry 2.
|
| const std::vector< CSpaceSeparatingPlane< symbolic::Variable > > & | separating_planes () const |
| | All the separating planes between each pair of geometries.
|
| const Vector3< symbolic::Variable > & | y_slack () const |
| | Get the slack variable used for non-polytopic collision geometries.
|
| | CspaceFreePolytopeBase (const CspaceFreePolytopeBase &)=delete |
| CspaceFreePolytopeBase & | operator= (const CspaceFreePolytopeBase &)=delete |
| | CspaceFreePolytopeBase (CspaceFreePolytopeBase &&)=delete |
| CspaceFreePolytopeBase & | operator= (CspaceFreePolytopeBase &&)=delete |
|
| enum class | SForPlane { kAll
, kOnChain
} |
| | When we set up the separating plane {x | a(s)ᵀx + b(s) = 0} between a pair of geometries, we need to determine which s are used in a(s) and b(s). More...
|
| | CspaceFreePolytopeBase (const multibody::MultibodyPlant< double > *plant, const geometry::SceneGraph< double > *scene_graph, SeparatingPlaneOrder plane_order, SForPlane s_for_plane_enum, const Options &options=Options{}) |
| | Constructor.
|
| template<typename T> |
| void | CalcSBoundsPolynomial (const VectorX< T > &s_lower, const VectorX< T > &s_upper, VectorX< symbolic::Polynomial > *s_minus_s_lower, VectorX< symbolic::Polynomial > *s_upper_minus_s) const |
| | Computes s-s_lower and s_upper - s as polynomials of s.
|
| int | GetSeparatingPlaneIndex (const SortedPair< geometry::GeometryId > &pair) const |
| | Returns the index of the plane which will separate the geometry pair.
|
| const symbolic::Variables & | get_s_set () const |
| const geometry::SceneGraph< double > & | scene_graph () const |
| const std::map< multibody::BodyIndex, std::vector< std::unique_ptr< CIrisCollisionGeometry > > > & | link_geometries () const |
| SeparatingPlaneOrder | plane_order () const |
| const std::unordered_map< SortedPair< multibody::BodyIndex >, std::array< VectorX< symbolic::Monomial >, 4 > > & | map_body_to_monomial_basis_array () const |
| | Maps a pair of body (body1, body2) to an array of monomial basis monomial_basis_array.
|
| bool | with_cross_y () const |
| | Check Options::with_cross_y for more details.
|
| const std::unordered_map< SortedPair< multibody::BodyIndex >, std::vector< int > > & | map_body_pair_to_s_on_chain () const |
| | For a pair of bodies body_pair, returns the indices of all s on the kinematics chain from body_pair.first() to body_pair.second().
|
| VectorX< symbolic::Variable > | GetSForPlane (const SortedPair< multibody::BodyIndex > &body_pair, SForPlane s_for_plane_enum) const |
| | Returns a vector of s variable used in a(s), b(s), which parameterize the separating plane {x | a(s)ᵀx+b(s) = 0}.
|
| void | SolveCertificationForEachPlaneInParallel (const std::vector< int > &active_plane_indices, const std::function< std::pair< bool, int >(int)> &solve_plane_sos, Parallelism parallelism, bool verbose, bool terminate_at_failure) const |
| | For each pair of geometries, solve the certification problem to find their separation plane in parallel.
|
| int | GetGramVarSizeForPolytopeSearchProgram (const std::vector< PlaneSeparatesGeometries > &plane_geometries_vec, const IgnoredCollisionPairs &ignored_collision_pairs, const std::function< int(const symbolic::RationalFunction &rational, const std::array< VectorX< symbolic::Monomial >, 4 > &monomial_basis_array)> &count_gram_per_rational) const |
| | Get the total size of all the decision variables for the Gram matrices, so as to search for the polytope with given Lagrangian multipliers.
|