Why Control Modes Matter

A robot arm is ultimately controlled by specifying currents or voltages to motors. But you almost never interact at that level. Instead, robot controllers provide control modes — abstraction layers that let you command the robot in more meaningful terms.

The control mode you choose determines:

  • How the robot responds to contact. A stiff position-controlled arm hitting a hard stop will exert large forces. A compliant impedance-controlled arm will yield gently.
  • What commands your policy outputs. Position mode → joint angle targets. Velocity mode → joint velocities. Each requires different policy design.
  • Safety profile. Position control is safe in open space but dangerous near contact. Torque control enables gentle, safe contact but requires accurate dynamics models.

Position Control

Position control is the default mode for most industrial and collaborative arms.

Command: Target joint angles q_des (or equivalent Cartesian target after IK).

Controller: A PID (Proportional-Integral-Derivative) loop computes the motor torques required to drive the actual joint angles toward q_des. The loop runs at 1–4 kHz.

Characteristics: Very stiff — the controller will exert large forces to reach the commanded position. High repeatability (±0.05 mm). Predictable, fast.

Best for: Structured pick-and-place tasks where there is no unexpected contact; fast, repetitive industrial motions; initial data collection.

Caution: Do not use position control when the robot might collide with an object or a person. Wrap with collision detection or use compliant mode during contact phases.

Velocity Control

Velocity control accepts a desired joint (or Cartesian) velocity and drives the robot to maintain that velocity.

Command: Joint velocity q̇_des or Cartesian velocity ẋ_des.

Controller: Integrates velocity to a position target with velocity limiting; position loop runs underneath.

Best for: Smooth teleoperation — joystick or spacemouse operators command velocity naturally. MoveIt2's "Servo" mode uses Cartesian velocity control to follow operator input in real time.

Caution: If the velocity command is dropped (e.g., network timeout), the robot continues at the last commanded velocity and can overshoot. Implement a watchdog that zeroes velocity on command loss.

Torque / Force Control

Torque control operates at the lowest level: you command the desired torque at each joint directly.

Command: Desired joint torques τ_des.

Controller: Motor driver applies the commanded current (proportional to torque). The robot moves freely in response to external forces — it does not resist contact.

Requirements: Accurate dynamics model (inertia matrix M, Coriolis/centrifugal term C, gravity vector g): τ_des = M(q)q̈_des + C(q,q̇)q̇ + g(q) + τ_contact. Errors in the dynamics model directly appear as motion errors.

Best for: Physical human-robot interaction (HRI) where safety is paramount; tasks requiring very low contact force; research on compliant manipulation.

Caution: Torque control without gravity compensation will cause the arm to fall under gravity. Pure torque control is rarely used standalone — it is typically the inner loop of impedance control.

Impedance Control

Impedance control is the most practically useful mode for contact-rich manipulation. It implements a virtual spring-damper in Cartesian space: the robot behaves as if connected to the commanded position by a spring of stiffness K and damper of coefficient B.

Control law: F = K(x_d − x) + B(ẋ_d − ẋ)

where x_d is the desired position and x is the current position. The robot exerts force proportional to displacement from the desired position.

Stiffness tuning:

  • High stiffness (K = 2000 N/m): Robot behaves almost like position control — strongly resists displacement. Use for precise positioning when contacts are light.
  • Low stiffness (K = 100 N/m): Robot yields to contact forces — safe for interacting with deformable objects or humans. Use for surface following and delicate assembly.
  • Anisotropic stiffness: Set high stiffness along the task direction and low stiffness perpendicular. Classic example for peg insertion: high stiffness in insertion direction, low stiffness for lateral compliance.

Best for: Peg-in-hole insertion, door opening, surface following, assembly tasks, any task involving sustained contact.

Control Mode Comparison

ModeStiffnessCompliant at Contact?Command TypeHardware SupportBest Use Case
PositionVery highNoJoint angles / Cartesian poseUniversalPick-place, fast repetitive tasks
VelocityHighNo (stops when velocity=0)Joint/Cartesian velocityMost cobotsTeleoperation (joystick/servo)
TorqueNear zeroYes (fully back-drivable)Joint torquesTorque-controlled arms onlyHRI safety, inner loop for impedance
ImpedanceTunableYes (spring-like)Desired pose + K/B gainsMost cobots (Cartesian impedance)Contact-rich assembly, peg insertion

In practice, most manipulation policies run in position control mode for the free-space motion phase and switch to impedance control for the contact phase. This hybrid approach gives precision where needed and compliance when touching objects.

To experiment with control modes on real hardware, see the OpenArm tutorial series, which includes hands-on exercises for all four modes.