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

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_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

  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.0.0.0.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.0.0.0-py3-none-any.whl (105.4 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for underautomation_yaskawa-2.0.0.0.tar.gz
Algorithm Hash digest
SHA256 ab5462adaec95d419dc998de8394013971c050822b356862fce76750569debc6
MD5 cb4ace956390dec62df6d6e5c49efead
BLAKE2b-256 88f7003b08fd2f5fd0dacf2e5682ef483dfd1dcaded0ea44da2b1dd07b4c3da9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for underautomation_yaskawa-2.0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 513ff59f8bd589c36ca275368a78b383ccd28c2c508f3ed1e9c90c77d0ec2564
MD5 5dd33e583dba5133295c89b36326c498
BLAKE2b-256 8f3081997ade9dfdc2abcfb67453aec998516e969c85d07c20f822e159f59656

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