Operate: virtual training and commissioning of a simulated arm
Twin: a twin-ready view of the arm and its cell
§4 xArm 6
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.
The arm has six rotary joints, numbered from Joint 1 at the bottom up to the tool side1.
The control box is the core of the system: it holds the arm's control system4.
TCP stands for Tool Center Point. With no offset set, it sits at the centre of the flange at the end of the arm5.
S6 in one line: S6 is the xArm 6 arm that handles parts after processing, routing them to inspection, rework or shipping6.
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
The arm is made up of a base and rotary joints, numbered from the bottom up: Joint 1, Joint 2 and so on. Each joint is one degree of freedom, and the xArm 6 has six. The last joint is the tool side, where the tool attaches1.
The control box decides
The control box is the core of the system: it holds the arm's control system4.
UFACTORY Studio runs inside the control box, and any computer with a web browser can open it7.
The point the arm aims
TCP stands for Tool Center Point. If no offset is set, it sits at the centre of the flange at the end of the arm. An offset, in millimetres, moves it to the real tool point5.
The base coordinate system is a frame on the arm's mounting base. X is front and back, Y is left and right, and Z is up and down8.
Two ways to move
A joint move takes the fastest path to the target, and the tool's path is not a straight line9.
A linear move keeps the Tool Center Point on a straight line, while each joint makes a more complex movement to hold it there9.
Teaching by hand
In manual mode the arm compensates for gravity, which UFACTORY calls "zero gravity", so a person can guide it by hand10.
Hand teaching is one of the features on UFACTORY's product page11.
When the power fails
When the power fails, brakes inside the joints hold the arm in its pose12.
Sensing a bump
UFACTORY's product page says collision detection is available on all its cobots11.
The same page calls the xArm a collaborative robot, yet the manual says no people or other equipment should be in the working area while the arm operates. Neither source says how the two fit together13.
This project's advice is to treat collision detection as a controller function you can configure, not as a validated safeguard14.
So the rule stays the same: keep out of the arm's working area while it runs15.
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 what six joints buy you, what is inside a joint, how the parts connect, how the arm senses a bump, and what hand teaching needs first. It is for someone who will work near or with the cell.
Why six joints matter
UFACTORY says the xArm 6 has a full six degrees of freedom in Cartesian space. On the xArm 5, straight-line and circular moves have only four: x, y, z and yaw17.
What is inside a joint
UFACTORY's product page says the joints use industrial-grade harmonic drives and servomotors18.
The joint modules also contain brakes that hold the arm's pose when the power fails. The manual says to take protective measures when releasing them19.
How the parts connect
The xArm manual describes the connections part by part20.
A computer's browser or SDK connects to the control box over Ethernet, using UFACTORY's private TCP protocol2021.
The arm's power supply and signal cables plug into the control box, and the cable connector lists separate RS-485 lines for the arm and for the tool20.
The 12-pin tool connector provides power and control signals for grippers and sensors20.
Sensing a bump from motor current
For each joint, a dynamic model of the arm works out the current the joint should draw. Collision detection compares that with the joint's actual current, and triggers when the difference passes a pre-set threshold22.
The model takes in the joint positions, speeds and accelerations, the load's weight and centre of mass, the mounting direction and the joint friction22.
Studio's Settings page says that when a joint's torque deviation leaves its normal range during motion, the arm stops on its own to prevent injury to the arm or operator23.
This project's advice: treat it as a controller function, not a validated safeguard14.
Hand teaching has a number, and a checklist
The controller numbers manual mode, for hand teaching, as mode 2. In it the arm enters zero-gravity mode so its links can be dragged, and it should be switched back to mode 0 afterwards24.
Before turning manual mode on, set the mounting direction and the TCP load correctly. Otherwise, UFACTORY says, inaccurate gravity compensation may leave the arm unable to stay still25.
A wrong mounting direction also causes frequent collision warnings and uncontrolled motion in manual mode10.
Studio can record a hand-guided path by sampling the joint positions at 250 Hz for up to 5 minutes, and play it back at x1, x2 or x4 speed26.
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 provides 7 motion modes and 6 states, which match the Python SDK calls set_mode() and set_state()2.
Mode 0, position control. The control box enters it by default after start-up. In it, set_servo_angle makes point-to-point joint moves, set_position makes straight-line moves, move_arc_lines inserts arcs between straight lines, and move_circle makes a circle through three points28.
Mode 1, servo mode. It moves to each joint target at the fastest speed, 180°/s, with no buffer, running only the latest target received3.
Mode 2, manual mode, for teaching by hand. It must be set via mode 0: from any other mode, the first request switches to mode 0 and only a second one takes effect24.
Modes 6 and 7, online planning for joint and Cartesian moves: each new command interrupts the current one and is planned from where the arm is. Mode 7 can use only the base coordinate system29.
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 own30.
State 1 means the arm is moving. State 2 means it is ready to receive and execute commands30. The Python SDK calls state 2 "sleeping", so the sources disagree on its name31.
State 3 pauses a running motion; setting state 0 resumes it32.
State 4 stops the arm at once, and it then accepts no new command until it is set back to standby. The controller also goes to state 4 on its own when any error occurs32.
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 command until state 0 is set33.
State 6 makes the arm perform a decelerated stop at once33.
Errors and warnings are not reported actively: they come back in the reply to the next command you send. After such an error the arm stops at once and discards its cached commands, and you must clear the error by hand34.
From a tool pose to joint angles
Straight-line and circular moves are planned in Cartesian space and solved by inverse kinematics, so there may be no solution, several, or only an approximate one. Because joint space and Cartesian space are related non-linearly, the joints may also exceed their maximum speed and acceleration35.
UFACTORY gives the tool's orientation as roll, pitch and yaw: successive rotations about the fixed X, Y and Z axes of the base frame. +180° and -180° are the same point, so the arm may report either36.
Units depend on the interface. The Python SDK and Blockly use degrees for joint angles and for roll, pitch and yaw; the communication protocol uses radians. X, Y and Z are in millimetres in all three37.
False bumps from a wrong setting
UFACTORY's support article says collision detection is sometimes triggered falsely, often in connection with the end-effector load, centre of mass, mounting direction or friction parameters38.
It recommends updating the weight and centre of mass after changing the tool or workpiece, updating the payload after the pick and the release in pick-and-place programs, and setting the mounting direction correctly38.
Changing the payload is itself a critical setting, so the arm then waits in state 5 until you set state 033.
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: 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
The Python SDK computes both directions: get_forward_kinematics takes one joint angle per axis, and get_inverse_kinematics takes a pose [x, y, z, roll, pitch, yaw]41.
Inverse kinematics may find no solution, several, or only an approximate one35.
UFACTORY publishes modified and standard Denavit-Hartenberg (D-H) parameters and link mass parameters for the xArm 642. Section 3's expert tier lists the link lengths; for example, Joint 1 has d = 267 mm43.
The mass parameters come in four sets, one for each hardware version, Model 1 to Model 444. This project's advice: read the arm's serial number first, because its version decides which set applies45.
Where Cartesian control breaks down
A singularity occurs when the axes of any two joints lie on one straight line. There the arm's degrees of freedom are degraded, and some joints may turn too fast46.
Near one, planned straight-line and circular moves stop to avoid high joint speed; joint moves do not. UFACTORY advises avoiding the singularity or passing it with a joint move46.
Studio advises avoiding the central area near the base. Moving the wrist close to the cylinder directly above and below the base makes the joints move fast even when the arm moves slowly, and makes a risk assessment difficult47.
In Cartesian moves the joints may exceed their maximum speed and acceleration, because joint space and Cartesian space are related non-linearly35.
Error C24 means speed is over its limit, and Studio's advice is to check whether the arm is at a singularity or to reduce the speed and acceleration48.
Feeding servo mode
In servo mode the control box accepts commands at up to 250 Hz. Commands sent faster are lost3.
UFACTORY suggests sending smoothed, interpolated track points at a set rate, preferably 100 Hz or 200 Hz, and warns, for safety, not to give a distant target at once3.
Servo Cartesian motion moves to each target at the fastest speed, 1 m/s, with no buffer. UFACTORY recommends 30–250 Hz, since below 30 Hz the motion may be discontinuous49.
Reading mode and state from outside
In UFACTORY's Modbus TCP map, holding registers 32 and 33 (0x20, 0x21) hold the robot mode and state50.
That record is Inferred: the map comes from a UFACTORY document that names no robot model, and reading those registers on a real controller would confirm it50.
Mode 3, Cartesian teaching, is marked invalid in the Python SDK, so do not plan on it39.
Check yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
Not settled
Open questions · 4
What the sources do not settle for this section. Nothing here is papered over with a plausible number.
Kind: Contradiction
UFACTORY's xArm product page presents the xArm as a collaborative robot ('cobot'), while the xArm manual says no people or other equipment should be in the working area when the arm is in operation. Neither source says how the two fit together.
The Python SDK and the Studio manual name state 2 differently: the SDK's state list calls it 'sleeping', while the Studio manual says the robot is ready to receive and execute commands.
Per-joint component data for the xArm 6 (motor model and rating, harmonic-drive ratio, encoder type and resolution, joint-module sizes) is not published in the xArm manual or the product page; the product page names only harmonic drives and servomotors and, unlike the 850's page, gives no encoder resolution.
Sources disagree on how the xArm AC control box powers the arm: the manual's controller chapter says its internal supply converts 100-240 V AC into 12 V and 48 V DC for the control box and the arm, while the common specification table gives the arm's input as 24 V DC, 20.8 A and the AC controller's output as 24 V DC, 20.8 A.
The xArm arm consists of a base and rotary joints, each joint one degree of freedom, numbered Joint 1, Joint 2, Joint 3 and so on from the bottom up; the last joint is the tool side, where end effectors attach. The xArm 6 has 6 degrees of freedom.
Evidence · 2 citations
Quote not shown (over 40 words). See the source at: 2.1.1 Hardware Composition (chapter applies to models XF1305, XI1305, XS1305; text not split by model).
UFACTORY xArm Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.1 Hardware Composition (chapter applies to models XF1305, XI1305, XS1305; text not split by model)
The controller provides 7 motion modes and 6 states, which correspond to the Python SDK calls set_mode() and set_state().
Evidence · 1 citation
The controller provides 7 motion mode and 6 state, corresponding to python SDK set_mode(), set_state().
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10. introduction (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Mode 1 is servo mode: set_servo_angle_j moves to each joint target at the fastest speed (180°/s), with no buffer, executing only the latest target received. The control box accepts up to 250 Hz and loses commands sent faster; UFACTORY suggests issuing smoothed, interpolated track points at a certain frequency, preferably 100 Hz or 200 Hz, and warns, for safety, not to give a distant target at once.
Evidence · 6 citations
Move to the given joint position with the fastest speed (180°/s) and acceleration (unit: degree/radian). This command has no buffer, only execute the latest received target point
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Joint Motion (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
In UFACTORY's terminology the control box is the core of the robotic arm, integrating its control system, and the end effector mounts on the front end of the wrist to carry tools such as grippers that do the work.
Evidence · 2 citations
The control box, core part of the robotic arm, is the integration of the robotic arm control system.
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Control Box' (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
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'
TCP stands for Tool Center Point. With no TCP offset set, the default tool coordinate system sits at the flange centre; a TCP offset, in mm, moves it to the actual tool point.
Evidence · 3 citations
TCP: Tool Center Point.
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'TCP' (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
UFACTORY Studio is web-based software that runs inside the control box, so no installation is needed and any computer with a browser can use it.
Evidence · 1 citation
UFACTORY Studio is a web-based software running inside the control box, which means no additional installation needed before running the robot. Any computer with a browser has the access after 1 minute hardware connection.
UFACTORY xArm product page · UFACTORY · Tech Specs > Software (xArm product page, which covers the xArm 5, 6 and 7)
The base coordinate system is a Cartesian frame on the arm's mounting base: X is front and back, Y left and right, Z up and down. A user coordinate system can be defined as any other reference frame; once set, it becomes the world origin instead of the robot base.
Evidence · 3 citations
Quote not shown (over 40 words). See the source at: Glossary, 'Base Coordinate System' (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to).
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Base Coordinate System' (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Joint motion is point-to-point motion in joint space: it reaches the target by the fastest path, and the end's trajectory is not a straight line; linear motion moves the tool centre point in a straight line in Cartesian space while each joint makes a more complex movement to keep it there.
Evidence · 3 citations
To achieve point-to-point motion in joint space (unit: degree)
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.1.1 Joint Motion (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
The trajectory of tool center point in the Cartesian space is a straight line. Each joint performs a more complex movement to keep the tool in a straight path.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.1.2 Linear Motion
In manual mode the arm compensates for gravity ('zero gravity') so a user can guide it by hand. The mounting direction tells the control box how the arm sits relative to gravity; if it is set wrongly the arm cannot recognise gravity accurately, which causes frequent collision warnings and uncontrolled motion in manual mode.
Evidence · 3 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 Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Manual Mode' (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Setting the mounting direction of the robotic arm is mainly to inform the control box of the current relationship between the actual mounting direction of the robotic arm and the direction of gravity.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.3 Coordinates, Mounting
The xArm manual says the xArm joint module has brakes inside, which, in the manual's words, 'will remain manipulator's pose when a power outage occurs'.
Evidence · 1 citation
The xArm joint module has brakes inside, which will remain manipulator’s pose when a power outage occurs.
UFACTORY xArm Hardware Manual (online), 1. Safety · UFACTORY · 1.3, DANGER list [series text: names no single model]
UFACTORY's xArm product page presents the xArm as a collaborative robot ('cobot'), while the xArm manual says no people or other equipment should be in the working area when the arm is in operation. Neither source says how the two fit together.
Kind: RecommendationThis project's simulation and agent design, not the physical cellProject design, not the physical cellsafety-594
Project advice
Treat the xArm 6's collision detection, safety boundary and reduced mode as configurable controller functions, not validated safeguards: they must not replace risk-assessed protective devices wired to the EI and SI inputs.
This is advice from this project, based on: safety-578 Gapsafety-559 Verifiedsafety-560 Verifiedsafety-561 Verifiedsafety-564 Verifiedsafety-565 Verifiedsafety-544 Verified
Why:No fetched UFACTORY document gives these functions a Performance Level or SIL. Collision detection is a current-model comparison that UFACTORY says can false-trigger and can be switched off; the safety boundary and reduced mode are settings. A function with no documented rating cannot stand in for a rated protective device.
UFACTORY's common specifications for the xArm 5, 6 and 7 give the arm's communication protocol as 'Private TCP(custom)', and both the AC and DC control boxes communicate over Ethernet.
UFACTORY says the xArm 6 and xArm 7 both have a full 6 degrees of freedom in Cartesian space, whereas the xArm 5's linear and circular moves have 4 ([x, y, z, yaw]).
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'
UFACTORY's xArm product page says the xArm's joints use industrial-grade harmonic drives and servomotors.
Evidence · 1 citation
Industrial-grade harmonic drive and servomotors guarantee 24/7 working without stop.
UFACTORY xArm product page · UFACTORY · Overview, 'Durable Collaborative robots for your automation' (xArm product page, which covers the xArm 5, 6 and 7)
The xArm's joint modules contain brakes that hold the arm's pose when a power outage occurs; the manual says to take protective measures when releasing them.
Evidence · 2 citations
The xArm joint module has brakes inside, which will remain manipulator’s pose when a power outage occurs.
UFACTORY xArm Hardware Manual (online), 1. Safety · UFACTORY · 1. Safety, general cautions (manual for the xArm series; this passage names no single model)
When releasing the brakes of xArm, please take protective measures to prevent the robotic arm or operator from damage or injury.
UFACTORY xArm Hardware Manual (online), 1. Safety · UFACTORY · 1. Safety, general cautions (manual for the xArm series; this passage names no single model)
How the xArm system connects, in the xArm manual: the control box communicates over Ethernet using UFACTORY's private TCP protocol; the arm's power supply and signal cables plug into the control box, and the cable connector lists separate RS-485 lines for the arm and for the tool; and the 12-pin tool connector provides power and control signals for grippers and sensors.
Evidence · 5 citations
Robotic Arm Communication Protocol | Private TCP(custom)
UFACTORY xArm Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.2.3 Definition of Industrial Connector (chapter text is not split by model)
How the xArm 6's components work together: a computer's browser or SDK connects over Ethernet (UFACTORY's private TCP protocol) to the control box, which runs UFACTORY Studio. The control box connects to the arm through separate power and communication cables; the communication cable's connector carries two RS-485 pairs, one labelled Arm and one labelled Tool. Tools at the flange get power and signals from the 12-pin tool connector.
Why we infer this:Synthesised from Verified manufacturer statements: Studio runs inside the control box; the arm communicates over Ethernet with a private TCP protocol; the manual lists a separate power cable and communication cable, and the 6-pin connector carries RS-485 pairs labelled Arm and Tool; the tool connector supplies power and control signals. That the Arm and Tool RS-485 pairs carry joint and tool traffic is read from the pin labels; the manual does not describe the internal bus architecture. The supply voltage from control box to arm is left out because the sources disagree on it (spec-540).
Evidence · 5 citations
UFACTORY Studio is a web-based software running inside the control box
UFACTORY xArm product page · UFACTORY · Tech Specs > Software (xArm product page, which covers the xArm 5, 6 and 7)
Robotic Arm Communication Protocol Private TCP(custom)
UFACTORY xArm Hardware Manual (online), 8. Technical Specifications · UFACTORY · 'Robotic Arm Communication Protocol' row (section '8.1 xArm5/xArm6/xArm7 Common Specifications': applies to all three models)
UFACTORY xArm Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.2.3 Definition of Industrial Connector (manual for the xArm series; this passage names no single model)
UFACTORY's collision detection compares each joint's theoretical current, calculated from a dynamic model, with its actual current, and triggers when the difference exceeds a pre-set threshold. The model takes in joint position, speed and acceleration, load weight and centre of mass, mounting direction and joint friction.
Evidence · 4 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 (applies to UFACTORY robotic arms; the article's friction table names the xArm 5/6/7)
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
Quote not shown (over 40 words). See the source at: Section 1, list of model factors.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Section 1, list of model factors
UFACTORY Studio's Settings page says that when the torque deviation detected at a joint exceeds a normal range during motion, the arm stops automatically to prevent injury to the arm or operator. It gives collision sensitivity as levels 1 to 5: the higher the level, the smaller the additional torque needed to trigger collision protection. It says an inaccurate load or installation direction may cause false alarms, and that during some high-load or high-speed moves, once the load and installation direction are confirmed accurate, the sensitivity can be lowered, but lowering it below 3 is not recommended.
Evidence · 3 citations
Quote not shown (over 40 words). See the source at: 7.1.1 Parameters, Collision Detection Sensitivity [general Studio text; the Studio manual says it applies to the xArm6].
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1 Parameters, Collision Detection Sensitivity [general Studio text; the Studio manual says it applies to the xArm6]
Quote not shown (over 40 words). See the source at: 7.1.1, Collision Detection Sensitivity [general Studio text; the Studio manual says it applies to the xArm6].
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1, Collision Detection Sensitivity [general Studio text; the Studio manual says it applies to the xArm6]
During certain high loads or high speed movements, if you confirm that the load or installation direction is set accurately, you can try to lower the collision sensitivity, but it is not recommended to lower it to less than 3.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1, Collision Detection Sensitivity [general Studio text; the Studio manual says it applies to the xArm6]
Mode 2 is manual mode: the arm enters zero-gravity mode so the user can drag its links to teach, and should be switched back to mode 0 afterwards. Mode 2 must be set via mode 0: from a non-zero mode, a request for mode 2 first switches to mode 0, and mode 2 takes effect only on a second command.
Evidence · 2 citations
In this mode, the robotic arm will enter the zero gravity mode, and the user can freely drag the links of the robotic arm to complete the teaching function. If the drag teaching is completed, switch back to mode 0.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 2: Manual Mode (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Before manual (joint teaching) mode is turned on, the mounting direction and TCP load must be set correctly; otherwise, UFACTORY says, inaccurate gravity compensation may leave the arm unable to stay still.
Evidence · 1 citation
Quote not shown (over 40 words). See the source at: 10.1 Mode 2, NOTE (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to).
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 2, NOTE (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
UFACTORY Studio records the arm's trajectory in free driving by recording joint positions at 250 Hz, for up to 5 minutes, and plays it back exactly at x1, x2 or x4 speed; the recording can be imported into Blockly.
Evidence · 1 citation
Quote not shown (over 40 words). See the source at: 4.2 Recording (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to).
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.2 Recording (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Kind: RecommendationAwaiting cell accessThis project's simulation and agent design, not the physical cellProject design, not the physical cellsafety-599
Project advice
Until the S6 emergency stops, guarding, Control Box position and risk assessment are confirmed at the cell, act as though none of them exists: stay out of the xArm 6's working area while it runs, and do not rely on a safeguard nobody has confirmed.
Awaiting cell access: this could be confirmed or corrected once the physical S6 cell can be observed.
This is advice from this project, based on: safety-586 Gap, awaiting cell accesssafety-587 Gap, awaiting cell accesssafety-588 Gap, awaiting cell accesssafety-589 Gap, awaiting cell accesssafety-511 Verified
Why:The manual says no people should be in the working area during operation, and none of the S6 safety provisions it calls for has been confirmed. Assuming they exist would put people at risk if they do not.
Mode 0, position control, is the mode the control box enters by default after start-up. In it, set_servo_angle makes point-to-point joint moves, set_position and set_position_aa make straight-line Cartesian moves, move_arc_lines inserts arcs between straight lines with continuous speed, and move_circle makes circular moves through three points.
Evidence · 7 citations
The control box enters this mode by default after startup.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 0 (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
To achieve the point-to-point motion of joint space (unit: degree/radian), the speed between each command is discontinuous. Python Example: set_servo_angle
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 0, Joint Motion
To achieve linear motion between Cartesian coordinates (unit: mm), the speed between each instruction is discontinuous. Python Example: set_position, set_position_aa
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 0, Linear Motion
Modes 6 and 7 are online planning modes for joint moves (set_servo_angle) and Cartesian moves (set_position, set_position_aa): each new command interrupts the current one and is planned from the current position. Mode 7 can use only the base coordinate system as reference.
Evidence · 3 citations
Command sent by set_servo_angle(). In this mode, every time a motion command is received, the current motion command will be interrupted, and then the motion command will be planned and executed from the current position
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 6 (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Command sent by set_position() or set_position_aa(). In this mode, every time a motion command is received, the current motion command will be interrupted, and then the motion command will be planned and executed from the current position
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 7
Setting state 0 puts the arm in STANDBY in its current mode and clears the error code, after which the reported state switches to 2 on its own. Reported state 1 means the arm is in motion, and state 2 that it is ready to receive and execute commands.
Evidence · 3 citations
Set: configure the robot the be STANDBY state in corresponding mode, and clear the error code as well. Note: after this setting, the feedback state will switch to 2(REDDY) automatically.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.2 State 0 (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
The Python SDK and the Studio manual name state 2 differently: the SDK's state list calls it 'sleeping', while the Studio manual says the robot is 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, return values (SDK documentation is not model-specific)
Setting state 3 pauses a running motion, which state 0 resumes. Setting state 4 stops the arm, terminating any execution immediately; it then accepts no new command until set back to STANDBY, and the controller also switches to state 4 by itself when any error occurs.
Evidence · 3 citations
set: set the robot to a PAUSED state when executing motion commands, the motion can be resumed by setting state 0.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.2 State 3 (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
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 automatically when critical settings such as mode, payload, TCP offset or collision sensitivity change, and the arm accepts no command until state 0 is set. Setting state 6 performs a decelerated stop immediately.
Evidence · 2 citations
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 (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Controller errors and warnings are fed back passively, in the reply to whatever command the user sends next, not reported actively. After such an error the arm stops immediately and discards the control box's cached commands, and the user must clear the error manually.
Evidence · 2 citations
This error/warning signal will be fed back when the user sends any command; The feedback is passive and not actively reported.
UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 Control Box Error Code and Handling (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
After the above error occurs, the robotic arm will stop working immediately and discard the Control Box cache command. Users need to clear these errors manually to allow normal operation.
UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1
Linear and circular moves are Cartesian trajectory planning solved by inverse kinematics, so there may be no solution, several solutions or an approximate one; and because joint space and Cartesian space are related non-linearly, the joints may exceed their maximum speed and acceleration.
Evidence · 1 citation
Quote not shown (over 40 words). See the source at: 9.1.2 Linear Motion (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to).
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.1.2 Linear Motion (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
UFACTORY gives orientation as roll, pitch and yaw: successive rotations about the fixed X, Y and Z axes of the reference (base) frame, R = Rz(yaw)·Ry(pitch)·Rx(roll). The +180° and -180° points coincide, so the arm may report either.
Evidence · 4 citations
Roll/Pitch/Yaw(RPY): Roll/Pitch/Yaw sequentially rotates around the X / Y / Z of the selected coordinate system (base coordinate system).
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, 'Roll/Pitch/Yaw(RPY)' (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
The +180° and -180° points of the Roll/Pitch/Yaw are coinciding in the space, and the valid range is ±180°, so it is possible to have both ±180° when the robotic arm is reporting the position.
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.4, Linear Motion
UFACTORY's xArm manual gives different units by interface: the Python SDK and Blockly use degrees for roll, pitch, yaw and joint angles, while the communication protocol uses radians; X, Y and Z are in millimetres in all three.
UFACTORY xArm Hardware Manual (online), Preface · UFACTORY · Unit Definition table, 'X(Y/Z)' row (the Preface applies to models XF1305, XI1305, XS1305; this table is not split by model)
UFACTORY's support article says collision detection may sometimes be falsely triggered, often in relation to the end-effector load, centre of mass, installation orientation and friction parameters. It recommends updating the weight and centre of mass after changing the end effector or workpiece, updating the payload after pick and release actions in pick-and-place programs, setting the mounting direction correctly, and reloading the joint friction parameters after replacing the control box.
Evidence · 5 citations
In practical applications, the robot's collision detection function may sometimes be falsely triggered. This phenomenon is often related to the end effector load, center of mass, installation orientation, and friction parameters.
Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY · Section 2 [names UFACTORY robotic arms generally]
In the Python SDK, mode 3 (Cartesian teaching) is marked invalid. Mode 4 is joint velocity control (vc_set_joint_velocity) and mode 5 Cartesian velocity control (vc_set_cartesian_velocity); each call needs its mode set first and firmware 1.6.9 or later.
Evidence · 4 citations
3: cartesian teaching mode (invalid)
xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · set_mode, parameter mode (SDK documentation is not model-specific)
UFACTORY Studio's glossary gives the collision sensitivity range as 0 to 5, where 0 means collision detection is not enabled, and the Python SDK's set_collision_sensitivity takes a value of 0 to 5.
Evidence · 2 citations
The collision sensitivity range is from 0 to 5 level. When it is set to 0, it means that collision detection is not enabled.
UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY · Glossary, Collision Sensitivity [general Studio text; the Studio manual says it applies to the xArm6]
The Python SDK can compute kinematics: get_forward_kinematics takes a list of joint angles (one per axis), get_inverse_kinematics takes a pose [x, y, z, roll, pitch, yaw], and get_dh_params reads the DH parameters (firmware 2.0.0 or later).
Evidence · 6 citations
Get forward kinematics
xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · get_forward_kinematics (SDK documentation is not model-specific)
UFACTORY publishes separate mass parameters for four versions of the xArm 6 (Model 1 to Model 4), and tells them apart by the arm's serial number; the manual says the 1305 model of the xArm series is model 4.
Awaiting cell access: this could be confirmed or corrected once the physical S6 cell can be observed.
Evidence · 6 citations
xArm 6 - Model 1
Kinematic and Dynamic Parameters: xArm 6 (support article) · UFACTORY · 3. Mass Parameters, table headings
UFACTORY xArm Hardware Manual (online), 7. Production Information · UFACTORY · 7.13 DH Parameters (manual for the xArm series; this passage names no single model)
Read the S6 xArm 6's serial number before relying on any figure the sources disagree on (weight, J2 and J3 ranges): UFACTORY distinguishes four xArm 6 versions by serial number, and the S6 arm's version decides which mass parameters apply.
Awaiting cell access: this could be confirmed or corrected once the physical S6 cell can be observed.
This is advice from this project, based on: comp-511 Verified, awaiting cell accessspec-506 Contradiction, awaiting cell accessspec-516 Contradiction, awaiting cell accessspec-517 Contradiction, awaiting cell access
Why:The mass parameters are published per version (comp-511), so the S6 arm's version must be known to use them. The sources that disagree on weight and joint ranges (spec-506, spec-516, spec-517) do not say whether version explains the difference; knowing the version is a cheap first step, not a resolution. The serial number is on the physical arm, so this needs cell access.
Evidence · 2 citations
The purpose of this article is to guide the user to distinguish the model of UFactory xArm by SN.
Kinematic and Dynamic Parameters of xArm Series: telling the model by SN (support article) · UFACTORY · Introduction
A singularity occurs when the axes of any two joints lie on one straight line; the arm's degrees of freedom are degraded and some joints may turn too fast. Near one, planned Cartesian moves (not joint moves) stop to avoid high joint speed, so UFACTORY advises avoiding it or passing it with a joint move.
Evidence · 2 citations
Quote not shown (over 40 words). See the source at: 9.3 Singularity (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to).
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.3 Singularity (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
UFACTORY Studio says that near a singularity, planned Cartesian moves (linear, circular, but not joint moves) cannot be performed correctly and the arm stops to avoid a high instantaneous joint speed. It advises avoiding the central area near the base, and, when choosing a mounting place, considering the cylindrical volume directly above and below the base. It says moving the wrist joint close to that volume should be avoided if possible, because it makes the joints move fast even when the arm moves slowly and makes a risk assessment difficult.
Evidence · 4 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 · 9.3 Singularity, Characteristics [general Studio text; the Studio manual says it applies to the xArm6]
so the robotic arm should try to avoid passing directly the central area near the base, which is likely to cause 1st Joint speed too high.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.3 Singularity [general Studio text; the Studio manual says it applies to the xArm6]
It is important to consider the cylindrical volume directly above and directly below the base of the robotic arm when a mounting place for the robotic arm is chosen.
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.3, Note [general Studio text; the Studio manual says it applies to the xArm6]
Quote not shown (over 40 words). See the source at: 9.3, Note [general Studio text; the Studio manual says it applies to the xArm6].
UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY · 9.3, Note [general Studio text; the Studio manual says it applies to the xArm6]
Further controller errors in UFACTORY Studio's list: C21 kinematic error, C22 self-collision, C23 joint angle beyond its limit, C24 speed beyond its limit (check for a singularity or reduce speed and acceleration), C25 planning error, C35 safety boundary limit and C37 abnormal motion in manual mode.
Evidence · 7 citations
C21 | Kinematic Error
UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 table (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
Servo Cartesian motion (servo_cartesian) moves to each Cartesian target at the fastest speed (1 m/s) with no buffer; UFACTORY recommends sending commands at 30-250 Hz, since below 30 Hz the motion may be discontinuous.
Evidence · 3 citations
Move to the given cartesian position with the fastest speed (1 m/s) and acceleration (unit: mm). This command has no buffer
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Cartesian Motion (manual text not model-specific; the Studio manual's Preface lists the xArm 6 among the models it applies to)
It is recommended that the frequency of user issuing commands be controlled within the range of 30 Hz-250 Hz. If the frequency is lower than 30 Hz, the motion of the robotic arm may be discontinuous.
UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY · 10.1 Mode 1, Servo Cartesian Motion
In UFACTORY's Modbus TCP register map, holding registers 32 and 33 (0x20, 0x21) hold the robot mode and state, and input registers 32 and 33 hold the robot error code and warning code.
Why we infer this:Verified: UFACTORY's ModbusTCP User Instructions (UF_ModbusTCP_Manual, in the xArm-Python-SDK repository) state this, but that document names no robot model. Verified: the UFACTORY Studio manual, whose Preface lists the xArm 6, says the controller accepts standard Modbus TCP commands on port 502 (iface-569). Inferred: the register map very probably holds on the xArm 6's controller, but no document written for the xArm 6 gives it; a read of these registers on the S6 controller would confirm it.
Controller warning 11 means the command queue (uxbus queue) is full and warning 14 that a command has no solution; controller error 40 means no inverse-kinematics solution is available.
Evidence · 3 citations
- 11: uxbus queue is full
xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY · Controller Warn Code (SDK documentation is not model-specific)
The xArm arm consists of a base and rotary joints, each joint a degree of freedom, numbered from the bottom as Joint 1, Joint 2 and so on; the last joint is the tool side, where end effectors such as a gripper connect. The xArm 6 has six such joints.
Evidence · 3 citations
The xArm robotic arm system consists of a base and rotary joints, and each joint represents a degree of freedom. From the bottom to the top, in order, Joint 1, Joint 2, Joint 3, etc.
The xArm's emergency stop button is on the control box. Pressing it sends a command for software deceleration, stops all activities of the arm and clears the cached commands in the control box; power to the arm is removed within 300 ms.
Evidence · 2 citations
By pressing the emergency stop button of the Control Box, a command will be sent to the Control Box for software deceleration to stop all activities of the robotic arm and clear all the cached commands in the Control Box;
The xArm manual says the Control Box must be placed outside the arm's working range so that the emergency stop button can be pressed 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.
UFACTORY xArm Hardware Manual (online), 1. Safety · UFACTORY · 1.3, CAUTION list [series text: names no single model]
The STOP button in UFACTORY Studio stops the arm immediately and clears all cached commands; Studio says it is a software stop and the power is still on.
Evidence · 1 citation
STOP: The robotic arm will stop immediately and clear all cache commands. It's a software stop, the power is still on.
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.5 Enable & STOP button [general Studio text; the Studio manual says it applies to the xArm6]
Per-joint component data for the xArm 6 (motor model and rating, harmonic-drive ratio, encoder type and resolution, joint-module sizes) is not published in the xArm manual or the product page; the product page names only harmonic drives and servomotors and, unlike the 850's page, gives no encoder resolution.
Industrial-grade harmonic drive and servomotors guarantee 24/7 working without stop.
UFACTORY xArm product page · UFACTORY · Overview, 'Durable Collaborative robots for your automation' (xArm product page, which covers the xArm 5, 6 and 7)
Sources disagree on how the xArm AC control box powers the arm: the manual's controller chapter says its internal supply converts 100-240 V AC into 12 V and 48 V DC for the control box and the arm, while the common specification table gives the arm's input as 24 V DC, 20.8 A and the AC controller's output as 24 V DC, 20.8 A.
Evidence · 3 citations
its internal switching power supply converts 100V-240V AC into 12V, 48V DC, which supplies power to the load of the control box and the robotic arm.
UFACTORY xArm Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY · 3.2.2 Power Supply (chapter text is not split by model)