§6 xArm 6

Basic Operating Sequence

S6's place in the cell's work, then the machine's own day: set up, power on, run, stop and shut down.

Start Here

This section walks through the machine's own day: setting it up, switching it on, running it, stopping it and shutting it down. The steps come from the maker's manual and software, and they apply whatever task the arm is given in the cell.

  • 4

    steps from switched off to enabled1234

  • 5 s

    before the control box may be switched on again5

  • In the cell, S6 works after S5, the laser engraver, and routes parts on to inspection, rework or shipping678. It picks up the finished product at S4, the conveyor that carries workpieces through the laser processing area91011.
  • Enabling the arm turns on its motors, after which it can start to move normally12.
  • While the arm runs, nobody and no other equipment should be in its working area13.

S6 in one line: S6 is the xArm 6 arm that handles parts after processing, routing them to inspection, rework or shipping8.

Look Back

A question from earlier on, to keep it fresh. Skip it if you like; nothing depends on it.

q-s02-b-01 In IntelliMake's layout, which station is drawn directly before S6?
  1. Check option (a)

    Correct. Right. The layout draws a flow arrow from S5 into S6. In the cell, the engraver stays in one place, the S4 conveyor moves the product, and S6 picks up the finished product at S4.106107910

  2. Check option (b)

    Not this one. S1 is at the start of the line, before S2. S6 comes after the laser.1087

  3. Check option (c)

    Not this one. S8 is one of the stations after S6, not before it.109

  4. Check option (d)

    Not this one. S10 is the last station in the layout.110

q-s01-b-03Safety UFACTORY calls the xArm series "collaborative robots". Does that mean you can stand in the xArm 6's working area while it runs?
  1. Check option (a)

    Not this one. The xArm manual says no people should be in the working area while the arm is in operation. Whether an installation is safe to share is for the risk assessment of the complete system, not the label.13111112

  2. Check option (b)

    Correct. Right. The manual keeps people out of the working area while the arm is in operation and makes the integrator responsible for the risk assessment. This project's advice: stay out while the arm runs, and do not rely on a safeguard nobody has confirmed.13111113

  3. Check option (c)

    Not this one. This project advises treating collision detection as a configurable controller function, not a validated safeguard. Stay out while the arm runs.11413

Choose your depth

Four depths, one page. Switch at any time: every tier stays open to everyone. What the four tiers mean

1Beginner

S6's Place, Then a Working Day

For: Anyone with no robotics background: a visitor, a new operator, a manager
Kind of task: Recognize and recall, with plain-language explanations and pictures

In this part you see where the second arm works in the cell, and then you learn 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.

Where S6 Works

  • In the gift flow, S6 is the second Cobot Handling step. It comes after Laser Engraving and before the Quality Decision67.
  • Its job is to handle parts after processing and route them to inspection, rework or shipping8.

Whatever the arm's task, the machine's own day is the same. The maker's manual sets it out, and that is what the rest of this part teaches.

Setting the Arm Up

UFACTORY's manual installs the arm in five steps1415161718:

  1. Define the working space14.
  2. Fix the arm's base15.
  3. Connect the arm to the controller16.
  4. Connect the controller's cables17.
  5. Fit the tool on the end of the arm, the end effector18.
  • Take the arm's range of motion into account, so it cannot bump into people or equipment. The working range the manual shows does not include the end effector19.
  • Mount the arm on a sturdy, shockproof surface, with its bolts checked for tightness20.
  • Place the control box outside the arm's working range, so its emergency stop can be pressed in an emergency21.
  • Place the controller at a height of 0.6 m to 1.5 m22.
  • Draw a line to mark the arm's range of motion, including the reach of its tool23.

Connecting the Cables

  1. Plug the arm's power cable and signal cable into the arm. The connectors are foolproof; do not force them24.
  2. Plug the same two cables into the control box25.
  3. Plug the control box's power cable into the control box's AC (110V-240V) interface, and the other end into the socket26.
  • Connect or disconnect the arm cable only with the external AC power disconnected, to avoid electric shock27.

Before You Switch On

  • Check that the power cable and communication cable between the control box and the arm, the network or RS-485 cable, and the control box's power cable are all properly connected28.
  • Make sure the arm cannot hit any person or equipment within its working range29.

