Add fix for enabling localization from launch file #382
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a continuation of #374.
In ROS Melodic, launching a node to start a rosservice enabling localization fails, unless the node which starts in parallel playing the bag is already fully running. The error in that case is: "rospy.exceptions.ROSInitException: time is not initialized. Have you called init_node()?"
As I see it, playing the bag sets up a ROS node which then rosservice can talk to, and until that is done rosservice won't work, even when '--wait' is used with that rosservice. And playing a bag can take quite some time, if the bag is big.
The fix I came up with is to put the call to the rosservice in a shell script, and within that script try this repeatedly till it succeeds. I tested this very thoroughly and it works. There could be more elegant approaches out there, but for now maybe this may do.