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.
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.
Scroll
Look back
A question from earlier on, to keep it fresh. Skip it if you like; nothing depends on it.
Choose your depth
Four depths, one page. Switch at any time: every tier stays open to everyone. What the four tiers mean
1Beginner
The ideas behind the motion
For: Anyone with no robotics background: a visitor, a new operator, a manager Kind of task: Recognise 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.
Joint 1 at the base to Joint 6 at the tool, each turning about its own axis4. Image: UFACTORY
The control box decides
The control box is the core of the system: it holds the arm's control system5.
UFACTORY Studio runs inside the control box, and you open it in a web browser9.
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 centre 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 down10.
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 positions11.
How easily the arm gives under your hand is a teach sensitivity setting12.
When the power is off
With the power off, brakes inside the joints hold the arm in its pose13.
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 threshold14.
That means it notices a bump from the motor current, once contact has happened14.
No UFACTORY document this platform found calls this detection safety-rated15. This project's advice is to treat it as a controller feature, never as a validated safeguard16.
So the rule stays the same: keep out of the arm's working area while it runs17.
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 produce21.
A TCP move, or linear move, drives the tool along a path you choose in space, such as a straight line or an arc21.
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 matters22.
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 Inferred23.
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 claim24.
The joint modules also contain brakes that hold the pose when power is lost25.
From a program to the motors
This platform pieces the path together from UFACTORY's descriptions of each part, so it is Inferred26.
A program or a browser sends a command over Ethernet to the control box26.
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 threshold27.
So this collision detection works from the motor current in each joint14.
It is still a controller feature, not a validated safeguard16.
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 done28.
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. Simulation added in M2/M4 extends this; it does not define it
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()29.
Mode 0, position control. The controller enters it by default after start-up30.
Mode 1, servo mode. It runs only the latest target received, with no buffer31.
Mode 2, manual mode, for teaching by hand. Switch back to mode 0 when you are done28.
Mode 4, joint velocity control: each joint gets a speed32.
Mode 5, Cartesian velocity control: the TCP gets a velocity33.
Velocity commands take a duration: a positive value stops the motion after that many seconds, and 0 keeps the speed until it is changed34.
Mode 6, joint online trajectory planning: each new command interrupts the current motion and is re-planned from where the arm is35.
Mode 7, Cartesian online trajectory planning, which uses only the base coordinate system36.
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 own37.
State 2 is ready to receive and execute commands, in the Studio manual's words39. The Python SDK calls the same state "sleeping", so the sources disagree on its name40.
State 3 pauses a running motion; setting state 0 resumes it41.
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 occurs42.
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 set43.
State 6 makes the arm perform a decelerated stop at once44.
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 approximate45.
UFACTORY describes the tool's orientation as roll, pitch and yaw: rotations about the fixed X, Y and Z axes of the base frame46.
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 millimetres in all three47.
False bumps from a wrong payload
Collision detection can trigger falsely if the payload mass or centre of mass is set wrongly48.
In pick-and-place programs, UFACTORY's support article says the payload is typically set before the pick command and reset after the place command48.
Changing the payload is itself a critical setting, so the arm then waits in state 5 until you set state 043.
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, the M5 team Kind of task: Analyse 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 Inferred51.
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 approximate45.
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 yourself52.
Section 3's expert tier lists the link lengths; for example, the upper arm, a2, is 390 mm53.
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 base54.
In Cartesian moves, the joints can exceed their maximum speed and acceleration, because joint space and Cartesian space are related non-linearly55.
Error 24 means speed is over its limit56. This platform infers that a Cartesian move asking a joint for more than its maximum is one likely cause; UFACTORY does not link the two57.
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 buffer31.
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 state58.
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 it58.
Mode 3, Cartesian teaching, is marked invalid in the Python SDK, so do not plan on it50.
Check yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
Not settled
Open 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.
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.
In servo mode the controller accepts commands at up to 250 Hz, and commands sent faster are lost. UFACTORY suggests issuing smoothed, interpolated track points at a fixed frequency, preferably 100 Hz or 200 Hz, and for Cartesian servo recommends a command rate within 30-250 Hz.
Evidence · 4 citations
In servoj mode, the maximum receiving frequency of the control box is 250 Hz
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1
The 850 arm consists of a base and six rotary joints, numbered Joint 1 (at the base) to Joint 6; the last joint is the tool side, where end effectors attach.
Evidence · 2 citations
Quote not shown (over 40 words). See the source at: 2.1.1 Hardware Composition (docs site 'UFACTORY 850 硬件手册', English version; names the machine 'UFACTORY 850').
UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.1 Hardware Composition (docs site 'UFACTORY 850 硬件手册', English version; names the machine 'UFACTORY 850')
The Tool Center Point (TCP) is the reference point the arm positions. Without a TCP offset, the tool coordinate system sits at the flange centre; a TCP offset moves it to the actual tool point.
Evidence · 2 citations
If the TCP offset is not set, the default tool coordinate system is located at flange center.
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Tool Coordinate System'
In manual mode the arm compensates for gravity ('zero gravity'), so a person can move it by hand to teach positions.
Evidence · 1 citation
In this mode, the robotic arm will enter the ‘zero gravity’ mode, since the gravity is compensated, the user can guide the robotic arm position directly by hand.
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Manual Mode'
The 850 supports hand teaching: in Manual Mode, gravity compensation lets a user guide the arm directly by hand, with teach sensitivity adjustable from level 1 to 5.
Evidence · 2 citations
In this mode, the robotic arm will enter the ‘zero gravity’ mode, since the gravity is compensated, the user can guide the robotic arm position directly by hand.
UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Terms and Definitions, 'Manual Mode' and 'Teach Sensitivity', p.9 (manual names the machine '850' / 'UFactory 850')
UFACTORY's collision detection compares each joint's theoretical current with its actual current: the control system uses a dynamic model to calculate the theoretical current for each joint, and triggers collision detection when the difference exceeds a pre-set threshold.
Evidence · 3 citations
By comparing the theoretical current and actual current of each joint, the system determines whether a collision has occurred.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Introduction
If the difference exceeds a pre-set threshold, indicating that the joint may have encountered external resistance or collision, the system triggers the collision detection.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Section 1
No fetched UFACTORY document calls the 850's collision detection, safety boundary or reduced mode safety-rated, or gives them a performance level.
Why we infer this:Verified: collision detection is a model-based current comparison that UFACTORY says can false-trigger with wrong settings and can be disabled (level 0, Advanced Settings toggle, a documented default password); safety boundary and reduced mode are software settings exposed in Studio and the SDK. UFACTORY distinguishes safety signals (EI/SI, redundant pairs) from non-safety devices. Inferred: no fetched UFACTORY source assigns a PL, Category or safety rating to these software functions (see the gap on performance level); this is a statement about the documents fetched, not proof that no rating exists.
Evidence · 3 citations
By comparing the theoretical current and actual current of each joint, the system determines whether a collision has occurred.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Section 1
Never connect a safety signal to a non-safety PLC.Failure to follow this warning may result in serious injury or death due to an invalid safety stop function.
Kind: RecommendationThis project's simulation and agent design, not the physical cellProject design, not the physical cellsafety-140
Project advice
Treat the 850's collision detection, safety boundary and reduced mode as configurable controller functions, not as validated safeguards: they must not replace the risk-assessed protective devices wired to the EI and SI inputs.
This is advice from this project, based on: safety-087 Inferredsafety-062 Verifiedsafety-067 Verifiedsafety-073 Verifiedsafety-074 Verifiedsafety-057 Verified
Why:No fetched UFACTORY document gives these functions a safety rating or performance level (safety-087). Collision detection is a current-model comparison that can false-trigger and can be switched off (safety-062, safety-067); safety boundary and reduced mode are software settings (safety-073, safety-074). UFACTORY keeps safety signals separate from non-safety devices (safety-057). A function with no documented rating cannot stand in for a rated protective device.
The end effector mounts on the front end of the arm's wrist and carries the tool, such as a gripper or vacuum gripper, that does the work.
Evidence · 1 citation
The end effector, installed on the front end of the wrist of the robotic arm, is used to install special tools(such as grippers, vacuum gripper, etc.), which can directly perform work tasks.
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'End Effector'
The arm can be commanded in two ways: joint motion moves point to point in joint space (angles in degrees), while TCP (linear) motion moves the tool along a Cartesian path such as a line or an arc.
Evidence · 2 citations
To achieve point-to-point motion in joint space (unit: degree), the speed is not continuous between each command.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · Section 9.1.1 Joint Motion
TCP motion is the Cartesian space motion, with target position in Cartesian space coordinate and the end follows the specified trajectory(arc, line, etc.)
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'TCP Motion'
Kind: RecommendationThis project's simulation and agent design, not the physical cellProject design, not the physical cellapp-039
Project advice
Use a TCP (linear) move when the tool's path matters, for example lowering a part straight down into a slot, and a joint move when only the end point matters.
This is advice from this project, based on: app-028 Verifiedlim-023 Verifiedlim-024 Verified
Why:A joint move goes point to point in joint space, so the tool follows whatever path the joint angles produce; a TCP move drives the tool along a chosen Cartesian path such as a line or an arc (app-028). Only the TCP move controls the path in between. It also carries costs a joint move does not: it can stop near a singularity (lim-023), and its joints can exceed their maximum speed (lim-024). So it earns its place where the path itself matters.
The 850 has full 6-degree-of-freedom control in Cartesian space, so any reachable tool position and orientation can be specified; the 5-axis xArm 5 cannot do this.
Why we infer this:UFACTORY's article says 6-axis (xArm 6) and 7-axis arms have full 6-DOF Cartesian control, while the 5-axis xArm 5 is limited to 4 Cartesian DOF. The 850 is also a 6-axis, 6-DOF arm (app-016), and its Cartesian range includes roll, pitch and yaw of ±180° (850 hardware manual, Technical Specifications). The article does not name the 850, so this is inferred rather than stated.
Evidence · 2 citations
Both robotic arms have a full 6 degrees of freedom in Cartesian space.
The difference between UFACTORY xArm5, UFACTORY xArm6 and UFACTORY xArm7 (Help Center article) · UFACTORY · Section 3, 'Motion Characteristics of the UFACTORY xArm6 and UFACTORY xArm7'
How the 850's components work together: a computer or browser sends commands over Ethernet (UFACTORY's private TCP protocol) to the control box, which runs UFACTORY Studio and the controller. The control box powers the arm at 48 V DC and talks to the joints and to the tool over two RS-485 lines in the power and signal cable. Tools at the flange are powered (24 V) and controlled through the 12-pin tool connector.
Why we infer this:Synthesised from Verified manufacturer statements in this file: Studio runs inside the control box; the arm connects to the PC over Ethernet with private TCP; the arm cable's 8-pin connector carries 48 V, GND and separate RS-485 pairs labelled Arm and Tool; the tool connector supplies 24 V and signals. That the RS-485 lines carry joint-servo and tool traffic follows from the pin labels; UFACTORY does not describe the internal bus architecture in these words.
Evidence · 6 citations
UFACTORY Studio is a web-based software running inside the control box
UFACTORY's collision detection compares each joint's actual motor current with the current predicted by a dynamic model, and triggers when the difference exceeds a preset threshold.
Evidence · 2 citations
The collision detection feature of UFACTORY robotic arms relies on the combination of current and dynamic models. By comparing the theoretical current and actual current of each joint, the system determines whether a collision has occurred.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Introduction and section 1
If the difference exceeds a pre-set threshold, indicating that the joint may have encountered external resistance or collision, the system triggers the collision detection.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Section 1
Mode 2 is manual (joint teaching) mode: the arm compensates for gravity so the links can be moved by hand, and it should be switched back to mode 0 when teaching is done.
Evidence · 1 citation
Quote not shown (over 40 words). See the source at: 10.1 Mode 2: Manual Mode.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 2: Manual Mode
Velocity commands take a duration argument: a positive value stops the motion after that many seconds, and 0 keeps the speed until changed (firmware 1.8.0 or later).
Evidence · 3 citations
duration > 0: seconds, indicates the maximum number of seconds that this speed can be maintained
xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · vc_set_cartesian_velocity, parameter duration
Mode 6 is joint online trajectory planning: each new set_servo_angle command interrupts the current motion and is re-planned from the current position.
Evidence · 1 citation
Mode 6: Joint online planning Mode | Command sent by set_servo_angle(). In this mode, every time a motion command is received, the current motion command will be interrupted
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 6
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.
Evidence · 2 citations
2: sleeping
xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · get_state / state property, return values
Setting state 4 stops the arm at once; it then accepts no new commands until the state is set back to standby (0). The controller also enters state 4 on its own when any error occurs.
Evidence · 2 citations
State 4 | set: set the robot to STOP state, it will terminate any execution immediately and will not receive or execute any new command until the state is set back to STANDBY.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.2 State 4
State 5 (MODE_CHANGED) is entered on its own after critical settings change (mode, payload, TCP offset, collision sensitivity, etc.); the arm accepts no commands until state 0 is set.
Evidence · 1 citation
State 5 | MODE_CHANGED state, will automatically switch to this state if some critical configurations (mode, payload, TCP offset, collision sensitivity, etc) have been changed, and cannot receive and execute any command until set state 0.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.2 State 5
For Cartesian (linear or circular) motion the controller must solve inverse kinematics to turn a tool pose into joint angles; that solution may not exist, may not be unique, or may be approximate.
Evidence · 1 citation
Linear motion and circular linear motion belong to the Cartesian space trajectory planning, which needs to be solved by inverse kinematics. Therefore, there may be no solution, multiple solutions, and approximated solutions
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · Section 9.1.2 Linear Motion
Units differ by interface: the Python SDK and Blockly use degrees for joint angles and roll/pitch/yaw, while the raw communication protocol uses radians; positions are in millimetres in all three.
Current-based collision detection can trigger falsely if the TCP payload mass or centre of mass is set wrongly. UFACTORY's support article says that in pick-and-place programs the payload is typically set before the pick command and reset after the place command.
Evidence · 2 citations
Quote not shown (over 40 words). See the source at: Section 2.1 End Effector Load Setting.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Section 2.1 End Effector Load Setting
Mode 2 can only be entered from mode 0: from any other mode, a request for mode 2 first switches to mode 0, and mode 2 takes effect on a second command.
Evidence · 1 citation
Mode 2 must be configured via Mode 0.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 2, Note
Forward kinematics runs the other way: given the six joint angles and the arm's geometry (link lengths, joint zero positions), there is exactly one resulting TCP pose. UFACTORY publishes the 850's geometry as D-H parameters.
Why we infer this:The general definition comes from Mech-Mind, a robot-vision software vendor whose manual documents kinematics for integrating with many arm brands. It is a credible secondary educational source, but not UFACTORY's. It agrees with UFACTORY's own account of inverse kinematics (app-029). UFACTORY's publication of modified and standard D-H parameters for the 850 supplies the link geometry that forward kinematics requires.
Evidence · 2 citations
Forward kinematics calculates the TCP based on the known joint positions. By substituting joint positions into the robot’s configuration equations (including link lengths, joint zero positions, and rotation directions), the TCP can be uniquely determined.
UFACTORY publishes both modified and standard Denavit-Hartenberg (D-H) kinematic parameters and link mass parameters for the 850, so users can model its kinematics and dynamics themselves.
Evidence · 3 citations
1. Modified D-H Parameters
Kinematic and Dynamic Parameters of UFACTORY 850 (support article) · UFACTORY · Section headings
In UFACTORY's modified D-H parameters for the 850, the link parameter a2 (upper arm length, Joint 2 to Joint 3) is 390 mm, and the uf850 kinematics file agrees (0.39 m).
Near a singularity the arm cannot carry out planned Cartesian (linear or circular) moves; it stops instead. UFACTORY advises avoiding the central area near the base.
Evidence · 2 citations
When the robot performs motion planning (linear, circular, etc., excluding joint movements) near the singularity point, it will stop to avoid high instantaneous speed of the joint when it passes the singularity point.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · Section 9.3 Singularity
In Cartesian moves the joints can exceed their maximum speed and acceleration limits, because joint space and Cartesian space are related non-linearly.
Evidence · 1 citation
due to the nonlinear relationship between the joint space and Cartesian space, the joint motion may exceed its maximum speed and acceleration limits.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · Section 9.1.2 Linear Motion
A straight-line or circular (Cartesian) move that would drive a joint past its maximum speed is one likely cause of controller error 24, 'Speed Exceeds Limit'. UFACTORY does not link the two in one statement.
Why we infer this:Verified: in Cartesian moves the joints may exceed their maximum speed and acceleration, because joint space and Cartesian space are related non-linearly (lim-024). Verified: controller error 24 means speed exceeds its limit (iface-129). No UFACTORY source says that such a Cartesian move raises error 24, so the link is inferred. It is a cause to check first, not the only possible one.
Evidence · 2 citations
due to the nonlinear relationship between the joint space and Cartesian space, the joint motion may exceed its maximum speed and acceleration limits.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · Section 9.1.2 Linear Motion
In the Modbus TCP map, holding register 32 (0x20) is the robot mode and holding register 33 (0x21) is the robot state.
Why we infer this:Verified: UFACTORY's ModbusTCP User Instructions (UF_ModbusTCP_Manual, in the xArm-Python-SDK repository) state this. That manual names no robot model, and iface-026 establishes that the 850 controller accepts standard Modbus TCP on port 502, but no 850-specific UFACTORY document gives this register map or its details; the 850 bridging records (iface-145, iface-146) cover UFACTORY Studio and the SDKs, not this manual. Verified: UFACTORY's release note for firmware V2.7.0 lists, in one firmware change list, a Modbus TCP change and compatibility for xArm 850 arms whose serial number has an 'E' as the third character from the end (lim-030). Inferred: the 850 therefore runs the same series firmware that carries this Modbus TCP interface, and the interface very probably behaves the same on the 850, but this is not confirmed for the 850 until an 850 document or the physical controller shows it.
The 850 control box front panel has a ROBOT PWR indicator (on when the arm is powered), a STATE indicator (flashes when the control box is powered), a LAN indicator (on when communicating normally), and an EMERGENCY STOP button.
Evidence · 4 citations
ROBOT power indicator ROBOT PWR The light is on, indicating that the 850 is powered on.
UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY · Hardware Section 1.1.3 Control Box Description, p.20 (manual names the machine '850' / 'UFactory 850')
UFACTORY says the control box must be placed outside the arm's working range so that its emergency stop button can be reached in an emergency.
Evidence · 1 citation
The Control Box must be placed outside the working range of the robotic arm to ensure the emergency stop button can be pressed once an emergency occurs.
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.
Evidence · 1 citation
Industrial-grade harmonic drive and servomotors with 17 bit encoder
UFACTORY 850 product page · UFACTORY · Overview (the only drive-train description found) (page names the machine 'UFACTORY 850'; spec tables say 'UFactory 850')