Hacker News new | past | comments | ask | show | jobs | submit login

For more generalized information on how you bring a machine from state A to state B, you may want to read up on Control Systems [0], one of which is the PID controller [1]. It's used in everything from industrial water heaters to quadcopters. It wouldn't surprise me to see them also being used at some level with more advanced robotics.

[0] https://en.wikipedia.org/wiki/Control_system [1] https://en.wikipedia.org/wiki/PID_controller




PID is a generalized control algorithm that performs poorly unless your system is entirely linear. It is overwhelmingly used in industry, however, because it is simple, and anyone can drop in a PID block and adjust three constants to get semi-OK response without understanding anything about the dynamics of the system they are controlling.

For serious control systems you can look up state feedback control, model predictive control, and nonlinear systems control (to name a few very broad categories out of many possible options).


Yes, and I'm compelled to add that robots are typically actuated by servo motors and/or hydraulics, which are very commonly under the control of PID loops. Those PID loops allow the actuators to reach their set-points (whether position, velocity, etc.). To obtain 'smooth' motion, those set-points are usually streamed to the actuator at 60+ Hz, and it is the generation of those set-points that can become very complex; the stream of set-points is not commonly generated by the output of a PID controller.


PID control is rarely used for professional servo applications, with the exception being amateur and lower performance systems (radio controlled, etc). This is especially true with PM servo motors because these machines are inherently nonlinear and cross-coupled. PID doesn't deal with either of these issues (nonlinearity or cross coupling) and therefore offers extremely limited performance.

The industry standard update rate for servo systems is ~1kHz (although it depends on the application), and I have seen systems with >5kHz torque bandwidths. The torque dynamics associated with a typical PM machine used for servo systems are easily in the 10's or 100's of microseconds, so 60Hz control would not cut it.


Again, yes, but to clarify, the 60+ Hz I was referring to was not the servo loop update rate, but the rate at which (loosely speaking) the servo loop setpoint is updated. (1)

For example, KUKA robot arms can operate in a mode where a motion path is planned and a sensor on a tool tip can make slight adjustments to the motion path on the fly. The points on those motion paths (as well as corrections) are updated every 4 or 12ms (83.3 to 250 Hz).

My point is that servo motor drives do indeed implement (sophisticated) PID controllers for current, position, velocity control loops. (2)

Obligatory Defensive Writing:

(1) Typical industrial servo motors implement sophisticated control over the velocity and acceleration profiles of the point to point moves. Anyone interested can look up the DS402 standard and take a look at the motion profile modes of operation.

(2) The PID loops implemented in servo drives are way more sophisticated than the canonical PID control loop equation (https://en.wikipedia.org/wiki/PID_controller). Nonetheless anyone who finds themselves manually tuning the servo loops for an industrial servo motor will surely find themselves setting proportional and integral gains.

Source: Commissioning servo motor drives is a part of my job.


Just because controllers have proportional and integral terms does not mean they are PID controllers!

I'm not just being pedantic here, there is a world of difference between a modern servo controller and a simple (or advanced) PID controller. Good servo controllers include completely different topologies including state feedback decoupling, disturbance decoupling, state tracking feedforward terms, advanced notch filters, sliding mode gains, and many other techniques. This is not just an advanced PID loop, but a different controller design method altogether.

Source: I design servo (and other motor) controllers for a living


One step further for linear motion control systems like CNCs and 3D Printers is a project called TinyG which effectively democratises the application of 6th-order jerk-controlled motion planning in real-time. https://github.com/synthetos/TinyG/wiki

Very natural looking movement from these systems! https://youtu.be/aucE49ZBXx0?t=46




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: