Robots · Robot arms

UFACTORY xArm 7 teleoperation: the seventh joint, GELLO, VR and bimanual data

The xArm 7 is the 7-axis member of UFACTORY's xArm family and one of the three arms GELLO was first built for. The extra joint is worth having, but only if your teleoperation setup and your data treat it deliberately.

UFACTORY xArm 7, 7-axis lightweight cobot
AI-generated illustration of the UFACTORY xArm 7. For product photos, see UFACTORY.
Degrees of freedom
7
Payload
3.5 kg
Reach
700 mm
Repeatability
±0.1 mm
Max speed
1 m/s (joints up to 180°/s)
Arm weight
14.3 kg
Power
24 V DC; 200 W typical, 500 W max
Robot communication
Ethernet; RS-485 Modbus RTU at the tool

Updated

The UFACTORY xArm 7 shares its controller, SDK and ROS 2 packages with the xArm 6, and adds a seventh joint. UFACTORY rates it at 3.5 kg payload (against 5 kg for the xArm 6), 700 mm reach, ±0.1 mm repeatability and 14.3 kg. Robot-learning teams pick it for the same reason people have elbows: with seven joints the arm can keep its gripper still while it moves its elbow out of the way, which matters for reaching around objects, for human-like bimanual setups, and for mapping a human arm onto a robot arm.

What the seventh joint changes for teleoperation

A 6-axis arm has, in most poses, one joint configuration per gripper pose (or a handful of discrete ones). A 7-axis arm has a continuous family of them: the elbow can swing around a circle while the gripper stays put. That redundancy is useful and it is also the main source of inconsistent xArm 7 data.

Joint-space input fixes the elbow

With a 7-joint leader arm, the operator sets the elbow directly. Every episode records the posture the human chose, and a policy that predicts joint targets learns it.

Cartesian input leaves the elbow to the solver

With a SpaceMouse, VR controller or handheld tracker, the operator commands only the gripper pose. The inverse kinematics picks the elbow, and different solvers, seeds or start poses pick differently. Two operators doing the same task can produce visibly different arm motions.

Decide what the policy should own

If your policy outputs end-effector poses, elbow variation in the data matters less, but your deployment IK must behave like the teleop IK did. If it outputs joint targets, use joint-space teleoperation or pin the elbow behavior so the data is consistent.

Input devices that already support the xArm 7

GELLO (joint-space leader)

The GELLO project built its low-cost leader arms for three robots, Franka, UR5 and the xArm7, with parts under $300 and about 30 minutes of assembly. In its user study (12 participants, bimanual tasks on two UR5s), GELLO gave consistently faster completion times than VR controllers and 3D mice. A 7-joint GELLO is the most direct way to get consistent elbow posture on this arm.

VR hand tracking (BEAVR)

BEAVR is an open-source bimanual VR teleoperation system tested on an xArm7 with a LEAP hand, using a Meta Quest 3S. It reports holding its 30 Hz target (29.93 Hz measured on the xArm7), one-way latency around 33 ms at 30 Hz and about 10 ms at 90 Hz, two-arm operation at 30 Hz, and recordings saved in LeRobot format. On 50 demonstrations of a box pickup, ACT succeeded 10 of 10 times, Diffusion Policy 8 of 10 and smolVLA 7 of 10.

Pika Sense, UMI and SpaceMouse

UFACTORY's own ufactory_teleop drives xArm 5, 6 and 7 (plus Lite 6 and 850) from an AgileX Pika Sense handheld tracker on Ubuntu, defaulting to mode 7, the Cartesian online trajectory planning mode. UFACTORY's LeRobot integration adds UMI and SpaceMouse teleop, and xarm_ros2 includes a MoveIt Servo demo for a SpaceMouse, an Xbox controller or the keyboard.

Servo mode or online planning?

The xArm controller offers several ways to stream motion, and UFACTORY's servo mode guide is explicit about the trade-off. Servo mode (mode 1) wants commands at 50 to 200 Hz, drops anything above 250 Hz, warns that motion may not be continuous below 50 Hz, and asks for consecutive Cartesian points no more than 10 mm apart. A new servo command cannot interrupt the motion in progress. Mode 7, Cartesian online trajectory planning, has the controller plan each move from the speed and acceleration you set, puts less load on the host and the network, and lets a new target interrupt the current motion immediately.

That maps neatly onto teleoperation. A GELLO leader read locally at 100 Hz or more suits joint servo mode. A remote operator, or a policy running at 15 to 30 Hz, is below servo mode's floor; either interpolate on a PC next to the arm to 100 Hz or more, or use mode 7 and let the controller smooth between targets. UFACTORY's Pika teleop defaulting to mode 7 is a good hint about which one they expect to work over imperfect links.

Latency for a remote xArm 7 operator

Under ~50 ms round trip

BEAVR's measured one-way latency (about 33 ms at 30 Hz) sits in this band. Dexterous and contact-rich tasks are realistic, including with a hand on the end of the arm.

~100 to 200 ms

Tabletop pick-and-place, sorting and bimanual handovers still work; fine dexterous work slows down, and Cartesian modes with controller-side planning cope better than raw servo streams.

Above ~250 ms

Direct control of fine work gets hard. Coarse moves under local limits, and supervising a policy, remain practical.

Whatever the link, run the operator client on your side of a VPN rather than streaming a desktop, and keep velocity limits and collision sensitivity enforced on the robot side. Our latency guide covers budgets by task.

Accuracy, calibration and the URDF

UFACTORY specifies repeatability, not absolute accuracy, and that distinction shows up on 7-axis setups. In a GitHub issue a user reported an xArm7 shifting about 1 cm when rotating the end effector 90° in place. UFACTORY staff attributed it to manufacturing and assembly tolerances, noted that the real kinematics differ slightly from the URDF, and said they guarantee repeatability rather than absolute accuracy.

Use the calibrated model

For xArm arms produced after August 2023, xarm_ros2 can read the arm's own kinematic calibration with a script and load it at launch through a kinematics_suffix argument. Do it before recording, and record which model each dataset used.

Prefer joint-space labels when precision matters

Joint angles come straight from the encoders. End-effector poses are computed through a kinematic model, so any model error is in the label. Store joints always, poses as a derived field.

Mirrored arms are separate models

xarm_ros2 includes an xarm7_mirror model for mirrored mounting. In a bimanual rig, make sure each arm loads the right one.

LeRobot and data on the xArm 7

LeRobot has no built-in xArm driver. Two integrations fill the gap. UFACTORY's own lerobot_robot_ufactory registers a uf_robot type (plus a mock robot for testing), pins lerobot 0.6.1, supports GELLO, Pika, UMI and SpaceMouse teleoperation, and lists RealSense and UMI cameras. The community lerobot-robot-xarm plugin, listed on LeRobot's third-party robots page, covers the xArm series too.

For a public reference, panasonicai/xarm7_real_shaver_box_v2 is an xArm7 dataset in LeRobot format with 116 episodes, four cameras at 60 fps, and a π0.5 model listed as trained on it. BEAVR's recordings use the same LeRobot layout. Whatever you record, include all seven joint positions, the gripper or hand state, and every camera on one clock. Our data collection guide covers structure and quality checks.

Building a bimanual xArm 7 station

Two xArm 7s side by side are a common way to get human-like bimanual data without buying a humanoid. The pieces exist, but they are not all packaged together, so check each one before you commit to the layout.

Arm models

Mount one arm normally and one mirrored, and load the xarm7_mirror model for the second so the URDF matches the hardware. Mixing them up produces joint data that looks plausible and is wrong.

ROS 2 launch files

