Skip to main content

Quickly create applications that communicate with your Yaskawa robots

Project description

Yaskawa Communication SDK for Python

UnderAutomation Yaskawa communication SDK

PyPI Python Platform License

๐Ÿค– 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)
    for i, val in enumerate(reg.value, start=0):
        print(f"  Register[{i}] = {val}")

    # 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:

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.json so 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_write_position_variables.py Read and write position variables (P variables)
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_file_operations.py List, download, upload, and delete files

๐Ÿ”‘ 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

  1. Go to IN/OUT > PSEUDO INPUT SIGNAL
  2. Set #82015 CMD REMOTE SEL via INTERLOCK + SELECT

โœ… Key Position for Commands

  • Use physical pendant key in remote position
  • Optional Ladder setup: copy #80011 to #40042

โœ… Job Select

  1. Go to SETUP > FUNCTION ENABLE
  2. Set JOB SELECT WHEN REMOTE AND PLAY to PERMIT

โœ… File Overwrite Permissions

  1. Go to PARAMETER > RS
  2. 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.


๐Ÿ“ฌ Need Help?

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

underautomation_yaskawa-2.2.0.1.tar.gz (71.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

underautomation_yaskawa-2.2.0.1-py3-none-any.whl (106.2 kB view details)

Uploaded Python 3

File details

Details for the file underautomation_yaskawa-2.2.0.1.tar.gz.

File metadata

File hashes

Hashes for underautomation_yaskawa-2.2.0.1.tar.gz
Algorithm Hash digest
SHA256 595e2e6282af8868be75a3f4d3b51d8579b923d465eda41b0335467721c06231
MD5 0f86ed46d62265b19032e4b1040e9f5f
BLAKE2b-256 33715079238ee047799800ab3a812777059f45a2360732412a8969707c848824

See more details on using hashes here.

File details

Details for the file underautomation_yaskawa-2.2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for underautomation_yaskawa-2.2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 47e6591331ce94b2314a126d426f5d29f5c0d2fbb416541960e68d9a842f89f8
MD5 73b498b0c950a824ad7bcec50b330eb3
BLAKE2b-256 67a10fc6f69bc900c0114a97b72f60726050f3ff793b6002bca6f7a13a0ab71a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page