-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Removes locking from step() #182
Changes from 1 commit
78a86de
1d734b2
4e84775
38682d6
81ec3c7
c3b212e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -35,6 +35,8 @@ class KinematicSimulationTrajectoryExecutor : public TrajectoryExecutor | |
std::future<void> execute( | ||
trajectory::TrajectoryPtr traj) override; | ||
|
||
/// \copydoc PositionCommandExecutor::step() | ||
/// | ||
/// If multiple threads are accessing this function or the skeleton associated | ||
/// with this executor, it is necessary to lock the skeleton before | ||
/// calling this method. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ditto |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -50,8 +50,8 @@ class Trajectory | |
/// function is implementation-defined if \c _t is not between | ||
/// \c getStartTime() and \c getEndTime(). | ||
/// | ||
/// \param _t time parameter | ||
/// \param[out] _state output state of the trajectory at time \c _t | ||
/// \param _t time parameter (in seconds) | ||
/// \param[out] _state output state of the trajectory at time \c _t (seconds) | ||
virtual void evaluate(double _t, | ||
statespace::StateSpace::State *_state) const = 0; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This isn't really "in seconds" -it's an arbitrary path parameter. |
||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -105,8 +105,9 @@ void KinematicSimulationTrajectoryExecutor::step() | |
mInExecution = false; | ||
} | ||
|
||
using seconds = std::chrono::duration<float>; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: I believe the type of time should be |
||
auto timeSinceBeginning = system_clock::now() - mExecutionStartTime; | ||
auto t = duration<double>(timeSinceBeginning).count(); | ||
auto tsec = duration_cast<seconds>(timeSinceBeginning).count(); | ||
|
||
// Can't do static here because MetaSkeletonStateSpace inherits | ||
// CartesianProduct which inherits virtual StateSpace | ||
|
@@ -115,12 +116,12 @@ void KinematicSimulationTrajectoryExecutor::step() | |
auto metaSkeleton = space->getMetaSkeleton(); | ||
auto state = space->createState(); | ||
|
||
mTraj->evaluate(t, state); | ||
mTraj->evaluate(tsec, state); | ||
|
||
space->setState(state); | ||
|
||
// Check if trajectory has completed. | ||
bool const is_done = (t >= mTraj->getEndTime()); | ||
bool const is_done = (tsec >= mTraj->getEndTime()); | ||
if (is_done) { | ||
mTraj.reset(); | ||
mPromise->set_value(); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: I believe this comment is a note to be added to the original docstring of
PositionCommandExecutor::step()
, but this will just overwrite the original docstring. It would be nice to copy the original docstring and add this node as:Also, it would be great to actually add a docstring to
PositionCommandExecutor::step()
. Currently, it's// Step once
. If it's enough then make it doxygen comment by prepending one more/
.