Staubli SDK
300 (EUR) • 350 (USD)
$
350
lifetime$
210
for universities (40% discount)Quickly create .NET applications that communicate with your Staubli industrial robot.
.NET
Python
LabVIEW
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
Staubli SDK Features: SOAP Protocol for CS8 & CS9
Moving the robot
Powering remotely and sending of joint movement commands or Cartesian coordinates.position.Px += 0.1; // Move 10 cm in X directionFrame position2 = new Frame(); // fake position for circular move example// Power on the controllerPowerReturnCode powerOnStatus = controller.Soap.SetPower(power: true);// Move linear to cartesian positionIMoveResult moveLResult = controller.Soap.MoveL(robot: 0,position,motionDesc);// Move joints to cartesian positionIMoveResult moveJCResult = controller.Soap.MoveJC(robot: 0,position,motionDesc);// Move joints to joint positionIMoveResult moveJResult = controller.Soap.MoveJJ(robot: 0,joints,motionDesc);// Move CircularIMoveResult moveCResult = controller.Soap.MoveC(robot: 0,position,position2,motionDesc);// Stop motionMotionReturnCode stopStatus = controller.Soap.StopMotion();// Reset motionMotionReturnCode resetStatus = controller.Soap.ResetMotion();// Restart motionMotionReturnCode restartStatus = controller.Soap.RestartMotion();}}Click to see the full codeHandling applications
Load, start, stop, pause and supervise the execution of tasks.StaubliController controller = new StaubliController();var parameters = new ConnectionParameters("192.168.0.1");// Load project from diskcontroller.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 applicationscontroller.Soap.StopAndUnloadAll();// Stop running applicationcontroller.Soap.StopApplication();// Get tasksControllerTask[] tasks = controller.Soap.GetTasks(); // Get all tasksforeach (var task in tasks){Console.WriteLine($"Task: {task.Name}");Console.WriteLine($"reated by: {task.CreatedBy}"); // i.e. Disk://myProject/myProject.pjxConsole.WriteLine($"Line: {task.ProgramLine}");Console.WriteLine($"State: {task.State}");}// Kill taskcontroller.Soap.TaskKill(tasks[0].Name, tasks[0].CreatedBy);// Suspend taskcontroller.Soap.TaskSuspend(tasks[0].Name, tasks[0].CreatedBy);// Resume taskcontroller.Soap.TaskResume(tasks[0].Name, tasks[0].CreatedBy);}}Click to see the full codeCurrent position
Obtain the robot's current position, including Cartesian coordinates and joint angles.StaubliController controller = new StaubliController();var parameters = new ConnectionParameters("192.168.0.1");// Get the current flange position of the first robot in world coordinatesCartesianJointPosition position = controller.Soap.GetCurrentCartesianJointPosition(robot: 0, tool: null, frame: null);double[] jointPosition1 = position.JointsPosition; // Joint position in radiansCartesianPosition 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 robotdouble[] jointPosition2 = controller.Soap.GetCurrentJointPosition(robot: 0);// ---------------// Get the joint ranges (min/max angle of each joint)controller.Soap.GetJointRange(robot: 0);}}Click to see the full codeCalculate 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.double[] joints = controller.Soap.GetCurrentJointPosition(robot: 0);JointRange range = controller.Soap.GetJointRange(robot: 0);// Get forward kinematicsIForwardKinematics fk = controller.Soap.ForwardKinematics(robot: 0, // Index of the robot (0 for the first robot)joints // double[] of joint positions in radians);// Position matrixFrame position = fk.Position;// Position configurationConfig config = fk.Config; // i.e. Righty/Lefty, Elbow Positive/Negtive, ...// -----------------// Get inverse kinematicsIReverseKinematics 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);}}Click to see the full codeInformation
Get controller and controlled robot characteristics, including model, software version, power status and more.StaubliController controller = new StaubliController();var parameters = new ConnectionParameters("192.168.0.1");Robot[] robots = controller.Soap.GetRobots(); // Get all robots driven by the controllerforeach (var robot in robots){Console.WriteLine($"Arm: {robot.Arm}"); // i.e. TX2-140Console.WriteLine($"Mount type: {robot.MountType}"); // i.e. Floor, Ceiling, WallConsole.WriteLine($"Kinematic: {robot.Kinematic}"); // i.e. ANTHROPOMORPH6, SCARA, ...// see Robot class for more properties}// ---------------Parameter[] controllerParams = controller.Soap.GetControllerParameters(); // Get controller parametersforeach (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 robotforeach (var dh in dhParameters)Console.WriteLine($"{dh.Alpha} - {dh.Beta} - {dh.Theta} - {dh.A} - {dh.D}");}}Click to see the full codeInputs / Outputs
List, read and write entries and outputs of the controllerStaubliController controller = new StaubliController();var parameters = new ConnectionParameters("192.168.0.1");// Get all physical I/O ports of the controllerPhysicalIo[] 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, falseConsole.WriteLine($"Description: {io.TypeStr}"); // i.e. din, dout, ain, serial}// -----------------// Read I/Os valuePhysicalIoState[] 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 valuePhysicalIoWriteResponse[] 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}");}}Click to see the full codeBrowse the documentation
Download and test
Windows application exampleAllows 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.
UnderAutomation.Staubli.Showcase.Forms.exe (139 MB)By downloading, you accept the general conditions of use:
See terms and conditionsRequest 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: standard, pro or source. After purchasing, you have a maintenance period, giving you 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.
Standard Site License
300€ (EUR) • $350 (USD)
$
350
lifetime$
210
for universities (40% discount)Buy nowDesigned for industrial environments, providing lifetime full-feature access.1 year maintenance included (access to updates)Same conditions as the Pro License, except that support is not prioritized and maintenance is 1 year.There are no internal sources; only the obfuscated DLL is provided.No assistance by videoconference (only via email).Most popularPro License
600€ (EUR) • $700 (USD)
$
700
lifetime$1060
$
420
for universities (40% discount)Buy nowFor critical production environments requiring priority support and longer-term maintenance.3 years maintenance included (access to updates) with no renewal orders during this term (zero paperwork)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.Priority Support (<24h on average)Remote assistance (email and up to 2h videoconference)There are no internal sources; only the obfuscated DLL is provided.Upgrade to Source anytime (pay the difference)Source license
1200€ (EUR) • $1400 (USD)
$
1400
lifetime$
840
for universities (40% discount)Buy nowFor complete technical sovereignty, deep customization, and total independence.Same conditions as the pro licenseComplete internal code of the library in C#Visual Studio solution that includes thousands of lines of code developed over several yearsYou can modify this source code and use it in your application, within the limits defined in the general terms of useWorks seamlessly with AI coding agents (Claude, Copilot, Cursor, Codex...) thanks to full source code access and included context files (AGENTS.md) that give the LLM the exact knowledge of the SDK internals