xarm_ros2 offers MoveIt dual-arm control under one RViz session, but its ready-made dual-arm launch files cover the xArm 6, Lite 6 and UFACTORY 850. For two xArm 7s, expect to adapt a launch file and set each arm's DOF, gripper and mounting pose.

Teleop devices

BEAVR has been run with two xArm7s and two LEAP hands at 30 Hz, and UFACTORY's LeRobot integration supports dual-arm UMI teleoperation. Two GELLO leaders also work, at the cost of an operator who has to sit at a two-arm leader station.

One clock

Record both arms, both grippers or hands and every camera against one timestamp source. A few tens of milliseconds of skew between left and right arms is enough to ruin handover data.

What a good xArm 7 operator does

Keeps the elbow in the same posture for the same phase of the task, episode after episode, instead of letting it wander through the redundant range.
Starts each episode from the same joint configuration, not just the same gripper pose. On a 7-axis arm those are not the same thing.
Watches for singularities when jogging in Cartesian space; the xarm_ros2 README warns that MoveIt Servo may treat the home position as a singularity.
Works within the 3.5 kg payload, counting grippers and hands. Dexterous hands are heavy.
Stops rather than forcing contact, and reports collision-detection trips so the sensitivity can be tuned instead of disabled.

xArm 7 or xArm 6?

Choose the xArm 6 when you need the extra payload (5 kg against 3.5 kg) and want simpler kinematics, simpler IK and data that is easier to keep consistent. Choose the xArm 7 when the task needs reaching around obstacles, a human-like arm for bimanual or dexterous-hand work, or a GELLO-style leader that maps a person's whole arm. If you want torque sensing in every joint, the Franka Research 3 is the 7-axis alternative.

How RoboPilots runs xArm 7 teleoperation

The arm stays in your lab. We agree the input device and the control mode with you (joint servo with a local GELLO bridge, or mode 7 for Cartesian devices over a longer link), install the operator client on your side of a VPN, and train a dedicated group of operators on your unit and your task protocol, including the elbow posture rules, before any recorded episode counts.

One-week trial

A short run sets the baseline: clean episodes per operator hour at your latency. If the task needs an operator closer than we can provide, you hear that during the trial.

Coverage

Shifts across time zones, including US Pacific hours, with someone on site to reset scenes.

Data

Episodes labeled by task and outcome, with all seven joints and the kinematic model version recorded, delivered as LeRobot, RLDS or HDF5.

Interfaces, specs and sources

  • xArm Python/C++ SDK
  • xarm_ros2 + MoveIt 2 / MoveIt Servo
  • GELLO leader arm
  • VR hand tracking (BEAVR)
  • Pika Sense, UMI, SpaceMouse
  • LeRobot (UFACTORY and community plugins)

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 GELLO work with the xArm 7?
Yes. The xArm7 was one of the three arms the original GELLO project built leader arms for, alongside the Franka and UR5. A 7-joint GELLO gives joint-for-joint control, including the elbow.
Can you teleoperate an xArm 7 with VR?
Yes. BEAVR, an open-source VR system, was tested on an xArm7 with a Meta Quest 3S and reports about 33 ms one-way latency at 30 Hz, with bimanual support and LeRobot-format recording. There is no official UFACTORY VR app.
Does LeRobot support the xArm 7?
Through plugins rather than a built-in driver. UFACTORY publishes lerobot_robot_ufactory, which pins lerobot 0.6.1 and supports GELLO, Pika, UMI and SpaceMouse teleop, and the community lerobot-robot-xarm plugin covers the series.
What payload does the xArm 7 carry compared with the xArm 6?
UFACTORY rates the xArm 7 at 3.5 kg and the xArm 6 at 5 kg, both with 700 mm reach and ±0.1 mm repeatability.
How much does the xArm 7 cost?
UFACTORY's xArm product page lists the series at US$5,799 to US$5,994 as of October 2026 and does not break the price out by model. Check the page or UFACTORY sales for the exact xArm 7 configuration.