Aikido
QueuedTrajectoryExecutor.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_CONTROL_QUEUEDTRAJECTORYEXECUTOR_HPP_
2 #define AIKIDO_CONTROL_QUEUEDTRAJECTORYEXECUTOR_HPP_
3 
4 #include <queue>
5 
6 #include <dart/dart.hpp>
7 
9 
10 namespace aikido {
11 namespace control {
12 
15 {
16 public:
20  explicit QueuedTrajectoryExecutor(
21  std::shared_ptr<TrajectoryExecutor> executor);
22 
23  virtual ~QueuedTrajectoryExecutor();
24 
25  // Documentation inherited.
26  void validate(const trajectory::Trajectory* traj) override;
27 
36  std::future<void> execute(
37  const trajectory::ConstTrajectoryPtr& traj) override;
38 
39  // Documentation inherited.
40  void step(const std::chrono::system_clock::time_point& timepoint) override;
41 
45  void cancel() override;
46 
47 private:
49  std::shared_ptr<TrajectoryExecutor> mExecutor;
50 
53 
55  std::future<void> mFuture;
56 
58  std::queue<trajectory::ConstTrajectoryPtr> mTrajectoryQueue;
59 
61  std::queue<std::shared_ptr<std::promise<void>>> mPromiseQueue;
62 
64  mutable std::mutex mMutex;
65 };
66 
67 } // namespace control
68 } // namespace aikido
69 
70 #endif // AIKIDO_CONTROL_QUEUEDTRAJECTORYEXECUTOR_HPP_
aikido::control::QueuedTrajectoryExecutor::execute
std::future< void > execute(const trajectory::ConstTrajectoryPtr &traj) override
Execute trajectory and set future upon completion.
aikido::control::QueuedTrajectoryExecutor::step
void step(const std::chrono::system_clock::time_point &timepoint) override
Step to a point in time.
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::control::QueuedTrajectoryExecutor
Wraps a TrajectoryExecutor to enable queuing trajectories for execution.
Definition: QueuedTrajectoryExecutor.hpp:14
aikido::control::QueuedTrajectoryExecutor::mExecutor
std::shared_ptr< TrajectoryExecutor > mExecutor
Underlying TrajectoryExecutor.
Definition: QueuedTrajectoryExecutor.hpp:49
aikido::control::QueuedTrajectoryExecutor::validate
void validate(const trajectory::Trajectory *traj) override
Validate the traj in preparation for execution.
aikido::trajectory::ConstTrajectoryPtr
std::shared_ptr< const Trajectory > ConstTrajectoryPtr
Definition: Trajectory.hpp:13
aikido::control::QueuedTrajectoryExecutor::mFuture
std::future< void > mFuture
Future from wrapped executor.
Definition: QueuedTrajectoryExecutor.hpp:55
aikido::control::QueuedTrajectoryExecutor::mTrajectoryQueue
std::queue< trajectory::ConstTrajectoryPtr > mTrajectoryQueue
Queue of trajectories.
Definition: QueuedTrajectoryExecutor.hpp:58
aikido::control::QueuedTrajectoryExecutor::QueuedTrajectoryExecutor
QueuedTrajectoryExecutor(std::shared_ptr< TrajectoryExecutor > executor)
Constructor.
aikido::control::TrajectoryExecutor
Abstract class for executing trajectories.
Definition: TrajectoryExecutor.hpp:17
aikido::control::QueuedTrajectoryExecutor::mInProgress
bool mInProgress
Whether a trajectory is currently being executed.
Definition: QueuedTrajectoryExecutor.hpp:52
aikido::control::QueuedTrajectoryExecutor::~QueuedTrajectoryExecutor
virtual ~QueuedTrajectoryExecutor()
aikido::control::QueuedTrajectoryExecutor::mPromiseQueue
std::queue< std::shared_ptr< std::promise< void > > > mPromiseQueue
Queue of promises made by this to the client.
Definition: QueuedTrajectoryExecutor.hpp:61
aikido::control::QueuedTrajectoryExecutor::mMutex
std::mutex mMutex
Manages access to mInProgress, mFuture, mTrajectoryQueue, mPromiseQueue.
Definition: QueuedTrajectoryExecutor.hpp:64
aikido::control::QueuedTrajectoryExecutor::cancel
void cancel() override
Cancel the current trajectory, as well as all trajectories currently in the queue.
TrajectoryExecutor.hpp
aikido::trajectory::Trajectory
Time-parameterized path in a StateSpace.
Definition: Trajectory.hpp:20