Interface Communication Command Specification

  1. Before sending the photo capture point for a specific camera ID, the corresponding camera with that ID must be triggered to take a photo first.

  2. For "eye-on-hand" setups, in addition to Note 1, the communication sequence must be: trigger the photo capture, then send the photo capture point, and finally perform detection.

  3. For multi-camera "eye-on-hand" setups, in addition to Note 1, the communication sequence must be: trigger photo capture for camera ID1, send the photo capture point for camera ID1, then trigger photo capture for camera ID2, send the photo capture point for camera ID2, and finally perform detection. (ID1 and ID2 do not imply that camera 0 must capture first; the order can be adjusted based on on-site requirements.)

Port 5700

Automation Communication Protocol - Epic Pro acts as the server (Port 5700).

interface instructions

Single Commands

Action

Command

Response

Capture Photo

110,cameraID

110,cameraID1,cameraID2…​

(If only 110 is provided, the first camera is used by default)

Success: 110,cameraID

Failure: 000,errorCode,cameraID

Detection

Normal Detection: 120,requestedPoseCount,0

Grab Path Planning Only: 120,grabPathCount,0

With Retreat Path Planning: 120,grabPathCount,retreatPathCount

Success: CommandCode=120

Case 1 (Normal Detection/Collision Detection): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

Case 2 (Path Planning): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

The interface point cloud updates; for collision detection or path planning, the robot state also changes.

Path planning does not allow the number of requested path points to exceed the number of path points set for each segment. If exceeded, the software will return 000,3005 (the number of requested path points does not meet the requirements); Only algorithm detection/collision detection allows the number of requested grasp points to exceed the actual number of recognized grasp points.

Failure: 000,Robot Status Code

Switch Object in Space

130,spaceID,objectID

Success: 130

Failure: 000,Robot Status Code

Robot Photo Pose (Eye-on-Hand)

140,cameraID,X,Y,Z,orientation

(Quaternion parsed in the order W,X,Y,Z)

Success: 140,cameraID

Failure: 000,Robot Status Code

Restart Vision Software

307

Command Received: 307

Shut Down Industrial PC

886

Command Received: 886

Shortcut Commands

Action

Command

Response

Capture Photo + Detection

Normal Detection: 220,grabPointCount,0

Grab Path Planning Only: 220,grabPathCount,0

With Retreat Path Planning: 220,grabPathCount,retreatPathCount

Success: CommandCode=220

Case 1 (Normal Detection/Collision Detection): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

Case 2 (Path Planning): commandCode,pose.ConcurrentType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

The interface point cloud updates; for collision detection or path planning, the robot state also changes.

Failure: 000,Robot Status Code

Capture Photo + Robot Photo Pose

240,cameraID,X,Y,Z,orientation

Success: 240,cameraID

Failure: 000,Robot Status Code

Capture Photo + Robot Photo Pose + Detection

Normal Detection: 250,cameraID,X,Y,Z,orientation,grabPointCount,0

Grab Path Planning Only: 250,cameraID,X,Y,Z,orientation,grabPathCount,0

With Retreat Path Planning: 250,cameraID,X,Y,Z,orientation,grabPathCount,retreatPathCount

Success: CommandCode=250

Case 1 (Normal Detection/Collision Detection): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

Case 2 (Path Planning): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

The interface point cloud updates; for collision detection or path planning, the robot state also changes.

Failure: 000,Robot Status Code

Switch Object in Space + Capture Photo

310,spaceID,objectID,cameraID1,cameraID2…​

(If no cameraID is provided, the first camera is used by default)

Success: 310,cameraID

Failure: 000,Robot Status Code

Switch Object in Space + Capture Photo + Detection

Normal Detection: 320,spaceID,objectID,cameraID1,cameraID2…​,grabPointCount,0

Grab Path Planning Only: 320,spaceID,objectID,cameraID1,cameraID2…​,grabPathCount,0

With Retreat Path Planning: 320,spaceID,objectID,cameraID1,cameraID2…​,grabPathCount,retreatPathCount

(If no cameraID is provided, the first camera is used by default)

Success: CommandCode=320

Case 1 (Normal Detection/Collision Detection): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

Case 2 (Path Planning): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

The interface point cloud updates; for collision detection or path planning, the robot state also changes.

Failure: 000,Robot Status Code

Switch Object in Space + Capture Photo + Robot Photo Pose

340,spaceID,objectID,cameraID,X,Y,Z,orientation

Success: 340,cameraID

Failure: 000,Robot Status Code

Switch Object in Space + Capture Photo + Robot Photo Pose + Detection

Normal Detection: 350,spaceID,objectID,cameraID,X,Y,Z,orientation,grabPointCount,0

Grab Path Planning Only: 350,spaceID,objectID,cameraID,X,Y,Z,orientation,grabPathCount,0

