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:
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.
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.
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)
You can also use Test Connection button on Photoneo Vision Controller Network page to ping Estun Robot Controller from Photoneo Vision Controller
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.
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
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:
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
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.
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.
If there are no errors, it should be possible to load the ESTUN_LS_1_5_0 project directly.
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.
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.
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]
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.
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
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 |
|---|---|
|
Standard localization example - demonstrates the basic pick-and-place workflow.
The program:
1. Moves to the scanning pose ( Error handling: scan and get_objects errors are checked after each CALL; on error |
|
Calibration example - demonstrates automated hand-eye calibration. Requirements: calibration must be enabled in the Locator Studio Vision System settings. Calibration Steps:
Calibration Accuracy:
Automatic Recalibration (Optional):
|
|
Multiple Vision Systems example - same as PhoMainBasic but alternating between two Vision Sys.
|
|
Bounding Box switching example - same workflow as PhoMainBasic but with bounding box selection.
Error handling for |
|
Solution switching example - same workflow as PhoMainBasic but with solution management.
On startup,
Error handling for |
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
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.
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:
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.
Note
It is strongly recommended to decrease the override speed to 5% before running the program for the first time.
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.
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.
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
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.