Per-joint angular position for an articulated arm, in radians. Reported as a vector or as one tag per joint depending on the vendor and the transport, and the sign convention is not universal. Bounded to a full turn either way so a wrapped or uninitialised encoder reading is rejected rather than smoothed into the trend.
robot.joint.positionEach of these is a real tag as the device or controller emits it, taken from the Forge mapping corpus. This is the table that does not exist anywhere else — the reason cross-vendor telemetry is hard is visible in a single column.
| OEM / profile | Raw tag as the device emits it | Confidence |
|---|---|---|
| ABB Robotics | CJointT.rax_1 | 1.00 |
| Doosan Robotics | joint_1_deg | 1.00 |
| Epson Robots | joint_1_deg | 1.00 |
| Fanuc Robotics | J1_pos | 1.00 |
| Franka Emika | joint_1_deg | 1.00 |
| KUKA | $AXIS_ACT.A1 | 1.00 |
| Kawasaki Robotics | joint_1_deg | 1.00 |
| Omron Robotics | joint_1_deg | 1.00 |
| Stäubli | joint_1_deg | 1.00 |
| Techman Robot | joint_1_deg | 1.00 |
| Universal Robots | actual_q_0 | 1.00 |
| Yaskawa Motoman | S_axis_deg | 1.00 |
Every row above is an exact match — a deterministic pack entry or a confirmed corpus mapping — so all of them carry confidence 1.00. That is not a rounding: these are the two exact-match layers, and a tag that resolves here never reaches the embedding or LLM layers. Mappings resolved by the LLM layer do carry sub-1.0 confidence, but those are per-tenant and are not published here.
The canonical field is not just a name. It is a contract about units, sign convention and plausible range, enforced on the way in and re-checked at read time.
| SI / canonical unit | unitless (identifier or enumeration) |
| Physics bounds | -6.2832 to 6.2832 |
| Measurement type | instantaneous |
| Distinct source tags in the corpus | 33 |
No mapping table to maintain, and no per-vendor branch in your code. The same request shape works for every OEM in the table above.
Transports this field is carried on in the corpus.
OPC UA ROS 2 (DDS) EtherNet/IP Modbus TCPRead alongside this one.
robot.mode robot.payload robot.tcp.speed spindle_speed_rpm spindle_load_pct