UnderAutomation
    • Home page
  • Products
    • Universal Robots SDK
    • Fanuc SDK
    • Yaskawa SDK
    • Staubli SDK
      • Overview
      • Download
      • Documentation
    • Quote • Order
    • License
Any question?

[email protected]

Contact us
UnderAutomation
  • Home page
  • Products
      • Overview
      • Download
      • Documentation
      • Overview
      • Download
      • Documentation
      • Overview
      • Download
      • Documentation
      • Overview
      • Download
      • Documentation
  • Quote • Order
  • Contact us
⌘Q

Staubli SDK

1/0
GitHub stars
290 (EUR) • 340 (USD)

$

340

lifetime

$

204

for universities (40% discount)

Quickly create .NET applications that communicate with your Staubli industrial robot.


OrderRequest a quote

.NET

Python

LabVIEW

See terms and conditions
Plug & Play

Connect your robot in just a few minutes. No license manager to install, no USB key. Only reference the library.

No plugins to install on the robot

Use of network protocols provided as standard by the robot controller.
ROS

30-day trial

Try it free for 30 days, no commitment, no registration required

Pay once, use forever

Perpetual license, no subscription required, regardless of the number of robots, developers, or redistributed software

Staubli Communication Library

Implements Ethernet protocols natively available on Staubli robots
100% managed assembly
Fast integration with CS8 and CS9 controllers
Modern, well-documented library
No physical USB key license required

1

Features at a glance

Moving the robot

Powering remotely and sending of joint movement commands or Cartesian coordinates.
// Power on the controller
PowerReturnCode powerOnStatus = controller.Soap.SetPower(power: true);
// Move linear to cartesian position
IMoveResult moveLResult = controller.Soap.MoveL(
robot: 0,
position,
motionDesc
);
// Move joints to cartesian position
IMoveResult moveJCResult = controller.Soap.MoveJC(
robot: 0,
position,
motionDesc
);
// Move joints to joint position
IMoveResult moveJResult = controller.Soap.MoveJJ(
robot: 0,
joints,
motionDesc
);
// Move Circular
IMoveResult moveCResult = controller.Soap.MoveC(
robot: 0,
position,
position2,
motionDesc
);
// Stop motion
MotionReturnCode stopStatus = controller.Soap.StopMotion();
// Reset motion
MotionReturnCode resetStatus = controller.Soap.ResetMotion();
// Restart motion
MotionReturnCode restartStatus = controller.Soap.RestartMotion();

Handling applications

Load, start, stop, pause and supervise the execution of tasks.
// Load project from disk
controller.Soap.LoadProject("Disk://myProject/myProject.pjx");
ValApplication[] applications = controller.Soap.GetValApplications();
foreach (var application in applications)
Console.WriteLine($"Application: {application.Name}, Running: {application.IsRunning}");
// Unload all applications
controller.Soap.StopAndUnloadAll();
// Stop running application
controller.Soap.StopApplication();
// Get tasks
ControllerTask[] tasks = controller.Soap.GetTasks(); // Get all tasks
foreach (var task in tasks)
{
Console.WriteLine($"Task: {task.Name}");
Console.WriteLine($"reated by: {task.CreatedBy}"); // i.e. Disk://myProject/myProject.pjx
Console.WriteLine($"Line: {task.ProgramLine}");
Console.WriteLine($"State: {task.State}");
}
// Kill task
controller.Soap.TaskKill(tasks[0].Name, tasks[0].CreatedBy);
// Suspend task
controller.Soap.TaskSuspend(tasks[0].Name, tasks[0].CreatedBy);
// Resume task
controller.Soap.TaskResume(tasks[0].Name, tasks[0].CreatedBy);

Current position

Obtain the robot's current position, including Cartesian coordinates and joint angles.
// Get the current flange position of the first robot in world coordinates
CartesianJointPosition position = controller.Soap.GetCurrentCartesianJointPosition(robot: 0, tool: null, frame: null);
double[] jointPosition1 = position.JointsPosition; // Joint position in radians
CartesianPosition cartesianPosition = position.CartesianPosition;
Console.WriteLine($"X: {cartesianPosition.X}, Y: {cartesianPosition.Y}, Z: {cartesianPosition.Z}");
Console.WriteLine($"Rx: {cartesianPosition.Rx}, Ry: {cartesianPosition.Ry}, Rz: {cartesianPosition.Rz}");
// ---------------
// Get only the current joint position of the first robot
double[] jointPosition2 = controller.Soap.GetCurrentJointPosition(robot: 0);
// ---------------
// Get the joint ranges (min/max angle of each joint)
controller.Soap.GetJointRange(robot: 0);

Calculate the Cartesian position from the angles of the joints and vice versa.

Calculate the Cartesian position from the angles of the joints and vice versa.
// Get forward kinematics
IForwardKinematics fk = controller.Soap.ForwardKinematics(
robot: 0, // Index of the robot (0 for the first robot)
joints // double[] of joint positions in radians
);
// Position matrix
Frame position = fk.Position;
// Position configuration
Config config = fk.Config; // i.e. Righty/Lefty, Elbow Positive/Negtive, ...
// -----------------
// Get inverse kinematics
IReverseKinematics ik = controller.Soap.ReverseKinematics(
robot: 0, // Index of the robot (0 for the first robot)
joints,
position,
config,
range
);
if (ik.Result == ReversingResult.Success)
foreach (double joint in ik.Joint) Console.WriteLine(joint);

