Wraps a TrajectoryExecutor to enable queuing trajectories for execution.
More...
#include <aikido/control/QueuedTrajectoryExecutor.hpp>
Wraps a TrajectoryExecutor to enable queuing trajectories for execution.
◆ QueuedTrajectoryExecutor()
| aikido::control::QueuedTrajectoryExecutor::QueuedTrajectoryExecutor |
( |
std::shared_ptr< TrajectoryExecutor > |
executor | ) |
|
|
explicit |
◆ ~QueuedTrajectoryExecutor()
| virtual aikido::control::QueuedTrajectoryExecutor::~QueuedTrajectoryExecutor |
( |
| ) |
|
|
virtual |
◆ cancel()
| void aikido::control::QueuedTrajectoryExecutor::cancel |
( |
| ) |
|
|
overridevirtual |
Cancel the current trajectory, as well as all trajectories currently in the queue.
Does NOT stop the trajectory that is currently executing if the underlying executor does not support it.
Implements aikido::control::TrajectoryExecutor.
◆ execute()
Execute trajectory and set future upon completion.
If another trajectory is already running, queue the trajectory for later execution. If executing a trajectory terminates in an error, all queued trajectories are canceled.
- Parameters
-
| traj | Trajectory to be executed or queued. |
- Returns
- future<void> for trajectory execution. If trajectory terminates before completion, future will be set to a runtime_error.
- Exceptions
-
| invalid_argument | if traj is invalid. |
Implements aikido::control::TrajectoryExecutor.
◆ step()
| void aikido::control::QueuedTrajectoryExecutor::step |
( |
const std::chrono::system_clock::time_point & |
timepoint | ) |
|
|
overridevirtual |
Step to a point in time.
- Note
timepoint can be a time in the future to enable faster than real-time execution.
- Parameters
-
| timepoint | Time to simulate to |
Implements aikido::control::TrajectoryExecutor.
◆ validate()
◆ mExecutor
◆ mFuture
| std::future<void> aikido::control::QueuedTrajectoryExecutor::mFuture |
|
private |
Future from wrapped executor.
◆ mInProgress
| bool aikido::control::QueuedTrajectoryExecutor::mInProgress |
|
private |
Whether a trajectory is currently being executed.
◆ mMutex
| std::mutex aikido::control::QueuedTrajectoryExecutor::mMutex |
|
mutableprivate |
Manages access to mInProgress, mFuture, mTrajectoryQueue, mPromiseQueue.
◆ mPromiseQueue
| std::queue<std::shared_ptr<std::promise<void> > > aikido::control::QueuedTrajectoryExecutor::mPromiseQueue |
|
private |
Queue of promises made by this to the client.
◆ mTrajectoryQueue