Skip to main content

Protocol and more for the cobotar project

Project description

CobotAR-Protocol

A collection of protobuf messages for the CobotAR-project

Current version: 0.20.1

Documentation

Find it here: documentation/README.md

New version

  1. Make changes
  2. make publish bump={patch,minor,major}

NATS subject convention

CRUD

  • add: edit.<domain>.add
  • update: edit.<domain>.update
  • delete: edit.<domain>.delete
  • get: get.<domain>.one
  • getByIds: get.<domain>.some
  • getAll: get.<domain>.all

Events

Subject shape: <kind>.<domain>.<type>.<scope..> where:

  • kind: {command | event | plan | telemetry}
  • domain: {robot | task | asset | ...}
  • type: event type as lower_snake_case string token (start_stop, started, task_completed, etc.)
  • scope optional identifiers for routing (robotId, taskId, assetId, lineId, etc.). Generally following this:
    <kind>.<domain>.<type>.<site>.<workcell>.<entityId>[.<planId>]
    

Examples:

command.robot.start_stop.workcellA.robot-1
plan.robot.path.workcellA.robot-1.plan-P123
telemetry.robot.state.workcellA.robot-1
event.robot.started.workcellA.robot-1
event.plan.cancelled.workcellA.plan-P123

Conceptual design of Assembly processes

A. Product definition (What the thing is)

  • Parts
  • Assemblies / sub-assemblies
  • Product BOM / hierarchy
  • Part occurrences / instances
  • CAD / 3D model references
  • Mating / connection hints if you have them

B. Process template (How the thing is normally assembled)

  • Process recipe
  • Sequences / sub-sequences
  • Tasks / operations / steps
  • Preconditions / ordering / alternatives / variants
  • Required tool roles, skill requirements, actor constraints
  • Operator text

C. Execution instance (What is happening right now on the floor)

  • Running process
  • Current state of sequences/tasks
  • Assigned human(s)/robot(s)
  • Start/end timestamps
  • Current station
  • Evidence / completion / faults / overrides

D. Resource library (What can be used to perform the work)

  • Humans
  • Robots
  • Tools
  • Fixtures
  • Assets
  • Stations / cells
  • Models

E. Capability layer (Why a given resource can or cannot do a task)

  • Skills
  • Capability profiles
  • Tool roles
  • Constraints
  • Validity / training / retraining / calibration / certification

Distinguish type from instance

Example: Part. In assembly we usually need both:

  • Part definition: “M4x12 screw”
  • Part occurrence: “the third M4x12 screw in this assembly”

thus distinguishing between the two is important and must be supported and done consistently.

Minimal TaskDefinition example

TaskDefinition {
  id: "task-fasten-cover-screw-1"
  name: "Fasten cover screw 1"
  instruction_text: "Fasten screw 1 to 0.8 Nm"
  task_type: TASK_TYPE_FASTEN
  target: {
    target_node_id: "node-screw-1"
    target_part_definition_id: "part-m4x12"
    local_target: {
      anchor_id: "node-screw-1"
    }
  }
  tool_requirements: [{
    role: TOOL_ROLE_APPLY_TORQUE,
    required_properties: [TOOL_PROPERTY_TORQUE_CONTROLLED],
    minimum_capability: {
      min_torque_nm: 0.72,
      max_torque_nm: 0.88
    }
  }]
  skill_requirements: [{
    skill_id: "SK-APPLY-CONTROLLED-TORQUE",
    minimum_level: SKILL_LEVEL_QUALIFIED
  }]
  validation: {
    require_tool_feedback: true
    allow_manual_confirmation: true
    manual_confirmation_min_level: SKILL_LEVEL_QUALIFIED
  }
  execution_policy: {
    assignment_preference: TASK_ASSIGNMENT_PREFERENCE_EITHER
    actor_constraint: {
      allowed_actor_kinds: [ACTOR_KIND_HUMAN, ACTOR_KIND_ROBOT]
      collaboration_mode: COLLABORATION_MODE_SEQUENTIAL_HRC
    }
  }
}

Variant handling

Types of variants

Bucket A — Structural variants

Affect product tree. Modeled in product.

Examples:

  • hinge side
  • optional handle
  • different fastener family
  • extra sensor module

Bucket B — Workflow variants

Affect tasks/sequences/skills/tools/validation. Modeled in recipe applicability or recipe branching.

Examples:

  • door must be flipped
  • adhesive cure step required
  • fragile part requires two-person lift
  • robot can only assemble one orientation

Bucket C — Parametric variants

Do not change workflow structure. Passed at run-time.

Examples:

  • color
  • language
  • customer text
  • batch number
  • cosmetic finish code

Handle variants without recipe explosion

For a product family, do this:

  • One ProductDefinition

    • Contains all structural possibilities.
  • Few ProcessRecipes

    Only split recipes where the workflow truly differs. For example:

    • recipe-door-standard
    • recipe-door-flipped-fixture
    • recipe-door-adhesive

    Not:

    • red-left-short-handle
    • red-left-long-handle
    • blue-right-short-handle
  • One ProcessRun per actual order/build

    Contains:

    • selected product configuration
    • runtime parameters

Example

Product dimensions
  • hinge_side = left | right
  • color = red | green | blue
  • handle = short | long
Recipe
  • recipe-door-standard is applicable when:
    • handle = short or long
    • color = any
    • hinge_side = left
  • recipe-door-flipped is applicable when:
    • hinge_side = right

They need to be split into two recipes because right-hinge requires a flip operation and different fixture.

Process run

When a real order starts the selection might look like this:

product_selection:
  hinge_side = right
  color = green
  handle = long

thus the system chooses the recipe-door-flipped recipe and the recipe stays the same regardless of color.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cobotar_protocol-0.20.1.tar.gz (966.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cobotar_protocol-0.20.1-py3-none-any.whl (274.4 kB view details)

Uploaded Python 3

File details

Details for the file cobotar_protocol-0.20.1.tar.gz.

File metadata

  • Download URL: cobotar_protocol-0.20.1.tar.gz
  • Upload date:
  • Size: 966.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cobotar_protocol-0.20.1.tar.gz
Algorithm Hash digest
SHA256 de0c359bce7310849d9860344a7a73bf782de95cdfeb1e8000f259f24cf2a078
MD5 4273101bc9d3f544cd43497cdee2aaa4
BLAKE2b-256 36d6a866d51e0bcea09a515cbfc22017bbd4bcbf0264cc9198a38d3245146582

See more details on using hashes here.

Provenance

The following attestation bundles were made for cobotar_protocol-0.20.1.tar.gz:

Publisher: publish-pypi.yml on cobotar/protocol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cobotar_protocol-0.20.1-py3-none-any.whl.

File metadata

File hashes

Hashes for cobotar_protocol-0.20.1-py3-none-any.whl
Algorithm Hash digest
SHA256 872aedc5f67d6996d10e7e30db363cae9f4929e71a2266416457a4fbb263a6fb
MD5 2a6e84ccda74038d48f236ee25b7d5fc
BLAKE2b-256 5ebf22fe4ef60a37561f3ca4d6fa70fc8b8907432085ce8c6c5141a06dbbc35b

See more details on using hashes here.

Provenance

The following attestation bundles were made for cobotar_protocol-0.20.1-py3-none-any.whl:

Publisher: publish-pypi.yml on cobotar/protocol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page