Jacobi Palletizer (1.0.0)

This is the documentation of the public API of the Jacobi Palletizer. The general documentation e.g. about installation and project setup can be found at https://docs.jacobirobotics.com.

The API consists of two endpoints:

API - 1. Websocket

A Websocket endpoint at ws://<host>:8081/v1/<...> to subscribe and publish to asynchronous updates of the palletizer. It is described in the Control section below.

The websocket part of the API allows for asynchronous communication between the Jacobi Palletizer and the client, and is mostly used to send/receive live updates of the running palletizer. Each message is a JSON encoded string with a required key field.

Each sent (published) command will be acknowledged by a corresponding subscription message. When a command triggers a response, a response will be (usually) sent with the same key but an additional value field.

For authentication, pass ?token=<...> as a query parameter to the websocket URL.

For error management, there are three types of errors / warnings:

  1. Errors that need to be (fixed and) acknowledged before palletizing can be continued. Both raising and resolving the error is communicated via the system/alarm or system/safety variables, and are then acknowledge via "acknowledge/alarm" or "acknowledge/safety".

  2. Warnings that allow the palletizing to continue. Warnings are communicated via the system/warning variable.

  3. User feedback errors that directly results from user interaction. The response message will contain an "error": [string] field with a unique error string. Here, the HMI can decide itself how long the error message should be shown (e.g. via a toast with a timeout, or until the next user interaction). Possible error values are:

"robot-not-at-home" | "action-not-allowed-in-current-state"| "vacuum-is-still-on" | "still-no-robot-connection" | "no-trajectory-for-current-box" | "unknown-pallet" | "there-is-only-a-single-zone" | "a-zone-was-already-requested" | "no-zone-is-currently-requested" | "unknown-system-error" | "pallet-needs-to-be-empty"

2. API - HTTP

An HTTP endpoint at http://<host>:8080/api/v1 to read values from the palletizer or set values while the palletizer is stopped. It is described in the remaining sections of the documentation.

For authentication, pass the given token in the HTTP headers, with the common Authorization key and Bearer: <token> value.

Websocket

Control

Available at the /control path of the websocket endpoint. On initial connection of the websocket, all subscription variables below are sent once.

PUB Start

Start the palletizer. Triggers a system/state response.

{
    "key": "start"
}

PUB Start Suction

Turn on the suction.

{
    "key": "start/suction"
}

PUB Pause

Pause the palletizer.

{
    "key": "pause"
}

PUB Stop After Box

Stop the palletizer after placing the current box.

{
    "key": "stop/after_box"
}

PUB Stop After Pallet

Stop the palletizer after the next finished pallet.

{
    "key": "stop/after_pallet"
}

PUB Stop Suction

Stop the suction.

{
    "key": "stop/suction"
}

PUB Go To Position

Go to the specific position. ossible positions are: home, maintenance, pick, double_pick, discard. In case the value is false, it will stop the motion.

{
    "key": "go_to/<position>",
    "value": boolean
}

PUB Set Pallet

Set the active pallet.

{
    "key": "pallet",
    "value": string
}

PUB Set Box

Set the next active box to place. The box number refers to the index on the current pallet.

{
    "key": "box",
    "value": integer
}

PUB Set Box Relative

Set the next active box to place, relative to the current active box.

{
    "key": "box/relative",
    "value": "reset" | "prev" | "next"
}

PUB Set Layer

Set the next active layer to place. The layer number refers to the index on the current pallet.

{
    "key": "layer",
    "value": integer
}

PUB Set Layer Relative

Set the next active layer to place, relative to the current active layer.

{
    "key": "layer/relative",
    "value": "reset" | "prev" | "next"
}

PUB Reload Setup

Reload the current active setup.

{
    "key": "setup/reload"
}

PUB Clear Pallet

Clear the pallet with the given name, so that the palletizer know that it is empty and ready to be filled.

{
    "key": "pallet/clear",
    "value": string
}

PUB Acknowledge Alarm

Acknowledge a specific alarm fault.

{
    "key": "acknowledge/alarm",
    "value": string
}

PUB Acknowledge Safety

Acknowledge a specific safety fault.

{
    "key": "acknowledge/safety",
    "value": string
}

PUB Silence Alarm

Silence the audio signal of an alarm.

{
    "key": "alarm/silence"
}

PUB Request Zone Access

Request zone access to the current pallet.

{
    "key": "zone_access/request",
    "value": string | undefined
}

PUB Release Zone Access

Release the current zone access.

{
    "key": "zone_access/release"
}

SUB Setup ID

Receive changes about the setup id.

{
    "key": "setup_id",
    "value": number
}

SUB Setup Name

Receive changes about the setup name.

{
    "key": "setup_name",
    "value": string
}

SUB Pallet Names

Receive changes about the pallet names.

{
    "key": "pallet_names",
    "value": string[]
}

SUB Pallet States

Receive changes about the pallet states. This is not updated live with the current pallet, but only on new websocket connections, setup changes, and pallet clearance.

{
    "key": "pallet_states",
    "value": Map<string, {
        sequence: number,
        layer: number,
        box: number,
        box_in_layer: number,
        start: string,
        goal: string
    }>
}

SUB System State

Receive changes about the general system state.

{
    "key": "system/state",
    "value": "booting" | "ready" | "running" | "pausing" | "stopping" | "paused" | "stopped" | "faulted"
}

The system state is booting until either all connection checks pass (then it will switch to stopped), or until a timeout (3min by default) where it will switch to faulted and throw more detailed system alarms.

SUB System Safety

Receive changes about the system safety. All alarms will stop the robot, bring the system into a faulted state, and need to be acknowledged before the system continuous operation.

{
    "key": "system/safety",
    "value": {
        "area_scanner_active": boolean,
        "collision": boolean,
        "e_stop_active": boolean,
        "guard_door_open": boolean,
        "light_curtain_broken": boolean
    }
}

SUB System Alarm

Receive changes about the system alarm. All alarms will stop the robot, bring the system into a faulted state, and need to be acknowledged before the system continuous operation.

{
    "key": "system/alarm",
    "value": {
        "box_drop": boolean,
        "box_jam": boolean,
        "box_unpickable": boolean,
        "conveyor_overflow": boolean,
        "low_pressure": boolean,
        "no_collision_free_motion": boolean,
        "no_pallet_while_placing": boolean,
        "robot": boolean,
        "robot_connection": boolean,
        "robot_not_ready": boolean,
        "setup_loading": boolean,
        "system_not_ready": boolean
    }
}

SUB System Warning

Receive changes about the system warning.

{
    "key": "system/warning",
    "value": {
        "area_scanner_slowdown": boolean,
        "area_scanner_stop": boolean,
        "heartbeat_ping_timeout": boolean,
        "no_pallet": boolean,
    }
}

SUB Is Going To Position

Receive changes whether the robot is going to a specific position. Possible positions are: home, maintenance, pick, double_pick, discard.

{
    "key": "is_going_to/<position>",
    "value": boolean
}

SUB Is At Position

Receive changes whether the robot is at a specific position. Possible positions are: home, maintenance, pick, double_pick, discard.

{
    "key": "is_at/<position>",
    "value": boolean
}

SUB Will Stop After Box

Receive changes whether the robot will stop after the next placed box.

{
    "key": "will_stop_after_box",
    "value": boolean
}

SUB Will Stop After Pallet

Receive changes whether the robot will stop after the next finished pallet.

{
    "key": "will_stop_after_pallet",
    "value": boolean
}

SUB User Might Stop Suction

Receive changes of the might stop suction variable. It indicates whether the user is allowed to currently stop the suction.

{
    "key": "user_might_stop_suction",
    "value": boolean
}

SUB Might continue automatically

Receive changes about whether the system might continue automatically after a pause.

{
    "key": "might_continue_automatically",
    "value": boolean
}

SUB Current Pallet

Receive changes of the current pallet.

{
    "key": "current_pallet",
    "value": string
}

SUB Current Sequence

Receive changes of the current sequence, which is an index of the trajectory the robot is executing, of the current pallet.

{
    "key": "current_sequence",
    "value": number
}

SUB Current Layer

Receive changes of the current layer of the current pallet.

{
    "key": "current_layer",
    "value": number
}

SUB Current Box In Layer

Receive changes of the current box in the current layer of the current pallet.

{
    "key": "current_box_in_layer",
    "value": number
}

SUB Current Box

Receive changes of the current box of the current pallet.

{
    "key": "current_box",
    "value": number
}

SUB Current Start

Receive changes of the start of the current motion.

{
    "key": "current_start",
    "value": string
}

SUB Current Goal

Receive changes of the goal of the current motion.

{
    "key": "current_goal",
    "value": string
}

SUB Current Pick Count

Receive changes of the current pick count.

{
    "key": "current_picks",
    "value": number
}

SUB Current Average Cycle Time

Receive changes of the average cycle time.

{
    "key": "current_avg_cycle_time",
    "value": number
}

SUB Is Pallet Present

Receive changes whether the pallets are present and ready for placing boxes. The value is a simple object mapping pallet names to booleans.

{
    "key": "is_pallet_present",
    "value": object
}

SUB Is Pallet Full

Receive changes whether the pallets are full and ready to be removed. The value is a simple object mapping pallet names to booleans.

{
    "key": "is_pallet_full",
    "value": object
}

SUB Area Scanner

Receive changes about an area scanner's detection of an obstacle. The value is an object mapping area scanner zone names (usually equal to pallet names) to either 'alarm' | 'warning' | 'safe'.

{
    "key": "safety/area_scanner",
    "value": object
}

SUB Speed Level

Receive changes about the speed enforced by an area scanner. The value is an object mapping area scanner zone names (usually equal to pallet names) to either 'stop' | 'slowdown' | 'safe'.

{
    "key": "safety/speed_level",
    "value": object
}

SUB E-Stop

Receive changes whether e-stops are active. The value is a simple object mapping e-stop names to booleans.

{
    "key": "safety/e_stop",
    "value": object
}

SUB Light Curtain

Receive changes whether light curtains are active. The value is a simple object mapping light curtain names (usually equal to pallet names) to booleans.

{
    "key": "safety/light_curtain",
    "value": object
}

SUB Zone Access

Receive changes about the requested/released zone access.

{
    "key": "zone_access",
    "value": string | null
}

SUB Is Zone Access Active

Receive changes about whether the zone access is active (or granted).

{
    "key": "zone_access/is_active",
    "value": boolean
}

Heartbeat

Available at the /heartbeat path of the websocket endpoint.

SUB Heartbeat

Receive an oscillating boolean value (either true or false) in case the system is currently alive, sent every second. Otherwise, nothing is sent at all.

{
    "key": "heartbeat",
    "value": boolean
}

PUB Heartbeat Ping

Sends a ping to the controller. If the option of a ping requirement is active, and no ping was received in the last 2s, the controller will stop the palletizing process and emit an heartbeat_ping_timeout system alarm. This can be used to make sure that an HMI is always connected and responsive. During manual motions (e.g. going home), the heartbeat timeout is reduced to 400ms.

{
    "key": "ping"
}

Test

Available at the /test path of the websocket endpoint.

This is for setting mock data. Only available in testing mode without a physical robot. There is no direct message response.

PUB Exit Program

Simulate a program crash.

{
    "key": "crash"
}

PUB PLC Connection

Simulate PLC connection / disconnection.

{
    "key": "plc_connection",
    "value": boolean
}

PUB Set Vacuum

Simulate the vacuum of the robot.

{
    "key": "vacuum",
    "value": boolean
}

PUB Set Vacuum Picked

Simulate whether a box is picked, as detected by the vacuum pressure sensor.

{
    "key": "vacuum_picked",
    "value": boolean
}

PUB Set Left Pallet Present

Simulate whether a left pallet is present.

{
    "key": "left_pallet_present",
    "value": boolean
}

PUB Set Right Pallet Present

Simulate whether a right pallet is present.

{
    "key": "right_pallet_present",
    "value": boolean
}

PUB Set Area Scanner

Simulate whether the area scanner is active.

{
    "key": "area_scanner_triggered",
    "value": boolean
}

PUB Set E-Stop

Simulate whether the e-stop is active.

{
    "key": "e_stop",
    "value": boolean
}

PUB Set Robot Result

Simulate the result type of a trajectory execution by the robot.

{
    "key": "robot_result",
    "value": "success" | "e_stop" | "safety" | "error"
}

System

Get System Config

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "audience": "string",
  • "automatic_clear_pallet": true,
  • "clear_pallet_duration": 0,
  • "check_pressure_sensor": true,
  • "controller_type": "string",
  • "conveyor_control_by_plc": true,
  • "fault_on_area_scanner_triggered": true,
  • "gripper_has_blowoff": true,
  • "is_editable": true,
  • "name": "string",
  • "pallet_names": [
    ],
  • "require_heartbeat_ping": true,
  • "robot_cell": "string",
  • "robot_driver_type": "string",
  • "robot_host": "string",
  • "sleep_after_vacuum_change": 0,
  • "vacuum_activation_lead_time": 0
}

Set System Config

header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
audience
required
string (Audience)
automatic_clear_pallet
required
boolean (Automatic Clear Pallet)
clear_pallet_duration
required
number (Clear Pallet Duration)
check_pressure_sensor
required
boolean (Check Pressure Sensor)
controller_type
required
string (Controller Type)
conveyor_control_by_plc
required
boolean (Conveyor Control By Plc)
fault_on_area_scanner_triggered
required
boolean (Fault On Area Scanner Triggered)
gripper_has_blowoff
required
boolean (Gripper Has Blowoff)
is_editable
required
boolean (Is Editable)
name
required
string (Name)
pallet_names
required
Array of strings (Pallet Names)
require_heartbeat_ping
required
boolean (Require Heartbeat Ping)
robot_cell
required
string (Robot Cell)
robot_driver_type
required
string (Robot Driver Type)
robot_host
required
string (Robot Host)
sleep_after_vacuum_change
required
number (Sleep After Vacuum Change)
vacuum_activation_lead_time
required
number (Vacuum Activation Lead Time)

Responses

Request samples

Content type
application/json
{
  • "audience": "string",
  • "automatic_clear_pallet": true,
  • "clear_pallet_duration": 0,
  • "check_pressure_sensor": true,
  • "controller_type": "string",
  • "conveyor_control_by_plc": true,
  • "fault_on_area_scanner_triggered": true,
  • "gripper_has_blowoff": true,
  • "is_editable": true,
  • "name": "string",
  • "pallet_names": [
    ],
  • "require_heartbeat_ping": true,
  • "robot_cell": "string",
  • "robot_driver_type": "string",
  • "robot_host": "string",
  • "sleep_after_vacuum_change": 0,
  • "vacuum_activation_lead_time": 0
}

Response samples

Content type
application/json
null

Get System Signals

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "robot_execution_running": {
    },
  • "manager_execution_running": {
    },
  • "conveyor_execution_running": {
    },
  • "gripper_execution_running": {
    },
  • "robot_auto_mode": {
    },
  • "motion_supervision": {
    },
  • "area_scanner_stop_left": {
    },
  • "area_scanner_slowdown_left": {
    },
  • "area_scanner_stop_right": {
    },
  • "area_scanner_slowdown_right": {
    },
  • "area_scanner_interior_left": {
    },
  • "area_scanner_interior_right": {
    },
  • "area_scanner_exterior_left": {
    },
  • "area_scanner_exterior_right": {
    },
  • "area_scanner_warning_left": {
    },
  • "area_scanner_warning_right": {
    },
  • "e_stop": {
    },
  • "light_curtain_left": {
    },
  • "light_curtain_right": {
    },
  • "reset_left": {
    },
  • "reset_right": {
    },
  • "reset_emergency": {
    },
  • "is_pallet_present_left": {
    },
  • "is_pallet_present_right": {
    },
  • "is_pallet_full_left": {
    },
  • "is_pallet_full_right": {
    },
  • "vacuum_sensor_1": {
    },
  • "vacuum_sensor_2": {
    },
  • "gripper_blowoff": {
    },
  • "low_pressure": {
    },
  • "conveyor_sensor_1": {
    },
  • "conveyor_sensor_2": {
    },
  • "conveyor_sensor_3": {
    },
  • "conveyor_motor_1": {
    },
  • "conveyor_motor_2": {
    },
  • "conveyor_motor_3": {
    },
  • "jacobi_egm_stop": {
    },
  • "jacobi_vacuum_on": {
    },
  • "jacobi_robot_state": {
    },
  • "jacobi_system_state": {
    },
  • "jacobi_palletizing_left": {
    },
  • "jacobi_palletizing_right": {
    },
  • "jacobi_is_box_at_pick": {
    },
  • "jacobi_layer_one_left": {
    },
  • "jacobi_layer_one_right": {
    },
  • "jacobi_pre_pick": {
    },
  • "jacobi_double_pick": {
    },
  • "jacobi_conveyor_overflow": {
    },
  • "jacobi_box_length": {
    },
  • "jacobi_box_width": {
    },
  • "jacobi_box_height": {
    },
  • "jacobi_box_weight": {
    },
  • "jacobi_start_pallet": {
    },
  • "jacobi_stop_after_box": {
    },
  • "jacobi_go_home": {
    },
  • "jacobi_error_left": {
    },
  • "jacobi_error_right": {
    },
  • "jacobi_at_home": {
    }
}

Set System Signals

header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
object (Signal)
Default: {"active_on":1,"default_alias":"robot_execution_running","default_value":0,"description":"Is the robot programing running?"}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"manager_execution_running","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_execution_running","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"gripper_execution_running","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"robot_auto_mode","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"motion_supervision","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_stop_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_slowdown_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_stop_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_slowdown_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_interior_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_interior_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_exterior_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_exterior_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_warning_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"area_scanner_warning_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"e_stop","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"light_curtain_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"light_curtain_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"reset_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"reset_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"reset_emergency","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"is_pallet_present_left","default_value":1}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"is_pallet_present_right","default_value":1}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"is_pallet_full_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"is_pallet_full_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"vacuum_sensor_1","default_value":1}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"vacuum_sensor_2","default_value":1}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"gripper_blowoff","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"low_pressure","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_sensor_1","default_value":1,"description":"Conveyor light sensor closest to the robot."}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_sensor_2","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_sensor_3","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_motor_1","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_motor_2","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"conveyor_motor_3","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_egm_stop","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_vacuum_on","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_robot_state","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_system_state","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_palletizing_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_palletizing_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_is_box_at_pick","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_layer_one_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_layer_one_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_pre_pick","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_double_pick","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_conveyor_overflow","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_box_length","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_box_width","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_box_height","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_box_weight","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_start_pallet","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_stop_after_box","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_go_home","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_error_left","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_error_right","default_value":0}

A signal used to control I/O of a system.

object (Signal)
Default: {"active_on":1,"default_alias":"jacobi_at_home","default_value":0}

A signal used to control I/O of a system.

Responses

Request samples

Content type
application/json
{
  • "robot_execution_running": {
    },
  • "manager_execution_running": {
    },
  • "conveyor_execution_running": {
    },
  • "gripper_execution_running": {
    },
  • "robot_auto_mode": {
    },
  • "motion_supervision": {
    },
  • "area_scanner_stop_left": {
    },
  • "area_scanner_slowdown_left": {
    },
  • "area_scanner_stop_right": {
    },
  • "area_scanner_slowdown_right": {
    },
  • "area_scanner_interior_left": {
    },
  • "area_scanner_interior_right": {
    },
  • "area_scanner_exterior_left": {
    },
  • "area_scanner_exterior_right": {
    },
  • "area_scanner_warning_left": {
    },
  • "area_scanner_warning_right": {
    },
  • "e_stop": {
    },
  • "light_curtain_left": {
    },
  • "light_curtain_right": {
    },
  • "reset_left": {
    },
  • "reset_right": {
    },
  • "reset_emergency": {
    },
  • "is_pallet_present_left": {
    },
  • "is_pallet_present_right": {
    },
  • "is_pallet_full_left": {
    },
  • "is_pallet_full_right": {
    },
  • "vacuum_sensor_1": {
    },
  • "vacuum_sensor_2": {
    },
  • "gripper_blowoff": {
    },
  • "low_pressure": {
    },
  • "conveyor_sensor_1": {
    },
  • "conveyor_sensor_2": {
    },
  • "conveyor_sensor_3": {
    },
  • "conveyor_motor_1": {
    },
  • "conveyor_motor_2": {
    },
  • "conveyor_motor_3": {
    },
  • "jacobi_egm_stop": {
    },
  • "jacobi_vacuum_on": {
    },
  • "jacobi_robot_state": {
    },
  • "jacobi_system_state": {
    },
  • "jacobi_palletizing_left": {
    },
  • "jacobi_palletizing_right": {
    },
  • "jacobi_is_box_at_pick": {
    },
  • "jacobi_layer_one_left": {
    },
  • "jacobi_layer_one_right": {
    },
  • "jacobi_pre_pick": {
    },
  • "jacobi_double_pick": {
    },
  • "jacobi_conveyor_overflow": {
    },
  • "jacobi_box_length": {
    },
  • "jacobi_box_width": {
    },
  • "jacobi_box_height": {
    },
  • "jacobi_box_weight": {
    },
  • "jacobi_start_pallet": {
    },
  • "jacobi_stop_after_box": {
    },
  • "jacobi_go_home": {
    },
  • "jacobi_error_left": {
    },
  • "jacobi_error_right": {
    },
  • "jacobi_at_home": {
    }
}

Response samples

Content type
application/json
null

Export Full Config

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "config": {
    },
  • "signals": {
    }
}

Import Full Config

header Parameters
authorization
required
string (Authorization)
Request Body schema: multipart/form-data
required
file
required
string <binary> (File)

Responses

Response samples

Content type
application/json
null

Get System Version

Returns the (semantic) version.

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "version": "string"
}

Get System Uptime

Returns the system uptime in seconds.

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "uptime": 0
}

Get System Run Mode

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "run_with_suction": true,
  • "run_with_reduced_speed": true
}

Set System Run Mode

header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
run_with_suction
required
boolean (Run With Suction)
run_with_reduced_speed
required
boolean (Run With Reduced Speed)

Responses

Request samples

Content type
application/json
{
  • "run_with_suction": true,
  • "run_with_reduced_speed": true
}

Response samples

Content type
application/json
null

Picks

Get Picks

Get information about recent picks of the palletizer

query Parameters
Limit (integer) or Limit (null) (Limit)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Logs

Get Logs

query Parameters
Level (integer) or Level (null) (Level)
Limit (integer) or Limit (null) (Limit)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Setups

Get Setups

Get the list of all saved setups

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Active Setup

Get the currently active setup.

header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "setup_id": 0,
  • "project_id": "string",
  • "project_name": "string",
  • "name": "string",
  • "comment": "string",
  • "operator_name": "string",
  • "operator_comment": "string",
  • "data": {
    },
  • "created": "string",
  • "deployed": true
}

Update Setup Motion Parameter

Update the motion parameters of the given setup.

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
double_pick
boolean (Double Pick)
Default: false

Whether there might be double picks of two boxes simultaneously.

rotate_for_single_pick
boolean (Rotate For Single Pick)
Default: false

Rotate the gripper around 90 deg for single picks only. Might reduce the overhang of the gripper.

speed_with_pick
number (Speed With Pick)
Default: 1

Relative speed for motions with a picked item.

clamp_prepick_height
number (Clamp Prepick Height)
Default: 0

[m]

clamp_push_distance
number (Clamp Push Distance)
Default: 0

[m]

clamp_prepush_distance
number (Clamp Prepush Distance)
Default: 0

[m]

pick_offset_x
number (Pick Offset X)
Default: 0

x-offset of the pick pose [m].

pick_offset_y
number (Pick Offset Y)
Default: 0

y-offset of the pick pose [m].

pick_offset
number (Pick Offset)
Default: 0

z-offset of the pick pose [m].

pick_offset_a
number (Pick Offset A)
Default: 0

Rotation offset around x-axis of the pick pose [rad].

pick_offset_b
number (Pick Offset B)
Default: 0

Rotation offset around y-axis of the pick pose [rad].

pick_offset_c
number (Pick Offset C)
Default: 0

Rotation offset around z-axis of the pick pose [rad].

place_offset_x
number (Place Offset X)
Default: 0

x-offset of the place pose [m].

place_offset_y
number (Place Offset Y)
Default: 0

y-offset of the place pose [m].

place_offset_left_y
number (Place Offset Left Y)
Default: 0

y-offset of the place pose for the left pallet [m].

place_offset_right_y
number (Place Offset Right Y)
Default: 0

y-offset of the place pose for the right pallet [m].

place_offset
number (Place Offset)
Default: 0

z-offset of the place pose [m].

place_offset_a
number (Place Offset A)
Default: 0

Rotation offset around x-axis of the place pose [rad].

place_offset_b
number (Place Offset B)
Default: 0

Rotation offset around y-axis of the place pose [rad].

place_offset_c
number (Place Offset C)
Default: 0

Rotation offset around z-axis of the place pose [rad].

layer_distance
number (Layer Distance)
Default: 0

Distance between layers [m].

wait_above_pick_distance
number (Wait Above Pick Distance)
Default: 0.1

Distance between the wait position and the top of the box [m].

pick_retraction_distance
number (Pick Retraction Distance)
Default: 0.05

Upwards retraction after picking the box [m].

pick_retraction_speed
number (Pick Retraction Speed)
Default: 1