Switching On

  1. Turn on the OFF/ON button and check that the indicator lights are lit1.
  2. Press the power button. The control box is on when its CONTROLLER status light comes on2.
  3. Turn the emergency stop button in the direction of its arrow so it pulls up. The ROBOT PWR light comes on3.
  4. Enable the arm, from UFACTORY Studio or with an SDK command. This turns on its motors4.
  • The point: enabling is what turns the motors on. After it, the arm can start to move normally. In Studio the Enable button disappears once the arm is enabled12.
  • The manual names the controller light two ways. Its indicator table calls it STATE and says it flashes; step 2 calls it CONTROLLER and says it lights up30.

Running

  • The lab opens UFACTORY Studio with the desktop app31. On its connection screen, as used with the xArm 850, enter the control box's IP address in the IP search field and click Connect Server32.
  • In Studio you set the arm's parameters, move it with Live Control, and build a program from Blockly blocks33.
  • While the arm runs, nobody and no other equipment should be in its working area13.
  • An arm that seems to have stopped may be waiting for a signal and about to act. Treat it as moving34.

Stopping

  • Studio's STOP button stops the arm at once and clears all its queued commands. It is a software stop: the power stays on35.
  • The emergency stop button is on the control box. Pressing it slows the arm in software, stops everything it is doing, clears its queued commands and removes its power within 300 ms36.
  • When the emergency stop is pressed, the arm will slightly brake and fall37.
  • The manual says the emergency stop should not be used as a risk reduction measure38.

Restarting After an Emergency Stop

The manual says operators must be trained in using Studio and the SDK, and users should fully understand the solutions to the arm's running errors39.

If you are not trained, leave the restart to someone who is.

  1. Turn the emergency stop button in the direction of its arrow to power the arm up40.
  2. Enable the arm again, with Studio's Enable button or motion_enable(true) in the Python SDK40.
  • Before you restart, make sure the restart motions will not hit any obstacle41.

Shutting Down

  1. Press the emergency stop button to power the arm off, and check that the power light is off42.
  2. Switch off the control box's power. It takes about 5 seconds to turn off, and must not be restarted within those 5 seconds5.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s06-b-01Safety Where does the xArm manual say the control box must be placed?
  1. Check option (a)

    Correct. Right. The manual also gives a height of 0.6 m to 1.5 m for the controller.2122

  2. Check option (b)

    Not this one. The manual says outside the working range, so the emergency stop on the control box can be pressed in an emergency.2136

  3. Check option (c)

    Not this one. STOP is a software stop: the power stays on. The emergency stop is on the control box, which must sit outside the working range.3521

q-s06-b-02 The control box is on and the emergency stop has been released. What still has to happen before the arm can start to move normally?
  1. Check option (a)

    Correct. Yes. Enabling turns on the motors, after which the arm can start to move normally.412

  2. Check option (b)

    Not this one. Releasing the emergency stop lights the ROBOT PWR light. Enabling the arm is the step that turns on its motors.312

  3. Check option (c)

    Not this one. The power button turns the control box on. That comes before releasing the emergency stop, not after it.23

q-s06-b-03Safety What must you check just before powering the arm on?
  1. Check option (a)

    Correct. Right. Check the cables too: arm to control box, the network or RS-485 cable, and the control box's power cable.2928

  2. Check option (b)

    Not this one. The checks before power-on are the cables and a clear working range.2829

  3. Check option (c)

    Not this one. STOP is a software stop for an arm that is running. Before power-on, the check is a clear working range.3529

q-s06-b-04 Which order shuts the arm down correctly?

About:425

  1. Check option (a)

    Correct. Right. The emergency stop powers the arm off first, and the control box takes about 5 seconds to turn off.425

  2. Check option (b)

    Not this one. The emergency stop comes first: it powers the arm off before the control box is switched off.425

  3. Check option (c)

    Not this one. The manual says not to restart the control box within 5 seconds of turning it off.5

Next on the beginner path: §7 Safety Requirements

2Novice

Running and Recovering Day to Day

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, get it going again after it stops, and keep it in good order. It is for someone who will work near or with the cell.

Getting Connected

  • The arm's default IP address is in the 192.168.1.xxx range. Put your computer on the same network segment as the control box43. The lab then opens Studio with the desktop app and connects with its IP search field and Connect Server button3132.
  • The manual recommends connecting the control box directly to the PC, and advises against reaching the router over wireless, because of delay and packet loss44.
  • If the IP address is changed, mark the new one on the control box45.

