A lightweight Python integration for the PickMaster Twin/Lite External Sensor interface. It connects to a TCP-based position sensor, parses acquisition and object data from the incoming text stream, and forwards valid positions to PMTW for robot pick-and-place coordination.
Author: F. LOBERT, ABB
Status: Working
License: MIT
This project is provided as-is with no formal support. Issues and pull requests are welcome for bug fixes and improvements.
- TCP client connection to an external sensor server
- Acquisition trigger and object parsing for PMTW-compatible position messages
- Configurable sensor IP, port, and logger settings
- Safe bounded logging with automatic rotation at 50 MB
- Single-sensor runtime model aligned with the ABB interface contract
- Release package includes the MIT license and a link to this repository for source code and documentation
Known limitation: Only 2D sensors are supported (
X,Y,RZ).Z,RX, andRYare always sent to PMTW as0.0, even though the underlying PMTW external sensor interface supports full 3D poses. See Known limitation: 2D-only positions for details and guidance if you need to add 3D support.
- Copy
scripts\ExternalSensorTCP.py,scripts\ExternalSensorInterface.py,scripts\SensorFunctions.py,scripts\SensorLogger.py, andscripts\SensorUI.pyinto the PickMaster scripts folder%PROGRAMDATA%\ABB\PickMaster\PMScripts\. - In PickMaster, add an External Sensor and enter
ExternalSensorTCP.pyas the script name. - Configure the sensor's TCP IP/port and (optionally) logging.
See the documentation for full setup, configuration, protocol, and troubleshooting details.
Example configurations and integration guides for common sensor types:
example/cognex/— Cognex job fileexample/keyence/— Keyence programs (calibration and ShapeTrax3A)
We welcome improvements, bug reports, and feature requests.
- Open an issue before starting major work if you want to discuss a change or feature.
- Create a dedicated branch for your fix or feature
- Keep changes focused and update the documentation when behavior changes.
- Bump
versioninscripts\ExternalSensorTCP.pyand updateCHANGELOG.mdonly when the delivered script package changes. README, documentation, CI, or repository-only changes do not need a new version. - Open a pull request with a short summary, motivation, and validation notes.
Direct pushes to main are not allowed. Every change must go through a pull request whose CI checks (lint, tests, version format) pass before merging.
Please do not open a pull request without a related issue or a clear change description.
This project is licensed under the MIT License. See LICENSE for details.