1 parent
03b428836b
commit
5e566f95c1
25 files changed
+386
-23
No files matched your search
@@ -6,10 +6,244 @@ category = "Signals and Systems"
|
||||
+++
|
||||
|
||||
Tags
|
||||
:
|
||||
: [Discrete Transfer Functions]({{< relref "discrete_transfer_functions.md" >}})
|
||||
|
||||
Classical transfer functions in the Laplace domain, with the meaning of their parameters.
|
||||
In all the examples, the frequency of interest is \\(\omega\_0 = 2\pi\\) rad/s (1 Hz) and is shown with a dashed line.
|
||||
To obtain the equivalent digital filter, see [Discrete Transfer Functions]({{< relref "discrete_transfer_functions.md" >}}).
|
||||
|
||||
|
||||
## Typical Transfer Functions {#typical-transfer-functions}
|
||||
## First Order Low Pass Filter {#first-order-low-pass-filter}
|
||||
|
||||
\begin{equation}
|
||||
H(s) = \frac{1}{1 + s/\omega\_0}
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_0\\): cut-off frequency in [rad/s]
|
||||
|
||||
Characteristics:
|
||||
|
||||
- Low frequency gain of \\(1\\)
|
||||
- At \\(\omega\_0\\): gain of \\(1/\sqrt{2}\\) (-3 dB) and phase of -45 deg
|
||||
- High frequency roll-off of -20 dB/dec, phase tends to -90 deg
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
w0 = 2*pi; % Cut-off frequency [rad/s]
|
||||
|
||||
H = 1/(1 + s/w0);
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-low-pass-first-order"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_low_pass_first_order.png" caption="<span class='figure-number'>Figure 1: </span>First order low pass filter, effect of \\(\omega\_0\\) (dashed: \\(\omega\_0 = 2\pi\\) rad/s)" >}}
|
||||
|
||||
|
||||
## First Order High Pass Filter {#first-order-high-pass-filter}
|
||||
|
||||
\begin{equation}
|
||||
H(s) = \frac{s/\omega\_0}{1 + s/\omega\_0}
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_0\\): cut-off frequency in [rad/s]
|
||||
|
||||
Characteristics:
|
||||
|
||||
- High frequency gain of \\(1\\)
|
||||
- At \\(\omega\_0\\): gain of \\(1/\sqrt{2}\\) (-3 dB) and phase of +45 deg
|
||||
- Low frequency slope of +20 dB/dec, phase tends to +90 deg
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
w0 = 2*pi; % Cut-off frequency [rad/s]
|
||||
|
||||
H = (s/w0)/(1 + s/w0);
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-high-pass-first-order"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_high_pass_first_order.png" caption="<span class='figure-number'>Figure 2: </span>First order high pass filter, effect of \\(\omega\_0\\) (dashed: \\(\omega\_0 = 2\pi\\) rad/s)" >}}
|
||||
|
||||
|
||||
## Second Order Low Pass Filter {#second-order-low-pass-filter}
|
||||
|
||||
\begin{equation}
|
||||
H(s) = \frac{1}{1 + \frac{2 \zeta}{\omega\_0} s + \frac{s^2}{\omega\_0^2}}
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_0\\): natural frequency in [rad/s]
|
||||
- \\(\zeta\\): damping ratio
|
||||
|
||||
Characteristics:
|
||||
|
||||
- Low frequency gain of \\(1\\)
|
||||
- High frequency roll-off of -40 dB/dec, phase tends to -180 deg
|
||||
- Phase of -90 deg at \\(\omega\_0\\), whatever the damping
|
||||
- Gain at \\(\omega\_0\\) equal to \\(1/(2\zeta)\\)
|
||||
- For \\(\zeta < 1/\sqrt{2}\\) there is a resonance peak, for \\(\zeta \geq 1/\sqrt{2}\\) the magnitude is monotonically decreasing
|
||||
- Smaller \\(\zeta\\) gives a sharper phase transition around \\(\omega\_0\\)
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
w0 = 2*pi; % Natural frequency [rad/s]
|
||||
zeta = 0.1; % Damping ratio
|
||||
|
||||
H = 1/(1 + 2*zeta/w0*s + s^2/w0^2);
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-low-pass-second-order"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_low_pass_second_order.png" caption="<span class='figure-number'>Figure 3: </span>Second order low pass filter, effect of the damping ratio \\(\zeta\\)" >}}
|
||||
|
||||
|
||||
## Second Order High Pass Filter {#second-order-high-pass-filter}
|
||||
|
||||
\begin{equation}
|
||||
H(s) = \frac{s^2/\omega\_0^2}{1 + \frac{2 \zeta}{\omega\_0} s + \frac{s^2}{\omega\_0^2}}
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_0\\): natural frequency in [rad/s]
|
||||
- \\(\zeta\\): damping ratio
|
||||
|
||||
Characteristics:
|
||||
|
||||
- High frequency gain of \\(1\\)
|
||||
- Low frequency slope of +40 dB/dec, phase tends to +180 deg
|
||||
- Phase of +90 deg at \\(\omega\_0\\), whatever the damping
|
||||
- Gain at \\(\omega\_0\\) equal to \\(1/(2\zeta)\\), resonance peak for \\(\zeta < 1/\sqrt{2}\\)
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
w0 = 2*pi; % Natural frequency [rad/s]
|
||||
zeta = 0.1; % Damping ratio
|
||||
|
||||
H = (s^2/w0^2)/(1 + 2*zeta/w0*s + s^2/w0^2);
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-high-pass-second-order"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_high_pass_second_order.png" caption="<span class='figure-number'>Figure 4: </span>Second order high pass filter, effect of the damping ratio \\(\zeta\\)" >}}
|
||||
|
||||
|
||||
## Notch Filter {#notch-filter}
|
||||
|
||||
\begin{equation}
|
||||
H(s) = \frac{s^2 + 2 g\_c \zeta \omega\_n s + \omega\_n^2}{s^2 + 2 \zeta \omega\_n s + \omega\_n^2}
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_n\\): frequency of the notch in [rad/s]
|
||||
- \\(g\_c\\): gain at the notch frequency (\\(g\_c < 1\\) gives a notch, \\(g\_c > 1\\) gives a peak)
|
||||
- \\(\zeta\\): damping ratio, sets the width of the notch
|
||||
|
||||
Characteristics:
|
||||
|
||||
- Unity gain at low and high frequency
|
||||
- Gain of exactly \\(g\_c\\) at \\(\omega\_n\\), with a phase of 0 deg
|
||||
- For \\(g\_c < 1\\): phase is negative below \\(\omega\_n\\) and positive above
|
||||
- Larger \\(\zeta\\) gives a wider notch, and more phase lag/lead around it
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
wn = 2*pi; % Notch frequency [rad/s]
|
||||
gc = 0.02; % Gain at the notch frequency
|
||||
zeta = 0.2; % Damping ratio (notch width)
|
||||
|
||||
H = (s^2 + 2*gc*zeta*wn*s + wn^2)/(s^2 + 2*zeta*wn*s + wn^2);
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-notch-gc"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_notch_gc.png" caption="<span class='figure-number'>Figure 5: </span>Notch filter, effect of the gain at the notch frequency \\(g\_c\\)" >}}
|
||||
|
||||
<a id="figure--fig:filter-notch-zeta"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_notch_zeta.png" caption="<span class='figure-number'>Figure 6: </span>Notch filter, effect of the damping ratio \\(\zeta\\) (notch width)" >}}
|
||||
|
||||
|
||||
## Lead Filter {#lead-filter}
|
||||
|
||||
A lead filter is usually used to add some phase lead at a particular frequency, at the expense of a reduction of the gain at low frequency and increase of the gain at high frequency.
|
||||
|
||||
\begin{equation}
|
||||
H(s) = \frac{1}{\sqrt{a}} \frac{1 + \frac{s}{\omega\_c/\sqrt{a}}}{1 + \frac{s}{\omega\_c \sqrt{a}}}, \quad a > 1
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_c\\): frequency at which the phase lead is maximum, in [rad/s]
|
||||
- \\(a\\): sets the amount of phase lead, and the gain increase between low and high frequency
|
||||
|
||||
Characteristics:
|
||||
|
||||
- Zero at \\(\omega\_c/\sqrt{a}\\) and pole at \\(\omega\_c \sqrt{a}\\), geometrically centered on \\(\omega\_c\\)
|
||||
- Unity gain at \\(\omega\_c\\), low frequency gain of \\(1/\sqrt{a}\\), high frequency gain of \\(\sqrt{a}\\)
|
||||
- Maximum phase lead, obtained at \\(\omega\_c\\), equal to (Figure [Figure 8](#figure--fig:filter-lead-effect-a-phase)):
|
||||
\\[ \angle H(j\omega\_c) = \tan^{-1}(\sqrt{a}) - \tan^{-1}(1/\sqrt{a}) \\]
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
a = 3; % Amount of phase lead
|
||||
wc = 2*pi; % Frequency of maximum phase lead [rad/s]
|
||||
|
||||
H = 1/sqrt(a)*(1 + s/(wc/sqrt(a)))/(1 + s/(wc*sqrt(a)));
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-lead"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_lead.png" caption="<span class='figure-number'>Figure 7: </span>Lead filter, effect of the parameter \\(a\\)" >}}
|
||||
|
||||
<a id="figure--fig:filter-lead-effect-a-phase"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_lead_effect_a_phase.png" caption="<span class='figure-number'>Figure 8: </span>Maximum phase lead as a function of \\(a\\)" >}}
|
||||
|
||||
|
||||
## Lag Filter {#lag-filter}
|
||||
|
||||
A lag filter is usually used to add low frequency gain, at the expense of some phase lag.
|
||||
|
||||
\begin{equation}
|
||||
H(s) = a \cdot \frac{1 + \frac{s}{\omega\_c \sqrt{a}}}{1 + \frac{s}{\omega\_c/\sqrt{a}}}, \quad a > 1
|
||||
\end{equation}
|
||||
|
||||
Parameters:
|
||||
|
||||
- \\(\omega\_c\\): frequency at which the phase lag is maximum, in [rad/s]
|
||||
- \\(a\\): sets the amount of phase lag, and the gain increase at low frequency (the low frequency gain is \\(a\\))
|
||||
|
||||
Characteristics:
|
||||
|
||||
- Zero at \\(\omega\_c \sqrt{a}\\) and pole at \\(\omega\_c/\sqrt{a}\\)
|
||||
- Low frequency gain of \\(a\\), high frequency gain of \\(1\\) (unchanged), gain of \\(\sqrt{a}\\) at \\(\omega\_c\\)
|
||||
- It is used to increase the low frequency gain (e.g. instead of a pure integrator), \\(\omega\_c\\) should be kept well below the crossover frequency to limit the phase lag there
|
||||
|
||||
<!--listend-->
|
||||
|
||||
```matlab
|
||||
a = 3; % Amount of phase lag
|
||||
wc = 2*pi; % Frequency of maximum phase lag [rad/s]
|
||||
|
||||
H = a*(1 + s/(wc*sqrt(a)))/(1 + s/(wc/sqrt(a)));
|
||||
```
|
||||
|
||||
<a id="figure--fig:filter-lag"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/filter_lag.png" caption="<span class='figure-number'>Figure 9: </span>Lag filter, effect of the parameter \\(a\\)" >}}
|
||||
|
||||
|
||||
## Bibliography {#bibliography}
|
||||
|
||||
@@ -10,6 +10,88 @@ Tags
|
||||
: [Multivariable Control]({{< relref "multivariable_control.md" >}})
|
||||
|
||||
|
||||
## Decoupling Control of Parallel Kinematics Robots {#decoupling-control-of-parallel-kinematics-robots}
|
||||
|
||||
Consider a rigid body (mass matrix \\(\bm{M}\\), stiffness matrix \\(\bm{K}\\)) suspended by actuators, with their forces \\(\bm{\tau}\\) and the change of length of the struts \\(\bm{\mathcal{L}}\\).
|
||||
The Jacobian matrix \\(\bm{J}\\) relates the pose \\(\bm{\mathcal{X}}\\) of the body to the strut lengths, \\(\bm{\mathcal{L}} = \bm{J} \bm{\mathcal{X}}\\), and the actuator forces to the wrench \\(\bm{\mathcal{F}}\\) applied on the body, \\(\bm{\mathcal{F}} = \bm{J}^{\intercal} \bm{\tau}\\).
|
||||
|
||||
The transfer function in the actuator frame is:
|
||||
|
||||
\begin{equation}
|
||||
\bm{G}\_{\\{\mathcal{L}\\}}(s) = \frac{\bm{\mathcal{L}}}{\bm{\tau}} = \bm{J} \left( \bm{M} s^2 + \bm{C} s + \bm{K} \right)^{-1} \bm{J}^{\intercal}
|
||||
\end{equation}
|
||||
|
||||
Depending on the frequency range, the dynamics is dominated by the stiffness (low frequency) or the inertia (high frequency).
|
||||
The best frame to decouple the system is not the same in the two cases.
|
||||
|
||||
|
||||
### Control at the Center Of Mass {#control-at-the-center-of-mass}
|
||||
|
||||
For soft systems (for instance voice coil based), it makes sense to work at the Center of Mass (CoM).
|
||||
Above the "suspension modes", the dynamics is dominated by inertia.
|
||||
Therefore, the transfer function from forces and torques applied at the CoM to the translation and rotation of the suspended mass evaluated at the CoM is decoupled.
|
||||
It is equal to the inverse of the mass matrix (diagonal when evaluated at the CoM) times \\(1/s^2\\):
|
||||
|
||||
\begin{equation}
|
||||
\bm{G}\_{\\{CoM\\}}(s) = \frac{\bm{\mathcal{X}}\_{\\{CoM\\}}}{\bm{\mathcal{F}}\_{\\{CoM\\}}} \approx \frac{1}{s^2} \bm{M}^{-1}
|
||||
\end{equation}
|
||||
|
||||
To work at the CoM, the plant is pre- and post-multiplied by the Jacobian matrices as shown in Figure [Figure 1](#figure--fig:detail-control-decoupling-control-jacobian):
|
||||
|
||||
\begin{equation}
|
||||
\bm{G}\_{\\{CoM\\}}(s) = \bm{J}\_{\\{CoM\\}}^{-1} \\, \bm{G}\_{\\{\mathcal{L}\\}}(s) \\, \bm{J}\_{\\{CoM\\}}^{-\intercal}
|
||||
\end{equation}
|
||||
|
||||
<a id="figure--fig:detail-control-decoupling-control-jacobian"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/detail_control_decoupling_control_jacobian.png" caption="<span class='figure-number'>Figure 1: </span>Plant with inputs \\(\bm{\tau}\\) and outputs \\(\bm{\mathcal{L}}\\), and the Jacobian matrices used to work with forces and displacements at the CoM" >}}
|
||||
|
||||
The animations below show a 3DoF suspended body above its suspension modes (1 Hz), when a force or a torque is applied at the CoM.
|
||||
The three actuator forces are computed with \\(\bm{\tau} = \bm{J}\_{\\{CoM\\}}^{-\intercal} \bm{\mathcal{F}}\_{\\{CoM\\}}\\) (the darker the actuator, the larger its force).
|
||||
|
||||
**Force along \\(x\\) applied at the CoM**: the body only translates along \\(x\\).
|
||||
|
||||
<a id="figure--fig:decoupled-control-com-Fx"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/decoupled_control_com_Fx.gif" caption="<span class='figure-number'>Figure 2: </span>Force along \\(x\\) applied at the CoM (1 Hz): pure translation" >}}
|
||||
|
||||
**Torque about \\(z\\) applied at the CoM**: the body only rotates around its CoM.
|
||||
|
||||
<a id="figure--fig:decoupled-control-com-Mz"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/decoupled_control_com_Mz.gif" caption="<span class='figure-number'>Figure 3: </span>Torque about \\(z\\) applied at the CoM (1 Hz): pure rotation" >}}
|
||||
|
||||
|
||||
### Control in the Actuator Frame {#control-in-the-actuator-frame}
|
||||
|
||||
For stiff parallel systems, the dynamics from \\(\bm{\tau}\\) to \\(\bm{\mathcal{L}}\\) is well decoupled at low frequency (well below the first resonance frequency).
|
||||
At low frequency, the dynamics is dominated by the stiffness: with \\(\bm{K} = \bm{J}^{\intercal} \mathcal{K} \bm{J}\\), \\(\mathcal{k}\\) being the diagonal matrix of the actuator stiffnesses, the transfer function from \\(\bm{\tau}\\) to \\(\bm{\mathcal{L}}\\) is diagonal:
|
||||
|
||||
\begin{equation}
|
||||
\bm{G}\_{\\{\mathcal{L}\\}}(0) = \bm{J} \bm{K}^{-1} \bm{J}^{\intercal} = \mathcal{K}^{-1}
|
||||
\end{equation}
|
||||
|
||||
Each actuator then only changes the length of its own strut.
|
||||
The control can be designed independently for each actuator, using the length of the strut as the sensor.
|
||||
|
||||
Below the suspension modes, actuating one actuator moves the body, but the lengths of the two other struts do not change.
|
||||
Therefore, the plant in the frame of the actuators is decoupled.
|
||||
|
||||
<a id="figure--fig:decoupled-control-low-freq-act-1"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/decoupled_control_low_freq_act_1.gif" caption="<span class='figure-number'>Figure 4: </span>Left actuator at 0.1 Hz (below the suspension modes): only the strut of the actuated direction changes length" >}}
|
||||
|
||||
<a id="figure--fig:decoupled-control-low-freq-act-2"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/decoupled_control_low_freq_act_2.gif" caption="<span class='figure-number'>Figure 5: </span>Bottom left actuator at 0.1 Hz (below the suspension modes): only the strut of the actuated direction changes length" >}}
|
||||
|
||||
At higher frequency, the inertia becomes important and the system is coupled: using only the first actuator also excites the other directions and the other struts change length.
|
||||
|
||||
<a id="figure--fig:decoupled-control-high-freq-act-1"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/decoupled_control_high_freq_act_1.gif" caption="<span class='figure-number'>Figure 6: </span>Left actuator at 1 Hz (above the suspension modes): the system is coupled, the body translates and rotates" >}}
|
||||
|
||||
|
||||
## Bibliography {#bibliography}
|
||||
|
||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||
|
||||
@@ -11,8 +11,59 @@ Tags
|
||||
|
||||
Two main ways to evaluate the interaction:
|
||||
|
||||
- [Relative Gain Array]({{< relref "relative_gain_array.md" >}})
|
||||
- [Structured Singular Value]({{< relref "structured_singular_value.md" >}})
|
||||
- Relative Gain Array
|
||||
- Structured Singular Value
|
||||
|
||||
|
||||
## Relative Gain Array {#relative-gain-array}
|
||||
|
||||
Imagine a 2x2 plant:
|
||||
\\[ G(s) = \begin{bmatrix} g\_{11}(s) & g\_{12}(s)\\\ g\_{21}(s) & g\_{22}(s) \end{bmatrix} \\]
|
||||
|
||||
Now suppose a controller \\(k\_{1}(s)\\) is closed on the first loop.
|
||||
The new transfer function from \\(u\_2\\) to \\(y\_2\\) (while the first loop is closed) is :
|
||||
|
||||
\begin{equation}
|
||||
y\_2 = g\_{22} \left[ 1 - \underbrace{\frac{g\_{21}g\_{12}}{g\_{11}g\_{22}}}\_{\phi} \underbrace{\frac{g\_{11} k\_{11}}{1 + g\_{11}k\_{11}}}\_{T\_{11}} \right]
|
||||
\end{equation}
|
||||
|
||||
\\(\phi\\) is called the **interaction index**.
|
||||
\\(T\_{11}\\) is the complementary sensitivity of the first loop (equal to 1 in the bandwidth of the first controller).
|
||||
Therefore, we want \\(\phi \approx 0\\) to have no interaction.
|
||||
|
||||
Similarly, the **relative gain** is defined as:
|
||||
\\[ \Lambda = \frac{1}{1 - \phi} \\]
|
||||
And we want \\(\Lambda \approx 1\\) to have no interaction.
|
||||
|
||||
Note that the scaling of inputs or outputs of the MIMO plant has no effect on \\(\phi\\) or \\(\Lambda\\).
|
||||
|
||||
The **relative gain array** is defined as:
|
||||
\\[ \Lambda(G) = G \star (G^{-1})^{T} \\]
|
||||
where \\(\star\\) means element wise multiplication.
|
||||
|
||||
```matlab
|
||||
RGA = G.*pinv(G.')
|
||||
```
|
||||
|
||||
|
||||
## RGA-number {#rga-number}
|
||||
|
||||
The RGA-number is a scalar measure of how far the RGA is from the identity matrix (i.e. from a plant without interaction):
|
||||
|
||||
\begin{equation}
|
||||
\text{RGA-number} = \\| \Lambda(G) - I \\|\_{\text{sum}} = \sum\_{i,j} \left| \Lambda\_{ij} - \delta\_{ij} \right|
|
||||
\end{equation}
|
||||
|
||||
with \\(\delta\_{ij}\\) the Kronecker delta, and \\(\\|\cdot\\|\_{\text{sum}}\\) the sum of the absolute values of all the elements.
|
||||
|
||||
The RGA-number should be small around the crossover frequency of the decentralized controller, as this is where the interaction matters most.
|
||||
|
||||
```matlab
|
||||
RGA = G.*pinv(G.');
|
||||
RGA_number = sum(sum(abs(RGA - eye(size(RGA)))));
|
||||
```
|
||||
|
||||
For a plant evaluated over frequency, this is computed at each frequency point of the frequency response.
|
||||
|
||||
|
||||
## Bibliography {#bibliography}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
+++
|
||||
title = "Model Predictive Control"
|
||||
author = ["Dehaeze Thomas"]
|
||||
draft = false
|
||||
category = "Control Theory"
|
||||
subcategory = "Advanced Control"
|
||||
+++
|
||||
|
||||
Tags
|
||||
:
|
||||
|
||||
|
||||
## Bibliography {#bibliography}
|
||||
|
||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||
</div>
|
||||
+13
-1
@@ -465,7 +465,7 @@ Numbering can be continued by using `+n` option as shown below.
|
||||
```
|
||||
<div class="src-block-caption">
|
||||
<span class="src-block-number"><a href="#code-snippet--lst:tikz-test-general-control-names">Code Snippet 4</a>:</span>
|
||||
Tikz code that is used to generate <a href="#org4a89346">5</a>
|
||||
Tikz code that is used to generate <a href="#org587cbdd">5</a>
|
||||
</div>
|
||||
|
||||
<a id="figure--fig:test-general-control-names"></a>
|
||||
@@ -632,9 +632,21 @@ It is approximately **12,742 km**
|
||||
|
||||
## Videos {#videos}
|
||||
|
||||
|
||||
### Youtube link {#youtube-link}
|
||||
|
||||
{{< youtube SzA2YODtgK4 >}}
|
||||
|
||||
|
||||
### GIF generated from Python {#gif-generated-from-python}
|
||||
|
||||
Animation of a 3DoF rigid body excited by the left actuator at 1 Hz, generated by the Python block below.
|
||||
|
||||
<a id="figure--fig:coupling-high-freq-1Hz"></a>
|
||||
|
||||
{{< figure src="/ox-hugo/coupling_high_freq_1Hz.gif" caption="<span class='figure-number'>Figure 7: </span>GIF generated from Python" >}}
|
||||
|
||||
|
||||
## Bibliography {#bibliography}
|
||||
|
||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
|
||||
|
||||
Reference in new issue
Block a user