-
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
Fixes to work on real hardware #216
Conversation
You are intended to call
The root issue here is the same as above: there is no background thread periodically calling
The logic in
We only want to report success if
That is correct. We are using It is very possible there are bugs in |
This reverts commit 83a4ec7.
Yep, that was definitely it. 😅 Fixed in https://github.com/personalrobotics/pantry-loading/pull/12/commits/3738173c75af9dca135264b7765b7a697e84e870. Also, it seems that the hand issues stem from a lower level -- trying to just use
Execution failed if terminalState == TerminalState::SUCCEEDED without considering the FollowJointTrajectoryResult . Would it make more sense to remove lines 176-179 and add the << "Execution failed." to line 186? Never mind!
|
I think these changes are uncontroversial, so I'm merging this now. |
Issues:
RosJointStateClient::jointStateCallback
was incorrectly handling empty buffers. Messages were being ignored because the timestamp was being read from the last record in an empty buffer.For some reason,
RosJointStateClient::spin
doesn't seem to be waiting long enough for callbacks to be placed on its queue. I've temporarily added a duration of 1 second here.The future returned by
RosTrajectoryExecutor::execute
never seems to be fulfilled. Callingfuture::wait
waits forever (even after the trajectory seems to be successfully executed). I have a temporary hack inpantry_loading
that sleeps for the duration of the trajectory instead of callingfuture::wait
, but that needs to be fixed.It seems that
RosTrajectoryExecutor::transitionCallback
is sometimes not being called at all. On other trajectories, it is being called andisSuccessful
is true (the resulting message is"Execution failed"
, which seems like a typo?) and the promise's value seems to be set. In both cases, the future still doesn't seem to be fulfilled. I thought that callingfuture::wait
would return once a value is set bypromise::set_value
, but I could be misunderstanding.When
RosTrajectoryExecutor::transitionCallback
is being called, it also seems that it is called withhandle.getCommState() == DONE
well before the trajectory actually terminates (basically immediately). Is this expected behavior?Callingfuture::wait
on the future returned byRosPositionCommandExecutor
results in the error message:Exception thrown by callback: Promise already satisfied
.This was because I forgot to start
right_hand_controller
😓 Now the communication state is stuck atACTIVE
forever...