When nobody knows the address any more, the manual resets it in five steps4647484950:

  1. Press the emergency stop button and turn off the control box46.
  2. Connect the controller's RI0 input to GND with a cable47.
  3. Power on. A beep means the address is now 192.168.1.11148.
  4. Unplug the RI0 to GND cable and wait 60 seconds for start-up49.
  5. Connect to the arm at 192.168.1.111. The manual's step enters 192.168.1.111:18333 in a browser50; in the lab's desktop app, enter the address in the IP search field and click Connect Server3132.

Telling the Arm What It Carries

  • Set the TCP payload and TCP offset to match the real situation. The payload is the mass of the tool plus the object, in kg, with its center of gravity in mm. With virtually no load, both are 051.
  • The TCP offset gives the tool's working point, its position and its orientation, relative to the center of the flange51.
  • A wrong mounting direction stops the arm judging gravity correctly. It then raises collision warnings and stops often, and moves uncontrolled in manual mode52.
  • Studio can identify the payload by itself, 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 kept safe53.

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. Studio says it can also drag the arm away from a danger zone54.
  • Manual mode turns on only when the serial numbers of the arm and the control box are matched54.
  • Before you turn it on, confirm the installation direction and TCP load. Otherwise the arm may not stay still, and Studio warns "it will be dangerous"55.
  • Teach sensitivity runs from level 1 to 5. The higher the level, the less force it takes to drag a joint56.
  • Studio records a hand-guided path at 250 Hz for up to 5 minutes, and plays it back at x1, x2 or x4 speed. Watch the arm's load state while recording, so that a large difference between the real and the set load does not make the arm move by itself57.

Going Back to a Known Position

  • In Live Control, a long press on Initial Position moves the arm back to its initial position. By default every joint is at 058.
  • Live Control's jog speed runs from 1% (2.3 mm/s) to 100% (230 mm/s), starting at 50% (115 mm/s). Studio says this is not the arm's real maximum speed59.

When the Arm Stops on an Error

  • When any error occurs, the controller switches the arm to its stopped state by itself, and it accepts no new command until it is set back to standby60.
  • Studio's error code C1 means the control box emergency stop button is pushed in. Release it and click "Enable Robot"6162.
  • Studio's error code C2 is also an emergency stop, and UFACTORY's Studio manual has described it two ways. As read on 2026-10-13 it says an emergency stop button is pushed in, and its fix is to release that button and click "Enable Robot"; the row does not say which button61. Until that date the manual called C2 the control box's emergency I/O being triggered, and its fix was to ground the control box's two EI inputs and click "Enable Robot"; the Python SDK's code list still gives C2 that meaning. The sources read for this course do not say which Studio and firmware versions show which text6362.
  • EI is the control box's emergency input64. The xArm manual calls the emergency stop input a fixed safety input, used only for the emergency stop of the device, and says all safety I/Os exist in redundant pairs65. It also says installation and commissioning need to be performed by professionals39.

This project's advice

  • Do not ground, bridge or rewire the control box's emergency input (EI) or safeguard stop input (SI) terminals to clear an error or to resume after a stop, whatever text Studio shows. Wiring is installation work6664.
  • Studio's error code C3 means the three-state switch's emergency stop is pressed. Release it and click "Enable Robot"6162.
  • After any emergency stop, the xArm manual says to make sure the restart or reset motions will not collide with any obstacle41.
  • From the Python SDK, recovery is clean_error(), then motion_enable(true), then set_state(0)67.
  • For an alarm code Studio does not list, power on again. If several power cycles do not fix it, contact technical support68.

Keeping the Arm in Order

  • Check the arm regularly for loosening bolts69.
  • Clean the carbon fiber shell with 95% alcohol or 70% isopropanol, without letting liquid into the joints70.
  • If the arm is not used for 3 months or more, power it on for 6 hours every 3 months to charge its built-in battery, with the emergency stop released. It does not need to be enabled71.
  • The manual's Maintenance and Inspection chapter covers only long-term storage charging and cleaning72.
  • Before maintenance, remove the main power cable from the controller, and take precautions against anyone switching the system back on while you work73.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s06-n-01Safety Studio shows error code C1. What do you do?

