Join GitHub today
'Failed to fetch current robot state' when using the 'plan_kinematic_path' service #868
The 'plan_kinematic_path' service requires at least one second computation time and outputs the message 'Failed to fetch current robot state'. The issue has been introduced by the pull request #350 and the new line
in moveit_ros/move_group/src/move_group.cpp. However, I do not know if this would introduce new problems at other places. Note that the problem does not exist with the MoveGroupMoveAction capability because the action server does not block the spinning thread.
Steps to reproduce
I have added some debug print statements to highlight the issue, see the diff, then run
roslaunch *_moveit_config demo.launch
rosservice call /plan_kinematic_path "motion_plan_request: ..."
Service plan_kinematic_path returns in few milliseconds with output similar to
Service plan_kinematic_path returns after approximately one second with output similar to
One can see that in the second case the jointStateCallback is not executed as long as the planning request is processed.
@avoelz Thank you very much for this detailed analysis, which in short is a follows:
I see the following solutions:
@rhaschke Thank you for the quick reply. I already guessed that simply increasing the number of spinning threads would introduce other problems. In addition to your ideas, I see two other solutions:
@avoelz You argue that the current state is not required here to begin with.
However, if the state is no diff we might skip this check altogether, that seems to be true.