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