About:6162

  1. Check option (a)

    Correct. Right: error code C1 means the control box emergency stop button is pushed in.6162

  2. Check option (b)

    Not this one. That is not the manual's fix for error code C1, before or after its 2026-10-13 change. EI is the control box's emergency input; the xArm manual calls the emergency stop input a fixed safety input, used only for the emergency stop of the device. It also says installation and commissioning need to be performed by professionals.6162646539

  3. Check option (c)

    Not this one. Camera C2 only shares a label with an error code: error code C2 is one of the controller's emergency-stop codes. The question is about error code C1.6174

  4. Check option (d)

    Not this one. Support is for alarm codes Studio does not list, after several power cycles fail. Studio lists error code C1, with its own fix.6861

q-s06-n-02 What goes into the TCP payload setting in Studio?
  1. Check option (a)

    Correct. Right. With virtually no load, both are set to 0.51

  2. Check option (b)

    Not this one. The TCP payload is the mass of the end effector plus the object, not the arm.51

  3. Check option (c)

    Not this one. That is Studio's preset named 'Gripper', one of its presets. Set the payload to match the tool and object actually fitted.7551

q-s06-n-03Safety Why confirm the installation direction and TCP load before you turn on manual mode?
  1. Check option (a)

    Correct. Right. A wrong mounting direction, for one, makes the arm misjudge gravity, which results in uncontrolled motion in manual mode.5552

  2. Check option (b)

    Not this one. The stated precondition for manual mode is matched serial numbers of the arm and control box. The settings matter because the arm may not stay still without them.5455

  3. Check option (c)

    Not this one. Playback speed is chosen when you play back. The settings matter because the arm may not stay still if they are wrong.5755

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

In this part you start the arm from a program, set it up so that 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.

Starting the Arm from the SDK

UFACTORY's Python SDK template starts the arm in six steps76:

  1. Create XArmAPI, with do_not_open set to true76.
  2. Register an error callback76.
  3. Connect76.
  4. Enable motion76.
  5. Set the mode76.
  6. Set the state76.
  • After start-up the control box is in mode 0, position control, by default. Setting state 0 puts the arm in standby and clears the error code; the reported state then becomes 2, ready77.
  • A controller input configured as Enable Robot enables the arm when triggered, and one configured as Offline Task can trigger Blockly projects78.
  • A payload set through the SDK is lost at reboot unless saved. save_conf() keeps the current settings across a restart, and clean_conf() restores the defaults79.

Making Collision Detection Trustworthy

  • Studio's presets include "Gripper", at 0.82 kg with its center of gravity at z = 48 mm and a TCP offset of z = 172 mm, and "Vacuum Gripper", at 0.61 kg with its center of gravity at z = 53 mm and a TCP offset of z = 126 mm75.
  • UFACTORY says collision detection can sometimes trigger falsely, often in connection with the tool's load, center of mass, installation orientation or friction parameters. It recommends updating the payload after each pick and each release in a pick-and-place program80.
  • On xArm 5/6/7 arms the joint friction parameters used by collision detection are stored in the arm, and reloaded by pressing and releasing the emergency stop; on arms before XX1300 they are stored in the controller. Replacing the control box can leave them mismatched, which may trigger false collisions81.

Pausing, Stopping and Hand-Guiding from a Program

  • State 3 pauses motion and state 0 resumes it. State 4 stops the arm, after which it accepts no command until set back to standby82.
  • Manual mode is mode 2, and it must be reached through mode 0: from any other mode, the first request switches to mode 0 and only a second one takes effect. Switch back to mode 0 when teaching is done83.

Recovering from Errors

From the SDK, recovery is three calls in order67:

  1. clean_error() clears the error67.
  2. motion_enable(true) re-enables the arm67.
  3. set_state(0) sets the motion state67.
  • Error code C22, self-collision: re-plan the path. If it keeps coming back, turn on manual mode in Live Control and drag the arm back to a normal position84.
  • Error code C23, a joint past its limit: press Initial Position in Live Control84.
  • Joint servo errors: release the control box emergency stop, then enable the arm. For S16, an encoder initialization error, make sure no outside force moves the arm while it is powered on85.

For error code C31, abnormal current, the Studio manual as read on 2026-10-13 shows the joint, its theoretical and actual torque, the collision sensitivity, the TCP payload and the mounting direction, and gives one instruction: check whether the robot has collided86. Until that date it listed six checks, and it has not said they no longer apply8788:

  1. Has the arm actually collided?88
  2. Do the TCP payload mass and center of mass match the real payload?88
  3. Does the mounting direction match reality?88
  4. Do payload settings made inside the program match the real payload?88
  5. Reduce the motion speed88.
  6. The sixth check was to lower the collision sensitivity88. The higher that level, the smaller the extra torque that triggers collision protection, and UFACTORY does not recommend lowering it below 389. The xArm manual says that altering the controller safety configuration makes the robot system a new system whose safety reviews, such as risk assessments, must be updated90.

