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
, orcombined
.
priority
If the order is a priority order. When set tofalse
the order is a regular order and when set totrue
, 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:
Locate a tray with the proper tray id, on one of the two kit tray stations.
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.
Place the requested parts onto that kit tray in the specified quadrant.
Perform a quality check using the ROS service to check for faulty parts and fix any issues with the shipment.
Direct the AGV to the warehouse.
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.
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:
Lock the AGV trays.
Move the AGVs to the correct assembly station.
Call the pre-assembly poses service to get exact locations for the parts.
Use the ceiling robot to pick parts from the AGV and install each part into the insert.
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).
- 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.
- 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.announcement: time_condition: 10.5Part 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.
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.announcement: submission_condition: order_id: 'MMB30H56'