UnderAutomation
質問ですか?

[email protected]

お問い合わせ
UnderAutomation
⌘Q
このページは英語でのみ提供されています。

Controller and robots

List the robots of a Staubli controller, read the controller parameters, the Denavit-Hartenberg parameters and the joint ranges of each arm.

  • Robots of the controller
  • Controller parameters
  • Denavit-Hartenberg parameters
  • Joint ranges
  • Try it in the demo application
  • Reference

This page shows how to read the description of a Staubli CS8 or CS9 controller and of its robots: the arms, the controller parameters, the Denavit-Hartenberg parameters and the joint ranges. These calls only read: they never change the state of the controller.

Robots of the controller

GetRobots() returns one Robot per arm driven by the controller. The index of an arm in this array is the robot number that the other methods take.

var controller = new StaubliController();
controller.Connect("192.168.0.254");
// The robots driven by the controller. The index in this array
// is the robot number that the other methods take.
Robot[] robots = controller.Soap.GetRobots();
for (int i = 0; i < robots.Length; i++)
{
Robot robot = robots[i];
Console.WriteLine($"Robot {i}: {robot.Arm}"); // for example TX2-60
Console.WriteLine($" Kinematic: {robot.Kinematic}"); // Anthropomorph6, Scara...
Console.WriteLine($" Mount type: {robot.MountType}"); // Floor, Ceiling, Wall
Console.WriteLine($" Tuning: {robot.Tuning}");
}
controller.Disconnect();
}
Click to see the full code

Kinematic gives the type of arm: Anthropomorph6 for a 6 axis arm like the TX2 series, Scara for a SCARA like the TS2 series, and the other values of the Kinematic enumeration.

Controller parameters

GetControllerParameters() returns the parameters of the controller, as key, name and value.

var controller = new StaubliController();
controller.Connect("192.168.0.254");
Parameter[] parameters = controller.Soap.GetControllerParameters();
foreach (Parameter parameter in parameters)
Console.WriteLine($"{parameter.Key} | {parameter.Name} = {parameter.Value}");
controller.Disconnect();
}
Click to see the full code

The list and the values depend on the controller and on its version. Read the list once on your controller to find the keys you need.

Denavit-Hartenberg parameters

GetDhParameters(robot) returns one DhParameters per joint of the arm, as the controller defines its geometry.

var controller = new StaubliController();
controller.Connect("192.168.0.254");
// One entry per joint of the first robot
DhParameters[] dh = controller.Soap.GetDhParameters(robot: 0);
for (int i = 0; i < dh.Length; i++)
Console.WriteLine($"J{i + 1}: theta={dh[i].Theta} d={dh[i].D} a={dh[i].A} alpha={dh[i].Alpha} beta={dh[i].Beta}");
controller.Disconnect();
}
Click to see the full code

Joint ranges

GetJointRange(robot) returns the software limits of each joint, in radians. The inverse kinematics uses them to reject a solution out of range: see Kinematics.

var controller = new StaubliController();
controller.Connect("192.168.0.254");
// Software limits of each joint of the first robot, in radians
JointRange range = controller.Soap.GetJointRange(robot: 0);
for (int i = 0; i < range.Min.Length; i++)
Console.WriteLine($"J{i + 1}: {range.Min[i]} to {range.Max[i]}");
controller.Disconnect();
}
Click to see the full code

Try it in the demo application

Everything on this page can be tried without writing code, in the Get Robots page of the demo application.

Get Robots page of the Staubli SDK demo application

The demo application is open source. The C# source of this page is RobotsControl.cs.

Reference

Methods of SoapClientBase :
C#
// Get the current Cartesian position of a robot end effector
Parameter[] GetControllerParameters();
// Get Robot DH parameters
DhParameters[] GetDhParameters(int robot = 0);
// Get the range Min-Max of each joint of a robot
JointRange GetJointRange(int robot = 0);
// Get all the robots handled by this controller
Robot[] GetRobots();
Class
Robot
C#Python

Represents a robot managed by the controller.

MemberTypeDescription
Robot()
Constructor
Initializes a new instance of the Robot class.
Arm
Property
string
Arm model identifier.
DiameterAxis3
Property
DiameterAxis3
Diameter of the third axis.
Kinematic
Property
Kinematic
Kinematic type of the robot.
LengthAxis3
Property
LengthAxis3
Length of the third axis.
MountType
Property
MountType
Mounting type of the robot (floor, ceiling, wall).
Tuning
Property
string
Tuning identifier.
Equals(object)
Method
bool
GetHashCode()
Method
int
ToString()
Method
string
Enum
Kinematic
C#Python

Robot kinematic type.

NameValueDescription
Anthrioparallel6
2
6-axis anthropomorphic parallel robot.
Anthropomorph5
3
5-axis anthropomorphic robot.
Anthropomorph6
1
6-axis anthropomorphic robot.
Eisenmann
5
Eisenmann kinematic type.
Invalid
0
Invalid or unknown kinematic type.
Scara
4
SCARA robot.
Enum
MountType
C#Python

Robot mounting type.

NameValueDescription
Ceiling
2
Robot is ceiling-mounted.
Floor
1
Robot is floor-mounted.
Invalid
0
Invalid or unknown mount type.
Wall
3
Robot is wall-mounted.
Class
Parameter
C#Python

Key-value parameter from the controller.

MemberTypeDescription
Parameter()
Constructor
Initializes a new instance of the Parameter class.
Key
Property
string
Parameter key identifier.
Name
Property
string
Display name of the parameter.
Value
Property
string
Value of the parameter.
Equals(object)
Method
bool
GetHashCode()
Method
int
ToString()
Method
string
Class
DhParameters
C#Python

Denavit-Hartenberg parameters for a single robot joint.

MemberTypeDescription
DhParameters()
Constructor
Initializes a new instance of the DhParameters class.
A
Property
double
Link length a (m).
Alpha
Property
double
Link twist alpha (radians).
Beta
Property
double
Joint twist beta (radians).
D
Property
double
Link offset d (m).
Theta
Property
double
Joint angle theta (radians).
Equals(object)
Method
bool
GetHashCode()
Method
int
ToString()
Method
string
Class
JointRange
C#Python

Minimum and maximum range of each robot joint (radians).

MemberTypeDescription
JointRange()
Constructor
Initializes a new instance of the JointRange class.
Max
Property
double[]
Maximum values for each joint (radians).
Min
Property
double[]
Minimum values for each joint (radians).
Equals(object)
Method
bool
GetHashCode()
Method
int
ToString()
Method
string

Universal Robots、Fanuc、Yaskawa、ABB、Staubli ロボットを .NET、Python、LabVIEW、または Matlab アプリケーションに簡単に統合

UnderAutomation
お問い合わせLegal

© All rights reserved.