Quickly create applications that communicate with your Yaskawa robots
Project description
Yaskawa Communication SDK for Python
๐ค Effortlessly Communicate with Yaskawa Motoman Robots
The Yaskawa SDK for Python enables seamless integration with Yaskawa Motoman robots for automation, data exchange, and remote control through the High-Speed Ethernet Server (HSES) protocol.
Whether you're building a custom application, integrating with a MES/SCADA system, or performing advanced diagnostics, this SDK provides the tools you need.
๐ More Information: https://underautomation.com/yaskawa
๐ Also available in ๐ฆ .NET and ๐จ LabVIEW
โญ Star this repo if it's useful to you!
๐๏ธ Watch for updates
๐ TL;DR
- ๐ก High-Speed Ethernet Server - real-time UDP communication
- ๐ค Move robot in Cartesian or joint space
- ๐ Read robot status - mode, servo, alarms, hold state
- ๐ Alarm management - read active alarms, reset
- โก I/O control - read/write general, external, network I/O
- ๐พ Variable access - registers, bytes, integers, reals, strings, positions
- ๐ง Job control - select, start, monitor executing jobs
- ๐ File management - list, upload, download, delete files
- โ๏ธ Pendant display - send messages to the teach pendant
- โฑ๏ธ Management time - operating time, servo time, playback time
- ๐ง System information - software version, configuration, parameters
No custom robot options or additional hardware required. The SDK uses the standard HSES protocol available on Yaskawa controllers.
๐ Installation & Getting Started
Prerequisites
- Python 3.7 or higher
- A Yaskawa Motoman robot (DX200, YRC1000, YRC1000 Micro)
Step 1 - Create a Virtual Environment
We recommend using a virtual environment to keep your project dependencies isolated.
# Create a project folder
mkdir my-yaskawa-project
cd my-yaskawa-project
# Create a virtual environment
python -m venv venv
# Activate it
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
You should see (venv) in your terminal prompt, indicating the virtual environment is active.
Step 2 - Install the SDK
The SDK is published on PyPI. Install it with a single command:
pip install UnderAutomation.Yaskawa
That's it! All dependencies (including pythonnet) are installed automatically.
On Linux, you should also install .NET Core and set environment variable PYTHONNET_RUNTIME to coreclr:
sudo apt-get install -y dotnet-runtime-8.0
PYTHONNET_RUNTIME=coreclr
Alternative: install from source
git clone https://github.com/underautomation/Yaskawa.py.git cd Yaskawa.py pip install -e .
Step 3 - Connect to Your Robot
Create a Python file (e.g. main.py) and write:
from underautomation.yaskawa.yaskawa_robot import YaskawaRobot
from underautomation.yaskawa.connect_parameters import ConnectParameters
from underautomation.yaskawa.high_speed_e_server.alarm_reset_type import AlarmResetType
# Create a robot instance
robot = YaskawaRobot()
# Connect (replace with your robot's IP address)
params = ConnectParameters("192.168.0.1")
params.ping_before_connect = True
# Connect to the robot
# If you get a license exception, ask a trial license here: https://underautomation.com/license
# and call YaskawaRobot.register_license(...) before connecting
robot.connect(params)
if robot.high_speed_e_server.connected:
print("Connected!")
# Get robot status
status = robot.high_speed_e_server.get_status_information()
print(f" Servo ON : {status.servo_on}")
print(f" Running : {status.running}")
print(f" Mode : {'Teach' if status.teach else 'Play'}")
print(f" Alarming : {status.alarming}")
# Get current Cartesian position
pos = robot.high_speed_e_server.get_robot_cartesian_position()
print(f"\nCartesian Position:")
print(f" X={pos.x:.3f} Y={pos.y:.3f} Z={pos.z:.3f}")
print(f" Rx={pos.rx:.3f} Ry={pos.ry:.3f} Rz={pos.rz:.3f}")
# Get current joint position
joint = robot.high_speed_e_server.get_robot_joint_position()
print(f"\nJoint Position: {joint.axes}")
# Read registers
reg = robot.high_speed_e_server.read_register(0, count=5)
print(f"\nRegisters: {reg.values}")
# Write registers
robot.high_speed_e_server.write_register(0, [100, 200])
# Reset alarms
robot.high_speed_e_server.alarm_reset(AlarmResetType.Reset)
# Don't forget to disconnect
robot.disconnect()
Run it:
python main.py
๐ Licensing
The SDK works out of the box for 30 days (trial period) - no registration needed.
After the trial, you can:
- Buy a license at underautomation.com/order
- Get a new trial period immediately by email at underautomation.com/license
To register a license in code:
from underautomation.yaskawa.yaskawa_robot import YaskawaRobot
license_info = YaskawaRobot.register_license("your-licensee", "your-license-key")
print(license_info)
๐ Examples
The repository includes a complete set of ready-to-run examples in the examples/ folder, organized by category.
How the Examples Work
| File | Role |
|---|---|
examples/launcher.py |
Interactive menu - browse and run any example from a single launcher |
examples/__init__.py |
Shared helpers - sets up the Python path, manages robot connection settings, and handles license registration |
examples/robot_config.json |
Saved settings (git-ignored) - remembers your robot IP and license key so you don't have to re-enter them every time |
Run any example directly:
The first time you run an example, it will ask for your robot IP. This is saved in
robot_config.jsonso you only enter it once.
# Run any example directly
python examples/high_speed_e_server/hses_get_status.py
Or browse examples with the launcher:
Use the launcher to easily browse and run any example without needing to open each file.
# Launch the interactive menu
python examples/launcher.py
๐ก High Speed Ethernet Server Examples
| Example | Description |
|---|---|
hses_get_status.py |
Read robot status: mode, servo, alarms, hold state |
hses_get_cartesian_position.py |
Read current TCP position (X, Y, Z, Rx, Ry, Rz) |
hses_get_joint_position.py |
Read current joint position (pulse values) |
hses_read_alarms.py |
Read active alarms with code, type, and message |
hses_alarm_reset.py |
Reset alarms (standard or error reset) |
hses_get_executing_job.py |
Get currently executing job name, line, and speed |
hses_select_start_job.py |
Select a job by name and start it |
hses_read_write_registers.py |
Read and write numeric registers |
hses_read_write_integers.py |
Read and write integer variables |
hses_read_write_reals.py |
Read and write real (float) variables |
hses_read_write_bytes.py |
Read and write byte variables |
hses_read_write_strings.py |
Read and write string variables (16 & 32 bytes) |
hses_read_write_io.py |
Read and write I/O signals (general, external, network) |
hses_read_position_variables.py |
Read position variables from the controller |
hses_move_cartesian.py |
Move robot to a Cartesian position |
hses_move_joints.py |
Move robot by specifying joint pulse values |
hses_servo_command.py |
Send servo ON/OFF commands |
hses_display_message.py |
Display a message on the teach pendant |
hses_get_system_info.py |
Read system information (software version, name) |
hses_position_error_torque.py |
Read position error and torque for each axis |
hses_get_management_time.py |
Read management time (operating, servo, playback) |
hses_file_operations.py |
List, download, upload, and delete files |
hses_get_configuration.py |
Read axis configuration information |
๐ License Examples
| Example | Description |
|---|---|
license_info_example.py |
Display license state and details, handle registration |
๐ง Robot Configuration
Some features require specific controller settings.
โ Enable Remote Control
- Go to
IN/OUT > PSEUDO INPUT SIGNAL - Set
#82015 CMD REMOTE SELviaINTERLOCK + SELECT
โ Key Position for Commands
- Use physical pendant key in remote position
- Optional Ladder setup: copy
#80011to#40042
โ Job Select
- Go to
SETUP > FUNCTION ENABLE - Set
JOB SELECT WHEN REMOTE AND PLAYtoPERMIT
โ File Overwrite Permissions
- Go to
PARAMETER > RS - Set
RS029 = 1,RS214 = 1
๐ Compatibility
| Supported | |
|---|---|
| Robot Controllers | DX200, YRC1000, YRC1000 Micro |
| OS | Windows, Linux, macOS |
| Python | 3.7+ |
| Dependency | pythonnet 3.0.5 (installed automatically) |
๐ข Contributing
We welcome your feedback and contributions!
- Report issues via GitHub Issues
- Submit pull requests with enhancements
- Suggest features and improvements
๐ License
โ ๏ธ This SDK requires a commercial license.
- ๐ 30-day free trial included out of the box
- ๐ Get a new trial immediately at underautomation.com/license
- ๐ Buy a license at underautomation.com/yaskawa
- ๐ EULA: underautomation.com/yaskawa/eula
๐ฌ Need Help?
- ๐ Documentation: underautomation.com/yaskawa/documentation
- ๐ Python Get Started Guide: underautomation.com/yaskawa/documentation/get-started-python
- ๐ฆ PyPI Package: pypi.org/project/UnderAutomation.Yaskawa
- ๐ฉ Contact Us: underautomation.com/contact
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file underautomation_yaskawa-2.0.0.0.tar.gz.
File metadata
- Download URL: underautomation_yaskawa-2.0.0.0.tar.gz
- Upload date:
- Size: 71.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab5462adaec95d419dc998de8394013971c050822b356862fce76750569debc6
|
|
| MD5 |
cb4ace956390dec62df6d6e5c49efead
|
|
| BLAKE2b-256 |
88f7003b08fd2f5fd0dacf2e5682ef483dfd1dcaded0ea44da2b1dd07b4c3da9
|
File details
Details for the file underautomation_yaskawa-2.0.0.0-py3-none-any.whl.
File metadata
- Download URL: underautomation_yaskawa-2.0.0.0-py3-none-any.whl
- Upload date:
- Size: 105.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
513ff59f8bd589c36ca275368a78b383ccd28c2c508f3ed1e9c90c77d0ec2564
|
|
| MD5 |
5dd33e583dba5133295c89b36326c498
|
|
| BLAKE2b-256 |
8f3081997ade9dfdc2abcfb67453aec998516e969c85d07c20f822e159f59656
|