I am currently trying to parametrize the low-level gains of a robotic arm. This arm uses a classical PID for each joint.

I am trying to use a method based on computation rather than a trial-and-error/tweaking approach. The method I use considers each joint independently and assumes the system driven by the PID is linear. Hence I infer a transfer function, a characteristic polynomial, poles and this gives me gains $K_p$, $K_i$, and $K_d$ for each joint.

Now, computed as I did, these gains depend on the natural angular-frequency. For example: $$ K_p = 3 a w^2 $$ where $a$ is the inertia and $w$ is the natural angular-frequency.

Hence my question: how shall I compute $w$, the natural angular-frequency for my system? Is this an enormous computation involving the geometry and other complex characteristics of the robot, and that only a computer can do or are there simple assumptions to be made which can already give a rough result for $w$?

I guess this is a complex computation and this is one of the reasons why PID gains are most often found by trial-and-error rather than from computation. Though I am looking for some more details on the subject to help me understand what is possible and what is not.

Kind regards,



2 Answers 2


For a rough calculation of natural frequency, you could create an bode plot.

Starting at low frequencies, command a sin wave and measure the amplitude of the output motion (which will be a phase-shifted sin wave). Plotting the output amplitude on a log-scale, if you're lucky the response will be flat for a while, turn relatively quickly, and then start decaying in a straight line (again, make sure it is a log-log plot). If you extend the 2 asymptotic lines, the early horizontal and the later decaying, the point at which they intersect is the natural frequency.

That said, I am doubtful that you will get a good result.

  • First, it assumes a second order linear system which is sometimes a good approximation and sometimes not.
  • Second, it can sometimes be hard and sometimes dangerous to measure the response especially at higher frequencies.
  • Lastly, mathematical tuning techniques like these only work well for simple, isolated systems. A robotic arm is anything but: movement at the wrist joint significantly affects the elbow joint creating a complex coupling. At best, the mathematical tuning will give you a starting point from which you will need to manually tune.

Rough estimates of the resonant angular frequency $\hat{\omega}_i$ for joint $i$ can be always guessed from the current configuration of the manipulator.

Let focus on joint $i$ and consider all downstream joints $\left \{j:i<j \le n \right \}$, where $n$ is the number of DOFs of manipulator. Put the angular positions $\theta_j$ of these latter joints in such a way to determine somehow a worst case estimate (see below) of moment of inertia $\hat{I}_i^{\text{max}}$ computed with respect to joint $i$; that is:

$$ \hat{I}_i^{\text{max}}= \max_{\mathbf{\theta} \in \mathbb{R}^{n-i}} I_i(\mathbf{\theta}). $$

Then, by neglecting the internal dynamics and friction components: $$ \hat{\omega}_i=\sqrt\frac{\hat{k}_i}{\hat{I}_i^{\text{max}}}, $$

where $\hat{k}_i$ represents an estimate of the stiffness of the downstream structure. See this link for further details. Here, $\hat{I}_i^{\text{max}}$ can be retrieved through simple geometrical inspections, and also by resorting to tools such as the Huygens–Steiner theorem.

Importantly, since it comes out that $\hat{\omega}_i$ is inversely proportional to $\hat{I}_i^{1/2}$, we then try to maximize $\hat{I}_i$ in order to account for the worst impact (i.e. lower $\hat{\omega}_i$) on the control design.

Of course, the validity of such an approach remains limited, but yet worth being pursued, particularly considering that you're not forced to experiment on the real manipulator to get the Bode plot.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.