With Retreat Path Planning: 350,spaceID,objectID,cameraID,X,Y,Z,orientation,grabPathCount,retreatPathCount

Success: CommandCode=350

Case 1 (Normal Detection/Collision Detection): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

Case 2 (Path Planning): commandCode,poseType(Cartesian 0/Joint 1),sentPoseCount(n),objectWithGrabCount,totalGrabPointCount,currentSpaceID,currentObjectID,currentGrabPointIndex(index of current grab point in all grab points list),currentGrabPointSeq(sequence number in grab point editing tool),reservedProStatus(0 if not available),0,0,pose*n

The interface point cloud updates; for collision detection or path planning, the robot state also changes.

Failure: 000,Robot Status Code

Combined Commands

Basic Principles:

  1. Combine individual instructions with each other, separated by a semicolon (;)

  2. For eye-in-hand, ensure that the camera ID for taking photos is consistent with the camera ID for sending the photo point pose, and trigger the camera with the corresponding ID to take a photo before sending the photo point.

  3. Instruction sequence:

    Instruction Sequence

    Example Instruction

    Eye-out-hand: Switch space object → Take photo → Detect

    130,0,0;110,0;120,1,0

    Eye-in-hand: Switch space object → Take photo → Current camera photo point → Detect

    130,0,0;110,0;140,0,0,0,0,0,0,0;120,1,0

    Stitching eye-in-hand: Switch space object → Camera 0 take photo → Camera 1 take photo → Detect

    130,0,0;110,0;110,1;120,1,0

    Stitching eye-out-hand: Switch space object → Camera 0 take photo → Current camera 0 photo point → Camera 1 take photo → Current camera 1 photo point → Detect

    130,0,0;110,0;140,0,0,0,0,0,0,0;110,1;140,1,0,0,0,0,0,0;120,1,0

Simple Examples:

Action

Command

Response

Capture Photo + Detection

110,cameraID1,cameraID2…​;120,1,0 or 110;120,1,0

(If no cameraID is provided, the first camera is used by default)

Refer to the response details in the tables above

Capture Photo + Robot Photo Pose

110,cameraID;140,cameraID,X,Y,Z,orientation

Refer to the response details in the tables above

Capture Photo + Robot Photo Pose + Detection

110,cameraID;140,cameraID,X,Y,Z,orientation;120,1,0

Refer to the response details in the tables above

Return Status Codes

All commands must pass through HOOK for return values, and all have responses.

Success Status Codes

Status Code

Description

Remarks

2001

Configuration Switch Successful

2002

Camera Switch Successful

2003

Robot Photo Pose Set Successfully

2004

Photo Capture Successful

2005

Detection Successful

Includes normal detection and collision detection success

2006

Path Planning Successful

Error Status Codes

Status Code

Description

Remarks

3001

Current Operation in Progress, Please Try Again Later

Cannot perform other operations while exiting a plan or in a waiting state

3002

Command Parsing Failed, Please Check Format

3003

Incorrect Number of Requested Parameters

3004

Invalid Photo Pose Format

3005

Requested Path Point Count Does Not Meet Requirements

3006

Requested Grab Point Count Does Not Meet Requirements

3007

Failed to Switch Grab Space

3008

Failed to Switch Grab Configuration

3009

Failed to Switch Camera

3010

Failed to Set Camera Parameters

3011

Current Robot Photo Pose Not Received

3012

No Photo Data Available When Setting Camera Photo Pose

3013

Failed to Set Current Robot Photo Pose

3014

Last Robot Photo Pose Not Sent, Please Recapture and Send Corresponding Pose

3015

Photo Capture Failed

3016

Missing Detection Input Data

Missing data before requesting ATOM: hand-eye calibration result or eye-on-hand photo point data

3017

Failed to Set ATOM Parameters

Includes runtime parameters and mapping parameters

3018

ATOM Detection Exception

Error or exception in ATOM execution (null result or caught exception)

3019

Detection Exception

120 command exception (excluding ATOM exceptions)

3020

No Detection Result

No target detected:

1. ATOM detection result is empty

2. ATOM result is non-empty but all points collide

3. ATOM result is non-empty but no grab points planned

3021

No Available Grab Points

Grab results exist, but all points have been grabbed, prompting "No available grab points" on subsequent requests

3022

Epic Pro Exception

Communication and hooks executed but unhandled hook exception

Port 5800

Real-Time Robot Data Acquisition (Default Port 5800)

// Note: SN naming convention updated to VendorName-ModelName-RobotName
// VendorName follows the same naming convention as the motion_plan module
// RobotName can be 001, 002, 003, etc.

// Send Cartesian Space Pose
{"SN":"Abb-001","C":"[269.91,3.84,910.26,0.0353839,0.705059,0.0673907]"}
// Send Joint Angles
{"SN":"Abb-001","J":"[2.03,-48.87,50.83,-0.06,85.19,0.91]"}