UnderAutomation
質問ですか?

[email protected]

お問い合わせ
UnderAutomation
⌘Q
Fanuc SDK documentation
Read & write registers
Documentation home

Get current position

Retrieve the current robot position (joint and Cartesian) using SNPX, FTP, CGTP, or Telnet. Compare approaches and choose the best for your use case.

  • SNPX (fastest : ~2 ms)
  • CGTP Web Server
  • FTP (offline parsing)
  • Telnet KCL
  • Protocol comparison

Read the current tool position of your Fanuc robot in Cartesian (X, Y, Z, W, P, R) or joint (J1–J6) format using different protocols.

SNPX (fastest : ~2 ms)

SNPX provides the fastest position reading, in world or user frame coordinates.

using UnderAutomation.Fanuc;
using UnderAutomation.Fanuc.Common;
public class SnpxPositionWorld
{
static void Main()
{
// Create a new Fanuc robot instance
FanucRobot robot = new FanucRobot();
// Set connection parameters
ConnectionParameters parameters = new ConnectionParameters("192.168.0.1");
parameters.Snpx.Enable = true;
// Connect to the robot
robot.Connect(parameters);
/**/
// Read a current world position
Position worldPosition = robot.Snpx.CurrentPosition.ReadWorldPosition();
// Access the Cartesian position
double x = worldPosition.CartesianPosition.X;
// Access the user tool at this cartesian position
short usertTool = worldPosition.UserTool;
// Access the joint positions
double j1 = worldPosition.JointsPosition.J1;
// Read a current world position of group 2
Position worldPositionG2 = robot.Snpx.CurrentPosition.ReadWorldPosition(2);
/**/
}
}
using UnderAutomation.Fanuc;
using UnderAutomation.Fanuc.Common;
public class SnpxPositionUserFrame
{
static void Main()
{
// Create a new Fanuc robot instance
FanucRobot robot = new FanucRobot();
// Set connection parameters
ConnectionParameters parameters = new ConnectionParameters("192.168.0.1");
parameters.Snpx.Enable = true;
// Connect to the robot
robot.Connect(parameters);
/**/
// Read user frame 2 position
Position userFrame = robot.Snpx.CurrentPosition.ReadUserFramePosition(1);
// Access the Cartesian position
double x = userFrame.CartesianPosition.X;
// Access the user tool at this cartesian position
short usertTool = userFrame.UserTool;
// Access the user frame id
short usertFrame = userFrame.UserFrame;
// Access the joint positions
double j1 = userFrame.JointsPosition.J1;
// Read a current world position of group 2
Position userFrameG2 = robot.Snpx.CurrentPosition.ReadWorldPosition(2);
/**/
}
}

See also: SNPX Current position

CGTP Web Server

CGTP returns Cartesian and joint positions separately:

// Read Cartesian position
CartesianPosition cartesian = robot.Cgtp.ReadCartesianPosition();
Console.WriteLine($"X={cartesian.X}, Y={cartesian.Y}, Z={cartesian.Z}");
// Read joint position
JointsPosition joints = robot.Cgtp.ReadJointPosition();
Console.WriteLine($"J1={joints.J1}, J2={joints.J2}, J3={joints.J3}");
// Multi-group
CartesianPosition group2 = robot.Cgtp.ReadCartesianPosition(groupNum: 2);

See also: CGTP Position & kinematics

FTP (offline parsing)

Download and parse the current position diagnostic file:

CurrentPosition curPos = robot.Ftp.GetSummaryDiagnostic().CurrentPosition;

See also: FTP Diagnostics & variables

Telnet KCL

Read position-related system variables:

var curpos = robot.Telnet.GetCurrentPose();

Protocol comparison

FeatureSNPXCGTPFTPTelnet
Speed~2 ms~50 ms~100 ms~30 ms
World frameYesYesYesYes
User frameYesNoNoNo
Joint positionYesYesYesYes
Multi-groupYesYesNoNo

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

UnderAutomation
お問い合わせLegal

© All rights reserved.