When the Arm Is Stuck

  • Studio's Debugging Tools can unlock a single joint so it can be turned by hand. The unlocked joint gives no force: someone must support the arm, and every joint must be locked again afterwards91.
  • Unlocking is mainly for moving an arm in error to a safer posture, or turning a joint that is past its range back into range92.
  • The xArm manual describes a protective stop with a reset button. In it CI0 is set as Safeguard Reset in Studio (Settings - External - Controller IO - IO Function)93, and the arm resumes when SI0 and SI1 are connected to GND and CI0 is connected to GND; it pauses when SI0 and SI1 are disconnected from GND94. SI is the control box's safeguard stop input64; the xArm manual calls the protective stop input a fixed safety input, used for all types of safety protection65. It also says installation and commissioning need to be performed by professionals39.

Going Home Skips the Checks

  • move_gohome() returns the arm to zero at 50 °/s by default. reset() clears errors and warnings and, if the arm is not ready, enables it and sets its state. The SDK warns that both run without limit detection95.
  • After an emergency stop, the manual says to make sure restart or reset motions will not collide with any obstacle41.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s06-i-01Safety Your program hits an error. In what order does UFACTORY recover the arm through the Python SDK?
  1. Check option (a)

    Correct. Right. Clear the error, re-enable the arm, then set the motion state.67

  2. Check option (b)

    Not this one. The error is cleared first and the state is set last.67

  3. Check option (c)

    Not this one. reset() runs without limit detection. UFACTORY's recovery steps are clean_error(), motion_enable(true) and set_state(0).9567

q-s06-i-02 You set the payload over the SDK, then rebooted the controller. Now collisions trigger falsely. What is the likeliest cause?
  1. Check option (a)

    Correct. Right. SDK settings are lost at reboot unless saved, and a wrong load is one of the causes UFACTORY gives for false collision triggers.7980

  2. Check option (b)

    Not this one. UFACTORY links a friction-parameter mismatch to replacing the control box. After a reboot, suspect a setting that was never saved.8179

  3. Check option (c)

    Not this one. The reboot points to a setting that was never saved, not to the sensitivity.7980

q-s06-i-03Safety The arm is in error and a joint must be unlocked from Studio's Debugging Tools to move it clear. What does Studio require?

About:91

  1. Check option (a)

    Correct. Right. The unlocked joint provides no force.91

  2. Check option (b)

    Not this one. The unlocked joint provides no force. Someone must support the arm to stop it falling.91

  3. Check option (c)

    Not this one. The tool unlocks a single joint. To move the whole arm by hand, use manual mode, with correct installation and load settings.915455

4Expert

What Sets the Arm's Pace, and What Can Fail

For: Someone who designs, integrates or changes the cell: integrator, engineer, agent developer
Kind of task: Analyze and decide: weigh trade-offs, resolve contradictions, critique a configuration

In this part you take the operating sequence apart: what sets the pace of a cycle on this arm, which figures you can and cannot plan from, how a program can fail part-way through, and how to start the arm and its programs from outside. It is for someone who designs, integrates or changes the cell.

Cycle Time: Measure It, Do Not Derive It

  • The manual's TCP speed parameter runs from 0 to 1000 mm/s. That is the range of a setting96.

A speed setting is not a cycle time. Time a move on the arm itself, carrying the tool and the part it will really carry.

  • In the cell, this platform infers that the laser step may be the real bottleneck97.

A Question to Settle on the Arm

  • Changing a critical setting such as the payload puts the controller into state 5 by itself. It then accepts no command until state 0 is set98.
  • UFACTORY recommends updating the payload after each pick and each release in a pick-and-place program80.

Put those two together before you write the cycle. Find out on the arm, with nobody in reach, what a payload change between a pick and a place does to a running program, and do not assume the answer either way.

How a Program Fails Mid-Cycle

  • The controller switches to state 4 by itself when any error occurs. It stops at once and accepts no new command until set back to standby60.
  • move_gohome() and reset() both run without limit detection95.
  • A payload set through the SDK and not saved with save_conf() is gone after a reboot79. UFACTORY links false collision triggers to the tool's load, among other things80.

