20110309

Essential

  • What is aborting a task (highly task / application dependent)
  • High-level task queue in the top API level
  • Asynchronous and synchronous nodes in data-flow
  • Layers / blocks / node groups in the data-flow graph with identical timing
  • Control Mode (on API level) activates / deactivates subgraphs / paths in data-flow graph

All nodes

  • What to do if tasks sets command for only a subset of nodes:
    • Other nodes do nothing
      • What is doing nothing?
      • Keeping last command?
      • What to do in case of velocity control (keeping last velocity? or velocity to zero?)
  • API provides task queue and task sequence (e.g. trajectory) queue
  • Everything above (planning etc.) is out of scope of the control API

Data-flow

  • Different timing and asynchronous nodes
  • Need to handle package underflow and overflow
    • Queuing strategies
    • Warning, errors
  • Do we want to have layers / blocks / groups in the data-flow graph?
    • A layer / block has synchronous timing (in one cycle, each node is computed)
    • Barrier between layers cares for data transition
    • Barrier may have conditions (such as a certain control mode has to be active / inactive)
  • Control Mode (on API level)
    • activates / deactivates subgraphs / paths in data-flow graph
    • activates / deactivates layers / blocks
  • Execution of data-flow and introspection / visualization of data-flow is separated
  • Base cycle time of the data-flow has to be synchronizable with the sample time of the robot interface
    • to be able to execute controllers in one update cycle of the robot interface
  • Data-flow graph is modelled

Arbitration

  • Make it simple at the beginning
    1. Version (very simple): Robot is idle (can execute tasks), or tasks get queued for later execution
      • Does not allow controlling two arms separately through one API
    2. Version: Named controllers - Client explicitly selects controller / control path by name (explicit arbitration / selection on client-side)
    3. Version (final): Automatic arbitration based on used resources

Ideas

  • RCCL-Controller and -Tasks