hrplib/hrpPlanner/PathPlanner.h
Go to the documentation of this file.
1 //-*- C++ -*-
2 
3 #ifndef __PATH_PLANNER_H__
4 #define __PATH_PLANNER_H__
5 
6 #include <string>
7 #include <map>
8 #include <iostream>
9 #include <sstream>
10 #include <boost/function.hpp>
11 #include "hrpUtil/TimeMeasure.h"
12 
13 #include "exportdef.h"
14 #include "Algorithm.h"
15 #include "Configuration.h"
16 #include "ConfigurationSpace.h"
17 #include "Mobility.h"
18 #include "Optimizer.h"
19 #include "CollisionDetector.h"
21 #undef random
22 
23 #include <hrpCorba/ORBwrap.h>
24 #include <hrpCorba/ModelLoader.hh>
25 #include <hrpCorba/CollisionDetector.hh>
26 #include <hrpCorba/OnlineViewer.hh>
27 
28 #include <hrpModel/World.h>
30 #include <hrpUtil/TimeMeasure.h>
31 
32 namespace PathEngine {
33  class Algorithm;
34  class Mobility;
35  class PathPlanner;
36 
37  typedef boost::function2<bool, PathPlanner *, const Configuration &> applyConfigFunc;
38  typedef boost::shared_ptr<hrp::World<hrp::ConstraintForceSolver> > WorldPtr;
45 
46  private:
48  typedef std::map<const std::string, std::pair<AlgorithmNewFunc, AlgorithmDeleteFunc> > AlgorithmFactory;
49  typedef AlgorithmFactory::value_type AlgorithmFactoryValueType;
54 
55  typedef std::map<std::string, std::pair<MobilityNewFunc, MobilityDeleteFunc> > MobilityFactory;
56  typedef MobilityFactory::value_type MobilityFactoryValueType;
61 
62  typedef std::map<std::string, std::pair<OptimizerNewFunc, OptimizerDeleteFunc> > OptimizerFactory;
63  typedef OptimizerFactory::value_type OptimizerFactoryValueType;
68 
72  OpenHRP::ModelLoader_var modelLoader_;
73 
77  OpenHRP::OnlineViewer_var onlineViewer_;
78 
82  std::string algorithmName_;
83 
88 
92  std::string mobilityName_;
93 
98 
103 
108 
112  bool debug_;
113 
117  double dt_;
118 
126  template<typename X, typename X_ptr>
127  X_ptr checkCorbaServer(const std::string &n, CosNaming::NamingContext_var &cxt);
128 
132  std::vector<Configuration> path_;
133 
137  unsigned int countCollisionCheck_;
138 
142  TimeMeasure timeCollisionCheck_, timeForwardKinematics_;
143 
144  CORBA::ORB_var orb_;
145 
147 
148  OpenHRP::CollisionDetector_var collisionDetector_;
149  OpenHRP::CharacterPositionSequence_var allCharacterPositions_;
150 
151  void _setupCharacterData();
152  void _updateCharacterPositions();
153 
154  bool bboxMode_;
155 
156  std::vector<hrp::ColdetModelPair> checkPairs_;
157  //< point cloud created by vision or range sensor
158  std::vector<hrp::Vector3> pointCloud_;
159  double radius_;
160 
161  std::pair<std::string, std::string> collidingPair_;
162 
164 
165  bool defaultCheckCollision();
166  public:
171  WorldPtr world();
172 
177  hrp::BodyPtr robot();
178 
183  void setApplyConfigFunc(applyConfigFunc i_func);
184 
189  bool setConfiguration(const Configuration &pos);
190 
195  void getWorldState(OpenHRP::WorldState_out wstate);
196 
202  void setPointCloud(const std::vector<hrp::Vector3>& i_cloud, double i_radius);
203 
210  PathPlanner(unsigned int dim,
211  WorldPtr world = WorldPtr(),
212  bool isDebugMode = false);
213 
217  ~PathPlanner();
218 
226  void registerAlgorithm(const std::string &algorithmName, AlgorithmNewFunc newFunc, AlgorithmDeleteFunc deleteFunc);
227 
235  void registerMobility(const std::string &mobilityName, MobilityNewFunc newFunc, MobilityDeleteFunc deleteFunc);
236 
244  void registerOptimizer(const std::string &optimizerName, OptimizerNewFunc newFunc, OptimizerDeleteFunc deleteFunc);
245 
250  void initPlanner(const std::string &nameServer);
251 
257  hrp::BodyPtr registerCharacter(const char* name,OpenHRP::BodyInfo_ptr cInfo);
258 
264  hrp::BodyPtr registerCharacter(const char *name, hrp::BodyPtr i_body);
265 
271  hrp::BodyPtr registerCharacterByURL(const char* name, const char* url);
272 
279  void setCharacterPosition(const char* character,
280  const OpenHRP::DblSequence& pos);
281 
290  void registerIntersectionCheckPair(const char* char1,
291  const char* name1,
292  const char* char2,
293  const char* name2,
294  CORBA::Double tolerance);
295 
296 
300  void initSimulation();
301 
307  void getMobilityNames(std::vector<std::string> &mobilitys);
308 
314  void getAlgorithmNames(std::vector<std::string> &algorithms);
315 
321  void getOptimizerNames(std::vector<std::string> &optimizers);
322 
330  bool getProperties(const std::string &algorithm,
331  std::vector<std::string> &names,
332  std::vector<std::string> &values);
333 
338  void setRobotName(const std::string &model);
339 
340 
345  void setAlgorithmName(const std::string &algorithm);
346 
347 
353  bool setMobilityName(const std::string &mobility);
354 
359  void setProperties(const std::map<std::string, std::string> &properties) {algorithm_->setProperties(properties);}
364  void setStartConfiguration(const Configuration &pos) {algorithm_->setStartConfiguration(pos);}
365 
370  void setGoalConfiguration(const Configuration &pos) {algorithm_->setGoalConfiguration(pos);}
371 
376  bool calcPath();
377 
381  void stopPlanning() {algorithm_->stopPlanning();}
382 
387  RoadmapPtr getRoadmap() { return algorithm_->getRoadmap();}
388 
393  std::vector<Configuration> getPath();
394 
399  std::vector<Configuration>& getWayPoints();
400 
405  Mobility* getMobility() {return mobility_;}
406 
411  Algorithm* getAlgorithm() {return algorithm_;}
412 
418 
423  bool checkCollision();
429  bool checkCollision(const Configuration &pos);
430 
436  bool checkCollision(const std::vector<Configuration> &path);
437 
442  void setDebug(bool debug) {debug_ = debug;}
443 
449  bool optimize(const std::string& optimizer);
450 
455  unsigned int countCollisionCheck() const { return timeCollisionCheck_.numCalls();}
456 
461  double timeCollisionCheck() const;
462 
463  double timeForwardKinematics() const;
464 
465  void boundingBoxMode(bool mode) { bboxMode_ = mode; }
466 
467  const std::pair<std::string, std::string> &collidingPair() { return collidingPair_; }
468 
470  customCollisionDetector_ = i_cd;
471  }
472  };
473 };
474 #endif // __PATH_PLANNER_H__
PathEngine::PathPlanner::countCollisionCheck
unsigned int countCollisionCheck() const
干渉チェックを呼び出した回数を取得する
Definition: hrplib/hrpPlanner/PathPlanner.h:455
PathEngine::PathPlanner::world_
WorldPtr world_
Definition: hrplib/hrpPlanner/PathPlanner.h:146
PathEngine::PathPlanner::algorithm_
Algorithm * algorithm_
使用する経路計画アルゴリズム
Definition: hrplib/hrpPlanner/PathPlanner.h:87
PathEngine::PathPlanner::countCollisionCheck_
unsigned int countCollisionCheck_
干渉チェック呼び出し回数
Definition: hrplib/hrpPlanner/PathPlanner.h:137
PathEngine::OptimizerNewFunc
Optimizer *(* OptimizerNewFunc)(PathPlanner *planner)
Definition: Optimizer.h:43
PathEngine::PathPlanner::OptimizerFactory
std::map< std::string, std::pair< OptimizerNewFunc, OptimizerDeleteFunc > > OptimizerFactory
Definition: hrplib/hrpPlanner/PathPlanner.h:62
PathEngine::PathPlanner::collidingPair
const std::pair< std::string, std::string > & collidingPair()
Definition: hrplib/hrpPlanner/PathPlanner.h:467
PathEngine::PathPlanner::onlineViewer_
OpenHRP::OnlineViewer_var onlineViewer_
デバッグモード時に使用する OnlineViewer への参照
Definition: hrplib/hrpPlanner/PathPlanner.h:77
PathEngine::PathPlanner::mobilityFactory_
MobilityFactory mobilityFactory_
移動能力のファクトリ
Definition: hrplib/hrpPlanner/PathPlanner.h:60
PathEngine::PathPlanner::model_
hrp::BodyPtr model_
経路計画の対象とするロボット
Definition: hrplib/hrpPlanner/PathPlanner.h:107
PathEngine::PathPlanner::cspace_
ConfigurationSpace cspace_
コンフィギュレーション空間
Definition: hrplib/hrpPlanner/PathPlanner.h:102
PathEngine::PathPlanner::algorithmName_
std::string algorithmName_
使用する経路計画アルゴリズム名
Definition: hrplib/hrpPlanner/PathPlanner.h:82
PathEngine::Mobility
移動アルゴリズム実装用抽象クラス
Definition: Mobility.h:20
PathEngine::PathPlanner::stopPlanning
void stopPlanning()
計算を中止する
Definition: hrplib/hrpPlanner/PathPlanner.h:381
autoplay.n
n
Definition: autoplay.py:12
PathEngine::PathPlanner::timeForwardKinematics_
TimeMeasure timeForwardKinematics_
Definition: hrplib/hrpPlanner/PathPlanner.h:142
PathEngine::AlgorithmNewFunc
Algorithm *(* AlgorithmNewFunc)(PathPlanner *planner)
Definition: Algorithm.h:187
getWorldState
void getWorldState(WorldState &state, WorldBase &world)
Definition: hrpModel/OnlineViewerUtil.cpp:25
PathEngine::MobilityDeleteFunc
void(* MobilityDeleteFunc)(Mobility *mobility)
移動アルゴリズム解放関数
Definition: Mobility.h:106
ColdetModelPair.h
PathEngine::PathPlanner::setStartConfiguration
void setStartConfiguration(const Configuration &pos)
スタート位置を設定する
Definition: hrplib/hrpPlanner/PathPlanner.h:364
PathEngine::PathPlanner::mobilityName_
std::string mobilityName_
使用する移動能力名
Definition: hrplib/hrpPlanner/PathPlanner.h:92
PathEngine::PathPlanner::MobilityFactoryValueType
MobilityFactory::value_type MobilityFactoryValueType
Definition: hrplib/hrpPlanner/PathPlanner.h:56
World.h
PathEngine::PathPlanner
計画経路エンジン
Definition: hrplib/hrpPlanner/PathPlanner.h:44
PathEngine::Algorithm
経路計画アルゴリズム基底クラス
Definition: Algorithm.h:23
PathEngine::AlgorithmDeleteFunc
void(* AlgorithmDeleteFunc)(Algorithm *algorithm)
Definition: Algorithm.h:192
PathEngine::applyConfigFunc
boost::function2< bool, PathPlanner *, const Configuration & > applyConfigFunc
Definition: hrplib/hrpPlanner/PathPlanner.h:35
PathEngine::MobilityNewFunc
Mobility *(* MobilityNewFunc)(PathPlanner *planner)
移動アルゴリズム生成関数
Definition: Mobility.h:101
PathEngine::PathPlanner::collidingPair_
std::pair< std::string, std::string > collidingPair_
Definition: hrplib/hrpPlanner/PathPlanner.h:161
Algorithm.h
PathEngine::PathPlanner::path_
std::vector< Configuration > path_
経路
Definition: hrplib/hrpPlanner/PathPlanner.h:132
PathEngine::PathPlanner::allCharacterPositions_
OpenHRP::CharacterPositionSequence_var allCharacterPositions_
Definition: hrplib/hrpPlanner/PathPlanner.h:149
Optimizer.h
PathEngine::Algorithm::stopPlanning
void stopPlanning()
計算を止める
Definition: Algorithm.h:147
Mobility.h
PathEngine::RoadmapPtr
boost::shared_ptr< Roadmap > RoadmapPtr
Definition: Roadmap.h:13
PathEngine::PathPlanner::checkPairs_
std::vector< hrp::ColdetModelPair > checkPairs_
Definition: hrplib/hrpPlanner/PathPlanner.h:156
PathEngine::CollisionDetector
Definition: CollisionDetector.h:7
hrp::BodyPtr
boost::shared_ptr< Body > BodyPtr
Definition: Body.h:315
name
png_infop png_charpp name
Definition: png.h:2379
PathEngine::PathPlanner::customCollisionDetector_
CollisionDetector * customCollisionDetector_
Definition: hrplib/hrpPlanner/PathPlanner.h:163
PathEngine
Definition: Algorithm.h:13
TimeMeasure.h
PathEngine::PathPlanner::AlgorithmFactory
std::map< const std::string, std::pair< AlgorithmNewFunc, AlgorithmDeleteFunc > > AlgorithmFactory
Definition: hrplib/hrpPlanner/PathPlanner.h:48
PathEngine::PathPlanner::dt_
double dt_
デバッグモード時に使用する現在時刻
Definition: hrplib/hrpPlanner/PathPlanner.h:117
PathEngine::WorldPtr
boost::shared_ptr< hrp::World< hrp::ConstraintForceSolver > > WorldPtr
Definition: hrplib/hrpPlanner/PathPlanner.h:38
PathEngine::PathPlanner::m_applyConfigFunc
applyConfigFunc m_applyConfigFunc
Definition: hrplib/hrpPlanner/PathPlanner.h:47
PathEngine::PathPlanner::modelLoader_
OpenHRP::ModelLoader_var modelLoader_
ModelLoader への参照
Definition: hrplib/hrpPlanner/PathPlanner.h:72
checkCorbaServer
X_ptr checkCorbaServer(std::string n, CosNaming::NamingContext_var &cxt)
Definition: clap.cpp:19
PathEngine::PathPlanner::bboxMode_
bool bboxMode_
Definition: hrplib/hrpPlanner/PathPlanner.h:154
PathEngine::PathPlanner::radius_
double radius_
radius of spheres assigned to points
Definition: hrplib/hrpPlanner/PathPlanner.h:159
debug
static bool debug
Definition: SSVTreeCollider.cpp:5
PathEngine::PathPlanner::setProperties
void setProperties(const std::map< std::string, std::string > &properties)
アルゴリズムに対して各種情報を設定する
Definition: hrplib/hrpPlanner/PathPlanner.h:359
ORBwrap.h
PathEngine::Algorithm::getRoadmap
RoadmapPtr getRoadmap()
ロードマップを取得する
Definition: Algorithm.h:159
PathEngine::PathPlanner::boundingBoxMode
void boundingBoxMode(bool mode)
Definition: hrplib/hrpPlanner/PathPlanner.h:465
PathEngine::PathPlanner::optimizerFactory_
OptimizerFactory optimizerFactory_
経路最適化アルゴリズムのファクトリ
Definition: hrplib/hrpPlanner/PathPlanner.h:67
PathEngine::PathPlanner::setDebug
void setDebug(bool debug)
デバッグモードの変更
Definition: hrplib/hrpPlanner/PathPlanner.h:442
HRPPLANNER_API
#define HRPPLANNER_API
Definition: exportdef.h:22
PathEngine::PathPlanner::debug_
bool debug_
デバッグモード
Definition: hrplib/hrpPlanner/PathPlanner.h:112
exportdef.h
ConfigurationSpace.h
PathEngine::PathPlanner::OptimizerFactoryValueType
OptimizerFactory::value_type OptimizerFactoryValueType
Definition: hrplib/hrpPlanner/PathPlanner.h:63
PathEngine::PathPlanner::setGoalConfiguration
void setGoalConfiguration(const Configuration &pos)
ゴール位置を設定する
Definition: hrplib/hrpPlanner/PathPlanner.h:370
PathEngine::PathPlanner::pointCloud_
std::vector< hrp::Vector3 > pointCloud_
Definition: hrplib/hrpPlanner/PathPlanner.h:158
ConstraintForceSolver.h
PathEngine::Algorithm::setStartConfiguration
void setStartConfiguration(const Configuration &pos)
初期位置を設定する
Definition: Algorithm.h:120
PathEngine::Algorithm::setGoalConfiguration
void setGoalConfiguration(const Configuration &pos)
終了位置を設定する
Definition: Algorithm.h:126
PathEngine::ConfigurationSpace
Definition: ConfigurationSpace.h:12
PathEngine::OptimizerDeleteFunc
void(* OptimizerDeleteFunc)(Optimizer *optimizer)
Definition: Optimizer.h:48
PathEngine::PathPlanner::getAlgorithm
Algorithm * getAlgorithm()
計画アルゴリズムを取得する
Definition: hrplib/hrpPlanner/PathPlanner.h:411
PathEngine::PathPlanner::orb_
CORBA::ORB_var orb_
Definition: hrplib/hrpPlanner/PathPlanner.h:144
PathEngine::PathPlanner::algorithmFactory_
AlgorithmFactory algorithmFactory_
経路計画アルゴリズムのファクトリ
Definition: hrplib/hrpPlanner/PathPlanner.h:53
PathEngine::PathPlanner::getConfigurationSpace
ConfigurationSpace * getConfigurationSpace()
コンフィギュレーション空間設定を取得する
Definition: hrplib/hrpPlanner/PathPlanner.h:417
PathEngine::PathPlanner::MobilityFactory
std::map< std::string, std::pair< MobilityNewFunc, MobilityDeleteFunc > > MobilityFactory
Definition: hrplib/hrpPlanner/PathPlanner.h:55
CollisionDetector.h
PathEngine::PathPlanner::collisionDetector_
OpenHRP::CollisionDetector_var collisionDetector_
Definition: hrplib/hrpPlanner/PathPlanner.h:148
PathEngine::PathPlanner::setCollisionDetector
void setCollisionDetector(CollisionDetector *i_cd)
Definition: hrplib/hrpPlanner/PathPlanner.h:469
PathEngine::Algorithm::setProperties
void setProperties(const std::map< std::string, std::string > &properties)
アルゴリズムに対して各種情報を設定する
Definition: Algorithm.cpp:27
TimeMeasure
Definition: hrplib/hrpUtil/TimeMeasure.h:18
PathEngine::PathPlanner::getRoadmap
RoadmapPtr getRoadmap()
ロードマップを取得する
Definition: hrplib/hrpPlanner/PathPlanner.h:387
PathEngine::PathPlanner::getMobility
Mobility * getMobility()
移動能力を取得する
Definition: hrplib/hrpPlanner/PathPlanner.h:405
PathEngine::PathPlanner::mobility_
Mobility * mobility_
使用する移動能力
Definition: hrplib/hrpPlanner/PathPlanner.h:97
PathEngine::PathPlanner::AlgorithmFactoryValueType
AlgorithmFactory::value_type AlgorithmFactoryValueType
Definition: hrplib/hrpPlanner/PathPlanner.h:49
Configuration.h
TimeMeasure::numCalls
int numCalls
Definition: server/UtDynamicsSimulator/TimeMeasure.h:25
PathEngine::Configuration
Definition: Configuration.h:10


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:04