Integration Guide Estun LS 1.5

Integration guide for Estun Robots with Locator Studio version LS 1.5.

1. Robot Controller Setup

1.1 Initial Setup and Configuration

For detailed information about the Estun robot controller, please refer to the official Estun robot controller documentation. Below is robot controller ERC3-C1 used in this manual:

Figure 1
Figure 2

1.2 Network Configuration

There are multiple Ethernet ports to choose from on Estun Robot Controller. For user TCP/IP socket connections, Ethernet 2 and Ethernet 3 are reserved. It is up to the user which port is selected for communication, in this tutorial we will use Ethernet 3 for communication with Photoneo Vision Controller.

In order to change IP config, click Home → Advanced Set → Network.

Figure 3

Type IP address and Subnet Mask for Robot Controller. As a gateway you can use Vision Controller IP. Configuration used in this manual is 192.168.1.2 and 255.255.255.0.

Figure 4

Click the Save button to confirm the changes.

Note

Subnet Mask 255.255.255.0 equals 24 bit subnet mask representation. See this table for more combinations: https://dnsmadeeasy.com/support/subnet

An example of matching Network configuration on Vision Controller side

  • Vision Controller IPv4 Address: 192.168.1.1 / 24

  • Robot Controller IPv4 Address: 192.168.1.2 / 24 (as configured in the previous step)

Figure 5

You can also use Test Connection button on Photoneo Vision Controller Network page to ping Estun Robot Controller from Photoneo Vision Controller

Figure 6

Based on the result of Test Connection (ping command) you will get a Robot Available or Robot Unavailable message pop up. If the robot is unavailable, double check cabling and network configuration.

Figure 7

1.3 Second Network interface for PC and Estun Editor connection (optional)

It is recommended to configure another (in our case Ethernet 2 port) for remote access using the Estun Editor application on a PC. To prevent network conflicts, assign this interface a static IP address on a different subnet than the one used for connection to Photoneo Vision Controller.

For example, a valid configuration for this Port would be:

  • IP Address: 192.168.100.2

  • Subnet Mask: 255.255.255.0

Figure 8

Example IPv4 configuration of PC running Estun Editor: 192.168.100.1 / 255.255.255.0

If connection to Estun robot fails, or there is no Controller data structure visible after connection, close Editor and start it over with Run As Administrator options. This structure should be visible in Editor:

Figure 9

1.4 Tool TCP Setup

For Locator Studio, tool setup is more important than for Bin Picking Studio which is designed to operate with a zeroed tool and compensate for tool offset programmatically. General rule of thumb for Locator Studio is that all scanning and calibration must be done in zeroed tool frame, while all picking must be performed with a real tool - for the purpose of this tutorial we will be using a tool named “toolPhotoneo” with Z offset Z = 110mm.

Tool configuration on Estun robots is available under Menu → Data → Global → Tool

Figure 10

In order to change tool configuration, use the SetTool command in combination with the Tool variable - example - SetTool(Tool0). Change tool configuration whenever it is necessary to force use of the proper tool frame. For example for scan and calibration requests, we always need a “zeroed tool” but when picking based on the result of Get Object Pose, “a real” tool needs to be selected.

1.5 Importing Locator Studio Module

The default method to import Photoneo Estun LS module on Robot is via USB Flash Drive.

To perform a USB file transfer first copy the ESTUN_LS_1_5_0.er folder onto your USB drive. On Estun pendant, navigate to the Project menu, scroll down the sidebar, and select the Loader button to open the file transfer window.

Figure 11

Locate the ESTUN_LS_1_5_0.er folder on the USB drive and click the Transfer button to initiate the copy process. All files within the LS folder will then be transferred to the Estun robot system.

Figure 12

If there are no errors, it should be possible to load the ESTUN_LS_1_5_0 project directly.

Figure 13

Once loaded, the project’s status in the Project List will clearly display as “loaded”. For execution, you can select the program to be run while in Playback mode and then click “PC” to ensure it starts from the first line. Alternatively, a program configured with the “self-start” function will automatically load when the remote mode is enabled by the user.

Figure 14

After importing is completed, it is possible to sync the Estun Editor with the robot controller as editing of programs can be done on the PC side. Just be aware that as of April 2026 there are certain limitations on Editor side and not all commands can be properly added or modified on Editor side. If struggling just comment the line of code and recreate it on the pendant side.

Figure 15

2. Robot Module

Note

It is strongly recommended to read the Photoneo robotic API prior to this section. (user login: customer, password: Ready2LearnHow2Pick).

2.1 Connection to Photoneo Vision Controller

Note

Establishment of connection to the Action Request Server running on the Vision Controller side happens at the beginning of each Main Program. Three global constants are important in this step:

  • PHOTONEO_IP - IP address of port on vision controller side

  • PHOTONEO_PORT - Port number used by Action Server (by default 11003)

  • ESTUN_ID - STRING robot identificator [DO NOT CHANGE]

Figure 16

Change PHOTONEO_IP in project STRING variables to match the IP address of the Vision Controller you’re connecting to, in case of this tutorial it is 192.168.1.1.

Figure 17

Requests can be sent to the Vision Controller only after a connection has been established. Successful connection is visualized by green Connected indicators on Deployment page after program on Estun side is started, see image below

Figure 18

2.2 Request List

This section describes available API calls provided by the Robot module. These procedures are intended for high-level control of the locator application.

Note

These procedures are defined in the communication backend and must not be edited!

Request

ID

Program Name

Input

Populates

Calibration Start

25

StartCalibRequest

INT p.SOL_ID, INT p.VS_ID

INT p.ERROR_DATA

Calibration Add Point

5

CalibAddPointRequest

CPOS p.CurrentFlangePos (auto-read at call time)

INT p.ERROR_DATA

Calibration Save

27

SaveCalibRequest

None

INT p.ERROR_DATA, INT p.CALIB_ACCURACY

Calibration Stop

26

StopCalibRequest

None

INT p.ERROR_DATA

Scan Regular

19

ScanRequest

INT p.VS_ID, BOOL p.HAND_EYE_ENABLE (optional pose if enabled)

INT p.ERROR_DATA

Capture (Meshing Static)

30

CaptureRequest

INT p.VS_ID (pose auto-read at call time)

INT p.ERROR_DATA

Reuse Scan

31

ReuseScanRequest

INT p.VS_ID

INT p.ERROR_DATA

Get Objects

20

GetObjectsRequest

INT p.VS_ID, INT p.NUM_TAR_REQ

INT p.ERROR_DATA, APOS g.PHOTONEO_POSES[], INT p.INFO_DATA_ARR[1..5], REAL p.ROT_Z_AI_TARGET, INT p.NN_CLASSIFICATION

Get Vision System Status

22

GetStatusRequest

INT p.VS_ID

INT p.ERROR_DATA, INT p.INFO_DATA_ARR[1] (num localized), INT p.INFO_DATA_ARR[2] (num pickable), INT p.INFO_DATA_ARR[3] (VS status)

Change Solution

9

ChangeSolRequest

INT p.SOL_ID

INT p.ERROR_DATA

Start Solution

10

StartSolRequest

INT p.SOL_ID

INT p.ERROR_DATA

Stop Solution

11

StopSolRequest

None

INT p.ERROR_DATA

Get Running Solution

12

GetRunningSolRequest

None

INT p.ERROR_DATA, INT p.RUNNING_SOL

2.3 Example Programs

There are several template programs available in Photoneo Estun module that demonstrate how to properly use requests listed in section 2.2 for various use cases:

Estun Program

Description

PhoMainBasic

Standard localization example - demonstrates the basic pick-and-place workflow. The program: 1. Moves to the scanning pose (p.SCAN) 2. Establishes a TCP/IP socket connection to the Vision Controller using ESTUN_ID for identification 3. Calls ScanRequest to trigger localization (p.VS_ID = 1) 4. Calls GetObjectsRequest to retrieve up to p.NUM_TAR_REQ object poses 5. Executes picks by iterating over g.PHOTONEO_POSES[] using MovL/MovLOffsetC 6. Loops back to scan: label after each pick cycle

Error handling: scan and get_objects errors are checked after each CALL; on error SetRtToErr is raised and execution jumps to prog_end: where the socket is closed.

PhoCalibration

Calibration example - demonstrates automated hand-eye calibration. Requirements: calibration must be enabled in the Locator Studio Vision System settings. Calibration Steps:

  • Teach 9 calibration poses (CALIB_POSE_1 to CALIB_POSE_9) stored in PhoCalibration.erd

  • The robot moves to each pose with MOVJ and calls CalibAddPointRequest

Calibration Accuracy:

  • The general rule is that the Calibration Error should remain below 3 mm.

  • Higher errors typically indicate a systematic issue in the calibration setup.

Automatic Recalibration (Optional):

  • Once the first calibration is successful and automatic recalibration is enabled in the Vision System settings:

  • Uncomment StartCalibRequest / SaveCalibRequest / StopCalibRequest calls at the beginning and end of the program to toggle between manual and automatic calibration

  • Important: The calibration object must remain in its original position to ensure successful automatic recalibration.

PhoMainMultiVS

Multiple Vision Systems example - same as PhoMainBasic but alternating between two Vision Sys.

  • The p.VS_ID variable determines which VS will be activated and queried for object poses.

  • VS switching logic is located at the bottom of the main loop, after picks are completed:

  • The program then returns to scan: using the newly set VS_ID, making each pick cycle alternate between the two systems.

PhoMainChangeBBox

Bounding Box switching example - same workflow as PhoMainBasic but with bounding box selection.

  • After each pick cycle, the program alternates the active bounding box by toggling p.BBOX_ID between 1 and 2, then calls ChangeBBoxRequest to apply the new selection.

  • The bounding box switching logic is located at the bottom of the main loop after picks are completed.

