-
Notifications
You must be signed in to change notification settings - Fork 104
Validate artifact scoring #825
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
Conversation
Signed-off-by: Michael Carroll <michael@openrobotics.org>
Signed-off-by: Michael Carroll <michael@openrobotics.org>
I used this for testing the finals practice worlds. Works great. I just had to cycle through all the artifacts first to make sure they are loaded and test scoring artifacts after moving the validator to the One thing I did notice is that in finals practice world 03, the comms client had trouble binding / registering on launch: subt/subt_ign/src/ArtifactValidator.cc Line 406 in 12c844a
I just manually added a hack to initialize the client only after |
subt_ign/src/ArtifactValidator.cc
Outdated
|
||
///////////////////////////////////////////////// | ||
bool ArtifactValidatorPrivate::OnScore(const ignition::msgs::StringMsg& _req, | ||
ignition::msgs::StringMsg& _rep) |
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.
_rep
is unused
Hmm, I was under the impression that this shouldn't be necessary anymore, let me double check that.
I originally had it during the constructor, which was always too early. My understanding is that all systems should have been |
this is what I see without delaying the Bind() function:
Looks like the SubT comms broker is started after the ArtifiactValidator. It could be because the CommsBroker plugin is an ign-launch plugin while the ArtifactValidator plugin is an ign-gazebo system |
AFAIU there is no way to tell the system is "ready-to-go". Se our discussion wrt this in #412. What we ended up doing is watching "topic churn" - repeatedly listing all available ROS topics and waiting for such a time that this list is no longer growing plus a buffer of couple seconds. It's a pity something has not been designed into the system that would allow to determine with certainty that everything is done loading and is ready to go. |
As far as the artifacts loading, I was mistaken, that logic remains the same in In terms of the sequencing issue with comms, this is purely on the ignition side without any ROS interfaces, so checking the ROS topics wouldn't reveal anything. I think that what @iche033 said about a system plugin loaded via ign-gazebo versus a system plugin loaded via ign-plugin is probably the most likely candidate for a race condition or sequencing error. Each ign-gazebo system should handle all configuration during the |
If the comms client doesn't connect, it will retry every 100 ms of sim time. Signed-off-by: Michael Carroll <michael@openrobotics.org>
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.
the retry method works for me and I can now score artifacts in finals practice 03 world.
Adds the ability to score artifacts by name at their true positions using the ArtifactValidationTool.
This will only work from the ignition side, as it requires the SDF ground truth of the artifact positions.
To score an artifact, use the service call:
The validator tool is currently still subject to the comms limitations of the environment, so distant artifacts may be "unscorable" due to radio outages.