robotsthatdream / cafer

cafer framework for the DREAM project
5 stars 1 forks source link

Wave management and database manager #31

Open luis-calvo-varela opened 7 years ago

luis-calvo-varela commented 7 years ago

Hi all,

i have a couple of questions related to the management of components of each wave and the database manager:

1) The components (nodes, cafer or not) of each wave should be launched exclusively through the configuration_file.yml of the wave supervisor, right?

I've already seen that the "managed" components are launched as "sons" of the supervisor, so i can control them as desired (kill them, etc) with the supervisor.

2) Should we implement a database manager node for our waves? Or the the database manager node is going to be "universal" for all the waves of the architecture (as in one manager node for all the waves)?

I would appreciate is you could answer this.

I would also appreciate if you could create a small technical tutorial about all this (for example: what each line means in the supervisor configuration files for the whole system, what possibilities are there, etc).

Thank you.

LeniLeGoff commented 7 years ago

Hi Luis,

  1. To launch nodes through the supervisor, you need to put those nodes in the configuration_files.yml. But you can launch your component one by one or launch a part through the supervisor and others besides. You must just beware of the namespaces. All nodes launched through the supervisor will have as namespace, the namespace of the supervisor.

  2. You should implement your database manager for your waves. This will allow you to test your experiments within the cafer framework. But at the end, there will be just one database manager for the whole architecture. At this moment, we will just merge the database manager of each partners.

Cheers.

PHLF commented 7 years ago

Hello Luis,

As a short reply, from what I remember (I am not contributing anymore):

  1. Not necessarily from a functional POV : the supervisor node allows you to control the nodes' launch order (CAFER or not) as specified from ROS parameters setup by ROS launch. But yes from a CAFER POV as the supervisor node is meant to be the interface for a wave in CAFER.
  2. The Database Manager is designed to be unique: one DB Manager for all waves. But are you worried about it being too limited or do you have specific implementation issues that come to your mind?

And here is an example of a set of ROS parameters used by a wave supervisor to control nodes' launch order as defined in a yaml file:

# Nodes using CAFER
managed:
  package_name:
    node_1:
      launch: "node_1.launch"
      depends_on: "node_B"
    node_2:
      ...
# Nodes not using CAFER (can be launched but not controlled)
externals:
  package_name:
    node_A:
      launch: "node_A.launch"
      depends_on: "node_1, node_2"
    node_B:
      launch: "node_B.launch"
    node_C:
      ...

The dependency tree which control the launch order is defined by the set of depends_on keys. This set of parameters must exist under your wave supervisor's namespace/components/

Edit: Léni was faster than me ;) I hope my answer helps you anyway.

ghanimmukhtar commented 7 years ago

Hello Louis, I can do either a skype call, or a recorded video to explain the different tags and their significance in the configuration files. Let me know your preference so we can proceed.

luis-calvo-varela commented 7 years ago

Thanks for the answers guys. Understood.

@PHLF I haven't seen any limitations whatsoever for now, but rest assured that if i find any i will inform you.

@ghanimmukhtar I think is it not needed for now, but i will contact you if i have doubts with other aspects of the supervisor / database_manager. I'll post them here as well.