Starting Up with xarm_ros2

UFACTORY's xarm_ros2 starts the xArm 6 driver with xarm6_driver.launch.py and the controller's IP address99. Its command-line start-up then runs100:

  1. Enable all joints with /xarm/motion_enable, id 8 and data 1100.
  2. Set mode 0 with /xarm/set_mode100.
  3. Set state 0 with /xarm/set_state100.

Starting Stored Programs from Outside

  • In UFACTORY's Modbus TCP register map, stored Blockly projects are started by writing up to 16 holding registers from address 0x30, each value selecting a project by number; the projects then run in order101.

This project's simulation and agent design, not the physical cell

Commanding S6

  • This project's advice for S6: command motion through the Python SDK in mode 0 and read state from the automatic reports, and confirm the controller's IP address, hardware version and register map on the cell before relying on them102.

Guardrails for an Agent That Drives S6

  • This project's advice: deny the S6 agent the SDK calls that change collision sensitivity, collision detection, collision rebound, reduced mode or the safety boundary, or gate them behind human approval103.
  • This project's advice: do not use Studio's simulated-arm mode as the simulation substrate for S6 agent work. Its settings apply to the real arm, and its unlock-joint button unlocks the real joints104.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s06-e-01 A colleague estimates S6's move times by dividing each distance by 1000 mm/s. What is wrong with that?

About:96

  1. Check option (a)

    Correct. Right. The UFACTORY sources give no cycle-time data for the xArm 6, and no figure for the speed it reaches carrying its full payload.96105

  2. Check option (b)

    Not this one. The manual gives 0 to 1000 mm/s as the range of the TCP speed parameter, a setting.96

  3. Check option (c)

    Not this one. Studio says the jog speed is not the arm's actual maximum motion speed. It is no basis for cycle time either.59

q-s06-e-02Safety A draft program for S6 calls reset() after every error and then carries on. What is the main objection?

About:95

  1. Check option (a)

    Correct. Right. And after an emergency stop, the manual says restart or reset motions must not collide with any obstacle.9541

  2. Check option (b)

    Not this one. reset() does clear errors and warnings. The concern is that it runs without limit detection.95

  3. Check option (c)

    Not this one. The SDK warns that reset() runs without limit detection, so it is not automatically safe.9541

q-s06-e-03Safety In a running pick-and-place program, which of these leave the arm refusing commands until state 0 is set? Choose all that apply.

About:98

  1. Check option (a)

    This one applies. Yes. A payload change puts the controller into state 5 by itself, and it accepts no command until state 0 is set.98

  2. Check option (b)

    This one applies. Yes. The controller switches to state 4 by itself on any error, and accepts no new command until set back to standby, state 0.6077

  3. Check option (c)

    This one does not apply. State 0 is the way out: it puts the arm in standby and clears the error code.77

Not settled

Open Questions · 20

What the sources do not settle for this section. Nothing here is papered over with a plausible number.

  • Kind: Contradiction

    The xArm manual describes the controller-on indicator in two ways: the indicator table calls it STATE and says it flashes when the controller is powered on, while power-on step 2 calls it the status indicator (CONTROLLER) and says it lights up.

    See reference 30
  • Kind: Contradiction

    UFACTORY's sources give two readings of controller error 2 (Studio's C2). The Studio manual until 2026-10-13, and the Python SDK's code list, say the Emergency IO of the Control Box is triggered; the manual's fix was to ground the 2 EIs of the Control Box and click 'Enable Robot'. The Studio manual as read on 2026-10-13 says the Emergency Stop Button is pushed in, and to release it and click 'Enable Robot'; it no longer mentions the Emergency IO or grounding the EIs. No fetched source says the two describe the same event, or which Studio and firmware versions show which text.

    See reference 63
  • Kind: Gap

    The xArm manual's Maintenance and Inspection chapter covers only long-term storage charging and cleaning. No chapter of the fetched manual gives an inspection interval, a lubrication schedule, a brake test or a service life for any part; chapter 1 says only to check the bolts 'regularly'.

    See reference 72
  • Kind: Contradiction

    UFACTORY's Studio manual has given two readings of the handling for error C31. Until 2026-10-13 it listed six numbered checks. As read on 2026-10-13 it shows a diagnostic readout and one instruction; the other five checks are no longer in the row. The manual does not say they no longer apply. UFACTORY's release note for Studio 2.7.0 says C31 'now displays the robot-arm serial number' and that theoretical and actual torque values are logged when the error occurs; it does not mention the six checks, and no fetched source says which Studio versions show the six checks or the single instruction.

    See reference 87
  • Kind: Gap

    No fetched UFACTORY source gives cycle-time data for the xArm 6, or the speed and acceleration it reaches while carrying its full 5 kg payload across its reach; the payload versus TCP offset relationship is published only as a figure.

    See reference 105
  • 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.

    See reference 112
  • Kind: Gap

    The physical I/O that will carry signals between S2 and S4 (and the other stations) is not defined. It may differ from the simulation's signals.

    See reference 115
  • Kind: Gap

    Cycle times for S2's moves (S1 to S3, S3 to S4, and a defective part's move to the defects area) and for the S4/S5 laser step are not documented, so throughput and the benefit of two arms cannot be quantified.

    See reference 116
  • Kind: Gap

    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. IntelliMake says this will be developed as the simulation is created.

    See reference 117
  • Kind: Contradiction

    IntelliMake's written answer (Batch 01, Question 2) and the project's earlier statements have S2 place a part on S4, or on S3 when S4 is busy or the part does not fit there, so that parts need not pass through staging; this project's simulation was specified from that reading, moving cards from one conveyor to another (int-013, int-014, int-051). The project's later statement S146, answering which is right now, gives the route as S1 to S3, and S3 to S4: S2 arranges parts on S3 first, then later moves them from S3 to S4 (int-081). The later statement is the current reading; the earlier records are kept as history, marked as superseded.

    See reference 118
  • Kind: Contradiction

    The project's earlier statement says S2 'can not simply stack' workpieces (int-017), which this project's S2 design read as one card per place on S3. Asked whether same-color cards are placed on top of each other or side by side, the later statement S146 answers 'On top of each other': real stacks on S3 (int-084). The later statement is the current reading for S3, and int-017 is kept as history, marked as superseded. Whether the rest of the earlier rule, not breaking the space the system allocates, still holds is not stated.

    See reference 119
  • Kind: Gap

    How S3 is divided between its staging and defects areas, how many colour areas staging holds, and how many cards a stack may hold are not documented. Whether S3 can hold both kinds of material is itself open: a separate defects station could be added if it cannot (int-087).

    See reference 120
  • Kind: Gap

    How this project's simulation keeps to the cell's route is not fully settled. Since its configuration's schema 0.5.0 (2026-10-07), the simulation is configured to take each card from S1 to S3, then from S3 to S4 (int-081), and S3 has a staging area and a defects area whose stacks each hold up to 10 cards, a labelled placeholder (int-104; one card until 2026-10-18). Since 2026-10-09 the simulation's motion process refuses to place a card anywhere its route does not take it from the place it was picked, and refuses any pick or place in the defects area, which a person must decide (the way for a person to decide is not yet built). Keeping one colour to each stack, and which stack a card goes to, are designed but not enforced: they rest on labels the simulation cannot check. Before 0.5.0 the simulation placed each card on S4, or on S3 when S4 was busy (int-014).

    See reference 121
  • Kind: Gap

    The xArm manual gives no step-by-step unpacking procedure or packing checklist; its transport section covers lifting the arm and controller and keeping the packaging.

    See reference 122
  • Kind: Gap

    The text of the xArm manual's Robot Base Mounting section (2.2.3.1) consists of two figures and gives no written bolt size, bolt count or tightening torque. Any such figures are in the images, which this corpus has not read; no other chapter states them.

    See reference 123
  • Kind: Contradiction

    The xArm manual gives two different AC input ranges for the AC Control Box: the cabling step says 110V-240V, while section 3.2.2 says 100V-240V AC (47-63 Hz) and section 8.1 says 100-240V AC 50/60 Hz.

    See reference 124
  • Kind: Gap

    No fetched UFACTORY source gives the default collision sensitivity level for the xArm 6: the Studio settings page and glossary give the range, and the SDK's set_collision_sensitivity gives no default.

    See reference 125
  • Kind: Gap

    UFACTORY's Studio manual does not say how a script is run, paused, resumed or stopped in the Python IDE, nor how a paused Blockly program is resumed: it lists Blockly's Run and Pause buttons and the STOP button, and no Resume.

    See reference 126
  • Kind: Gap

    How the xArm 6's suction tool is switched from UFACTORY Studio's Live Control is not recorded: the Studio manual lists the Vacuum Gripper among Live Control's end effectors without describing its buttons, and no screen of the xArm 6's Live Control has been captured.

    See reference 127
  • Kind: Contradiction

    The xArm manual describes what an emergency stop needs before the arm can run again in two different ways. The emergency-stop column of section 3.4.1's table says 'Need re-initiation: Only releasing the brake'. Section 2.1.2 lists two restart steps: power the xArm up by turning the emergency stop button, then enable it (the servo motors) from Studio or the SDK. The manual does not say how the two relate.

    See reference 128
