Orders

The main task of the competition is to complete orders. After the competition is started, orders will be published on the topic /ariac/orders. Each order will request competitors to complete one of three possible tasks (Kitting Task, Assembly Task, or Combined Task). An order has the following specifications:

  • id Each order in a trial has a unique id. The id is an eight character alphanumeric string.

  • type The type of task for the order. Three possible values: kitting, assembly, or combined.

  • priority If the order is a priority order. When set to false the order is a regular order and when set to true, the order is of high priority.

  • announcment Describes when the task manager will announce the order. There are three possible Conditions.

Manufacturing Tasks

Kitting Task

Kitting is the process of gathering parts into a ‘kit’. For a kitting task, the CCS is expected to:

  1. Locate a tray with the proper tray id, on one of the two kit tray stations.

  2. Pick, place, and lock the tray onto the specified AGVs.

Note

After placement, the tray should be locked to the AGV using the service /ariac/agv{n}_lock_tray to prevent the tray from shifting during transport.

  1. Place the requested parts onto that kit tray in the specified quadrant.

  2. Perform a quality check using the ROS service to check for faulty parts and fix any issues with the shipment.

  3. Direct the AGV to the warehouse.

  4. Submit the order.

Note

The AGV must be at the warehouse location before the order can be submitted. This can be checked using the topic /ariac/agv{n}_status.

Kitting Order YAML configuration

Orders and tasks are described in the trial configuration yaml file. An example of a kitting task can be seen in Listing 1. The kitting task in this example is described as follows:

  • The kit must be built on AGV 2.

  • The kitting tray with id 3 must be used to build the kit.

  • A blue battery must be place in quadrant 1 in the kitting tray.

  • Once the kit is built, the AGV must be directed to the warehouse.

Listing 1 Example of a kitting task description.
orders:
  - id: 'MMB30H2'
    type: 'kitting'
    announcement:
      time_condition: 0
    priority: false
    kitting_task:
      agv_number: 2
      tray_id: 3
      destination: 'warehouse'
      products:
        - type: 'battery'
          color: 'blue'
          quadrant: 1

Assembly Task

Assembly is the process of installing parts to a fixed insert. The CCS can assemble the parts in any order. For a trial where assembly tasks are required, the ARIAC environment starts with parts already located on AGVs. The CCS is expected to:

  1. Lock the AGV trays.

  2. Move the AGVs to the correct assembly station.

  3. Call the pre-assembly poses service to get exact locations for the parts.

  4. Use the ceiling robot to pick parts from the AGV and install each part into the insert.

  5. Submit the assembly order.

Caution

This pre-assembly poses service can be called only once for each order ID. The AGVs need to be at the correct assembly station for the service to work.

Assembly Order YAML configuration

An example of an assembly order in a trial configuration file is presented in Listing 2 with the following description:

  • The assembly should be performed at assembly station 4.

  • The parts needed to complete the task are located on AGV 3.

  • A purple regulator should be installed at the specified pose (relative to the insert’s coordinate frame) in the direction of the specified unit vector (also relative to the insert frame).

Listing 2 Example of an assembly task description.
- id: 'MMB30H57'
  type: 'assembly'
  announcement:
    time_condition: 0
  priority: false
  assembly_task:
    agv_number: [3]
    station: 'as4'
    products:
      - type: 'regulator'
        color: 'purple'
        assembled_pose:
          xyz: [0.175, -0.223, 0.215]
          rpy: ['pi/2', 0, '-pi/2']
        assembly_direction: [0, 0, -1]

Combined Task

A combined task is a task which requires both kitting and assembly. For a combined task, the CCS is expected to first perform a kitting task followed with an assembly task.

Note

The kitting task information is left to the competitors to figure out based on the assembly task information. The CCS can place parts anywhere on AGVs and then move those AGVs to the station where assembly is to be performed. Once the assembly is complete, the CCS can submit the assembly via a ROS service call (see Table 1). The AM will then evaluate the submitted assembly for scoring (kitting task is not scored).

Combined Order YAML configuration

An example of a combined task in a trial configuration file is presented in Listing 3. with the following description:

  • The assembly should be performed at assembly station 2.

  • A red sensor should be located in the environment and should be installed at the specified pose.

Listing 3 Example of a combined task description.
- id: 'MMB30H58'
  type: 'combined'
  announcement:
    time_condition: 0
  priority: false
  combined_task:
    station: 'as2'
    products:
      - type: 'sensor'
        color: 'red'
        assembled_pose:
          xyz: [-0.1, 0.395, 0.045]
          rpy: [0, 0, '-pi/2']
        assembly_direction: [0, -1, 0]

Conditions

Orders and challenges are announced under three possible conditions:

  • Time-based condition: This condition is used to announce an order when the competition time has reached the time provided in the condition.

    Note

    The competition time is set when the competitor starts the competition with the service call /ariac/start_competition. This is different from the simulation time which is set when Gazebo starts.

    For each trial, the first order always uses a time-based condition with the value 0. This ensures the first order is announced as soon as the competitor starts the competition. Listing 4 shows an example of a time-based condition where an order is announced at 10.5 seconds into the competition.

    Listing 4 Time-based condition.
    announcement:
      time_condition: 10.5
    
  • Part placement condition: When this condition is used, an order or a challenge is announced as soon as a specific part is placed on a specific AGV. Listing 5 shows an example of a part placement condition which announces an order or a challenge when a red pump is placed on AGV 2.

    Listing 5 Part placement condition.
    announcement:
      part_place_condition:
        agv: 2
        type: 'pump'
        color: 'red'
    
  • Submission condition: When this condition is used, an order or a challenge is announced as soon as another order is submitted. Listing 6 shows an example of a submission condition which announces an order or a challenge when the order 'MMB30H56' is submitted.

    Listing 6 Submission condition.
    announcement:
      submission_condition:
        order_id: 'MMB30H56'