-
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,7 +35,9 @@ class KinematicSimulationTrajectoryExecutor : public TrajectoryExecutor | |
std::future<void> execute( | ||
trajectory::TrajectoryPtr traj) override; | ||
|
||
// Documentation inherited. | ||
/// 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 |
||
void step() override; | ||
|
||
private: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -106,7 +106,7 @@ void KinematicSimulationTrajectoryExecutor::step() | |
} | ||
|
||
auto timeSinceBeginning = system_clock::now() - mExecutionStartTime; | ||
double t = duration_cast<seconds>(timeSinceBeginning).count(); | ||
auto t = duration<double>(timeSinceBeginning).count(); | ||
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 unit of time here is seconds. It would be nice to either (1) change the variable name to encode the unit or (2) add trailing comment something like Additionally, it would be much better to comment the unit of the time parameter to the docstring of 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. Why was this changed to |
||
|
||
// Can't do static here because MetaSkeletonStateSpace inherits | ||
// CartesianProduct which inherits virtual StateSpace | ||
|
@@ -117,10 +117,7 @@ void KinematicSimulationTrajectoryExecutor::step() | |
|
||
mTraj->evaluate(t, state); | ||
|
||
// Lock the skeleton, set state. | ||
std::unique_lock<std::mutex> skeleton_lock(mSkeleton->getMutex()); | ||
space->setState(state); | ||
skeleton_lock.unlock(); | ||
|
||
// Check if trajectory has completed. | ||
bool const is_done = (t >= mTraj->getEndTime()); | ||
|
@@ -129,6 +126,7 @@ void KinematicSimulationTrajectoryExecutor::step() | |
mPromise->set_value(); | ||
mInExecution = false; | ||
} | ||
|
||
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: Could we remove this empty line? |
||
} | ||
|
||
} | ||
|
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/
.