Provenance

References · 128

Each number in the text points here. Every entry states its confidence class in words and keeps its evidence one click away. How to read the labels.

Key to the badges
Confidence: Verified
A manufacturer or IntelliMake document says so, or it was observed directly. It does not mean anyone measured it at S6.
Confidence: Inferred
Reasoned from Verified facts. The reasoning is printed with the record.
Confidence: Assumed
Plausible but untested. The record says how it would be checked.
Kind: Gap
Not known. No figure or answer is given in its place.
Kind: Contradiction
Sources disagree. Both sides are shown, and the site does not pick one silently.
Kind: Recommendation
Project advice drawn from the records it cites. Not a fact about the machine and not a confidence class, so the filter never hides it.
Awaiting cell access
Awaiting cell access: could be confirmed or corrected once the physical S6 cell can be observed.
This project's simulation and agent design, not the physical cell
This project's simulation and agent design, not the physical cell.

Image Credits

  • 3D model: © 2018 UFACTORY Inc., BSD-3-Clause, from UFACTORY Inc. (xArm-Developer/xarm_ros2). License text · Source

Sources for This Section

  • 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 1 record here · Project copy; not published on this site.
  • Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org (IntelliMake)
    © IntelliMake.org. Used with permission; redrawn for this platform. · Cleared for use by its owner · retrieved 2026-09-21 · cited by 10 records here · Project copy; not published on this site.
  • Owner statements from 2026-09-24 onward (verbatim; S40 and later) · Derek Stringfellow (project owner)
    Derek Stringfellow, project record · Project-internal record · retrieved 2026-10-04 · cited by 9 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 3 records here · Project copy; not published on this site.
  • UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Release Note v2.7.0 · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 1. Preface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 6 records here · Open the source
  • UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-13 · cited by 8 records here · Open the source
  • UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY Studio User Manual (online), 3. Connection · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-13 · cited by 9 records here · Open the source
  • UFACTORY Studio User Manual (online), 5. Blockly · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-13 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 7. Settings · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-13 · cited by 10 records here · Open the source
  • UFACTORY Studio User Manual, 12. Error Handling, as it read until 2026-10-13 (publisher's repository, commit 533b75d) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-13 · cited by 4 records here · Open the source
  • UFACTORY xArm Hardware Manual (online), 1. Safety · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-25 · cited by 12 records here · Open the source
  • UFACTORY xArm Hardware Manual (online), 2. Hardware Installation · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-25 · cited by 29 records here · Open the source
  • UFACTORY xArm Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-25 · cited by 12 records here · Open the source
  • UFACTORY xArm Hardware Manual (online), 5. Maintenance and Inspection · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-25 · cited by 3 records here · Open the source
  • UFACTORY xArm Hardware Manual (online), 7. Production Information · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-25 · cited by 4 records here · Open the source
  • UFACTORY xArm Hardware Manual (online), 8. Technical Specifications · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-15 · cited by 1 record here · Open the source
  • UFACTORY xArm Hardware Manual (online), Preface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-25 · cited by 1 record here · Open the source
  • UFACTORY xArm product page · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm 850 S2 Project: Open Questions for IntelliMake, Batch 01 responses · IntelliMake.org (IntelliMake)
    © IntelliMake.org. Used with permission. · Cleared for use by its owner · retrieved 2026-09-29 · cited by 2 records here · Project copy; not published on this site.
  • xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 4 records here · Open the source
  • xArm-Python-SDK example 0000-template.py · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xarm_ros2 ReadMe (humble branch) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 2 records here · Open the source

IntelliMake diagrams are redrawn as native figures, © IntelliMake.org. UFACTORY does not endorse this platform.

All sources and attribution