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

Add loadable agents to the backend #173

Closed
24 of 26 tasks
clalancette opened this issue Dec 20, 2017 · 6 comments
Closed
24 of 26 tasks

Add loadable agents to the backend #173

clalancette opened this issue Dec 20, 2017 · 6 comments
Assignees
Milestone

Comments

@clalancette
Copy link
Contributor

clalancette commented Dec 20, 2017

We would like to have the ability to load in agents (more-or-less vehicles) dynamically at runtime into the simulation. The goal is to be able to have agents developed completely outside of delphyne, and then loaded into a scenario. The basic tasks here are:

Work Items

Documentation

Polish (see #346)

  • Try out SHARED linking to drake and co. make sure it works for us
  • Document in the delphyne guide somewhere our design choices ... and not STATIC and why!
  • Open the question in ignition_common re RTLD_LAZY or RTLD_NOW.
  • Refactor car references in automotive_simulator.cc to agents.
  • Keep agent libraries separate (easy to know what's available on the filesystem) but collapse CMake code
  • Bugfix segfault of the python script, Loadable agents script is segfaulting (MOBIL) #376
  • (Daniel) Switch to a has-a rather than a is-a relationship and pull the drake car code itself
  • (stretch)(Daniel) Deal with the setPlugin constraint
  • (Daniel) Understand why the maliput car has delayed configuration (and causing us a second step in configuration) - This is because we can't set parameters until we have a context, and we don't have a context until we create a simulation object. The simulation object must be created after the system diagram is hooked together (i.e. Configure time), so I think we have to have a two-step setup here.

Integration

  • Remove non-loadable code from automotive_simulator.cc (this may be somewhat difficult because most of the tests need to use AddPriusSimpleCar, so we'd have to figure out how to deal with that)

Demo Goal

  • A new demo (not demo_launcher.py) enabled with the python layer that only loads and covers the loadable agents we have right now

Out of Scope

Dynamic reconfigure for scriptlet control will be left to a later milestone. Since it's a plugin framework with a fixed api, you can't just singly expose an api from this car, and yet another from another car. Likely some api with a generic key/value signature should help alleviate this situation.

Due to a limitation in ignition-common currently, implementations of the loadable vehicles have to derive from classes like: AgentPluginDoubleBase. In the future, it will be possible to templatize these, so the implementations can derive from AgentPluginBase<T>.

@stonier
Copy link
Collaborator

stonier commented Apr 2, 2018

@clalancette I have a few questions with regards to the loadable agents. Let's catch up this week and summarise back here.

@caguero
Copy link
Contributor

caguero commented Apr 16, 2018

Shared linking to Drake libraries (#365).

@caguero
Copy link
Contributor

caguero commented Apr 16, 2018

Discussion about RTLD_LAZY vs RTLD_NOW in Ignition Common.
https://bitbucket.org/ignitionrobotics/ign-common/issues/34

@caguero
Copy link
Contributor

caguero commented Apr 19, 2018

@caguero
Copy link
Contributor

caguero commented Apr 20, 2018

AddLoadableCar() has been renamed to AddLoadableAgent() in #371.

@stonier
Copy link
Collaborator

stonier commented May 21, 2018

Looking good. Remaining work transferred to the final polish meta for M2: #378

@stonier stonier closed this as completed May 21, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants