Skip to content

๐Ÿ Python library to communicate with Staubli CS8/CS9 controllers using the native SOAP ethernet interface. Nothing to install on the robot. Pay once for a company-wide license, then use foreverโ€”no runtime or development fees, unlimited robots, developers, and redistributed software

Notifications You must be signed in to change notification settings

underautomation/Staubli.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

10 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Staubli Communication SDK for Python

UnderAutomation Staubli communication SDK

PyPI Python SOAP Platforms

๐Ÿค– Effortlessly Communicate with Staubli Robots from Python

The Staubli Communication SDK for Python wraps the native Staubli SOAP stack and exposes a clean, Pythonic API for automation engineers, researchers, and integrators. Use it to supervise industrial robots, orchestrate motion, exchange I/O, and manage VAL 3 applicationsโ€”all without requiring additional Staubli software licenses.

๐Ÿ”— More Information: Documentation
๐Ÿ”— Available also for ๐ŸŸฃ .NET & ๐ŸŸจ LabVIEW


๐Ÿš€ TL;DR

โœ… Install the SDK with pip install UnderAutomation.Staubli.
โœ… Connect to Staubli controllers via the native SOAP protocol.
โœ… Control motion, read/write I/O, monitor robots, and manage applications directly from Python.

Highlights:

  • โšก Real-time SOAP communication through the embedded UnderAutomation.Staubli.dll
  • ๐Ÿ Pythonic wrappers for controllers, parameters, and data objects
  • ๐Ÿ” Full motion lifecycle & kinematics helpers
  • ๐Ÿ“ก Access to physical & logical I/Os
  • ๐Ÿ“ฆ VAL 3 project and task management

๐Ÿ“ฆ Installation

pip install UnderAutomation.Staubli

The package bundles the required .NET assemblies and depends on pythonnet to bridge Python and .NET. Make sure the target machine has a compatible .NET runtime installed.


โœจ Features

๐Ÿ”Œ Connect to Your Controller

from underautomation.staubli.staubli_controller import StaubliController
from underautomation.staubli.connection_parameters import ConnectionParameters

controller = StaubliController()
parameters = ConnectionParameters("192.168.0.1")

parameters.soap.enable = True
parameters.soap.user = "default"
parameters.soap.password = "default"

controller.connect(parameters)

UnderAutomation Staubli communication SDK


๐Ÿ” Explore System Information

  • List robots: controller.soap.get_robots()
  • Inspect controller parameters: controller.soap.get_controller_parameters()
  • Retrieve DH parameters: controller.soap.get_dh_parameters(robot=0)
robots = controller.soap.get_robots()
controller_params = controller.soap.get_controller_parameters()
dh = controller.soap.get_dh_parameters(robot=0)

UnderAutomation Staubli communication SDK


๐Ÿ“ Track Positions & Joints

  • Cartesian pose + joints: controller.soap.get_current_cartesian_joint_position()
  • Joint-only feedback: controller.soap.get_current_joint_position()
cartesian = controller.soap.get_current_cartesian_joint_position(robot=0)
print(cartesian.joints_position)

UnderAutomation Staubli communication SDK


๐Ÿง  Kinematics Helpers

  • Forward kinematics: controller.soap.forward_kinematics(robot, joints)
  • Inverse kinematics: controller.soap.reverse_kinematics(robot, joints, target, config, joint_range)
joints = controller.soap.get_current_joint_position(robot=0)
forward = controller.soap.forward_kinematics(0, joints)
joint_range = controller.soap.get_joint_range(robot=0)
reverse = controller.soap.reverse_kinematics(0, joints, forward.position, forward.config, joint_range)

UnderAutomation Staubli communication SDK


โš™๏ธ Motion Control Lifecycle

  • Power management: controller.soap.set_power(True)
  • Motion primitives: move_l, move_jc, move_jj, move_c
  • Lifecycle control: stop_motion, reset_motion, restart_motion
from underautomation.staubli.soap.data.motion_desc import MotionDesc
from underautomation.staubli.soap.data.frame import Frame

mdesc = MotionDesc()
mdesc.velocity = 250

frame = Frame()
frame.px, frame.py, frame.pz = 300, 0, 450

controller.soap.set_power(True)
controller.soap.move_l(0, frame, mdesc)

UnderAutomation Staubli communication SDK


๐Ÿ“ก Physical & Logical I/O Management

  • Discover I/Os: controller.soap.get_all_physical_ios()
  • Read states: controller.soap.read_ios([...])
  • Write outputs: controller.soap.write_ios([...], [...])
physical_ios = controller.soap.get_all_physical_ios()
controller.soap.write_ios(["out1"], [1.0])

UnderAutomation Staubli communication SDK


๐Ÿ“ฆ Application & Project Control

  • Load projects: controller.soap.load_project("Disk://project.pjx")
  • Inspect VAL apps: controller.soap.get_val_applications()
  • Control lifecycle: stop_application(), stop_and_unload_all()
controller.soap.load_project("Disk://project.pjx")
applications = controller.soap.get_val_applications()
controller.soap.stop_and_unload_all()

UnderAutomation Staubli communication SDK


๐Ÿ” Task Supervision

  • List VAL tasks: controller.soap.get_tasks()
  • Control execution: task_suspend, task_resume, task_kill
tasks = controller.soap.get_tasks()
controller.soap.task_kill(tasks[0].name, tasks[0].created_by)

โœ… Compatibility

  • Controllers: CS8, CS9
  • Operating Systems: Windows, Linux, macOS
  • Python: 3.7+
  • Dependency: pythonnet 3.0+

๐Ÿ“œ License

โš ๏ธ Commercial license required
๐Ÿ”— View EULA

Register your license at runtime with:

from underautomation.staubli.staubli_controller import StaubliController

license_info = StaubliController.register_license("Your Company", "XXXX-XXXX")
print(license_info.state)

๐Ÿค Contributing

You're welcome to:

  • Submit issues & pull requests
  • Share feature suggestions
  • Help improve documentation & samples

๐Ÿ‘‰ Contribute on GitHub


๐Ÿ“ฌ Need Help?


โญ Star the repo if useful
๐Ÿ‘๏ธ Watch for updates

About

๐Ÿ Python library to communicate with Staubli CS8/CS9 controllers using the native SOAP ethernet interface. Nothing to install on the robot. Pay once for a company-wide license, then use foreverโ€”no runtime or development fees, unlimited robots, developers, and redistributed software

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages