Robots · Robot arms

UFACTORY Lite 6 teleoperation: streaming a desktop arm at policy rates, and when ±0.5 mm is not enough

The Lite 6 is UFACTORY's smallest arm: 600 g, 440 mm, ±0.5 mm, on the same SDK and ROS packages as the xArm series. It is a cheap way into the xArm software world, with a few behaviors that matter once a remote operator or a policy is streaming commands to it.

UFACTORY Lite 6 (and UFACTORY 850), 6-axis desktop cobot
AI-generated illustration of the UFACTORY Lite 6 (and UFACTORY 850). For product photos, see UFACTORY.
Degrees of freedom
6
Payload
600 g
Reach
440 mm
Repeatability
±0.5 mm
Speed
500 mm/s linear; joints up to 180°/s
Arm weight
8 kg
Controller and communication
Built-in control box; Modbus TCP
Software
Python and C++ SDKs, ROS / ROS 2 packages, UFACTORY Studio

Updated

The UFACTORY Lite 6 is a 6-axis desktop arm with a 600 g payload, 440 mm reach and ±0.5 mm repeatability, an 8 kg body with its control box built in, and the same open Python and C++ SDKs and ROS packages as UFACTORY's larger arms. For a robot-learning team it is an inexpensive way to get an industrial-style arm on the bench and collect tabletop data on the xArm software stack. It also has three specific limits worth knowing before you staff it: how it handles streamed commands, what its hand-teaching mode can and cannot do, and where ±0.5 mm stops being good enough. UFACTORY's product page shows two different prices for it, so confirm the current one at quote.

How to drive a Lite 6 remotely

The Lite 6 is driven the same way as an xArm: the xArm SDK or the ROS packages send joint or Cartesian targets to the control box. Our xArm 6 page covers the input devices in depth. For the Lite 6 specifically:

GELLO-style leader

The gello_mechanical repo lists Lite6 among its seven supported robot types, with Lite6-specific parts and instructions contributed by EL2031watson. GELLO's software drives xArm robots through the xArm Python SDK; it does not name the Lite 6, so expect to set joint signs and offsets yourself.

3D mouse or VR (Cartesian)

UFACTORY's own LeRobot integration maps GELLO in joint space and Pika, UMI and SpaceMouse in Cartesian space. Its examples use the xArm 6 and xArm 7 and it does not list the Lite 6, but the Cartesian approach suits a small arm well, because one device works across arms.

Hand teaching

UFACTORY supports hand teaching on the Lite 6. Read the next section before relying on it for data.

Manual mode is current sensing, not force sensing

In an xarm_ros2 issue on Lite 6 impedance control, a UFACTORY maintainer explained that the arms have no integrated force/torque sensor: collision detection and manual mode come from motor current observation and a dynamic model, with friction compensated by an identified model that is "imprecise" but adequate for collision detection and manual mode. The maintainer also doubted the Lite 6 suits compliant control given its low joint torque and payload, and noted the third-party F/T sensor offered for other xArm models is too heavy for it.

For data collection that means two things. Kinesthetic demonstrations on a Lite 6 carry the error of a current-based estimate on top of the ±0.5 mm repeatability, so use a leader arm or a 3D mouse when placement matters. And do not plan contact-rich tasks that depend on the arm yielding gently. If you need compliance, a small tool-side F/T sensor is the route the maintainer suggested.

The control loop: servo mode, online planning and the Lite 6 speed trap

UFACTORY's servo mode guide recommends 50 to 200 Hz for servo streaming (mode 1), handles up to 250 Hz, and warns that below 50 Hz "the robot arm motion may not be continuous". Servo moves run at maximum speed and acceleration, ignore speed parameters, do not buffer (only the latest target runs), and each step should stay under 10 mm. The guide recommends a direct cable to the control box, network latency under 0.5 ms, and avoiding Windows hosts.

Most learned policies, and most teleoperation datasets, run well below 50 Hz. A Lite 6 user streaming an AI model through the ROS position controller hit exactly this: the arm exceeded its speed limit and needed a state reset, despite joint limits set in the YAML. A contributor explained that `move_servo_j` does no interpolation or saturation, so the application must smooth and limit speed itself. The maintainer's advice was to send full trajectories with velocities and timing (typically from MoveIt), or to use joint online trajectory planning (mode 6, `move_joint`), which has internal speed control.

Teleoperation at 20 to 30 Hz

Either interpolate operator targets up to 100 Hz or more on a host cabled to the control box, or use online trajectory planning (mode 6 in joint space, mode 7 in Cartesian space), where a new command interrupts the current motion and the controller handles smoothing.

Policy rollouts

Same rule. Never stream raw 30 Hz joint targets into servo mode and hope the limits hold.

Remote operators

The operator's link is never the 0.5 ms the guide asks for. Keep the high-rate loop on a local host by the arm and send only the operator's targets over the VPN. Our latency guide has budgets by task.

Setting up a Lite 6 bench for remote operators

A local host on a short cable

Put a Linux machine next to the arm and cable it straight to the control box, as the servo guide recommends. That host runs the control loop, the cameras and the recorder. The remote operator never talks to the arm directly.

UFACTORY Studio for recovery

Studio runs on the control box and opens in any browser. Over the same VPN, the operator or a supervisor can check state and clear a fault without walking to the robot, while the person on site handles anything physical.

One control mode, written down

Decide between interpolated servo streaming and online trajectory planning, record which one the dataset used, and do not switch partway through. The two produce visibly different motion.

Camera layout to match the work

For a 440 mm workspace, a wrist view plus one or two fixed views covers most tasks. The public Lite 6 set uses side, front and a first-person camera.

Spares and lead time

UFACTORY quotes 2 to 4 weeks of lead time on the Lite 6. If a fleet depends on uptime, keep a spare gripper and cables on site.

Lite 6 data and LeRobot

The Lite 6 is not one of LeRobot's built-in robots. LeRobot's third-party list includes `lerobot-robot-xarm`, a community plugin for "the xArm collaborative arm series", whose README does not say which models it covers. UFACTORY's own integration pins `lerobot==0.6.1` and shows xArm 6 and 7 examples. In practice, teams either test one of these against a Lite 6 or write a small Robot class around the xArm SDK, with the interpolation described above inside it.

There is public Lite 6 data to compare against. ReubenLim/xarm_lite6_gripper_cube_in_box has 50 episodes and 46,763 frames at 30 fps in LeRobot format v2.1, with three cameras (side, front and a 640×360 first-person view) and a 7-value joint-plus-gripper state and action, under the robot type `xarm_lite6`. We deliver Lite 6 episodes as LeRobot, RLDS or HDF5; the data collection guide covers QA.

What a good Lite 6 operator does

Keeps objects light, and checks the gripper's own weight against the 600 g payload before a task is planned.
Works inside the 440 mm reach with margin. Tasks laid out at the edge of the workspace push the arm into awkward wrist poses and slower, less consistent motion.
Moves smoothly and stops when a collision fault fires, rather than fighting it. A collision fault on a Lite 6 usually needs a state reset, which costs more time than a slow approach.
Reports any fault the moment it appears, with what the arm was doing. An error that is cleared and forgotten tends to come back mid-session.
Leaves resets to the person on site, so the scene is the same at every start and the operator's hands stay on the input device.

When ±0.5 mm is not enough: Lite 6, xArm 6 or UFACTORY 850

The Lite 6's ±0.5 mm repeatability is fine for pick-and-place, sorting and most tabletop learning tasks. It is not enough for tight insertions or for tasks where the policy must place parts to a fraction of a millimetre. Within the same SDK, UFACTORY has two steps up. The xArm 6 specifies ±0.1 mm with 5 kg payload and 700 mm reach. The UFACTORY 850 specifies ±0.02 mm, 5 kg payload, 850 mm reach, up to 1 m/s and joints up to 180°/s, with a 20 kg arm, Ethernet to an included control box, and Modbus RTU at the tool. Its product page, like the Lite 6 page, shows two different prices.

A quick way to find out which side of the line your task is on: before collecting a single demonstration, replay one good trajectory twenty or thirty times and measure where the part ends up. If the spread is already close to your tolerance, no operator and no policy will fix it on this arm. If it is comfortably inside, the remaining error is in the demonstrations, which is a training and protocol problem we can work on.

A sensible pattern for a team on a budget is to prove the task and the operator protocol on a Lite 6, then move precision-critical tasks to an 850 or xArm 6 without changing the software stack. The operator skills carry over; the input-device mapping needs a re-check, because reach and joint limits differ.

How RoboPilots runs Lite 6 teleoperation

The arm stays in your lab. We agree the input device and the control mode (interpolated servo or online planning), install the operator client on your side of a VPN, and train a dedicated group of operators on your unit and your task protocol before the first recorded episode.

One-week trial

A short run sets the clean-episodes-per-operator-hour baseline at your latency. If the arm cannot hold the precision your task needs, we say so that week and point you to the right arm.

Coverage

Shifts across time zones, including US Pacific hours. One person on site handles resets.

Data

Episodes labeled by task and outcome, delivered as LeRobot, RLDS or HDF5.

Interfaces, specs and sources

  • xArm Python / C++ SDK
  • ROS / ROS 2 packages
  • UFACTORY Studio (browser)
  • GELLO Lite6 parts (community)
  • Community LeRobot integrations
  • Hand teaching (manual mode)

Specs are the maker's published figures, checked on . RoboPilots is not affiliated with UFACTORY; product names are trademarks of their owners.

Frequently asked questions

Does LeRobot support the UFACTORY Lite 6?
Not with a built-in driver. A community xArm plugin is listed on LeRobot's third-party page without naming the models it covers, and UFACTORY's own LeRobot integration shows xArm 6 and 7 examples. Many teams write a small Robot class around the xArm SDK.
Why does my Lite 6 exceed its speed limit when streaming from a policy?
Servo-mode joint commands are executed as they arrive with no interpolation or saturation. UFACTORY recommends 50 to 200 Hz for servo mode, or full trajectories with timing, or joint online trajectory planning (mode 6), which has internal speed control.
Is the Lite 6 precise enough for sub-millimetre tasks?
UFACTORY specifies ±0.5 mm repeatability, which suits most pick-and-place but not tight insertions. The xArm 6 specifies ±0.1 mm and the UFACTORY 850 ±0.02 mm on the same software stack.
Does the Lite 6 have force sensing for hand teaching?
No integrated force/torque sensor. A UFACTORY maintainer explained that manual mode and collision detection use motor current observation and a dynamic model, which is adequate for those uses but imprecise.
Can I use a GELLO leader arm with a Lite 6?
The GELLO mechanical repo includes Lite6 parts and instructions from a community contributor. GELLO's software talks to xArm robots through the xArm SDK, so expect some configuration for the Lite 6.