Relative speed for the pick retraction sub-motion.

pick_retraction_approximate
boolean (Pick Retraction Approximate)
Default: false

Whether to approximate the linear pick retraction sub-motion.

place_approach_distance
number (Place Approach Distance)
Default: 0.05

Linear retraction towards the box place position [m].

place_approach_angle_xy
number (Place Approach Angle Xy)
Default: 0.7853981633974483

Angle in the xy-plane for the place approch [rad].

place_approach_speed
number (Place Approach Speed)
Default: 1

Relative speed for the place approach sub-motion.

place_retraction_distance
number (Place Retraction Distance)
Default: 0

Upwards retraction after placing the box [m].

place_retraction_speed
number (Place Retraction Speed)
Default: 1

Relative speed for the place retraction sub-motion.

place_retraction_approximate
boolean (Place Retraction Approximate)
Default: false

Whether to approximate the linear place retraction sub-motion.

Responses

Request samples

Content type
application/json
{
  • "double_pick": false,
  • "rotate_for_single_pick": false,
  • "speed_with_pick": 1,
  • "clamp_prepick_height": 0,
  • "clamp_push_distance": 0,
  • "clamp_prepush_distance": 0,
  • "pick_offset_x": 0,
  • "pick_offset_y": 0,
  • "pick_offset": 0,
  • "pick_offset_a": 0,
  • "pick_offset_b": 0,
  • "pick_offset_c": 0,
  • "place_offset_x": 0,
  • "place_offset_y": 0,
  • "place_offset_left_y": 0,
  • "place_offset_right_y": 0,
  • "place_offset": 0,
  • "place_offset_a": 0,
  • "place_offset_b": 0,
  • "place_offset_c": 0,
  • "layer_distance": 0,
  • "wait_above_pick_distance": 0.1,
  • "pick_retraction_distance": 0.05,
  • "pick_retraction_speed": 1,
  • "pick_retraction_approximate": false,
  • "place_approach_distance": 0.05,
  • "place_approach_angle_xy": 0.7853981633974483,
  • "place_approach_speed": 1,
  • "place_retraction_distance": 0,
  • "place_retraction_speed": 1,
  • "place_retraction_approximate": false
}

Response samples

Content type
application/json
null

Activate Setup

Sets the given setup as the active one. Then, setup/reload needs to be called on the websocket before running a setup.

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
null

Rename Setup

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
name
required
string (Name)

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
null

Duplicate Setup

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
null

Delete Setup

Delete the given setup from the database.

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
null

Get Export Trajectories

path Parameters
setup_id
required
any (Setup Id)

Responses

Response samples

Content type
application/json
null

Post Plan Setup

Plans all motions for the given setup. This needs to be done before activating a newly created setup, or after changing the setup data. As this might take a while, the /progress endpoint provides data about the current progress of the calculation.

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
Array of Boxes To Overwrite (objects) or Boxes To Overwrite (null) (Boxes To Overwrite)
return_on_first_error
boolean (Return On First Error)
Default: false

Responses

Request samples

Content type
application/json
{
  • "boxes_to_overwrite": [
    ],
  • "return_on_first_error": false
}

Response samples

Content type
application/json
{
  • "errors": [ ]
}

Abort Planning

Aborts the computation of the motions for the given setup.

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
null

Get Planning Progress

Provide progress data about the calculation of the given setup.

path Parameters
setup_id
required
integer (Setup Id)
header Parameters
authorization
required
string (Authorization)

Responses

Response samples

Content type
application/json
{
  • "is_calculating": true,
  • "done": 0,
  • "total": 0
}

Projects

Post Layer Order Map

path Parameters
project_id
required
string (Project Id)
header Parameters
authorization
required
string (Authorization)
Request Body schema: application/json
required
double_pick
boolean (Double Pick)
Default: false

Whether there might be double picks of two boxes simultaneously.

rotate_for_single_pick
boolean (Rotate For Single Pick)
Default: false

Rotate the gripper around 90 deg for single picks only. Might reduce the overhang of the gripper.

speed_with_pick
number (Speed With Pick)
Default: 1

Relative speed for motions with a picked item.

clamp_prepick_height
number (Clamp Prepick Height)
Default: 0

[m]

clamp_push_distance
number (Clamp Push Distance)
Default: 0

[m]

clamp_prepush_distance
number (Clamp Prepush Distance)
Default: 0

