§4 xArm 850
How the Machine Works
How the controller turns commands into joint motion, how the arm knows where its tool is, and how it senses a bump.
Start Here
This section explains how the controller turns a command into joint motion, how the arm knows where its tool is, and how it senses a bump. Every tier below starts from the same three facts.
17-bit
encoders on the joint motors1
0–5
collision sensitivity, where 0 is off2
250 Hz
fastest command rate in servo mode3
- Six rotary joints move the arm, from Joint 1 at the base to Joint 6 at the tool4.
- The control box is the core of the system: it holds the arm's control system5.
- What the arm positions is a point on its tool, called the Tool Center Point, or TCP6.
S2 in one line: S2 is the xArm 850 arm that picks up incoming material and moves it between receiving, staging and production78.
Look Back
A question from earlier on, to keep it fresh. Skip it if you like; nothing depends on it.
Choose your depth
1Beginner
The Ideas Behind the Motion
For: Anyone with no robotics background: a visitor, a new operator, a manager
Kind of task: Recognize and recall, with plain-language explanations and pictures
In this part you learn the few ideas that explain every move the arm makes: joints that turn, a box that decides, a point on the tool that the arm aims, and a way of sensing a bump that is useful but is not a safeguard. No robotics background is needed.
Six Joints, One After Another
Six rotary joints sit one after another along the arm, from Joint 1 at the base to Joint 6 at the tool end. Each one turns, and together they place the tool4.

