libmove3d-planners
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Groups Pages
ReplanningSimulator.hpp
1 /*
2  * ReplanningSimulator.hpp
3  * libmove3D-planners
4  *
5  * Created by Benjamin Vadant on 01/02/13.
6  * Based on Jim Mainprice replanningAlgorithms.hpp/cpp
7  * Copyright 2013 LAAS/CNRS. All rights reserved.
8  *
9  */
10 
11 #ifndef REPLANNING_SIMULATOR_HPP
12 #define REPLANNING_SIMULATOR_HPP
13 
14 #include "Replanner.hpp"
15 
19 {
20 public:
23 
24  p3d_rob* getRobot();
25 
26  void setMultithreadGraphical(bool enable);
27 
28  void storeTrajectoryToVect(API::Trajectory& traj, double step);
29  void storeExploration(const API::Trajectory& traj, double lPrev, double lNext, std::tr1::shared_ptr<Configuration> qNew);
30  void storeTrajectoryToDraw(const API::Trajectory& traj, double step);
31  void storeGraphToDraw(const Graph& graph);
32 
33  int executeSimpleSimulation( int (*fct)(p3d_rob* robot, p3d_localpath* localpathPt) );
34  int executeSoftmotionSimulation( int (*fct)(p3d_rob* robot, p3d_localpath* localpathPt) );
35 
36  double timeSinceLastCall(bool& is_first_call, double& t_init);
37 
38  void setDrawStep(double step) { drawStep = step; }
39  void resetTrajectoriesToDraw() { currentLine.clear(); deviateLine.clear(); lastLine.clear(); }
40  void draw();
41 
42 private:
43  bool initSimulator();
44  void init(std::string robotName);
45  bool initFindRobotBasename( std::string& robotBaseName );
46  void initDeactivateAllCntrts( p3d_rob* rob );
47  bool initRobotSimulatedCntrtsAndCollisions();
48 
49  void optimizeCurrentTraj();
50 
51  void storeTrajectoryToVect(SM_TRAJ& smTraj, double current, double step);
52  void storeShortcut(const API::Trajectory& traj, double lPrev, double lNext);
53  void storeHumanPosition();
54 
55  bool setExecutedTrajectoryToCurrent(API::Trajectory& traj);
56  bool timeSwitchAndId(double s, double s_rep, int& id_switch, API::Trajectory& traj, double &s_switch);
57 
58  //----------------------------------------------------
60  bool initDone;
61 
62  Replanner* replanner;
63 
64  int switchId;
65 
66  Robot* robot;
67  Robot* robotSimulated;
68  Robot* robotCylinder;
69  Robot* human;
70 
71  confPtr_t qEnd;
72 
73  API::Trajectory executedTraj;
74 
75  bool isWritingDisplay;
76  bool isReadingDisplay;
77  bool drawFinalConfig;
78 
79  double drawStep;
80 
81  std::vector< std::vector<double> > currentLine;
82  std::vector< std::vector<double> > lastLine;
83  std::vector< std::vector<double> > deviateLine;
84 };
85 
86 extern ReplanningSimulator* globalRePlanningEnv;
87 extern Graph* globalRePlanningGraph;
88 
90 extern SM_TRAJ globalManipPlannerLastTraj;
91 
92 #endif
Definition: graph.hpp:28
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
double timeSinceLastCall(bool &is_first_call, double &t_init)
first call stores the time of day in t_init the next calls will returns the substraction between timo...
Definition: ReplanningSimulator.cpp:616
void storeGraphToDraw(const Graph &graph)
Stores the graph to a local graph.
Definition: ReplanningSimulator.cpp:365
void storeTrajectoryToVect(API::Trajectory &traj, double step)
Stores the trajectory in a vector.
Definition: ReplanningSimulator.cpp:267
ReplanningSimulator()
Definition: ReplanningSimulator.cpp:55
Definition: trajectory.hpp:40
void draw()
Draws replanning features.
Definition: ReplanningSimulator.cpp:499
Base replanner.
Definition: Replanner.hpp:33
void storeTrajectoryToDraw(const API::Trajectory &traj, double step)
Stores the trajectory to a current trajectory.
Definition: ReplanningSimulator.cpp:308
Class for implementing a replanning simulator.
Definition: ReplanningSimulator.hpp:18
void storeExploration(const API::Trajectory &traj, double lPrev, double lNext, std::tr1::shared_ptr< Configuration > qNew)
Stores the trajectory to a current trajectory.
Definition: ReplanningSimulator.cpp:382