Error handling for ChangeBBoxRequest is included - on failure SetRtToErr is raised and execution jumps to prog_end:.

PhoMainChangeSol

Solution switching example - same workflow as PhoMainBasic but with solution management. On startup, GetRunningSolRequest is called to determine the currently active solution ID (stored in p.RUNNING_SOL).

  • After each pick cycle, the program alternates the active solution by toggling p.SOL_ID between 1 and 2, then calls ChangeSolRequest to switch the active localization solution on the Vision Controller.

  • Highlights how to use ChangeSolRequest, GetRunningSolRequest and SOL_ID variable to manage solution switching.

  • Solution switching logic is located at the bottom of the main loop after picks are completed.

Error handling for ChangeSolRequest is included - on failure SetRtToErr is raised and execution jumps to prog_end:.

3. Runtime

Once the solution is fully configured on the Vision Controller side, it is time to finalize the remaining steps on the robot side and proceed to executing the PhoMainBasic program

3.1 Teach Positions

After opening PhoMainBasic or another template, there is usually a project SCAN pose and a couple of local poses that need to be touched up before running the program. Scan can be modified directly through Project Data → APOS →SCAN

Figure 19

Local Drop poses (DROP_UP or similar), those could be modified directly in program code using standard methods. The implementation of drop logic requires defining Approach point offsets directly in the code to specify a direction from which robot will approach the drop point.

Figure 20

3.2 Gripper commands

There are no gripper procedures located within Locator Studio implementation by default. This is left to the user to add to the existing code at appropriate places. An example of such a function is below:

Figure 21

Use whatever DIO commands that activate your gripper, whether they are simple 24 IO or fieldbus related commands. Add delays if needed between activating the signal and physically attaching part.

3.3 Calibration

There are 3 methods of calibration available in Locator Studio:

  • Sphere based calibration - for statically mounted sensors

  • Marker pattern based calibration - for carried or Hand Eye mounted sensors

  • Marker pattern based calibration - for static sensors and user/work object calibration

For the first two methods it is required to capture a calibration object from 9 poses with sufficient variance in tool pose data. It is always recommended to use zeroed tool and user frame as default frames, using non-zero frames may result in skewed calibration results.

The third method - Marker pattern based calibration requires only a single scan. The main difference with respect to the first two methods is that the origin of the scene is not identified with robot origin but it is located in Marker Pattern origin. The third calibration method cannot be automated and must be performed manually.

Calibration procedures can be completed without using a robot program by starting Calibration on the LS side, jogging the robot from point to point and manually adding points on the LS side (typing TCP values from pendant into calibration pop up window). In order to avoid typing values manually robot programs can be used. For the very first calibration, the process needs to be started on the LS side manually but points can be added using the PhoCalibration program. Teach all 9 calibration poses and then step through the program. PhoCalibration will connect to the Vision Controller and trigger scans in each calibration point. For fully automatic recalibration (after first calibration was performed manually and automatic recalibration was enabled on Vision System Calibration Tab) PhoCalibration offers the possibility to start/save/stop calibration directly from the robot program. Comment/Uncomment Calib Start / Calib Save / Calib Stop portions of the code to switch between semi and fully automatic calibration.

In general calibration error should be below 3mm. If error is higher, check the most common issues: wrong Tool Frame values, incorrect gripper model orientation, incorrect robot model selection, encoder zeroing, flimsy robot base etc.

3.4 Deployment Prerequisites Check

Final pre deployment check before running Locator Studio interface from the robot side

Make sure that:

  • Locator Studio solution is properly configured on the Vision Controller side

  • Network Setup on Robot Side is completed and state server works

  • All Vision Systems defined in solution are calibrated

  • All local poses in main program have been touched up properly

  • Gripper procedures are prepared and working

3.5 Running PhoMainBasic

Deploy your solution. The Action Request Client (Robot) status on the Deployment page should be DISCONNECTED – from the Action Request Server, if the communication hasn’t been established yet.

Figure 22

Note

It is strongly recommended to decrease the override speed to 5% before running the program for the first time.

Figure 23

If connection has been established properly you will see Action Request Client and Robot State Server status turn to CONNECTED. At this point the sensor should capture the first scan and localization should start localizing objects.

Figure 24

If there is a pickable object in the scene and the Cartesian Pose for this object has been received by the robot controller, the robot should start moving towards the first object.

Figure 25

If everything looks fine, keep moving the robot towards the first target and check if the path is correct. At this point if the robot is too far from the object or pushes the object too deep, then make modifications to object origin or tool TCP setup

Figure 26

If robot movement looks fine, set up your own placing routine and slowly ramp up speed back to 100%. Congratulations, you have successfully deployed Photoneo Estun Interface. You can now focus on improving your application further. Use CheatSheet and Program Templates as your guidelines.