Information

Get controller and controlled robot characteristics, including model, software version, power status and more.
Robot[] robots = controller.Soap.GetRobots(); // Get all robots driven by the controller
foreach (var robot in robots)
{
Console.WriteLine($"Arm: {robot.Arm}"); // i.e. TX2-140
Console.WriteLine($"Mount type: {robot.MountType}"); // i.e. Floor, Ceiling, Wall
Console.WriteLine($"Kinematic: {robot.Kinematic}"); // i.e. ANTHROPOMORPH6, SCARA, ...
// see Robot class for more properties
}
// ---------------
Parameter[] controllerParams = controller.Soap.GetControllerParameters(); // Get controller parameters
foreach (var param in controllerParams)
Console.WriteLine($"{param.Name} = {param.Value}"); // i.e. CycleTime = 0.004s
// ---------------
DhParameters[] dhParameters = controller.Soap.GetDhParameters(robot: 0); // Get DH parameters of the first robot
foreach (var dh in dhParameters)
Console.WriteLine($"{dh.Alpha} - {dh.Beta} - {dh.Theta} - {dh.A} - {dh.D}");

Inputs / Outputs

List, read and write entries and outputs of the controller
// Get all physical I/O ports of the controller
PhysicalIo[] ios = controller.Soap.GetAllPhysicalIos();
foreach (var io in ios)
{
Console.WriteLine($"Name: {io.Name}");
Console.WriteLine($"Type: {io.Description}");
Console.WriteLine($"Lockable: {io.Lockable}"); // i.e. true, false
Console.WriteLine($"Description: {io.TypeStr}"); // i.e. din, dout, ain, serial
}
// -----------------
// Read I/Os value
PhysicalIoState[] values = controller.Soap.ReadIos(new[] { @"Socket\test", @"Serial\0", @"FastIO\fOut1", @"CpuUsage\val3" });
foreach (var value in values)
{
Console.WriteLine("Value: " + value.Value);
Console.WriteLine("Locked: " + value.Locked);
Console.WriteLine("Simulated: " + value.Simulated);
}
// -----------------
// Write I/Os value
PhysicalIoWriteResponse[] response = controller.Soap.WriteIos(new[] { "my_io_1", "my_io_2" }, new double[] { 1.0, 0.0 });
foreach (var res in response)
Console.WriteLine($"Success: {res.Success} - Found: {res.Found}");
2

Browse the documentation

Browse the documentation

The documentation allows you to start quickly developing with the library. The same feature is available in all supported languages.

Getting started with .net

Code your application in C# or VB.NET with this 100%-managed, dependency-free library, available from Nuget.org in the version and architecture of your choice (x86, x64, arm, linux, windows, macOS, .NET Framework, .NET Core, UWP, ...).

3

Download and test

Download via NUGET
Download via NUGET

Easily add this SDK to your Visual Studio project via the Nuget package manager.

​
See on Nuget
Examples on GitHub
Examples on GitHub

The sources of examples of use of this SDK are available on Github

​
See on Github
Windows application example
Windows application example

Allows you to test all the features of the SDK with a simple interface. The example is compiled in "self contained" and "single file" with .NET 8. The application is portable without installation.

By downloading, you accept the general conditions of use:
See terms and conditions
UnderAutomation.Staubli.Showcase.Forms.exe (139 MB)
4

Request a quote and order

Pricing

Libraries can be downloaded for free and can be tested for 30 days. After this period, you can ask us to extend the trial period, or buy the license that suits you best: site (obscured binary only) or source (source code). After purchasing, you have a one -year maintenance period, giving you priority access to the support and the possibility of updating. When you buy a license to use, it is linked to a robot brand, you can use it forever, without recurring fee, regardless of the number of robot, developer or software that you redistribute to your customers. If you are a distributor and wish to offer your customers one of our products, please contact us to discuss special conditions and prices.

Most popular

Site license

340 (EUR) • 340 (USD)

$

340

lifetime

$

204

for universities (40% discount)

Complete and permanent SDK: no recurring subscription is required, the license is yours forever and works in all programming languages ​​for a robot brand.
Can be used only by the organization holding the license, at the postal address indicated. All team developers will share the same license, regardless of the number of development machine.
Any application developed using the SDK can be delivered to an unlimited number of your customers at no additional cost, regardless of the number of robots to connect.
The license is a kind of password to call in the code that unlocks the features. No additional software to install. No USB key.
1 year maintenance included (access to updates)
Contact us for a payment by bank transfer. Once the license of this SDK is purchased, you will receive your license number and your invoice by email.
There are no internal sources; only the obfuscated DLL is provided.
Buy now

Source license

1360 (EUR) • 1360 (USD)

$

1360

lifetime

$

816

for universities (40% discount)

Complete internal code of the library in C#
Visual Studio solution that includes thousands of lines of code developed over several years
You can modify this source code and use it in your application, within the limits defined in the general terms of use
Buy now

Easily integrate Universal Robots, Fanuc, Yaskawa or Staubli robots into your .NET, Python, LabVIEW or Matlab applications

UnderAutomation
Contact usLegal
Products
Universal Robots SDKFanuc SDKYaskawa SDKStaubli SDK
enEnglish
frFrançais
deDeutsch
esEspañol
zh中文
ja日本語
ko한국어

© All rights reserved.