FoundryNet / Fields / robot.joint.position
Canonical field reference

robot.joint.position

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.

12OEMs / profiles mapped
12distinct raw spellings
33corpus source tags
1.00match confidence
Get an API key All canonical fields

Vendor tag table

How 12 vendors spell robot.joint.position

Each 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 / profileRaw tag as the device emits itConfidence
ABB RoboticsCJointT.rax_11.00
Doosan Roboticsjoint_1_deg1.00
Epson Robotsjoint_1_deg1.00
Fanuc RoboticsJ1_pos1.00
Franka Emikajoint_1_deg1.00
KUKA$AXIS_ACT.A11.00
Kawasaki Roboticsjoint_1_deg1.00
Omron Roboticsjoint_1_deg1.00
Stäublijoint_1_deg1.00
Techman Robotjoint_1_deg1.00
Universal Robotsactual_q_01.00
Yaskawa MotomanS_axis_deg1.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.


Unit contract

What Forge guarantees about the value

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 unitunitless (identifier or enumeration)
Physics bounds-6.2832 to 6.2832
Measurement typeinstantaneous
Distinct source tags in the corpus33

Normalization

Raw tag in, canonical field out

# ABB Robotics emits its own spelling; Forge returns the canonical field
curl -s -X POST https://forge.foundrynet.io/v1/normalize \
-H "Authorization: Bearer $FORGE_KEY" \
-H "Content-Type: application/json" \
-d '{"data": {"CJointT.rax_1": 0}, "oem": "abb"}'
{ "normalized": { "robot.joint.position": 0 }, "match_type": "deterministic", "confidence": 1.0 }

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.

# Same thing with no key and no account — the sandbox ships the packs
docker run -p 8000:8000 ghcr.io/foundrynet/forge-sandbox

Where this field appears

Protocols

Transports this field is carried on in the corpus.

OPC UA ROS 2 (DDS) EtherNet/IP Modbus TCP

OEMs that map this field

ABB Robotics KUKA Universal Robots Fanuc Robotics Yaskawa Motoman Kawasaki Robotics Stäubli Franka Emika Omron Robotics Techman Robot Epson Robots Doosan Robotics
Every one of these tag names is someone’s integration project. The Machine Agent, weekly. Read it →
Get the thesis behind this infrastructure — The Machine Agent, weekly.