Fanuc SDK documentation
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.
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 instanceFanucRobot robot = new FanucRobot();// Set connection parametersConnectionParameters parameters = new ConnectionParameters("192.168.0.1");parameters.Snpx.Enable = true;// Connect to the robotrobot.Connect(parameters);/**/// Read a current world positionPosition worldPosition = robot.Snpx.CurrentPosition.ReadWorldPosition();// Access the Cartesian positiondouble x = worldPosition.CartesianPosition.X;// Access the user tool at this cartesian positionshort usertTool = worldPosition.UserTool;// Access the joint positionsdouble j1 = worldPosition.JointsPosition.J1;// Read a current world position of group 2Position worldPositionG2 = robot.Snpx.CurrentPosition.ReadWorldPosition(2);/**/}}
using UnderAutomation.Fanuc;using UnderAutomation.Fanuc.Common;public class SnpxPositionUserFrame{static void Main(){// Create a new Fanuc robot instanceFanucRobot robot = new FanucRobot();// Set connection parametersConnectionParameters parameters = new ConnectionParameters("192.168.0.1");parameters.Snpx.Enable = true;// Connect to the robotrobot.Connect(parameters);/**/// Read user frame 2 positionPosition userFrame = robot.Snpx.CurrentPosition.ReadUserFramePosition(1);// Access the Cartesian positiondouble x = userFrame.CartesianPosition.X;// Access the user tool at this cartesian positionshort usertTool = userFrame.UserTool;// Access the user frame idshort usertFrame = userFrame.UserFrame;// Access the joint positionsdouble j1 = userFrame.JointsPosition.J1;// Read a current world position of group 2Position userFrameG2 = robot.Snpx.CurrentPosition.ReadWorldPosition(2);/**/}}
See also: SNPX Current position
CGTP Web Server
CGTP returns Cartesian and joint positions separately:
// Read Cartesian positionCartesianPosition cartesian = robot.Cgtp.ReadCartesianPosition();Console.WriteLine($"X={cartesian.X}, Y={cartesian.Y}, Z={cartesian.Z}");// Read joint positionJointsPosition joints = robot.Cgtp.ReadJointPosition();Console.WriteLine($"J1={joints.J1}, J2={joints.J2}, J3={joints.J3}");// Multi-groupCartesianPosition 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
| Feature | SNPX | CGTP | FTP | Telnet |
|---|---|---|---|---|
| Speed | ~2 ms | ~50 ms | ~100 ms | ~30 ms |
| World frame | Yes | Yes | Yes | Yes |
| User frame | Yes | No | No | No |
| Joint position | Yes | Yes | Yes | Yes |
| Multi-group | Yes | Yes | No | No |