hpp-rbprm  4.15.1
Implementation of RB-PRM planner using hpp.
contact_generation.hh
Go to the documentation of this file.
1 // This file is part of hpp-rbprm.
6 // hpp-rbprm is free software: you can redistribute it
7 // and/or modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation, either version
9 // 3 of the License, or (at your option) any later version.
10 //
11 // hpp-wholebody-step-planner is distributed in the hope that it will be
12 // useful, but WITHOUT ANY WARRANTY; without even the implied warranty
13 // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // General Lesser Public License for more details. You should have
15 // received a copy of the GNU Lesser General Public License along with
16 // hpp-wholebody-step-planner. If not, see
17 // <http://www.gnu.org/licenses/>.
18 
19 #ifndef HPP_RBPRM_CONTACT_GENERATION_HH
20 #define HPP_RBPRM_CONTACT_GENERATION_HH
21 
24 #include <hpp/rbprm/rbprm-state.hh>
25 #include <queue>
26 
27 namespace hpp {
28 namespace rbprm {
29 namespace contact {
30 
31 typedef std::queue<hpp::rbprm::State> Q_State;
32 typedef std::pair<hpp::rbprm::State, std::vector<std::string> > ContactState;
33 typedef std::queue<ContactState> T_ContactState;
34 
37  RbPrmFullBodyPtr_t fb, const State& ps,
38  pinocchio::ConfigurationIn_t configuration, const affMap_t& affordances,
39  const std::map<std::string, std::vector<std::string> >& affFilters,
40  const double robustnessTreshold = 0,
41  const std::size_t maxContactBreaks = 1,
42  const std::size_t maxContactCreations = 1,
43  const bool checkStabilityMaintain = false,
44  const bool checkStabilityGenerate = true,
45  const fcl::Vec3f& direction = fcl::Vec3f(0, 0, 1),
46  const fcl::Vec3f& acceleration = fcl::Vec3f(0, 0, 0),
47  const bool contactIfFails = false, const bool stableForOneContact = false,
48  const core::PathConstPtr_t& comPath = core::PathConstPtr_t(),
49  const double currentPathId = 0);
56  const fcl::Vec3f acceleration_;
57  const fcl::Vec3f direction_;
58  const double robustnessTreshold_;
59  const std::size_t maxContactBreaks_;
60  const std::size_t maxContactCreations_;
62  const std::map<std::string, std::vector<std::string> >& affFilters_;
66  const core::PathConstPtr_t comPath_;
67  const double currentPathId_;
70  const bool maximiseContacts_;
71  const bool accept_unreachable_;
72  const bool tryQuasiStatic_;
74 };
75 
76 std::vector<hpp::pinocchio::CollisionObjectPtr_t> HPP_RBPRM_DLLAPI
78  const std::string& limb, const affMap_t& affordances,
79  const std::map<std::string, std::vector<std::string> >& affFilters);
80 
91  const hpp::rbprm::State& currentState,
92  const std::size_t maxBrokenContacts = 1);
93 
101  const std::vector<std::string>& freeEffectors, const State& previous,
102  const std::size_t maxCreatedContacts, const bool maximiseContacts = false);
103 
112  ContactGenHelper& contactGenHelper);
113 
119  const ContactGenHelper& contactGenHelper, const std::string& limb,
121 
129 
136  ContactGenHelper& contactGenHelper);
137 } // namespace contact
138 } // namespace rbprm
139 } // namespace hpp
140 #endif // HPP_RBPRM_CONTACT_GENERATION_HH
#define HPP_RBPRM_DLLAPI
Definition: config.hh:64
T_ContactState gen_contacts_combinatorial(const std::vector< std::string > &freeEffectors, const State &previous, const std::size_t maxCreatedContacts, const bool maximiseContacts=false)
Q_State maintain_contacts_combinatorial(const hpp::rbprm::State &currentState, const std::size_t maxBrokenContacts=1)
projection::ProjectionReport gen_contacts(ContactGenHelper &contactGenHelper)
std::vector< hpp::pinocchio::CollisionObjectPtr_t > HPP_RBPRM_DLLAPI getAffObjectsForLimb(const std::string &limb, const affMap_t &affordances, const std::map< std::string, std::vector< std::string > > &affFilters)
projection::ProjectionReport maintain_contacts(ContactGenHelper &contactGenHelper)
projection::ProjectionReport repositionContacts(ContactGenHelper &contactGenHelper)
std::queue< hpp::rbprm::State > Q_State
Definition: contact_generation.hh:31
std::pair< hpp::rbprm::State, std::vector< std::string > > ContactState
Definition: contact_generation.hh:32
projection::ProjectionReport generate_contact(const ContactGenHelper &contactGenHelper, const std::string &limb, sampling::HeuristicParam &params, const sampling::heuristic evaluate=0)
std::queue< ContactState > T_ContactState
Definition: contact_generation.hh:33
double(* heuristic)(const sampling::Sample &sample, const Eigen::Vector3d &direction, const Eigen::Vector3d &normal, const HeuristicParam &params)
Definition: heuristic.hh:38
boost::function< double(const SampleDB &sampleDB, const sampling::Sample &sample)> evaluate
Definition: sample-db.hh:78
hpp::core::Container< hpp::core::AffordanceObjects_t > affMap_t
Definition: rbprm-fullbody.hh:47
HPP_RBPRM_DLLAPI std::vector< std::string > freeEffectors(const State &state, Iter start, Iter end)
Definition: rbprm-state.hh:141
shared_ptr< RbPrmFullBody > RbPrmFullBodyPtr_t
Definition: kinematics_constraints.hh:11
Definition: algorithm.hh:26
Definition: rbprm-state.hh:40
Definition: contact_generation.hh:35
bool quasiStatic_
Definition: contact_generation.hh:68
Q_State candidates_
Definition: contact_generation.hh:65
const int reachabilityPointPerPhases_
Definition: contact_generation.hh:73
const double robustnessTreshold_
Definition: contact_generation.hh:58
~ContactGenHelper()
Definition: contact_generation.hh:50
const hpp::rbprm::State previousState_
Definition: contact_generation.hh:52
ContactGenHelper(RbPrmFullBodyPtr_t fb, const State &ps, pinocchio::ConfigurationIn_t configuration, const affMap_t &affordances, const std::map< std::string, std::vector< std::string > > &affFilters, const double robustnessTreshold=0, const std::size_t maxContactBreaks=1, const std::size_t maxContactCreations=1, const bool checkStabilityMaintain=false, const bool checkStabilityGenerate=true, const fcl::Vec3f &direction=fcl::Vec3f(0, 0, 1), const fcl::Vec3f &acceleration=fcl::Vec3f(0, 0, 0), const bool contactIfFails=false, const bool stableForOneContact=false, const core::PathConstPtr_t &comPath=core::PathConstPtr_t(), const double currentPathId=0)
const bool maximiseContacts_
Definition: contact_generation.hh:70
hpp::rbprm::State workingState_
Definition: contact_generation.hh:63
const core::PathConstPtr_t comPath_
Definition: contact_generation.hh:66
const bool checkStabilityMaintain_
Definition: contact_generation.hh:53
const bool tryQuasiStatic_
Definition: contact_generation.hh:72
bool testReachability_
Definition: contact_generation.hh:69
const bool accept_unreachable_
Definition: contact_generation.hh:71
const fcl::Vec3f direction_
Definition: contact_generation.hh:57
const std::size_t maxContactBreaks_
Definition: contact_generation.hh:59
const bool stableForOneContact_
Definition: contact_generation.hh:55
bool contactIfFails_
Definition: contact_generation.hh:54
bool checkStabilityGenerate_
Definition: contact_generation.hh:64
const double currentPathId_
Definition: contact_generation.hh:67
const std::size_t maxContactCreations_
Definition: contact_generation.hh:60
const fcl::Vec3f acceleration_
Definition: contact_generation.hh:56
const std::map< std::string, std::vector< std::string > > & affFilters_
Definition: contact_generation.hh:62
hpp::rbprm::RbPrmFullBodyPtr_t fullBody_
Definition: contact_generation.hh:51
const affMap_t & affordances_
Definition: contact_generation.hh:61
Defines a parameters set for the ZMP-based heuristic.
Definition: heuristic-tools.hh:13