The Control Box Decides
- The control box is the core of the system: it holds the arm's control system5.
- UFACTORY describes Studio as software that runs inside the control box9. In the lab you open it with the Studio desktop app10.
The Point the Arm Aims
- The arm positions one point on its tool, the Tool Center Point, or TCP. If no offset is set, the TCP is the center of the flange at the end of the arm. An offset moves it to the real tip of the tool6.
- Positions are measured from the arm's base. X is front and back, Y is left and right, and Z is up and down11.
Teaching by Hand
- In manual mode the arm compensates for its own weight, which UFACTORY calls "zero gravity". A person can then move it by hand and record the positions12.
- How easily the arm gives under your hand is a teach sensitivity setting13.
When the Power Is Off
With the power off, brakes inside the joints hold the arm in its pose14.
Sensing a Bump
- The 850 notices a collision from motor current. The controller works out from a model of the arm how much current each joint should draw, compares that with the current it measures, and reports a collision when the two differ by more than a set threshold15.
- That means it notices a bump from the motor current, once contact has happened15.
- The UFACTORY sources do not call this detection safety-rated16. This project's advice is to treat it as a controller feature, never as a validated safeguard17.
- So the rule stays the same: keep out of the arm's working area while it runs18.
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
2Novice
Modes and Motion Types
For: Someone who will work near or with the cell: operator, trainee technician
Kind of task: Explain and sequence: put steps in order, match parts to their functions
In this part you learn the two ways the arm can be told to move, what is inside a joint, and how a command travels from a program to the motors. It is for someone who will work near or with the cell.
Two Ways to Move
- A joint move goes point to point in joint space: you give each joint an angle, in degrees, and the tool follows whatever path those angles produce22.
- A TCP move, or linear move, drives the tool along a path you choose in space, such as a straight line or an arc22.
- This project's advice: pick the TCP move when the path itself matters, for example lowering a part straight down into a slot, and the joint move when only the end point matters23.
Why Six Joints Matter
With six joints the 850 has full six-degree-of-freedom control, so any reachable tool position and orientation can be asked for. The five-joint xArm 5 cannot do this. UFACTORY's article does not name the 850, so this is Inferred24.
What Is Inside a Joint
- The joints use harmonic drives and servomotors with 17-bit encoders. UFACTORY says they support 24/7 operation and ±0.02 mm repeatability; that is the maker's own claim25.
- The joint modules also contain brakes that hold the pose when power is lost26.
From a Program to the Motors
This platform pieces the path together from UFACTORY's descriptions of each part, so it is Inferred27.
Sensing a Bump from Motor Current
- For each joint, a dynamic model of the arm predicts the motor current it should draw. The controller compares that with the current it actually measures, and triggers when the difference passes a preset threshold28.
- So this collision detection works from the motor current in each joint15.
- It is still a controller feature, not a validated safeguard17.
Manual Mode Has a Number
Programs refer to hand teaching as mode 2. In it the arm compensates for gravity so its links can be moved by hand, and it should be switched back to mode 0 when teaching is done29.
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
3Intermediate
Modes, States and What They Mean
For: Someone who will set up, program or maintain the arm: technician, student engineer
Kind of task: Apply: work through written scenarios that need a decision (which mode, which setting, what to do about this error), with feedback on each choice
In this part you learn to read the controller's modes and states, so you can tell why the arm is ignoring you, and you meet the maths that turns a tool pose into joint angles. It is for someone who will set up, program or maintain the arm.
Modes: How the Arm Takes Commands
The controller's modes and states match the Python SDK calls set_mode() and set_state()30.
- Mode 0, position control. The controller enters it by default after start-up31.
- Mode 1, servo mode. It runs only the latest target received, with no buffer32.
- Mode 2, manual mode, for teaching by hand. Switch back to mode 0 when you are done29.
- Mode 4, joint velocity control: each joint gets a speed33.
- Mode 5, Cartesian velocity control: the TCP gets a velocity34.
- Velocity commands take a duration: a positive value stops the motion after that many seconds, and 0 keeps the speed until it is changed35.
- Mode 6, joint online trajectory planning: each new command interrupts the current motion and is re-planned from where the arm is36.
- Mode 7, Cartesian online trajectory planning, which uses only the base coordinate system37.
States: What the Arm Is Doing Now
- State 0 is what you set to put the arm in standby and clear the error code. The reported state then changes to 2 on its own38.
- State 1 means the robot is moving39.
- State 2 is ready to receive and execute commands, in the Studio manual's words40. The Python SDK calls the same state "sleeping", so the sources disagree on its name41.
- State 3 pauses a running motion; setting state 0 resumes it42.
- State 4 stops the arm at once, and it then accepts no new commands until the state is set back to 0. The controller also goes to state 4 on its own when any error occurs43.
- State 5 comes on its own after a critical setting changes, such as the mode, the payload, the TCP offset or the collision sensitivity. The arm accepts no commands until state 0 is set44.
- State 6 makes the arm perform a decelerated stop at once45.
From a Tool Pose to Joint Angles
- For a straight-line or circular move, the controller must solve inverse kinematics: it turns the tool pose you asked for into joint angles. A solution may not exist, may not be unique, or may only be approximate46.
- UFACTORY describes the tool's orientation as roll, pitch and yaw: rotations about the fixed X, Y and Z axes of the base frame47.
- Units depend on the interface. The Python SDK and Blockly use degrees for joint angles and for roll, pitch and yaw; the raw protocol uses radians. Positions are in millimeters in all three48.
False Bumps from a Wrong Payload
- Collision detection can trigger falsely if the payload mass or center of mass is set wrongly49.
- In pick-and-place programs, UFACTORY's support article says the payload is typically set before the pick command and reset after the place command49.
- Changing the payload is itself a critical setting, so the arm then waits in state 5 until you set state 044.
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
4Expert
Kinematics and Its Limits
For: Someone who designs, integrates or changes the cell: integrator, engineer, agent developer
Kind of task: Analyze and decide: weigh trade-offs, resolve contradictions, critique a configuration
In this part you work with the arm's kinematics directly, see where Cartesian control breaks down, and learn how fast the controller can be fed commands. It is for someone who designs, integrates or changes the cell.
Forward and Inverse
- Forward kinematics runs from joints to tool: given the six joint angles and the arm's geometry, there is exactly one resulting TCP pose. This rests on a vendor's general definition rather than on UFACTORY, so it is Inferred52.
- Inverse kinematics runs the other way, from a tool pose to joint angles, and its answer may not exist, may not be unique, or may be approximate46.
- UFACTORY publishes both modified and standard Denavit-Hartenberg (D-H) parameters, and link mass parameters, so you can model the arm's kinematics and dynamics yourself53.
- Section 3's expert tier lists the link lengths; for example, the upper arm, a2, is 390 mm54.
Where Cartesian Control Breaks Down
- Near a singularity, the arm cannot carry out a planned straight-line or circular move; it stops instead. UFACTORY advises avoiding the central area near the base55.
- In Cartesian moves, the joints can exceed their maximum speed and acceleration, because joint space and Cartesian space are related non-linearly56.
- Error 24 means speed is over its limit57. This platform infers that a Cartesian move asking a joint for more than its maximum is one likely cause; the UFACTORY sources do not link the two58.
Feeding Servo Mode
- In servo mode the controller accepts commands at up to 250 Hz. Commands sent faster are lost3.
- UFACTORY suggests sending smoothed, interpolated track points at a fixed rate, preferably 100 Hz or 200 Hz, and a rate within 30-250 Hz for Cartesian servo3.
- Remember that servo mode runs only the latest target it receives, with no buffer32.
Reading Mode and State from Outside
- In UFACTORY's Modbus TCP map, holding register 32 (0x20) is the robot mode and holding register 33 (0x21) is the robot state59.
- That manual names no robot model. It is Inferred that the 850 behaves the same, until an 850 document or the controller at S2 shows it59.
- Mode 3, Cartesian teaching, is marked invalid in the Python SDK, so do not plan on it51.
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
Not settledOpen Questions · 2
What the sources do not settle for this section. Nothing here is papered over with a plausible number.
- Kind: Contradiction
The Python SDK and the Studio manual name state 2 differently: the SDK's get_state and state documentation call it 'sleeping', while the Studio manual calls it ready to receive and execute commands.
See reference 41 - Kind: Gap
Per-joint component data for the 850 (motor model and rating, harmonic-drive ratio, encoder type and whether it is single- or multi-turn absolute, and joint-module sizes for J1–J6) is not published in the product page, the manuals or the URDF fetched.
See reference 66
ProvenanceReferences · 66
Each number in the text points here. Every entry states its confidence class in words and keeps its evidence one click away. How to read the labels.
Key to the badges
- Confidence: Verified
- A manufacturer or IntelliMake document says so, the project owner stated it as the design, or it was observed directly. It does not mean anyone measured it at S2.
- Confidence: Inferred
- Reasoned from Verified facts. The reasoning is printed with the record.
- Confidence: Assumed
- Plausible but untested. The record says how it would be checked.
- Kind: Gap
- Not known. No figure or answer is given in its place.
- Kind: Contradiction
- Sources disagree. Both sides are shown, and the site does not pick one silently.
- Kind: Recommendation
- Project advice drawn from the records it cites. Not a fact about the machine and not a confidence class, so the filter never hides it.
- Awaiting cell access
- Awaiting cell access: could be confirmed or corrected once the physical S2 cell can be observed.
- This project's simulation and agent design, not the physical cell
- This project's simulation and agent design, not the physical cell.
Image Credits
- A line drawing of the 850 arm with Joint 1 to Joint 6 labeled and a curved arrow at each joint showing its direction of rotation. © UFACTORY (Shenzhen UFACTORY Co., Ltd.). Source. Used with UFACTORY's written permission (2026-09-23), on the condition that each image links back to its source page.
- 3D model: © 2018 UFACTORY Inc., BSD-3-Clause, from UFACTORY Inc. (xArm-Developer/xarm_ros2). License text · Source
Sources for This Section
- Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY (manufacturer)
- IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org (IntelliMake)
- Kinematic and Dynamic Parameters of UFACTORY 850 (support article) · UFACTORY (manufacturer)
- Owner statements from 2026-09-24 onward (verbatim; S40 and later) · Derek Stringfellow (project owner)
- Robot Kinematics (Mech-Mind Software Suite manual 2.1.2, appendix) · Mech-Mind Robotics (secondary)
- The difference between UFACTORY xArm5, UFACTORY xArm6 and UFACTORY xArm7 (Help Center article) · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), Preface · UFACTORY (manufacturer)
- UFACTORY 850 product page · UFACTORY (manufacturer)
- UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY (manufacturer)
- UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY (manufacturer)
- UFACTORY Release Note v2.7.0 · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 3. Connection · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY (manufacturer)
- UFACTORY USA 850 product page · UFACTORY USA (manufacturer)
- xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY (manufacturer)
- xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY (manufacturer)
- xarm_ros2 (branch humble), xarm_description/config/kinematics/default/uf850_default_kinematics.yaml · UFACTORY (manufacturer)
IntelliMake diagrams are redrawn as native figures, © IntelliMake.org. UFACTORY does not endorse this platform.