[m]

pick_offset_x
number (Pick Offset X)
Default: 0

x-offset of the pick pose [m].

pick_offset_y
number (Pick Offset Y)
Default: 0

y-offset of the pick pose [m].

pick_offset
number (Pick Offset)
Default: 0

z-offset of the pick pose [m].

pick_offset_a
number (Pick Offset A)
Default: 0

Rotation offset around x-axis of the pick pose [rad].

pick_offset_b
number (Pick Offset B)
Default: 0

Rotation offset around y-axis of the pick pose [rad].

pick_offset_c
number (Pick Offset C)
Default: 0

Rotation offset around z-axis of the pick pose [rad].

place_offset_x
number (Place Offset X)
Default: 0

x-offset of the place pose [m].

place_offset_y
number (Place Offset Y)
Default: 0

y-offset of the place pose [m].

place_offset_left_y
number (Place Offset Left Y)
Default: 0

y-offset of the place pose for the left pallet [m].

place_offset_right_y
number (Place Offset Right Y)
Default: 0

y-offset of the place pose for the right pallet [m].

place_offset
number (Place Offset)
Default: 0

z-offset of the place pose [m].

place_offset_a
number (Place Offset A)
Default: 0

Rotation offset around x-axis of the place pose [rad].

place_offset_b
number (Place Offset B)
Default: 0

Rotation offset around y-axis of the place pose [rad].

place_offset_c
number (Place Offset C)
Default: 0

Rotation offset around z-axis of the place pose [rad].

layer_distance
number (Layer Distance)
Default: 0

Distance between layers [m].

wait_above_pick_distance
number (Wait Above Pick Distance)
Default: 0.1

Distance between the wait position and the top of the box [m].

pick_retraction_distance
number (Pick Retraction Distance)
Default: 0.05

Upwards retraction after picking the box [m].

pick_retraction_speed
number (Pick Retraction Speed)
Default: 1

Relative speed for the pick retraction sub-motion.

pick_retraction_approximate
boolean (Pick Retraction Approximate)
Default: false

Whether to approximate the linear pick retraction sub-motion.

place_approach_distance
number (Place Approach Distance)
Default: 0.05

Linear retraction towards the box place position [m].

place_approach_angle_xy
number (Place Approach Angle Xy)
Default: 0.7853981633974483

Angle in the xy-plane for the place approch [rad].

place_approach_speed
number (Place Approach Speed)
Default: 1

Relative speed for the place approach sub-motion.

place_retraction_distance
number (Place Retraction Distance)
Default: 0

Upwards retraction after placing the box [m].

place_retraction_speed
number (Place Retraction Speed)
Default: 1

Relative speed for the place retraction sub-motion.

place_retraction_approximate
boolean (Place Retraction Approximate)
Default: false

Whether to approximate the linear place retraction sub-motion.

required
object (BoxData)

Information about the box to palletize.

required
object (PalletData)

Information about the pallet including all layers and box positions.

Responses

Request samples

Content type
application/json
{
  • "double_pick": false,
  • "rotate_for_single_pick": false,
  • "speed_with_pick": 1,
  • "clamp_prepick_height": 0,
  • "clamp_push_distance": 0,
  • "clamp_prepush_distance": 0,
  • "pick_offset_x": 0,
  • "pick_offset_y": 0,
  • "pick_offset": 0,
  • "pick_offset_a": 0,
  • "pick_offset_b": 0,
  • "pick_offset_c": 0,
  • "place_offset_x": 0,
  • "place_offset_y": 0,
  • "place_offset_left_y": 0,
  • "place_offset_right_y": 0,
  • "place_offset": 0,
  • "place_offset_a": 0,
  • "place_offset_b": 0,
  • "place_offset_c": 0,
  • "layer_distance": 0,
  • "wait_above_pick_distance": 0.1,
  • "pick_retraction_distance": 0.05,
  • "pick_retraction_speed": 1,
  • "pick_retraction_approximate": false,
  • "place_approach_distance": 0.05,
  • "place_approach_angle_xy": 0.7853981633974483,
  • "place_approach_speed": 1,
  • "place_retraction_distance": 0,
  • "place_retraction_speed": 1,
  • "place_retraction_approximate": false,
  • "box": {
    },
  • "pallet": {
    }
}

Response samples

Content type
application/json
{
  • "property1": {
    },
  • "property2": {
    }
}