Velocity Control
速度控制CommonThe higher level specifies a desired speed, and the drive makes the motor or robot move at that speed.
Velocity control means a higher level specifies a desired velocity and the lower level tracks it, at two possible levels. At the joint level, a servo drive's velocity mode (e.g., CSV mode in the CiA 402 protocol) accepts a target speed and closes a velocity loop internally; a stepper motor's speed is instead set directly by its pulse frequency. At the task level, a desired end-effector velocity can be converted to joint velocities via the Jacobian pseudoinverse; a mobile base receives linear and angular velocity, converted into left and right wheel speeds using the wheelbase and wheel radius. Compared to position control, it doesn't directly govern where the system ends up — position error must be closed by a higher-level loop, making it more sensitive to delay, an effect also seen in Diffusion Policy's ablation experiments; compared to torque control, it doesn't directly govern how much force is applied, so it's less compliant on contact.
ExampleROS 2's diff_drive_controller subscribes to the cmd_vel velocity command, takes the x-component of linear velocity and the z-component of angular velocity, converts them using the wheelbase and wheel radius, and writes the result to the left and right wheel joints' velocity command interfaces.
- Also called
- Velocity Mode, Speed Control
- Related
- Position Control · Torque Control · Cascade Control · Cyclic Synchronous Position / Velocity / Torque Modes (CiA 402) · Differential Drive Kinematics · Velocity Command Tracking
- Sources
- Lynch & Park, Modern Robotics (2017 preprint), 11.3 Motion Control with Velocity Inputs
ros2_controllers: diff_drive_controller
Diffusion Policy(velocity control is more affected by latency than position control)