S2's production cycle first, then the machine's own day: set up, power on, run, stop and shut down.
Start here
This section follows the arm through its work. It starts with the cycle this project designed for the arm, then walks through the machine's own day: setting it up, switching it on, running it, stopping it and shutting it down. Every tier below starts from the same three facts.
S2 sits after S1, the incoming conveyor, and ahead of S3, the staging table, and S4, the laser engraver conveyor678.
This project's simulation and agent design, not the physical cell
The cycle taught first on this page is this project's design: S2 places each workpiece on S4, or on S3 when S4 is busy9.
The physical cell may differ. IntelliMake's own flow routes material through staging, and which is right is still open10.
Whatever the cycle, the arm can move only after it has been enabled11.
S2 in one line: S2 is the xArm 850 arm that picks up incoming material and moves it between receiving, staging and production1213.
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
S2's cycle, then a working day
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 follow the arm's job as this project has designed it, and then the steps that take the machine from switched off to running and back again. No robotics background is needed. Read the numbered steps in order: the order is the lesson.
S2's cycle, as this project designs it
This project's simulation and agent design, not the physical cell
In this project's simulation design, S2 picks up business cards from one conveyor and places them on another for engraving14. Its cycle runs like this:
If S4 is free, place the card on S4. If S4 is busy, place it on a free position on S3, the staging table9.
When S4 signals "all clear and ready", move a waiting card from S3 to S41516.
If S3 and S4 are both unavailable, wait and watch S4. Once S4 is free, send a card from S3 to it; the freed S3 space lets S2 take from S1 again17.
Never stack cards, and never break the spaces the system has allocated18.
This is a design, not a report from the cell. IntelliMake's own flow sends material through staging every time, and whether the physical cell skips staging is unresolved10.
Whether business cards are the physical cell's workpiece is not recorded19.
How long each move takes is not documented anywhere, so this page gives no cycle time20.
Setting the arm up
UFACTORY's manual sets the arm up in five steps2122232425:
Fit the tool on the end of the arm, the end effector25.
When you define the working space, allow for the arm's full range of motion, so it cannot hit people or equipment. The published working range does not include the tool26.
Connect or disconnect the arm cable only with the external AC power disconnected27.
The control box houses the arm's control system; its front panel carries the status lights and the emergency stop2829. Image: UFACTORY
Before you switch on
Check that the power and communication cables between the control box and the arm are properly connected30.
Check the network cable, or the RS-485 cable if that is what you use31.
Make sure the arm cannot hit any person or equipment within its working range33.
Switching on
Turn on the OFF/ON switch and check that the indicator lights are lit1.
Press the power button. The control box is on when its CONTROLLER status light comes on2.
Turn the emergency stop button in the direction of its arrow so that it pops up. The ROBOT PWR light comes on and the arm has power3.
Enable the arm, from UFACTORY Studio or with an SDK command. This switches on its motors4.
The point: after step 3 the arm has power, but it can move only once it is enabled311.
The emergency stop button sits on the control box29. Image: UFACTORY
Running a program
In UFACTORY Studio, the Run and Pause buttons start and pause a Blockly program34. How a computer connects to Studio is in the Novice tier.
Stopping
Studio's STOP button stops the arm at once and clears its queued commands. It is a software stop, and the power stays on35.
The emergency stop on the control box slows the arm in software, clears its queued commands and removes the arm's power within 300 ms. The arm will slightly brake and fall36.
The manual's own e-stop figures do not fit together neatly. The card for that contradiction is listed in the References and in Open questions3637.
The e-stop is for emergencies. UFACTORY says it should not be used as a way of reducing risk, so it never replaces keeping clear38.
Restarting after an emergency stop
Only trained people restart the arm. UFACTORY requires operators to be trained in its software39. If you are not, leave the restart to someone who is.
Turn the emergency stop button in the direction of its arrow to power the arm back up40.
Enable the arm again, with Studio's Enable button or with motion_enable(true) in the SDK41.
Before you restart, make sure the restart motions will not hit anything42.
Shutting down
Press the emergency stop button to cut the arm's power, and check that the power light is off43.
Switch off the control box. Powering off takes about 5 seconds, and the box must not be switched on again within those 5 seconds5.
Check yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
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 you do at the arm on an ordinary day: get connected, tell it what it is carrying, move it by hand, send it back to a known position, and get it going again after it stops. It is for someone who will work near or with the cell.
Draining the staging table
This project's simulation and agent design, not the physical cell
In this project's design, cards that were parked on S3 do not stay there. S2 moves them from S3 to S4 once S4 gives its "all clear and ready" signal15.
That signal is one of the pieces of information S2 takes in from other stations16.
S2 also reports its own state, but what exactly it reports is not yet defined4546.
The concept holds in the simulation design and at the cell, but the physical signal wiring may differ15.
Getting connected
Studio runs in a browser. Your computer needs an IP address in the same 192.168.1.x range as the control box, and you open the controller's address on port 1833347.
If you change the controller's IP address, write the new address on the control box, so the next person can find it48.
When nobody knows the address any more, the manual resets it in five steps4950515253:
Press the emergency stop button and turn off the control box49.
Connect the controller's RI0 input to GND with a cable50.
Power on. A beep means the address has been reset to 192.168.1.11151.
Remove the RI0 to GND cable and wait about 60 seconds for start-up52.
Open 192.168.1.111:18333 in a browser to connect53.
Telling the arm what it carries
In Studio, set the TCP payload and TCP offset to match the tool actually fitted, under Settings > Motion > TCP54.
The TCP payload is the mass of the tool plus the workpiece, in kg, and where its centre of gravity sits, in mm. With nothing fitted, both are set to 055.
The TCP offset says where the tool's working point is, and how it is turned, relative to the centre of the flange at the end of the arm56.
Set the mounting direction to match how the arm is really installed. A wrong setting makes the arm misjudge gravity: expect false collision stops, and uncontrolled motion in manual mode57.
So set the mounting direction and payload first, before you tune collision sensitivity or use manual mode. That order is this platform's inference from the manual, not a UFACTORY step list58.
Moving the arm by hand
Manual Mode, in Studio's Live Control, lets you move the joints freely by hand to reach and record positions. It can also be used to drag the arm out of a dangerous position59.
Before you turn it on, the mounting and payload settings must match reality; UFACTORY says otherwise it will be dangerous60. A wrong mounting setting, for one, makes the arm misjudge gravity, which can mean uncontrolled motion in manual mode57.
Manual mode can be turned on only when the serial numbers of the arm and the control box are matched61.
Teach sensitivity, levels 1 to 5, sets how hard you must push to drag the arm. A higher level needs less force62.
A path you teach by hand can be recorded at 250 Hz for up to 5 minutes and played back at 1x, 2x or 4x speed. Recordings can be used in Blockly projects63.
Hand teaching, as shown on UFACTORY's page for the 850: in manual mode the arm holds itself up so a person can move it6465. Image: UFACTORY
Going back to a known position
In Live Control, a long press on Initial Position moves the arm to its initial position. By default that is all joints at 066.
Live Control's jog speed runs from 1% (2.3 mm/s) to 100% (230 mm/s), and starts at 50% (115 mm/s). That is a jogging speed, not the fastest a program can move the arm67.
When the arm stops on an error
When an error occurs, the arm stops at once and throws away its queued commands. You must clear the error by hand and re-plan the motion before normal work continues68.
If Studio shows error code C1, the control box's emergency stop has been pushed. Release the button, then click "Enable Robot"69.
That is the same two-step restart as after any emergency stop: turn the button in the direction of its arrow, then enable the arm again in Studio or with motion_enable(true)70.
A joint servo error is recovered the same way: release the emergency stop, then enable the arm71.
For an alarm code the manual does not list, power the arm on again. If several power cycles do not fix it, contact technical support72.
Check yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
3Intermediate
Setting up and recovering the arm from code
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 start the arm from a program, set it up so its collision detection can be trusted, and recover it when a program or a collision stops it. It is for someone who will set up, program or maintain the arm.
What a program needs to know to run S2's cycle
This project's simulation and agent design, not the physical cell
The placement rule is simple to state: S4 when it is free, S3 when S4 is busy, never stacked918.
When S3 and S4 are both unavailable, S2 watches S4, and sends a card from S3 once S4 is free; that frees an S3 space for the next pick from S117.
To follow that rule, a program must also know which allocated S3 positions are occupied and whether material is waiting at S1. No record lists those inputs; this platform infers them from the policy75.
Starting the arm from the SDK
UFACTORY's Python template starts the arm in this order76777879:
Create XArmAPI with the controller's IP address and connect. The template registers an error and warning callback before it connects76.
Set the mode, for example set_mode(0) for position control78.
Set the state with set_state(state=0). The arm now accepts motion commands79.
Settings you change through the SDK, such as payload, TCP offset and sensitivities, are lost at reboot unless you save them with save_conf()80.
Studio can export the settings (motion parameters, TCP offset, payload, I/O settings, safety boundary, mounting, coordinate systems) and import them on another arm. Export before a factory reset81.
Making collision detection trustworthy
Studio's preset for the xArm Gripper is a payload of 0.82 kg with its centre of gravity at z = 48 mm, and a TCP offset of z = 172 mm82.
The payload can also be identified automatically, but only with the arm on a steady floor. The arm runs a series of motions to work it out, so people and equipment nearby must be safe83.
Collision detection stops the arm when joint torque departs from normal. A higher sensitivity value means a smaller extra torque triggers the stop84.
Wrong payload or mounting settings can cause false collision alarms. For heavy or fast moves, UFACTORY says you can try lowering the sensitivity once you have confirmed those settings, though UFACTORY does not recommend going below 385.
In a pick-and-place program, update the TCP payload after each pick and each place, so that collision detection models the load actually carried8687.
Pausing, stopping and hand-guiding from a program
Pause motion with set_state(3) and resume with set_state(0). Stop with set_state(4); after a stop, set_state(0) is needed before new commands88.
Manual mode is mode 2, and it must be set from mode 0. UFACTORY's example switches to mode 0 if needed, then calls set_mode(2) and set_state(0). Switch back to mode 0 when teaching is done89.
Recovering from errors
From the SDK, recovery is three calls in order909192:
Lower the collision sensitivity under Settings > Motion > Sensitivity Settings99.
With Collision Rebound on, the arm rebounds backward a certain distance after it hits something. With it off, and collision detection on, it stays where the collision was detected100.
When the arm is stuck
With the arm in error, a single joint can be unlocked from Studio's Debugging Tools to move it to a safer posture. Someone must support the arm while the joint is unlocked, and every joint must be locked again afterwards101.
To reset a protective stop with a reset button, first set CI0 as Safeguard Reset in Studio (Settings > External > Controller IO > IO Function) and save102.
Then, to resume, connect SI0 and SI1 to GND and trigger CI0 to GND. To pause, disconnect SI0 and SI1 from GND103.
Going home skips the checks
move_gohome() returns the arm to zero at 50 °/s by default, without limit checks. Pass wait=True to block until it arrives104.
reset() clears errors and warnings, enables motion, sets the state if the arm is not ready, and moves the arm home, also without limit checks105.
So neither call is a safe "get out of trouble" button: the path home must be clear before you use it10442.
Check yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
4Expert
What drives cycle time, and what can fail
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 take the operating sequence apart: what sets the pace of the arm's cycle, which of those things can be measured today, how a program can fail mid-cycle, and what is still unknown before a real sequence can be written for the cell. It is for someone who designs, integrates or changes the cell.
Cycle time: named, not measured
No source documents how long S2's moves take, from S1 to S4, from S1 to S3 or from S3 to S4, or how long the laser step at S4 and S5 takes. Any cycle time you are offered for S2 is a guess20.
In automatic mode, from Blockly or the Python IDE in Studio, the maximum speed is 1000 mm/s. That is a cap, not the speed S2 will reach106.
No source gives the speed and acceleration the arm achieves carrying its full 5 kg payload across its reach107.
UFACTORY says to update the TCP payload after each pick and each place, so every card adds two payload updates to the cycle86.
The laser step may be the real bottleneck. That is this platform's inference, and the lack of cycle times means it cannot yet be checked108.
A question to settle on the arm
Changing a critical setting, including the payload, puts the controller into state 5 on its own, and it accepts no commands until state 0 is set109.
Whether that also happens when a program updates the payload between a pick and a place is not recorded. Treat it as a question to test on the arm, not as a fact either way10986.
How a program fails mid-cycle
An error stops the arm at once and throws away its queued commands. The error must be cleared and the motion re-planned, so a program cannot simply carry on from where it was68.
move_gohome() and reset() both drive the arm home without limit checks104105.
After an emergency stop, the restart or reset motions must not hit anything42.
Settings sent through the SDK and not saved with save_conf() are gone after a reboot, and a wrong payload then triggers false collision stops8087.
Starting up under ROS
In ROS 2 the 850 starts up the same way as from the SDK110:
This project's simulation and agent design, not the physical cell
To follow its placement rule, S2 must know which allocated S3 positions are occupied and whether material is waiting at S175.
Yet the number and positions of the allocated S3 slots are not documented. IntelliMake's drawing shows six pads, but a drawing is not a specification111.
The physical I/O that will carry signals between S2 and S4, and the other stations, is not defined, and it may differ from the planned simulation's signals112.
What S2 publishes to the other stations is not defined either: placement confirmations, S3 slot updates, faults, its own ready or busy state46.
Check yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
Not settled
Open questions · 13
What the sources do not settle for this section. Nothing here is papered over with a plausible number.
Kind: Contradiction
IntelliMake's flow and layout route incoming material through staging (Receiving → Cobot Handling → Staging → Laser Engraving; S2 → S3 → S4), but this project's S2 design places directly on S4 and uses S3 only when S4 is busy. Whether the physical cell also skips staging, or IntelliMake's diagram is out of date for S2, is unresolved (Q14b).
Whether business cards are the physical Phase 1 cell's workpiece, or only the workpiece in this project's simulation, is not recorded. IntelliMake's diagram speaks of 'blanks' and 'personalized laser-engraved gifts' (Q14a).
Cycle times for S2's moves (S1 to S4, S1 to S3, S3 to S4) and for the S4/S5 laser step are not documented, so throughput and the benefit of two arms cannot be quantified.
The 850 manual's e-stop figures appear inconsistent. Section 2.1.2 says arm power is removed within 300 ms of pressing the e-stop. Section 7.8 says the e-stop is Stop Category 1, which decelerates 'with drive power on'. Section 7.9 gives Stop Category 1 stopping times of 521 to 885 ms. UFACTORY does not explain how power removal within 300 ms fits a powered deceleration lasting up to 885 ms (the brakes may do the rest of the stopping, but no source says so).
What S2 publishes to the other agents or the hub is not defined: placement confirmations, S3 slot updates, faults and error codes, its own ready or busy state, and whether any work-order or traceability data passes through S2 (Q9, Q14).
The number and positions of allocated S3 staging slots are not documented. The diagram's illustration shows six pads on the table, but it is a drawing, not a specification.
The 850 product page calls UFACTORY arms 'Collaborative Robots' and 'cobots'. A3 says ISO 10218:2025 drops 'collaborative robot' because only an application can be confirmed as collaborative, and UFACTORY's own 850 manual says no people should be in the working area during operation. The marketing label does not establish that S2 is a collaborative application.
The S2 installation's risk assessment has not been confirmed: whether one exists for the complete S2 application (arm, gripper, workpieces, S1/S3/S4/S6 interfaces), who performed and signed it, and whether it was redone after installation as UFACTORY requires.
Sources disagree on the top speed of manual jogging from UFACTORY Studio's Live Control page: User Manual V2.3.0 gives the 850 a maximum of 250 mm/s in teaching mode (the Live Control page), while the online UFACTORY Studio manual says the Live Control speed setting reaches 230 mm/s at 100%. Neither source explains the 20 mm/s difference. The 250 mm/s may be a mode ceiling and 230 mm/s the top slider setting, but no source says so. Both are far below program (automatic mode) speed.
Power-on step 3: turn the emergency stop button in the direction of the arrow so it pops up; the ROBOT PWR indicator lights and the arm is powered.
Evidence · 1 citation
Rotate the emergency stop button in the direction indicated by the arrow and is pulled up, at which point the 850 power indicator(ROBOT PWR) lights up.
UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.3.1 Power On, step 3
Shutdown step 2: switch off the control box; power-off takes about 5 seconds, and the box must not be restarted within those 5 seconds.
Evidence · 1 citation
The power switch takes about 5 seconds to turn off the power of the control box. Please do not restart the control box within 5 seconds after turning off the power supply
S3, the Inbound Staging Table, provides temporary storage and buffering for incoming workpieces.
Evidence · 1 citation
Provides temporary storage/buffering for incoming workplaces.
IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org · S3 station description (the diagram prints 'workplaces'; read as workpieces)
S4, the Laser Engraver Conveyor, transfers workpieces through the laser processing area.
Evidence · 1 citation
Transfers workplaces through the laser processing area.
IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org · S4 station description (the diagram prints 'workplaces'; read as workpieces)
Confidence: VerifiedThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-014
The record says
In this project's S2 design (simulation and agent), S2 places each workpiece on S4, the laser engraver conveyor, or on S3, the staging table, when S4 is busy. It therefore skips staging when S4 is free (see int-051).
Evidence · 1 citation
S2 can place on S3 or S4. If S4 is busy, it goes to S3.
IntelliMake's flow and layout route incoming material through staging (Receiving → Cobot Handling → Staging → Laser Engraving; S2 → S3 → S4), but this project's S2 design places directly on S4 and uses S3 only when S4 is busy. Whether the physical cell also skips staging, or IntelliMake's diagram is out of date for S2, is unresolved (Q14b).
Confidence: VerifiedThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-013
The record says
In this project's simulation of S2, the arm picks up business cards (the current workpiece) from one conveyor and places them on a different conveyor for engraving; in future it is to handle material for 3D printing. Whether business cards are also the physical cell's workpiece is not recorded (see int-052).
Evidence · 1 citation
The simulation uses the arm to pick up business cards from one conveyor system and places it on a different conveyor system for engraving (current) and in the future, material for 3d printing.
Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21
Project copy; not published on this site.
Confidence: VerifiedThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-015
The record says
In this project's S2 design, S2 moves buffered workpieces from S3 to S4 once S4 gives its 'all clear and ready' signal. The concept holds on both substrates; the physical I/O may differ.
Evidence · 2 citations
S2 goes back and moves from S3 to S4 when S4 is busy and needs to provide an 'all clear and ready' signal.
Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21
Project copy; not published on this site.
Confidence: VerifiedThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-016
The record says
In this project's S2 design, when S3 and S4 are both unavailable, S2 monitors S4 and, once S4 is available, dispatches a workpiece from S3 to S4. The freed S3 space then lets S2 take material from S1 again.
Evidence · 1 citation
If both S3 and S4 are unavailable, S2 monitors s4 for availablilty then dispatches from s3 to make that available again, which then allows for material from S1 as well.
Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21
Project copy; not published on this site.
Confidence: VerifiedThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-017
The record says
In this project's S2 design, S2 must not stack workpieces or break the space the system allocates, and it has to use its intelligence to make these placement decisions.
Evidence · 1 citation
S2 has to use its intelligence to make these decisions. It can not simply stack or break the allocatied space the system will have in place.
Whether business cards are the physical Phase 1 cell's workpiece, or only the workpiece in this project's simulation, is not recorded. IntelliMake's diagram speaks of 'blanks' and 'personalized laser-engraved gifts' (Q14a).
Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.
Cycle times for S2's moves (S1 to S4, S1 to S3, S3 to S4) and for the S4/S5 laser step are not documented, so throughput and the benefit of two arms cannot be quantified.
Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.
When defining the working space, allow for the arm's full range of motion so it cannot hit nearby people or equipment; the published working range excludes the end effector.
Evidence · 1 citation
When installing the robotic arm, make sure the range of motion of the robotic arm is taken into account, so as not to bump into the surrounding people and equipment (the end-effector not included in the working range).
UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.2.2 Define Working Space
The arm cable must be connected or disconnected only with external AC power disconnected, and the control box must be powered off while its electrical interface is wired.
Evidence · 2 citations
When connecting or disconnecting the arm cable, make sure that the external AC is disconnected.
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')
Pressing the control box emergency stop makes the controller decelerate the arm in software, clears all cached commands, and removes power from the arm within 300 ms; the arm will slightly brake and fall.
Evidence · 2 citations
Quote not shown (over 40 words). See the source at: 2.1.2 Emergency Stop Button.
The 850 manual's e-stop figures appear inconsistent. Section 2.1.2 says arm power is removed within 300 ms of pressing the e-stop. Section 7.8 says the e-stop is Stop Category 1, which decelerates 'with drive power on'. Section 7.9 gives Stop Category 1 stopping times of 521 to 885 ms. UFACTORY does not explain how power removal within 300 ms fits a powered deceleration lasting up to 885 ms (the brakes may do the rest of the stopping, but no source says so).
Stop Category 1 and Stop Category 2 decelerates the robot with drive power on, which enables the robot to stop without deviating from its current path.
UFACTORY 850 Hardware Manual (online), 7. Production Information · UFACTORY · 7.8 Stop Categories
Confidence: VerifiedThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-020
The record says
In this project's S2 design, S2 communicates its own state as well as receiving other stations' state. What it publishes is not yet defined (see int-047).
What S2 publishes to the other agents or the hub is not defined: placement confirmations, S3 slot updates, faults and error codes, its own ready or busy state, and whether any work-order or traceability data passes through S2 (Q9, Q14).
Network setup: set the PC's IP address to the same 192.168.1.x segment as the control box, then open <controller IP>:18333 in a browser to reach UFACTORY Studio.
Evidence · 3 citations
please make sure that the IP address of the PC and control box are on the same network segment.
UFACTORY Studio User Manual (online), 3. Connection · UFACTORY · 3.2 Software Connection
The TCP payload is the mass of end effector plus workpiece in kg, with its centre of gravity in mm in the default flange frame; with no load, both must be set to 0.
Evidence · 2 citations
The load weight refers to the actual mass (end-effector + object) in Kg
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.2 TCP, TCP Payload
The TCP offset gives the tool point's position (X, Y, Z) and orientation (roll, pitch, yaw) relative to the tool frame at the flange centre; all zeros puts the TCP at the flange centre.
Evidence · 1 citation
When the specified value is zero, TCP coincides with the centre point of the tool output flange.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.2 TCP, TCP Offset
Set the mounting direction to match how the arm is really installed; a wrong setting makes the arm misjudge gravity, causing frequent false collision stops and uncontrolled motion in manual mode.
Evidence · 1 citation
Quote not shown (over 40 words). See the source at: 7.1.3 Mounting.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.3 Mounting
In setup, set the mounting direction and TCP payload before tuning collision sensitivity (and before using manual mode).
Why we infer this:No UFACTORY document gives an explicit setup order that places collision sensitivity. The Studio manual says false collision alarms come from inaccurate load or mounting settings and that sensitivity can be tried lower once those are confirmed accurate; the mode 2 note requires the same settings before manual mode. So the order mounting, then payload/TCP, then sensitivity follows from those dependencies.
Evidence · 2 citations
If the load or installation direction is not set accurately, it may cause false alarms.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1 Collision Detection Sensitivity
Manual Mode in Studio Live Control lets the joints be moved freely by hand to reach and record positions, and can also be used to drag the arm out of a dangerous position.
Evidence · 2 citations
By turning on the Manual Mode, the joint can be driven freely by hand.
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.4 Manual Mode
Before turning on manual mode, the arm's installation method and payload setting must be consistent with the actual situation; UFACTORY says otherwise it will be dangerous.
Evidence · 1 citation
Before opening the manual mode, you must ensure that the installation method of the robotic arm and the payload setting of the robotic arm are consistent with the actual situation, otherwise it will be dangerous.
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.4 Manual Mode
A trajectory taught by hand can be recorded at 250 Hz for up to 5 minutes and played back at 1x, 2x or 4x speed; recordings can be imported into Blockly projects.
Evidence · 3 citations
The position of the joint is obtained and recorded by 250HZ to record the motion trajectory of the robotic arm in free driving, and the maximum recording time is 5 minutes.
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.2 Recording
UFACTORY's 850 page, under 'Flexible Deployment With Safe Feature', cites hand teaching, a space-saving footprint and easy re-deployment to multiple applications without changing the production layout, and says collision detection is available for all its cobots.
Evidence · 2 citations
Hand teaching, space-saving and easy to re-deploy to multiple applications without changing your production layout. Perfectly for recurrent tasks.
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'
In UFACTORY Studio Live Control, long-pressing Initial Position moves the arm to its initial position; for the xArm and 850 the default initial position has all joints at 0.
Evidence · 2 citations
**Initial Position:** Long press for continuous motion, the robotic arm will back to the initial position.
UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY · 4.4 Position & Joint Control
When an error occurs, the arm stops at once and discards cached commands; the error must be cleared manually and the motion re-planned before normal operation continues.
Evidence · 1 citation
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
To restart after an emergency stop, the 850's button is rotated in the arrow direction to restore arm power, and the arm is then re-enabled from UFACTORY Studio or with the Python SDK call motion_enable(true).
Evidence · 2 citations
Power up the 850 (Turn the emergency stop button in the direction of the arrow).
UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY · 2.1.2 Emergency Stop Button (docs site 'UFACTORY 850 硬件手册', English version; names the machine 'UFACTORY 850')
For an alarm code not listed in the manual, power the arm on again; if several power cycles do not fix it, contact technical support.
Evidence · 1 citation
For alarm codes that are not listed in the above table: Power on again. If the problem remains unsolved after power on/off for multiple times, please contact technical support.
UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1, after table
Confidence: InferredThis project's simulation and agent design, not the physical cellProject design, not the physical cellint-019
The record says
To follow its placement policy, S2 must also know which allocated S3 positions are occupied and whether material is waiting at S1.
Why we infer this:The policy in int-014 to int-017 branches on whether S3 has free allocated space and whether S1 has material. S2 cannot choose between those branches without knowing both states, so they are required inputs even though no source names them as signals.
Evidence · 1 citation
If both S3 and S4 are unavailable, S2 monitors s4 for availablilty then dispatches from s3 to make that available again, which then allows for material from S1 as well.
SDK start-up (UFACTORY template, steps 1-3): create XArmAPI with the controller IP and connect (the template registers an error/warning callback before connecting).
Evidence · 2 citations
1. Instantiate XArmAPI and specify do_not_open to be true
xArm-Python-SDK example 0000-template.py · UFACTORY · Docstring, steps 1-3
Settings can be exported from UFACTORY Studio (motion parameters, TCP offset, payload, I/O settings, safety boundary, mounting, coordinate systems) and imported on another arm; export before a factory reset.
Evidence · 2 citations
The robotic arm parameters that can be exported mainly include: motion parameters, TCP offset, TCP payload, IO settings, safety boundary, installation methods, coordinate systems, and advanced parameters.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.4.3 Advanced Settings, Export
The payload can also be identified automatically, only with the arm mounted on a steady floor: the arm runs a series of motions to compute it, so people and equipment nearby must be safe. The TCP offset can be taught with 5 points.
Evidence · 2 citations
The current robotic arm must be mounted on a steady floor if automatic identification is selected.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.2 TCP, Method 2
Collision detection sensitivity is set in UFACTORY Studio under Settings > Motion; the arm stops when joint torque departs from normal, and a higher value means a smaller extra torque triggers the stop.
Evidence · 2 citations
When the deviation of the torque detected by the joint exceeds a certain normal range during the movement of the robotic arm, the robotic arm will automatically stop
The larger the value is set, the higher the collision sensitivity level is, and the smaller the additional torque required for the robotic arm to trigger collision protection.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1
Inaccurate payload or mounting settings can cause false collision alarms. For high-load or high-speed moves, UFACTORY says you can try lowering the collision sensitivity once you have confirmed those settings are accurate, though UFACTORY does not recommend going below 3.
Evidence · 2 citations
If the load or installation direction is not set accurately, it may cause false alarms.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.1.1 Collision Detection Sensitivity
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
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
From a program, pause motion with set_state(3) and resume with set_state(0); stop with set_state(4), after which set_state(0) is needed before new commands.
Evidence · 2 citations
State 3 | 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 mode (mode 2) must be set from mode 0: UFACTORY's example switches to mode 0 first if needed, then calls set_mode(2) and set_state(0); switch back to mode 0 when teaching is finished.
Evidence · 3 citations
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
For error C22 (self-collision), re-plan the path; if it keeps recurring, turn on manual mode in Live Control and drag the arm back to a normal position.
Evidence · 1 citation
If the robotic arm continues to report self-collision errors, please go to the "live control" interface to turn on the "manual mode" and drag the robotic arm back to the normal position.
UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 table, C22
Collision error (Studio C31) check 2: check that the payload mass and centre of mass under Settings > TCP Settings > TCP Payload match the real payload.
Evidence · 1 citation
2. Check whether the mass and center of mass set at "Settings"-"TCP Settings"-"TCP Payload" match the actual payload.
UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY · 12.1 table, C31
With Collision Rebound on, the arm rebounds backward a certain distance after hitting an obstacle; with it off (and collision detection on), it stays where the collision was detected.
Evidence · 1 citation
Quote not shown (over 40 words). See the source at: 7.4.3 Advanced Settings, Collision Rebound.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.4.3 Advanced Settings, Collision Rebound
When the arm is in error, a single joint can be unlocked (brake released) from Studio's Debugging Tools to move it to a safer posture; someone must support the arm while the joint is unlocked, and all joints must be re-locked afterwards.
Evidence · 4 citations
The operation of the unlocking joint is mainly used to adjust the posture of the robotic arm to a relatively safe position when the error is reported by the robotic arm.
UFACTORY Studio User Manual (online), 7. Settings · UFACTORY · 7.4.2 Debugging Tools, Joint
Protective-stop reset with a reset button, step 1: in UFACTORY Studio, set CI0 as Safeguard Reset (Settings > External > Controller IO > IO Function) and save.
Evidence · 1 citation
Configure "CI0" as the safeguard reset in UFactory studio. The specific steps are as follows: Enter 'Settings - External - Controller IO - IO Function', set CI0 as safeguard reset and save.
Protective-stop reset with a reset button, step 2: to resume motion, connect SI0 and SI1 to GND and then trigger CI0 to GND; to pause, disconnect SI0 and SI1 from GND.
Evidence · 1 citation
If 850 needs to resume motion, connect SI0 and SI1 to GND, and trigger the motion of 850 by connecting CI0 to GND; if 850 needs to pause the motion, disconnect SI0 and SI1 from GND.
The SDK's reset() clears errors and warnings, enables motion and sets the state if the arm is not ready, and moves the arm home (without limit checks).
Evidence · 2 citations
1. If there are errors or warnings, this interface will clear the warnings and errors.
xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY · reset, note 1
With two arms, loading incoming material (S2) and unloading and routing finished parts (S6) can happen at the same time. With one arm, both handling steps for every part would run one after the other on the same arm. How much this helps throughput is unknown, because no cycle times are documented (int-033), and the laser step may be the real bottleneck.
Why we infer this:Verified: the gift flow has two separate Cobot Handling steps, one before staging and laser engraving and one after (int-028), assigned to S2 and S6 (int-029). One arm would have to perform both in series; two arms let them overlap. This shows the steps can overlap, not that one arm would be the bottleneck: that depends on cycle times, which are undocumented (int-033).
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
In ROS 2 the 850 start-up is the same: launch uf850_driver.launch.py, enable all joints with /ufactory/motion_enable (id 8, data 1), then call /ufactory/set_mode 0 and /ufactory/set_state 0.
Evidence · 2 citations
ros2 service call /ufactory/motion_enable xarm_msgs/srv/SetInt16ById "{id: 8, data: 1}"
The number and positions of allocated S3 staging slots are not documented. The diagram's illustration shows six pads on the table, but it is a drawing, not a specification.
Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.
The cell uses two collaborative arms: the xArm 850 at S2 is the upstream arm that takes incoming material off receiving toward personalization, and the xArm 6 at S6 is the downstream arm that handles parts after processing.
Evidence · 2 citations
The xArm 850 at S2 is the **upstream** arm: it takes incoming material off receiving and hands it off toward personalization
The project specification places S2 at the first Cobot Handling step of IntelliMake's gift flow, between Receiving and Staging; the second Cobot Handling step, after laser engraving, is S6's. IntelliMake's layout draws the stations in the matching order (see observation).
Evidence · 3 citations
Where it sits in the Initial Personalized Gift Production Flow (Receiving → **Cobot Handling** → Staging → Laser Engraving → …)
UFACTORY makes the integrator of the 850 responsible for a risk assessment of the complete system, including keeping a safe distance between people and the 850 when they interact with it.
Evidence · 1 citation
Making a risk assessment for the complete system. Make sure to have a safe distance between people and 850 when interacting with the 850.
UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY · 1.1 Validity and Responsibility, integrator responsibilities list
The 850 product page calls UFACTORY arms 'Collaborative Robots' and 'cobots'. A3 says ISO 10218:2025 drops 'collaborative robot' because only an application can be confirmed as collaborative, and UFACTORY's own 850 manual says no people should be in the working area during operation. The marketing label does not establish that S2 is a collaborative application.
“Collaborative application” is used instead, as only the actual use of the robot can be designed, tested, and confirmed as a collaborative application.
Updated ISO 10218: Answers to Frequently Asked Questions (FAQs) (A3 blog, 03/20/2025; Wayback Machine snapshot 2025-10-06) · Association for Advancing Automation (A3) · FAQ 6
The S2 installation's risk assessment has not been confirmed: whether one exists for the complete S2 application (arm, gripper, workpieces, S1/S3/S4/S6 interfaces), who performed and signed it, and whether it was redone after installation as UFACTORY requires.
Awaiting cell access: this could be confirmed or corrected once the physical S2 cell can be observed.
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.
Sources disagree on the top speed of manual jogging from UFACTORY Studio's Live Control page: User Manual V2.3.0 gives the 850 a maximum of 250 mm/s in teaching mode (the Live Control page), while the online UFACTORY Studio manual says the Live Control speed setting reaches 230 mm/s at 100%. Neither source explains the 20 mm/s difference. The 250 mm/s may be a mode ceiling and 230 mm/s the top slider setting, but no source says so. Both are far below program (automatic mode) speed.
CODE_SESSION 01 — xArm 850 Interactive Learning Platform (project specification) · Derek Stringfellow (project owner) Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21 · cited by 2 records here · Project copy; not published on this site.
Owner statements, 2026-09-21 (verbatim) · Derek Stringfellow (project owner) Derek Stringfellow, project record · Project-internal record · retrieved 2026-09-21 · cited by 10 records here · Project copy; not published on this site.