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

More granular task capability checking for workcells #41

Open
luca-della-vedova opened this issue Dec 11, 2024 · 2 comments
Open

More granular task capability checking for workcells #41

luca-della-vedova opened this issue Dec 11, 2024 · 2 comments
Labels
enhancement New feature or request

Comments

@luca-della-vedova
Copy link
Member

Nexus relies on the service IsTaskDoable to query which workcell can perform a specific task.
The task itself is made of both a plain string type and a YAML payload. However, in the current implementation, the workcell orchestrator only checks whether a behavior tree exists with the requested type and doesn't do anything with the payload.

There might be cases where multiple workcells can perform the same type of task and the differentiating factor is in the payload itself, or cases in which a a workcell might be able to support a wide category of tasks but only a subset of payloads.
It should be possible to configure the function that checks whether a workcell can perform a task and implement more complex behaviors.

@koonpeng
Copy link
Member

Some context for this, there were some discussion on this. In general there are 2 paths that we can take

  • A DIY approach where you have some table/database of which workcell can do which task with which payload etc. This should be low-code/no-code, users shouldn't have to compile anything.
  • An automatic approach where each node/hardware driver can examine the payload and report if it can do the task. The biggest problem with this is that payloads must have a predefined schema, and there are too many variables for us to create a standard format.

These 2 approach are not mutually exclusive so we can have a mix of both.

@Yadunund
Copy link
Member

I'd like to rely on plugins which the orchestrator can load to decide whether the task can be performed. ie, plugins would implement a can_perform_task() like method. Checking whether the bt file exists in the local filesystem can be one such implementation. We can also define other plugins as described by @koonpeng above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants