Skip to content
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

[epic] proposal: Should provide better composition behavior #278

Closed
17 tasks done
EricCousineau-TRI opened this issue May 13, 2020 · 11 comments
Closed
17 tasks done

[epic] proposal: Should provide better composition behavior #278

EricCousineau-TRI opened this issue May 13, 2020 · 11 comments
Assignees

Comments

@EricCousineau-TRI
Copy link
Collaborator

EricCousineau-TRI commented May 13, 2020

This is a tracking issue for Model Composition.

Currently at:
http://sdformat.org/tutorials?tut=composition_proposal (permalink)

sub-tasks and tentative dates

@EricCousineau-TRI EricCousineau-TRI self-assigned this May 13, 2020
@EricCousineau-TRI EricCousineau-TRI changed the title proposal: Better composition behavior? proposal: Better composition behavior? (epic) May 21, 2020
@EricCousineau-TRI EricCousineau-TRI changed the title proposal: Better composition behavior? (epic) [epic] proposal: Should provide better composition behavior May 21, 2020
@chapulina
Copy link
Contributor

I noticed that the current proposal is focused on poses. So this may be out of scope for this task, but I'd like to mention that an important aspect of composition is injecting plugins into SDF files.

The proposal says that //include/plugin is generally Gazebo-specific, but this is a concept we've also adopted into Ignition. My immediate use case is to have a model described once, and augment it with simulator-specific plugins as needed. Using the <include> tag, this is already possible for:

  • //model/plugin
  • //actor/plugin

But not for:

  • //model/link/sensor/plugin
  • //model/link/visual/plugin

@EricCousineau-TRI
Copy link
Collaborator Author

EricCousineau-TRI commented Jun 11, 2020

EDIT: What I said here is wrong. It's already in the proposal. See post below.


Using the <include> tag, this is already possible for [...]

Can you (or someone on your team?) file a PR against the legacy Composition tutorial to make this existing contract explicit? (e.g. point out where in Gazebo it's supported, and other downstream applications if applicable?)
http://sdformat.org/tutorials?tut=composition&cat=specification&


At a (potentially distracting) "philosophical" level:

It's unclear to me what "adopted into Ignition" really means - can you point to other use cases of //plugin outside of Gazebo / its upstream libraries?

FTR, my understanding of Ignition is that it aims to be individual libraries, but to me it still smells like it's application/framework layers of Gazebo just broken out into separate repos. (At least, that is how it has been working with SDFormat, in both the software library and the specification.)

Totes down for it evolving it to that point, but I just want to make sure that things aren't claimed to be individual libraries if they aren't yet, and that we take the explicit steps to take them away from application layers of Gazebo to actual libraries?

Also, I'm happy to have my point of view corrected; it is naive, in that I've only really dealt with SDFormat in depth.

@EricCousineau-TRI
Copy link
Collaborator Author

EricCousineau-TRI commented Jun 11, 2020

Uh oh. I must eat my own words.

I am completely incorrect; it's in the documentation here as @scpeters pointed out:
http://sdformat.org/tutorials?tut=composition&cat=specification&#including-a-model

That being said, I would still love to have this feature be tracked.
Talking with @scpeters, he will open up an issue to track this.

Sorry for the noise!!!

EDIT: FTR, I plan to discuss things more (and read things) before I go on a, uh, ranty mode.

@EricCousineau-TRI
Copy link
Collaborator Author

Talked it more over w/ @scpeters and @azeey, and @scpeters will file an issue about injecting //plugin (and even custom tags) on elements; still dunno if it should be physical or just XML coordinates.

@scpeters
Copy link
Member

updating proposal with details on parsing implementation in gazebosim/sdf_tutorials#28

@chapulina
Copy link
Contributor

I just noticed the follow up questions now and I'm not sure about where the conversation currently stands, so I'll just clarify some things.

It's unclear to me what "adopted into Ignition" really means - can you point to other use cases of //plugin outside of Gazebo / its upstream libraries?

This issue has some examples: #93

my understanding of Ignition is that it aims to be individual libraries, but to me it still smells like it's application/framework layers of Gazebo just broken out into separate repos

The separate libraries are useful on their own without Gazebo. The same way you're using SDF outside Gazebo, there are projects using Ignition Rendering, GUI, Sensors, Math, Common, Math, Transport... Some public examples are tesseract-ignition and ign-rviz.

explicit steps to take them away from application layers of Gazebo to actual libraries?

We're all ears. What explicit steps are needed for them to smell like actual libraries to you? Perhaps this is not the right place to follow up on this discussion, but you're welcome to start a conversation on https://community.gazebosim.org/.

@chapulina
Copy link
Contributor

And the reason I ended up in this issue again was to cross-reference this design proposal for Gazebo, which I think is relevant to this issue. It talks about composition beyond poses, with the addition, removal or modification of included models.

gazebosim/design#5

@EricCousineau-TRI
Copy link
Collaborator Author

\cc @claireyywang

@azeey
Copy link
Collaborator

azeey commented Aug 10, 2021

The last PR on this epic has now been merged, so I think we can close this. @EricCousineau-TRI ?

@EricCousineau-TRI
Copy link
Collaborator Author

Sounds great!!!

@azeey azeey unpinned this issue Aug 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants