Swing-Up of a Weakly Actuated Double Pendulum
via Nonlinear Normal Modes

Arne Sachtler1,2, Davide Calzolari1,2, Maximilian Raff3, Annika Schmidt1,2, Yannik P. Wotte4,4{}^{4},start_FLOATSUPERSCRIPT 4 end_FLOATSUPERSCRIPT ,
Cosimo Della Santina5,1, C. David Remy3, and Alin Albu-Schäffer1,2
This work was supported by the Advanced Grant M-Runners (ID: 835284) by the European Research Council (ERC).1German Aerospace Center (DLR), Institute of Robotics and Mechatronics; Münchener Straße 20, 82234 Oberpfaffenhofen, Germany. ([email protected])2Technical University of Munich (TUM), Department of Computer Engineering; Boltzmannstraße 3, 85748 Garching, Germany.3University of Stuttgart, Institute for Nonlinear Mechanics; Pfaffenwaldring 9, 70569 Stuttgart, Germany.4University of Twente, Robotics & Mechatronics Group; Drienerlolaan 5, 7522 NB Enschede, The Netherlands.5Delft University of Technology (TU Delft), Department of Cognitive Robotics; Mekelweg 2, 2628 CD Delft, The Netherlands.
Abstract

We identify the nonlinear normal modes spawning from the stable equilibrium of a double pendulum under gravity, and we establish their connection to homoclinic orbits through the unstable upright position as energy increases. This result is exploited to devise an efficient swing-up strategy for a double pendulum with weak, saturating actuators. Our approach involves stabilizing the system onto periodic orbits associated with the nonlinear modes while gradually injecting energy. Since these modes are autonomous system evolutions, the required control effort for stabilization is minimal. Even with actuator limitations of less than 1% of the maximum gravitational torque, the proposed method accomplishes the swing-up of the double pendulum by allowing sufficient time.

I Introduction

Swing-up control of a double pendulum is a very classical problem in nonlinear control usually focusing on underactuated systems such as the double pendulum on a cart [1, 2, 3], or pendula where only the first joint (PenduBot) [4] or only the second joint (AcroBot) is actuated [5, 6]. However, there is also a different class of pendulum systems for which swing-up control is necessary: fully actuated systems with weak actuators. Weak means that the motor torque limits are small compared to the system’s drift - i.e., potential and inertial forces. Beyond these torque limits, any control action will saturate. Consider the analogy of a gymnast: the torques the gymnast can apply to the high bar are not enough to hold the body in the horizontal position. Still, the swing-up and the stabilization to the upright position are possible.

We are especially interested in energy-efficient control approaches as these usually reduce the power drawn from the actuators, hel** to succeed with weak actuation. Several groups have dealt with energy-based approaches for swing-up of double pendula [3, 4, 5, 7, 6] and also a single pendulum [8].

Refer to caption
Figure 1: Two pairs of nonlinear normal mode generators of the double pendulum shown on the torus. Both generators (blue, red) start at the downward stable equilibrium (white dot) and meet at the upright equilibrium (purple dot) approaching homoclinic orbits. A version of this illustration ironed onto the q1q2subscript𝑞1subscript𝑞2q_{1}q_{2}italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT-plane is shown in Fig. 4a.

The double pendulum in gravity is a classical example of a chaotic system [9]. Thus, if we just inject energy without a proper control approach, it will generally get chaotic. However, there exists a rich variety of periodic orbits (see [10] for a classification) besides the chaos. One class of these periodic orbits are nonlinear normal modes (NNMs), which we have studied in the past years [11, 12] and developed control approaches to stabilize, excite and mechanically implement NNMs on robots [13, 14, 15, 16, 17]. NNMs can be seen as continuous families of periodic orbits of increasing energy level, each orbit having exactly two turning points. All velocities are zero at these points, i.e., the system’s energy is purely potential. This type of orbit having two turning points is called brake orbit and the collection of all such orbits is called eigenmanifold of the mode. The eigenmanifold encodes the system’s natural dynamics in a submanifold of the state space.

The double pendulum has two NNMs that we compute using continuation methods. Consider Fig. 1 for a glimpse of the results; more details and formal definitions will come later. Both NNMs approach homoclinic orbits passing through the unstable upright position: the two NNMs connect the downward equilibrium to the unstable one upright. Gradually injecting energy along these NNMs can thus be used for energy-efficient swing-up to the upright position.

In simulations, we show that we can swing-up the double pendulum with weak actuators when exploiting the two NNM of the system. Even when the motor torque limits are at 0.3%percent0.30.3\%0.3 % of the maximal gravitational torque, we can still swing up by allowing enough time (\approx\qty266).

II Nonlinear Modal Analysis

Consider the thin rod model of a double pendulum in Fig. 2. Joint coordinates are denoted by 𝒒=(q1,q2)2𝒒subscript𝑞1subscript𝑞2superscript2\boldsymbol{q}=(q_{1},q_{2})\in\mathbb{R}^{2}bold_italic_q = ( italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ) ∈ blackboard_R start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT. Using the Lagrange formalism, the dynamics are

𝑴(𝒒)𝒒¨+𝒄(𝒒,𝒒˙)+𝒈(𝒒)=𝝉,𝑴𝒒¨𝒒𝒄𝒒˙𝒒𝒈𝒒𝝉\boldsymbol{M}(\boldsymbol{q})\ddot{\boldsymbol{q}}+\boldsymbol{c}(\boldsymbol% {q},\dot{\boldsymbol{q}})+\boldsymbol{g}(\boldsymbol{q})=\boldsymbol{\tau},bold_italic_M ( bold_italic_q ) over¨ start_ARG bold_italic_q end_ARG + bold_italic_c ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) + bold_italic_g ( bold_italic_q ) = bold_italic_τ , (1)

where 𝑴(𝒒)2×2𝑴𝒒superscript22\boldsymbol{M}(\boldsymbol{q})\in\mathbb{R}^{2\times 2}bold_italic_M ( bold_italic_q ) ∈ blackboard_R start_POSTSUPERSCRIPT 2 × 2 end_POSTSUPERSCRIPT is the mass matrix, 𝒈(𝒒)2𝒈𝒒superscript2\boldsymbol{g}(\boldsymbol{q})\in\mathbb{R}^{2}bold_italic_g ( bold_italic_q ) ∈ blackboard_R start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT are the gravitational forces, 𝒄(𝒒,𝒒˙)2𝒄𝒒˙𝒒superscript2\boldsymbol{c}(\boldsymbol{q},\dot{\boldsymbol{q}})\in\mathbb{R}^{2}bold_italic_c ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) ∈ blackboard_R start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT contains the Coriolis and centrifugal forces, and 𝝉2𝝉superscript2\boldsymbol{\tau}\in\mathbb{R}^{2}bold_italic_τ ∈ blackboard_R start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT are the generalized forces acting at the joints (usually actuation). The total energy is

E(𝒒,𝒒˙)=12𝒒˙𝖳𝑴(𝒒)𝒒˙+V(𝒒),V(𝒒)=V0+i2migzi(𝒒),formulae-sequence𝐸𝒒˙𝒒12superscript˙𝒒𝖳𝑴𝒒˙𝒒𝑉𝒒𝑉𝒒subscript𝑉0superscriptsubscript𝑖2subscript𝑚𝑖𝑔subscript𝑧𝑖𝒒\small E(\boldsymbol{q},\dot{\boldsymbol{q}})=\frac{1}{2}\dot{\boldsymbol{q}}^% {\mathsf{T}}\boldsymbol{M}(\boldsymbol{q})\dot{\boldsymbol{q}}+V(\boldsymbol{q% }),\quad V(\boldsymbol{q})=V_{0}+\sum_{i}^{2}m_{i}gz_{i}(\boldsymbol{q}),italic_E ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) = divide start_ARG 1 end_ARG start_ARG 2 end_ARG over˙ start_ARG bold_italic_q end_ARG start_POSTSUPERSCRIPT sansserif_T end_POSTSUPERSCRIPT bold_italic_M ( bold_italic_q ) over˙ start_ARG bold_italic_q end_ARG + italic_V ( bold_italic_q ) , italic_V ( bold_italic_q ) = italic_V start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_m start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_g italic_z start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( bold_italic_q ) ,

where zi(𝒒)subscript𝑧𝑖𝒒z_{i}(\boldsymbol{q})italic_z start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( bold_italic_q ) is the height of the i𝑖iitalic_i-th center of mass. We set V0subscript𝑉0V_{0}italic_V start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT such that E(𝒒eq,𝟎)=0𝐸subscript𝒒eq00E(\boldsymbol{q}_{\mathrm{eq}},\boldsymbol{0})=0italic_E ( bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT , bold_0 ) = 0. As well-known, this model has a stable equilibrium at 𝒒eq=(0,0)subscript𝒒eq00\boldsymbol{q}_{\mathrm{eq}}=(0,0)bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT = ( 0 , 0 ) and three unstable equilibria. Table I shows the numerical values we set.

Refer to caption
l1subscript𝑙1l_{1}italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
Refer to caption
l2subscript𝑙2l_{2}italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
𝒑2subscript𝒑2\boldsymbol{p}_{2}bold_italic_p start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
Refer to caption
𝒑1subscript𝒑1\boldsymbol{p}_{1}bold_italic_p start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
𝒄2subscript𝒄2\boldsymbol{c}_{2}bold_italic_c start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
𝒄1subscript𝒄1\boldsymbol{c}_{1}bold_italic_c start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
Refer to caption
z1subscript𝑧1z_{1}italic_z start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
z2subscript𝑧2z_{2}italic_z start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
Refer to caption
q1subscript𝑞1q_{1}italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
q2subscript𝑞2q_{2}italic_q start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT
Refer to caption
g𝑔gitalic_g
Refer to caption
Figure 2: Double pendulum under gravity. The links are assumed thin rods.

II-A Nonlinear Normal Modes: Brief Introduction

Given the equations of motion (1), we linearize the system at the stable equilibrium (𝒒,𝒒˙)=(𝒒eq,𝟎)𝒒˙𝒒subscript𝒒eq0(\boldsymbol{q},\dot{\boldsymbol{q}})=(\boldsymbol{q}_{\mathrm{eq}},% \boldsymbol{0})( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) = ( bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT , bold_0 )

𝟎=𝑴(𝒒eq)𝒒~¨+2V(𝒒eq)𝒒2𝒒~,0𝑴subscript𝒒eq¨~𝒒superscript2𝑉subscript𝒒eqsuperscript𝒒2~𝒒\boldsymbol{0}=\boldsymbol{M}(\boldsymbol{q}_{\mathrm{eq}})\ddot{\tilde{% \boldsymbol{q}}}+\frac{\partial^{2}V(\boldsymbol{q}_{\mathrm{eq}})}{\partial% \boldsymbol{q}^{2}}\tilde{\boldsymbol{q}},bold_0 = bold_italic_M ( bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT ) over¨ start_ARG over~ start_ARG bold_italic_q end_ARG end_ARG + divide start_ARG ∂ start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT italic_V ( bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT ) end_ARG start_ARG ∂ bold_italic_q start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG over~ start_ARG bold_italic_q end_ARG , (2)

where 𝒒~=𝒒𝒒eq~𝒒𝒒subscript𝒒eq\tilde{\boldsymbol{q}}=\boldsymbol{q}-\boldsymbol{q}_{\mathrm{eq}}over~ start_ARG bold_italic_q end_ARG = bold_italic_q - bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT. This linear system can be decomposed into two different oscillators with frequencies ω1subscript𝜔1\omega_{1}italic_ω start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and ω2subscript𝜔2\omega_{2}italic_ω start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT evolving along the directions of the corresponding eigenvectors 𝒗1subscript𝒗1\boldsymbol{v}_{1}bold_italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and 𝒗2subscript𝒗2\boldsymbol{v}_{2}bold_italic_v start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT. Nonlinear normal modes (NNMs) extend this concept of modes to nonlinear systems [12]. However, NNMs cannot keep all of the properties of linear modes. For example, we drop the superposition principle.

To compute NNMs, we start with the two linear modes (𝒗1,ω1)subscript𝒗1subscript𝜔1(\boldsymbol{v}_{1},\omega_{1})( bold_italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_ω start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) and (𝒗2,ω2)subscript𝒗2subscript𝜔2(\boldsymbol{v}_{2},\omega_{2})( bold_italic_v start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_ω start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ), and investigate what happens to the nonlinear system (1). Let’s look at (𝒗1,ω1)subscript𝒗1subscript𝜔1(\boldsymbol{v}_{1},\omega_{1})( bold_italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_ω start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) first. For very small energies the linearization approximately holds, and we see almost harmonic oscillations with frequencies ω1subscript𝜔1\omega_{1}italic_ω start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT along 𝒗1subscript𝒗1\boldsymbol{v}_{1}bold_italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT when initializing at 𝒒(0)=𝒒eq+ϵ𝒗1𝒒0subscript𝒒eqitalic-ϵsubscript𝒗1\boldsymbol{q}(0)=\boldsymbol{q}_{\mathrm{eq}}+\epsilon\boldsymbol{v}_{1}bold_italic_q ( 0 ) = bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT + italic_ϵ bold_italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and 𝒒˙(0)=𝟎˙𝒒00\dot{\boldsymbol{q}}(0)=\boldsymbol{0}over˙ start_ARG bold_italic_q end_ARG ( 0 ) = bold_0. These periodic orbits will have exactly two turning points, where the velocity is zero. The same holds for the other mode (𝒗2,ω2)subscript𝒗2subscript𝜔2(\boldsymbol{v}_{2},\omega_{2})( bold_italic_v start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT , italic_ω start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT ). We call this type of orbit brake orbit.

Refer to caption
Figure 3: Sketch of one periodic orbit of an NNM for the energy level E𝐸Eitalic_E in configuration space. The system periodically oscillates between two turning points 𝒒isubscript𝒒absent𝑖\boldsymbol{q}_{\curvearrowleft{}i}bold_italic_q start_POSTSUBSCRIPT ↶ italic_i end_POSTSUBSCRIPT where it synchronously comes to rest before reversing direction.

As we increase the energy, the nonlinearity will prevent these periodic orbits from extending linearly. However, we can make them periodic motions again by adjusting the turning points slightly. As constraints, we set that the periodic orbits must have exactly two turning points. Adjusting the turning points is performed by multiple shooting using an integrated Jacobian of the flow [18]. We repeat this process of repeatedly increasing the energy and adjusting the turning points. This results in a continuous family of brake orbits starting from the i𝑖iitalic_i-th linear mode. We call this collection of orbits the i𝑖iitalic_i-th nonlinear normal mode.

For nonlinear systems, the turning points 𝒒subscript𝒒\boldsymbol{q}_{\curvearrowleft}bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT are no longer described by 𝒒=𝒒eq±ϵ𝒗isubscript𝒒plus-or-minussubscript𝒒eqitalic-ϵsubscript𝒗𝑖\boldsymbol{q}_{\curvearrowleft}=\boldsymbol{q}_{\mathrm{eq}}\pm\epsilon% \boldsymbol{v}_{i}bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT = bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT ± italic_ϵ bold_italic_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT, but by a function 𝒒=𝑮i±(E)subscript𝒒subscript𝑮limit-from𝑖plus-or-minus𝐸\boldsymbol{q}_{\curvearrowleft}=\boldsymbol{G}_{i\pm}(E)bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT = bold_italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E ), which we choose to parameterize by energy E𝐸Eitalic_E. We call the images of these functions the generators of the mode i𝑖iitalic_i. In the nonlinear case also the period time Ti(E)subscript𝑇𝑖𝐸T_{i}(E)italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) changes with energy.

Fig. 3 sketches one such orbit for one energy level. The turning points are given by the generators of the mode. By initializing the system to either 𝑮i+(E)subscript𝑮limit-from𝑖𝐸\boldsymbol{G}_{i+}(E)bold_italic_G start_POSTSUBSCRIPT italic_i + end_POSTSUBSCRIPT ( italic_E ) or 𝑮i(E)subscript𝑮limit-from𝑖𝐸\boldsymbol{G}_{i-}(E)bold_italic_G start_POSTSUBSCRIPT italic_i - end_POSTSUBSCRIPT ( italic_E ) with zero velocity we obtain a periodic orbit oscillating between the two turning points. Formally:

𝒒(0)𝒒0\displaystyle\boldsymbol{q}(0)bold_italic_q ( 0 ) =𝑮i±(E)absentsubscript𝑮limit-from𝑖plus-or-minus𝐸\displaystyle=\boldsymbol{G}_{i\pm}(E)= bold_italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E ) 𝒒˙(0)˙𝒒0\displaystyle\quad\dot{\boldsymbol{q}}(0)over˙ start_ARG bold_italic_q end_ARG ( 0 ) =𝟎absent0\displaystyle=\boldsymbol{0}= bold_0
𝒒(t)𝒒𝑡\displaystyle\boldsymbol{q}(t)bold_italic_q ( italic_t ) =𝒒(t+Ti(E))absent𝒒𝑡subscript𝑇𝑖𝐸\displaystyle=\boldsymbol{q}(t+T_{i}(E))= bold_italic_q ( italic_t + italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) ) 𝒒˙(t)˙𝒒𝑡\displaystyle\quad\dot{\boldsymbol{q}}(t)over˙ start_ARG bold_italic_q end_ARG ( italic_t ) =𝒒˙(t+Ti(E)).absent˙𝒒𝑡subscript𝑇𝑖𝐸\displaystyle=\dot{\boldsymbol{q}}(t+T_{i}(E)).= over˙ start_ARG bold_italic_q end_ARG ( italic_t + italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) ) .

The turning points are at 𝒒1=𝒒(kTi(E))subscript𝒒absent1𝒒𝑘subscript𝑇𝑖𝐸\boldsymbol{q}_{\curvearrowleft{}1}=\boldsymbol{q}(kT_{i}(E))bold_italic_q start_POSTSUBSCRIPT ↶ 1 end_POSTSUBSCRIPT = bold_italic_q ( italic_k italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) ) and 𝒒2=𝒒(1/2(2k+1)Ti(E))subscript𝒒absent2𝒒122𝑘1subscript𝑇𝑖𝐸\boldsymbol{q}_{\curvearrowleft{}2}=\boldsymbol{q}(\nicefrac{{1}}{{2}}(2k+1)T_% {i}(E))bold_italic_q start_POSTSUBSCRIPT ↶ 2 end_POSTSUBSCRIPT = bold_italic_q ( / start_ARG 1 end_ARG start_ARG 2 end_ARG ( 2 italic_k + 1 ) italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) ) for k𝑘k\in\mathbb{Z}italic_k ∈ blackboard_Z. Generally, the orbit does not necessarily contain 𝒒eqsubscript𝒒eq\boldsymbol{q}_{\mathrm{eq}}bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT, but it is the case in our system as 𝑴(𝒒)𝑴𝒒\boldsymbol{M}(\boldsymbol{q})bold_italic_M ( bold_italic_q ) and V(𝒒)𝑉𝒒V(\boldsymbol{q})italic_V ( bold_italic_q ) are symmetric [19, 20].

Finally, when collecting all orbits of the i𝑖iitalic_i-th NNM for all energies E𝐸Eitalic_E, we get a two-dimensional submanifold i2nsubscript𝑖superscript2𝑛\mathcal{M}_{i}\subset\mathbb{R}^{2n}caligraphic_M start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ⊂ blackboard_R start_POSTSUPERSCRIPT 2 italic_n end_POSTSUPERSCRIPT of the state space. We call this submanifold the eigenmanifold of the i𝑖iitalic_i-th NNM:

i={[𝒒(t)𝒒˙(t)]2n|𝒒(0)=𝑮i±(E),𝒒˙(0)=𝟎,E[0,Emax),t[0,Ti(E)).},\mathcal{M}_{i}=\left\{\begin{bmatrix}\boldsymbol{q}(t)\\ \dot{\boldsymbol{q}}(t)\end{bmatrix}\in\mathbb{R}^{2n}\right.\left|\begin{% array}[]{lcl}\boldsymbol{q}(0)&=&\boldsymbol{G}_{i\pm}(E),\\ \dot{\boldsymbol{q}}(0)&=&\boldsymbol{0},\end{array}\hfill\begin{array}[]{lcl}% E&\in&[0,E_{\mathrm{max}}),\\ t&\in&[0,T_{i}(E)).\end{array}\right\},caligraphic_M start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT = { [ start_ARG start_ROW start_CELL bold_italic_q ( italic_t ) end_CELL end_ROW start_ROW start_CELL over˙ start_ARG bold_italic_q end_ARG ( italic_t ) end_CELL end_ROW end_ARG ] ∈ blackboard_R start_POSTSUPERSCRIPT 2 italic_n end_POSTSUPERSCRIPT | start_ARRAY start_ROW start_CELL bold_italic_q ( 0 ) end_CELL start_CELL = end_CELL start_CELL bold_italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E ) , end_CELL end_ROW start_ROW start_CELL over˙ start_ARG bold_italic_q end_ARG ( 0 ) end_CELL start_CELL = end_CELL start_CELL bold_0 , end_CELL end_ROW end_ARRAY start_ARRAY start_ROW start_CELL italic_E end_CELL start_CELL ∈ end_CELL start_CELL [ 0 , italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT ) , end_CELL end_ROW start_ROW start_CELL italic_t end_CELL start_CELL ∈ end_CELL start_CELL [ 0 , italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) ) . end_CELL end_ROW end_ARRAY } ,

where [𝒒(t),𝒒˙(t)]𝖳superscript𝒒𝑡˙𝒒𝑡𝖳[\boldsymbol{q}(t),\dot{\boldsymbol{q}}(t)]^{\mathsf{T}}[ bold_italic_q ( italic_t ) , over˙ start_ARG bold_italic_q end_ARG ( italic_t ) ] start_POSTSUPERSCRIPT sansserif_T end_POSTSUPERSCRIPT is a solution to (1). Note that it is a free choice to either use 𝑮i+(E)subscript𝑮limit-from𝑖𝐸\boldsymbol{G}_{i+}(E)bold_italic_G start_POSTSUBSCRIPT italic_i + end_POSTSUBSCRIPT ( italic_E ) or 𝑮i(E)subscript𝑮limit-from𝑖𝐸\boldsymbol{G}_{i-}(E)bold_italic_G start_POSTSUBSCRIPT italic_i - end_POSTSUBSCRIPT ( italic_E ) as the generator. They will generate the same eigenmanifold.

At this point we want to highlight that each orbit of the modes is a solution to the equations of motion. Theoretically, following them happens naturally, without control input.

II-B NNMs of the Double Pendulum

We compute the NNMs of the double pendulum, using the parameters reported in Table I. The maximal potential energy Emax=max𝒒V(𝒒)=12.985 Jsubscript𝐸maxsubscript𝒒𝑉𝒒times12.985jouleE_{\mathrm{max}}=\max_{\boldsymbol{q}}V(\boldsymbol{q})=$12.985\text{\,}% \mathrm{J}$italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT = roman_max start_POSTSUBSCRIPT bold_italic_q end_POSTSUBSCRIPT italic_V ( bold_italic_q ) = start_ARG 12.985 end_ARG start_ARG times end_ARG start_ARG roman_J end_ARG is reached when the pendulum is in the upright position. There cannot be more potential energy. Hence, no brake orbit (and no NNM) can exist beyond this energy level Emaxsubscript𝐸maxE_{\mathrm{max}}italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT [10]. By the continuation, we can only approach Emaxsubscript𝐸maxE_{\mathrm{max}}italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT but not reach it.

Refer to caption
(a) Two pairs of NNM generators
Refer to caption
(b) Period times
Refer to caption
(c) Modal oscillations for E=11.0 J𝐸times11.0jouleE=$11.0\text{\,}\mathrm{J}$italic_E = start_ARG 11.0 end_ARG start_ARG times end_ARG start_ARG roman_J end_ARG.
Refer to caption
(d) Cartesian representation for some energy levels
Figure 4: NNMs of the double pendulum. (a) Generators. The bold and bold-dashed lines show the two pairs of generators and the thin gray lines show some trajectories of the NNMs projected into configuration space. The white/purple dots match the ones in Fig. 1; (b) period times for different energy levels; (c) exemplary angle evolution and angular velocity evolution for both NNMs at E=11.0 J𝐸times11.0jouleE=$11.0\text{\,}\mathrm{J}$italic_E = start_ARG 11.0 end_ARG start_ARG times end_ARG start_ARG roman_J end_ARG. The symbols \blacksquare and \bigstar mark the points on the generators. (d) modal oscillations for a selection of energy levels on both modes shown in Cartesian representation.

Fig. 4a shows the two pairs of both generators 𝑮i±(E)subscript𝑮limit-from𝑖plus-or-minus𝐸\boldsymbol{G}_{i\pm}(E)bold_italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E ) (light blue, red) in configuration space, the solid gray lines show several trajectories in configuration space, and the dashed gray lines show isolines of the potential energy V(𝒒)𝑉𝒒V(\boldsymbol{q})italic_V ( bold_italic_q ). The white circle marks the stable equilibrium, and the purple dots mark the upright equilibrium. Note, that the purple dots all correspond to the same configuration (Fig. 1). Both generators (the collection of turning points) approach the upright equilibrium as EEmax𝐸subscript𝐸maxE\rightarrow E_{\mathrm{max}}italic_E → italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT! We show one exemplary period of both modes in Fig. 4c for E=11.0 J𝐸times11.0jouleE=$11.0\text{\,}\mathrm{J}$italic_E = start_ARG 11.0 end_ARG start_ARG times end_ARG start_ARG roman_J end_ARG (85%Emaxabsentpercent85subscript𝐸max\approx 85\%E_{\mathrm{max}}≈ 85 % italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT). They clearly look nonlinear. Fig. 4d shows several orbits of both modes in Cartesian space. The blue and orange lines show the paths of 𝒑1subscript𝒑1\boldsymbol{p}_{1}bold_italic_p start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and 𝒑2subscript𝒑2\boldsymbol{p}_{2}bold_italic_p start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT (cmp. 2).

Fig. 4b shows the period times Ti(E)subscript𝑇𝑖𝐸T_{i}(E)italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ). In both cases:

limEEmaxTi(E)=.subscript𝐸subscript𝐸maxsubscript𝑇𝑖𝐸\lim\limits_{E\rightarrow E_{\mathrm{max}}}T_{i}(E)=\infty.roman_lim start_POSTSUBSCRIPT italic_E → italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT end_POSTSUBSCRIPT italic_T start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ) = ∞ .

The nonlinear normal modes both approach homoclinic orbits asymptotically. While we can never reach these homoclinics, we can get arbitrarily close.

Main Insight: Both NNMs connect the stable equilibrium 𝐪eqsubscript𝐪eq\boldsymbol{q}_{\mathrm{eq}}bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT to a configuration 𝐪subscript𝐪\boldsymbol{q}_{\curvearrowleft}bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT arbitrarily close to the unstable equilibrium 𝐪dessubscript𝐪des\boldsymbol{q}_{\mathrm{des}}bold_italic_q start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT via continuous families of periodic brake-orbits. This 𝐪subscript𝐪\boldsymbol{q}_{\curvearrowleft}bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT is a turning point where all velocities vanish.

We can walk up the eigenmanifold as slowly as desired. Finally, we will reach a periodic orbit having turning points arbitrarily close to the upright position.

II-C Eigenmanifold Parametrization

For the control approach we need to parameterize the eigenmanifolds: we require functions Xisubscript𝑋𝑖X_{i}italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT and X˙i:𝒫n:subscript˙𝑋𝑖𝒫superscript𝑛\dot{X}_{i}:\mathcal{P}\rightarrow\mathbb{R}^{n}over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT : caligraphic_P → blackboard_R start_POSTSUPERSCRIPT italic_n end_POSTSUPERSCRIPT that map a two-dimensional parameter domain 𝒫𝒫\mathcal{P}caligraphic_P to the eigenmanifold p𝒫:[Xi(p),X˙i(p)]𝖳i:for-all𝑝𝒫superscriptsubscript𝑋𝑖𝑝subscript˙𝑋𝑖𝑝𝖳subscript𝑖\forall p\in\mathcal{P}:[X_{i}(p),\dot{X}_{i}(p)]^{\mathsf{T}}\in\mathcal{M}_{i}∀ italic_p ∈ caligraphic_P : [ italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_p ) , over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_p ) ] start_POSTSUPERSCRIPT sansserif_T end_POSTSUPERSCRIPT ∈ caligraphic_M start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT.

One of these parameters is the total energy in the system. For the second parameter, which should encode the phase along an orbit, we look at the orbits more closely to come up with a phase.

For both nonlinear normal modes, we take trajectories of different energies and project them onto two-dimensional sections of the four-dimensional state space. There are six unique combinations of states. We show all six projections in Fig. 5 for the two modes. The color of the lines indicates the energy level. When closely looking at the projected trajectories in Fig. 5, we observe that we can use the angle

φ=atan2(q˙1,q1)𝜑atan2subscript˙𝑞1subscript𝑞1\varphi=\operatorname{atan2}(\dot{q}_{1},q_{1})italic_φ = atan2 ( over˙ start_ARG italic_q end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) (3)

in the q1q˙1subscript𝑞1subscript˙𝑞1q_{1}\dot{q}_{1}italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT over˙ start_ARG italic_q end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT-plane (greenish boxes) as a modal phase. This is because there are no curls in the curves and φ𝜑\varphiitalic_φ is bijective to each curve (for a fixed energy level). Both eigenmanifolds isubscript𝑖\mathcal{M}_{i}caligraphic_M start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT are parametrizable by energy E𝐸Eitalic_E and the phase φ𝜑\varphiitalic_φ:

𝒒=Xi(E,φ)𝒒˙=X˙i(E,φ).formulae-sequence𝒒subscript𝑋𝑖𝐸𝜑˙𝒒subscript˙𝑋𝑖𝐸𝜑\boldsymbol{q}=X_{i}(E,\varphi)\quad\dot{\boldsymbol{q}}=\dot{X}_{i}(E,\varphi).bold_italic_q = italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E , italic_φ ) over˙ start_ARG bold_italic_q end_ARG = over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E , italic_φ ) . (4)
Refer to caption
Figure 5: Projection of modal trajectories onto sections of the state space. The right lower triangular matrix of plots shows mode 1 and the upper left mode 2. The color indicates the corresponding energy level. A combination of energy E𝐸Eitalic_E and the angle φ=atan2(q˙1,q1)𝜑atan2subscript˙𝑞1subscript𝑞1\varphi=\operatorname{atan2}(\dot{q}_{1},q_{1})italic_φ = atan2 ( over˙ start_ARG italic_q end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) in the q1q˙1subscript𝑞1subscript˙𝑞1q_{1}\dot{q}_{1}italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT over˙ start_ARG italic_q end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT-plane (greenisch boxes) can be used to parametrize the eigenmanifolds.
Refer to caption
Figure 6: Eigenmanifold parametrization of both modes by the functions Xi(E,φ)subscript𝑋𝑖𝐸𝜑X_{i}(E,\varphi)italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E , italic_φ ) (left half) and X˙i(E,φ)subscript˙𝑋𝑖𝐸𝜑\dot{X}_{i}(E,\varphi)over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E , italic_φ ) (right half). The surfaces show the respective states for given energy E𝐸Eitalic_E and modal phase φ𝜑\varphiitalic_φ. They are generated by the mesh-based barycentric interpolation algorithm. When taking the cross-section of the surfaces at E=11J𝐸11𝐽E=11Jitalic_E = 11 italic_J the curves in Fig. 4c are obtained. Blue surfaces show mode 1 and red surface mode 2.

To obtain these functions, we compute trajectories of different energies and sample them densely in time. As in [14] this leads to a point-cloud approximation of the eigenmanifold. We then compute energy and phase for each point and Delaunay-triangulate the point cloud in the Eφ𝐸𝜑E\varphiitalic_E italic_φ-plane using the Qhull-library [21]. When given a parameter pair (E,φ)𝐸𝜑(E,\varphi)( italic_E , italic_φ ), we find the simplex containing the parameter and barycentrically interpolate [22] the states on the vertices. Fig. 6 shows the eigenmanifold parametrization by the functions Xisubscript𝑋𝑖X_{i}italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT, X˙isubscript˙𝑋𝑖\dot{X}_{i}over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT for both modes. Blue surfaces show X1subscript𝑋1X_{1}italic_X start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT and X˙1subscript˙𝑋1\dot{X}_{1}over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT (mode 1) and red surfaces show X2subscript𝑋2X_{2}italic_X start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT and X˙2subscript˙𝑋2\dot{X}_{2}over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT (mode 2).

II-D Characteristic Multipliers

We look at a conservative double pendulum. Hence, the NNMs will not be asymptotically stable (Liouville’s Theorem [23]). To still get an idea of the stability of the modes, we compute the characteristic multipliers of the orbits on the two modes numerically. Characteristic multipliers are the eigenvalues of the Jacobian of the Poincaré map [24] that we place at one of the turning points of the brake orbits. This Jacobian is a four-by-four matrix computed by forward integration [18]. We numerically compute the characteristic multipliers for both modes and various energy levels and show the magnitudes |λi|subscript𝜆𝑖|\lambda_{i}|| italic_λ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | of the four eigenvalues λisubscript𝜆𝑖\lambda_{i}italic_λ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT in Fig. 7. Note that two eigenvalues are always one due to energy conservation and the freedom of phase in a periodic motion.

Refer to caption
Figure 7: Characteristic multipliers of the orbits on the two modes. The plot shows the magnitude |λi|subscript𝜆𝑖|\lambda_{i}|| italic_λ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | of the eigenvalues λisubscript𝜆𝑖\lambda_{i}italic_λ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT of the Jacobian of the Poincaré map at one of the turning points of the brake orbit.

The loci of the characteristic multipliers indicate different stability properties of the modes. Mode 1 develops an unstable multiplier (|λ|>1𝜆1|\lambda|>1| italic_λ | > 1) at around 8J8𝐽8J8 italic_J, much later than mode 2 at 2.6J2.6𝐽2.6J2.6 italic_J. For swing-up, the double pendulum will traverse the entire energy axis of Fig. 7. Based on multipliers, mode 1 seems more stable in the low- and medium-energy range and is therefore more suitable for swing-up control; this remains to be validated in the experiments.

III Swing-Up via Nonlinear Normal Modes

Our control goal is to bring the double pendulum from the stable equilibrium to the upright position 𝒒des=(π,0)subscript𝒒des𝜋0\boldsymbol{q}_{\mathrm{des}}=(\pi,0)bold_italic_q start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT = ( italic_π , 0 ), and stabilize it there. Overall, we have a set of different control laws and a finite state machine decides which one to use. The main point of this paper is the swing-up control law 𝝉susubscript𝝉su\boldsymbol{\tau}_{\mathrm{su}}bold_italic_τ start_POSTSUBSCRIPT roman_su end_POSTSUBSCRIPT, which brings the double pendulum arbitrarily close to the upright position:

𝝉su=𝝉+𝝉E.subscript𝝉susubscript𝝉subscript𝝉𝐸\boldsymbol{\tau}_{\mathrm{su}}=\boldsymbol{\tau}_{\mathcal{M}}+\boldsymbol{% \tau}_{E}.bold_italic_τ start_POSTSUBSCRIPT roman_su end_POSTSUBSCRIPT = bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT + bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT . (5)

As in [14, 13], this controller is split up into an eigenmanifold stabilizer 𝝉subscript𝝉\boldsymbol{\tau}_{\mathcal{M}}bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT and an energy controller 𝝉Esubscript𝝉𝐸\boldsymbol{\tau}_{E}bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT. The two components are explained in the sections III-B and III-C.

Besides the swing-up controller, we also need a controller to stabilize the upright position locally and one additional control law to inject some initial energy. These controllers and the state machine are summarized in III-D.

III-A Assumptions

We assume that we have access to the full state 𝒒𝒒\boldsymbol{q}bold_italic_q and 𝒒˙˙𝒒\dot{\boldsymbol{q}}over˙ start_ARG bold_italic_q end_ARG, and that we can evaluate the functions 𝑴(𝒒)𝑴𝒒\boldsymbol{M}(\boldsymbol{q})bold_italic_M ( bold_italic_q ), E(𝒒,𝒒˙)𝐸𝒒˙𝒒E(\boldsymbol{q},\dot{\boldsymbol{q}})italic_E ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ), X(E,φ)𝑋𝐸𝜑X(E,\varphi)italic_X ( italic_E , italic_φ ) and X˙(E,φ)˙𝑋𝐸𝜑\dot{X}(E,\varphi)over˙ start_ARG italic_X end_ARG ( italic_E , italic_φ ). We assume full actuation and torque saturation, i.e, |τi|τmaxsubscript𝜏𝑖subscript𝜏max|\tau_{i}|\leq\tau_{\mathrm{max}}| italic_τ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | ≤ italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT, where motors are weak compared to the internal model forces. The maximum motor torque is τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT for both joints, but this can easily be extended for different maximal torques in each motor.

III-B Eigenmanifold Stabilization

The goal of the eigenmanifold stabilizer is to stabilize the double pendulum onto one of the eigenmanifolds isubscript𝑖\mathcal{M}_{i}caligraphic_M start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT. As in [13], we use the parametrization of the eigenmanifold. The functions Xi(E,φ)subscript𝑋𝑖𝐸𝜑X_{i}(E,\varphi)italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E , italic_φ ) and X˙i(E,φ)subscript˙𝑋𝑖𝐸𝜑\dot{X}_{i}(E,\varphi)over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E , italic_φ ) are evaluated for the measured state. Note, that E(𝒒,𝒒˙)𝐸𝒒˙𝒒E(\boldsymbol{q},\dot{\boldsymbol{q}})italic_E ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) as well as the phase φ𝜑\varphiitalic_φ (3) are both functions of the state (𝒒,𝒒˙)𝒒˙𝒒(\boldsymbol{q},\dot{\boldsymbol{q}})( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ). Therefore, we can chain the computations into single functions Y𝑌Yitalic_Y and Y˙˙𝑌\dot{Y}over˙ start_ARG italic_Y end_ARG:

𝒒dsubscript𝒒𝑑\displaystyle\boldsymbol{q}_{d}bold_italic_q start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT =Xi(E(𝒒,𝒒˙),atan2(q˙1,q1))=Yi(𝒒,𝒒˙),absentsubscript𝑋𝑖𝐸𝒒˙𝒒atan2subscript˙𝑞1subscript𝑞1subscript𝑌𝑖𝒒˙𝒒\displaystyle=X_{i}(E(\boldsymbol{q},\dot{\boldsymbol{q}}),\operatorname{atan2% }(\dot{q}_{1},q_{1}))=Y_{i}(\boldsymbol{q},\dot{\boldsymbol{q}}),= italic_X start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) , atan2 ( over˙ start_ARG italic_q end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ) = italic_Y start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) , (6)
𝒒˙dsubscript˙𝒒𝑑\displaystyle\dot{\boldsymbol{q}}_{d}over˙ start_ARG bold_italic_q end_ARG start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT =X˙i(E(𝒒,𝒒˙),atan2(q˙1,q1))=Y˙i(𝒒,𝒒˙).absentsubscript˙𝑋𝑖𝐸𝒒˙𝒒atan2subscript˙𝑞1subscript𝑞1subscript˙𝑌𝑖𝒒˙𝒒\displaystyle=\dot{X}_{i}(E(\boldsymbol{q},\dot{\boldsymbol{q}}),\operatorname% {atan2}(\dot{q}_{1},q_{1}))=\dot{Y}_{i}(\boldsymbol{q},\dot{\boldsymbol{q}}).= over˙ start_ARG italic_X end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( italic_E ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) , atan2 ( over˙ start_ARG italic_q end_ARG start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ) = over˙ start_ARG italic_Y end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) . (7)

where by construction (𝒒d,𝒒˙d)isubscript𝒒𝑑subscript˙𝒒𝑑subscript𝑖(\boldsymbol{q}_{d},\dot{\boldsymbol{q}}_{d})\in\mathcal{M}_{i}( bold_italic_q start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT , over˙ start_ARG bold_italic_q end_ARG start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ) ∈ caligraphic_M start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT. The functions Y𝑌Yitalic_Y, Y˙˙𝑌\dot{Y}over˙ start_ARG italic_Y end_ARG take a measured state and provide a desired state on the eigenmanifold. We then design the eigenmanifold stabilizer

𝝉=𝑴(𝒒)[kp(𝒒Yi(𝒒,𝒒˙))kd(𝒒˙Y˙i(𝒒,𝒒˙))],subscript𝝉𝑴𝒒delimited-[]subscript𝑘𝑝𝒒subscript𝑌𝑖𝒒˙𝒒subscript𝑘𝑑˙𝒒subscript˙𝑌𝑖𝒒˙𝒒\boldsymbol{\tau}_{\mathcal{M}}=\boldsymbol{M}(\boldsymbol{q})\left[-k_{p}% \left(\boldsymbol{q}-Y_{i}(\boldsymbol{q},\dot{\boldsymbol{q}})\right)-k_{d}% \left(\dot{\boldsymbol{q}}-\dot{Y}_{i}(\boldsymbol{q},\dot{\boldsymbol{q}})% \right)\right],bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT = bold_italic_M ( bold_italic_q ) [ - italic_k start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT ( bold_italic_q - italic_Y start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) ) - italic_k start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ( over˙ start_ARG bold_italic_q end_ARG - over˙ start_ARG italic_Y end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) ) ] ,

where kpsubscript𝑘𝑝k_{p}italic_k start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT is a scalar gain and kd=2kpsubscript𝑘𝑑2subscript𝑘𝑝k_{d}=2\sqrt{k_{p}}italic_k start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT = 2 square-root start_ARG italic_k start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_ARG.

III-C Energy Injection

We want to swing up the pendulum to periodic orbits of higher and higher energy until we reach a configuration close to the upright position. The eigenmanifold stabilizer 𝝉subscript𝝉\boldsymbol{\tau}_{\mathcal{M}}bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT has no preference on the energy level and leaves the energy coordinate uncontrolled. We need an additional control law 𝝉Esubscript𝝉𝐸\boldsymbol{\tau}_{E}bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT to regulate energy.

It is crucial to find 𝝉Esubscript𝝉𝐸\boldsymbol{\tau}_{E}bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT such that the sum 𝝉+𝝉Esubscript𝝉subscript𝝉𝐸\boldsymbol{\tau}_{\mathcal{M}}+\boldsymbol{\tau}_{E}bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT + bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT stays within the motor torque limits: we first compute a sliding-mode controller 𝝉¯¯𝝉\bar{\boldsymbol{\tau}}over¯ start_ARG bold_italic_τ end_ARG that does not consider the torque limits

𝝉¯=sign(EdesE(𝒒,𝒒˙))𝑴(𝒒)𝒒˙.¯𝝉signsubscript𝐸des𝐸𝒒˙𝒒𝑴𝒒˙𝒒\bar{\boldsymbol{\tau}}={\mathrm{sign}}\left(E_{\mathrm{des}}-E(\boldsymbol{q}% ,\dot{\boldsymbol{q}})\right)\boldsymbol{M}(\boldsymbol{q})\dot{\boldsymbol{q}% }\;.over¯ start_ARG bold_italic_τ end_ARG = roman_sign ( italic_E start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT - italic_E ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) ) bold_italic_M ( bold_italic_q ) over˙ start_ARG bold_italic_q end_ARG . (8)

Since 𝝉(𝒒,𝒒˙)subscript𝝉𝒒˙𝒒\boldsymbol{\tau}_{\mathcal{M}}(\boldsymbol{q},\dot{\boldsymbol{q}})bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT ( bold_italic_q , over˙ start_ARG bold_italic_q end_ARG ) is known, we can find a scaling factor α𝛼\alphaitalic_α such that 𝝉+α𝝉¯subscript𝝉𝛼¯𝝉\boldsymbol{\tau}_{\mathcal{M}}+\alpha\bar{\boldsymbol{\tau}}bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT + italic_α over¯ start_ARG bold_italic_τ end_ARG is within the torque limits. When 𝝉subscript𝝉\boldsymbol{\tau}_{\mathcal{M}}bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT already saturates the motors, we immediately set α=0𝛼0\alpha=0italic_α = 0, i.e., no energy injection happens at this time step. To enable fast swing-up, α𝛼\alphaitalic_α should be as large as possible. Compactly

maximize α𝛼\displaystyle\alphaitalic_α
subject to |𝝉+α𝝉¯|𝝉max,subscript𝝉𝛼¯𝝉subscript𝝉max\displaystyle|\boldsymbol{\tau}_{\mathcal{M}}+\alpha\bar{\boldsymbol{\tau}}|% \leq\boldsymbol{\tau}_{\mathrm{max}},| bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT + italic_α over¯ start_ARG bold_italic_τ end_ARG | ≤ bold_italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT ,

where 𝝉maxsubscript𝝉max\boldsymbol{\tau}_{\mathrm{max}}bold_italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT is the vector of the maximum motor torques per motor. We can rewrite the constraints to

[𝝉¯𝝉¯]α=𝒙α𝒚=[𝝉max𝝉𝝉max+𝝉],matrix¯𝝉¯𝝉𝛼𝒙𝛼𝒚matrixsubscript𝝉maxsubscript𝝉subscript𝝉maxsubscript𝝉\begin{bmatrix}\bar{\boldsymbol{\tau}}\\ -\bar{\boldsymbol{\tau}}\end{bmatrix}\alpha=\boldsymbol{x}\alpha\leq% \boldsymbol{y}=\begin{bmatrix}\boldsymbol{\tau}_{\mathrm{max}}-\boldsymbol{% \tau}_{\mathcal{M}}\\ \boldsymbol{\tau}_{\mathrm{max}}+\boldsymbol{\tau}_{\mathcal{M}}\end{bmatrix},[ start_ARG start_ROW start_CELL over¯ start_ARG bold_italic_τ end_ARG end_CELL end_ROW start_ROW start_CELL - over¯ start_ARG bold_italic_τ end_ARG end_CELL end_ROW end_ARG ] italic_α = bold_italic_x italic_α ≤ bold_italic_y = [ start_ARG start_ROW start_CELL bold_italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT - bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL bold_italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT + bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT end_CELL end_ROW end_ARG ] ,

which now reads as linear program (LP) of the form: maximize 𝒄𝖳𝒙superscript𝒄𝖳𝒙\boldsymbol{c}^{\mathsf{T}}\boldsymbol{x}bold_italic_c start_POSTSUPERSCRIPT sansserif_T end_POSTSUPERSCRIPT bold_italic_x subject to 𝑨𝒙𝒃𝑨𝒙𝒃\boldsymbol{A}\boldsymbol{x}\leq\boldsymbol{b}bold_italic_A bold_italic_x ≤ bold_italic_b. It can be solved using a standard LP-solver. However, as α𝛼\alphaitalic_α is only a scalar we can find a solution analytically: we replace the inequality by an equality and solve each row in xiα=yisubscript𝑥𝑖𝛼subscript𝑦𝑖x_{i}\alpha=y_{i}italic_x start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT italic_α = italic_y start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT for αisubscript𝛼𝑖\alpha_{i}italic_α start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT and then take the smallest non-negative αisubscript𝛼𝑖\alpha_{i}italic_α start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT as the solution αoptsubscript𝛼opt\alpha_{\mathrm{opt}}italic_α start_POSTSUBSCRIPT roman_opt end_POSTSUBSCRIPT.

Finally, we set the energy controller to

𝝉E=αopttanh(EdesE)𝑴(𝒒)𝒒˙,subscript𝝉𝐸subscript𝛼optsubscript𝐸des𝐸𝑴𝒒˙𝒒\boldsymbol{\tau}_{E}=\alpha_{\mathrm{opt}}\tanh(E_{\mathrm{des}}-E)% \boldsymbol{M}(\boldsymbol{q})\dot{\boldsymbol{q}},bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT = italic_α start_POSTSUBSCRIPT roman_opt end_POSTSUBSCRIPT roman_tanh ( italic_E start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT - italic_E ) bold_italic_M ( bold_italic_q ) over˙ start_ARG bold_italic_q end_ARG , (9)

where the tanh\tanhroman_tanh function is used to smoothen the signsign{\mathrm{sign}}roman_sign function. Note that αoptsubscript𝛼opt\alpha_{\mathrm{opt}}italic_α start_POSTSUBSCRIPT roman_opt end_POSTSUBSCRIPT must be evaluated in every cycle.

III-D Controller State Machine

The overall control approach bringing the double pendulum to the upright position is realized as a finite state machine traversing through the states

(Bootstrap)𝝉bs(10)Start𝝉Start(11)SwingUp𝝉su(5)Hold𝝉Hold(12).subscript𝝉bs(10)Bootstrapsubscript𝝉Start(11)Startsubscript𝝉su(5)SwingUpsubscript𝝉Hold(12)Hold\underset{\boldsymbol{\tau}_{\mathrm{bs}}\;\text{\eqref{eq:bootstrap}}}{(% \textsc{Bootstrap})}\rightarrow\underset{\boldsymbol{\tau}_{\textsc{Start}}\;% \text{\eqref{eq:start}}}{\vphantom{()}\textsc{Start}}\rightarrow\underset{% \boldsymbol{\tau}_{\mathrm{su}}\;\text{\eqref{eq:swingup}}}{\vphantom{()}% \textsc{SwingUp}}\rightarrow\underset{\boldsymbol{\tau}_{\textsc{Hold}}\;\text% {\eqref{eq:regulation}}}{\vphantom{()}\textsc{Hold}}.start_UNDERACCENT bold_italic_τ start_POSTSUBSCRIPT roman_bs end_POSTSUBSCRIPT ( ) end_UNDERACCENT start_ARG ( Bootstrap ) end_ARG → start_UNDERACCENT bold_italic_τ start_POSTSUBSCRIPT Start end_POSTSUBSCRIPT ( ) end_UNDERACCENT start_ARG Start end_ARG → start_UNDERACCENT bold_italic_τ start_POSTSUBSCRIPT roman_su end_POSTSUBSCRIPT ( ) end_UNDERACCENT start_ARG SwingUp end_ARG → start_UNDERACCENT bold_italic_τ start_POSTSUBSCRIPT Hold end_POSTSUBSCRIPT ( ) end_UNDERACCENT start_ARG Hold end_ARG .

III-D1 State Bootstrap

This state is only needed to globalize the controller. It helps to recover from any initial state, failed swing-up attempts, and/or external impacts. The goal is to dissipate all the energy by applying an artificial friction

𝝉bs=𝑫bs𝒒˙subscript𝝉bssubscript𝑫bs˙𝒒\boldsymbol{\tau}_{\mathrm{bs}}=-\boldsymbol{D}_{\mathrm{bs}}\dot{\boldsymbol{% q}}bold_italic_τ start_POSTSUBSCRIPT roman_bs end_POSTSUBSCRIPT = - bold_italic_D start_POSTSUBSCRIPT roman_bs end_POSTSUBSCRIPT over˙ start_ARG bold_italic_q end_ARG (10)

(𝑫bs0)succeedssubscript𝑫bs0(\boldsymbol{D}_{\mathrm{bs}}\succ 0)( bold_italic_D start_POSTSUBSCRIPT roman_bs end_POSTSUBSCRIPT ≻ 0 ) until reaching the stable (downward) equilibrium.

III-D2 State Start

Suppose we are at the stable equilibrium 𝒒eqsubscript𝒒eq\boldsymbol{q}_{\mathrm{eq}}bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT. The energy controller (9) can only inject energy when 𝒒˙𝟎˙𝒒0\dot{\boldsymbol{q}}\neq\boldsymbol{0}over˙ start_ARG bold_italic_q end_ARG ≠ bold_0. We need some initial energy to start the swing-up and accelerate along the eigenvector 𝒗isubscript𝒗𝑖\boldsymbol{v}_{i}bold_italic_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT of the i𝑖iitalic_i-th mode of the linearized system (2):

𝝉Start=β𝑴(𝒒)𝒗i,subscript𝝉Start𝛽𝑴𝒒subscript𝒗𝑖\boldsymbol{\tau}_{\textsc{Start}}=\beta\boldsymbol{M}(\boldsymbol{q})% \boldsymbol{v}_{i},bold_italic_τ start_POSTSUBSCRIPT Start end_POSTSUBSCRIPT = italic_β bold_italic_M ( bold_italic_q ) bold_italic_v start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT , (11)

where we set β=0.01𝛽0.01\beta=0.01italic_β = 0.01. This state is active for one timestep only, and we switch to SwingUp immediately after.

III-D3 State SwingUp

This is the main point of this paper. The control law 𝝉susubscript𝝉su\boldsymbol{\tau}_{\mathrm{su}}bold_italic_τ start_POSTSUBSCRIPT roman_su end_POSTSUBSCRIPT (5) for this state was developed in the past sections. The goal is to bring the double pendulum to a periodic orbit having turning points 𝒒subscript𝒒\boldsymbol{q}_{\curvearrowleft}bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT arbitrarily close to the upright unstable equilibrium 𝒒dessubscript𝒒des\boldsymbol{q}_{\mathrm{des}}bold_italic_q start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT. We set Edes=Emaxϵsubscript𝐸dessubscript𝐸maxitalic-ϵE_{\mathrm{des}}=E_{\mathrm{max}}-\epsilonitalic_E start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT = italic_E start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT - italic_ϵ in (9), where ϵitalic-ϵ\epsilonitalic_ϵ is computed based on the actuator torque limits.

III-D4 State Hold

When reaching the energy level Edessubscript𝐸desE_{\mathrm{des}}italic_E start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT and we are at a turning point 𝒒subscript𝒒\boldsymbol{q}_{\curvearrowleft}bold_italic_q start_POSTSUBSCRIPT ↶ end_POSTSUBSCRIPT we switch to a simple PD controller to stabilize the upright position 𝒒dessubscript𝒒des\boldsymbol{q}_{\mathrm{des}}bold_italic_q start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT:

𝝉Hold=𝑲R[𝒒𝒒des]𝑫R𝒒˙+𝒈(𝒒)subscript𝝉Holdsubscript𝑲𝑅delimited-[]𝒒subscript𝒒dessubscript𝑫𝑅˙𝒒𝒈𝒒\boldsymbol{\tau}_{\textsc{Hold}}=-\boldsymbol{K}_{R}\left[\boldsymbol{q}-% \boldsymbol{q}_{\mathrm{des}}\right]-\boldsymbol{D}_{R}\dot{\boldsymbol{q}}+% \boldsymbol{g}(\boldsymbol{q})bold_italic_τ start_POSTSUBSCRIPT Hold end_POSTSUBSCRIPT = - bold_italic_K start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT [ bold_italic_q - bold_italic_q start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT ] - bold_italic_D start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT over˙ start_ARG bold_italic_q end_ARG + bold_italic_g ( bold_italic_q ) (12)

where 𝑲Rsubscript𝑲𝑅\boldsymbol{K}_{R}bold_italic_K start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT is again a positive-definite gain matrix and

𝑫R=ζR(𝑲R𝑴+𝑴𝑲R)subscript𝑫𝑅subscript𝜁𝑅subscriptsuperscript𝑲𝑅superscript𝑴superscript𝑴subscriptsuperscript𝑲𝑅\boldsymbol{D}_{R}=\zeta_{R}\left(\boldsymbol{K}^{\sqrt{\cdot}}_{R}\boldsymbol% {M}^{\sqrt{\cdot}}+\boldsymbol{M}^{\sqrt{\cdot}}\boldsymbol{K}^{\sqrt{\cdot}}_% {R}\right)bold_italic_D start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT = italic_ζ start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT ( bold_italic_K start_POSTSUPERSCRIPT square-root start_ARG ⋅ end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT bold_italic_M start_POSTSUPERSCRIPT square-root start_ARG ⋅ end_ARG end_POSTSUPERSCRIPT + bold_italic_M start_POSTSUPERSCRIPT square-root start_ARG ⋅ end_ARG end_POSTSUPERSCRIPT bold_italic_K start_POSTSUPERSCRIPT square-root start_ARG ⋅ end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT ) (13)

is a dam** matrix designed to match a dam** ratio of ζR=1.0subscript𝜁𝑅1.0\zeta_{R}=1.0italic_ζ start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT = 1.0. The matrices 𝑲Rsubscriptsuperscript𝑲𝑅\boldsymbol{K}^{\sqrt{\cdot}}_{R}bold_italic_K start_POSTSUPERSCRIPT square-root start_ARG ⋅ end_ARG end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT and 𝑴(𝒒)superscript𝑴𝒒\boldsymbol{M}^{\sqrt{\cdot}}(\boldsymbol{q})bold_italic_M start_POSTSUPERSCRIPT square-root start_ARG ⋅ end_ARG end_POSTSUPERSCRIPT ( bold_italic_q ) are the matrix square roots of 𝑲Rsubscript𝑲𝑅\boldsymbol{K}_{R}bold_italic_K start_POSTSUBSCRIPT italic_R end_POSTSUBSCRIPT and 𝑴(𝒒)𝑴𝒒\boldsymbol{M}(\boldsymbol{q})bold_italic_M ( bold_italic_q ), respectively.

IV Results

Refer to caption
(a) Experiment 1 (Mode 1): τmax=\qty0.5𝑵subscript𝜏max\qty0.5𝑵\tau_{\mathrm{max}}=\qty{0.5}{\boldsymbol{N}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT = 0.5 bold_italic_N (7.7%τ^gpercent7.7subscript^𝜏𝑔7.7\%\;\hat{\tau}_{g}7.7 % over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT)
Refer to caption
(b) Experiment 2 (Mode 2): τmax=\qty0.2𝑵subscript𝜏max\qty0.2𝑵\tau_{\mathrm{max}}=\qty{0.2}{\boldsymbol{N}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT = 0.2 bold_italic_N (3.0%τ^gpercent3.0subscript^𝜏𝑔3.0\%\;\hat{\tau}_{g}3.0 % over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT)
Figure 8: Two swing-up experiments. (a): Swing-up via mode 1 for a motor torque limit of \qty0.5N (7.7%percent7.77.7\%7.7 % of τ^gsubscript^𝜏𝑔\hat{\tau}_{g}over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT) and critical angle at qcrit,1=175.58°subscript𝑞crit1175.58°q_{\mathrm{crit},1}=$$italic_q start_POSTSUBSCRIPT roman_crit , 1 end_POSTSUBSCRIPT = 175.58 ⁢ °; (b): Swing-up via mode 2 for a motor torque limit of \qty0.2N (3.0%percent3.03.0\%3.0 % of τ^gsubscript^𝜏𝑔\hat{\tau}_{g}over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT) and critical angle at qcrit,1=178.23°subscript𝑞crit1178.23°q_{\mathrm{crit},1}=$$italic_q start_POSTSUBSCRIPT roman_crit , 1 end_POSTSUBSCRIPT = 178.23 ⁢ °. The top three panes (x1)-(x3) show the joint angles, joint velocities and controller torques over time. In (a3) we additionally show the contribution of the eigenmanifold stabilization controller 𝝉msubscript𝝉𝑚\boldsymbol{\tau}_{m}bold_italic_τ start_POSTSUBSCRIPT italic_m end_POSTSUBSCRIPT. Panes (x4) shows the modal phase φ𝜑\varphiitalic_φ and energy over time and (x5) displays modal phase and energy in polar representation.

We evaluate the swing-up control of the weakly actuated double pendulum on a simulated double pendulum in MuJoCo [25]. The simulator uses a time step of Δt=1 msΔ𝑡times1millisecond\Delta t=$1\text{\,}\mathrm{ms}$roman_Δ italic_t = start_ARG 1 end_ARG start_ARG times end_ARG start_ARG roman_ms end_ARG. We experiment with the two different modes and different settings of the motor torque limit τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT.

TABLE I: Parameters of the Double Pendulum
Parameter Value
Link Lengths l1subscript𝑙1l_{1}italic_l start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, l2subscript𝑙2l_{2}italic_l start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT 0.5 mtimes0.5meter0.5\text{\,}\mathrm{m}start_ARG 0.5 end_ARG start_ARG times end_ARG start_ARG roman_m end_ARG
Link Masses m1subscript𝑚1m_{1}italic_m start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, m2subscript𝑚2m_{2}italic_m start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT 661.83 gtimes661.83gram661.83\text{\,}\mathrm{g}start_ARG 661.83 end_ARG start_ARG times end_ARG start_ARG roman_g end_ARG
Gravity Constant g𝑔gitalic_g 9.81 m s2times9.81timesmetersecond29.81\text{\,}\mathrm{m}\text{\,}{\mathrm{s}}^{-2}start_ARG 9.81 end_ARG start_ARG times end_ARG start_ARG start_ARG roman_m end_ARG start_ARG times end_ARG start_ARG power start_ARG roman_s end_ARG start_ARG - 2 end_ARG end_ARG end_ARG
Inertia at COM I𝐼Iitalic_I 0.0153 kg m2times0.0153timeskilogrammeter20.0153\text{\,}\mathrm{kg}\text{\,}{\mathrm{m}}^{2}start_ARG 0.0153 end_ARG start_ARG times end_ARG start_ARG start_ARG roman_kg end_ARG start_ARG times end_ARG start_ARG power start_ARG roman_m end_ARG start_ARG 2 end_ARG end_ARG end_ARG

For the model parameters presented in Table I, the highest gravitational torque occurs when the pendulum is stretched out horizontally 𝒒horiz=(π/2,0)subscript𝒒horiz𝜋20\boldsymbol{q}_{\mathrm{horiz}}=(\nicefrac{{\pi}}{{2}},0)bold_italic_q start_POSTSUBSCRIPT roman_horiz end_POSTSUBSCRIPT = ( / start_ARG italic_π end_ARG start_ARG 2 end_ARG , 0 ).

𝒈(±𝒒horiz)=[6.491.62]N m𝒈plus-or-minussubscript𝒒horizmatrixminus-or-plus6.49minus-or-plus1.62timesnewtonmeter\boldsymbol{g}(\pm\boldsymbol{q}_{\mathrm{horiz}})=\begin{bmatrix}\mp{}6.49\\ \mp{}1.62\end{bmatrix}$\mathrm{N}\text{\,}\mathrm{m}$bold_italic_g ( ± bold_italic_q start_POSTSUBSCRIPT roman_horiz end_POSTSUBSCRIPT ) = [ start_ARG start_ROW start_CELL ∓ 6.49 end_CELL end_ROW start_ROW start_CELL ∓ 1.62 end_CELL end_ROW end_ARG ] start_ARG roman_N end_ARG start_ARG times end_ARG start_ARG roman_m end_ARG (14)

We refer to the maximum as τ^g=6.49 N msubscript^𝜏𝑔times6.49timesnewtonmeter\hat{\tau}_{g}=$6.49\text{\,}\mathrm{N}\text{\,}\mathrm{m}$over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT = start_ARG 6.49 end_ARG start_ARG times end_ARG start_ARG start_ARG roman_N end_ARG start_ARG times end_ARG start_ARG roman_m end_ARG end_ARG. This will be our reference to compare actuator torques.

We always start the swing-up from the stable equilibrium 𝒒eqsubscript𝒒eq\boldsymbol{q}_{\mathrm{eq}}bold_italic_q start_POSTSUBSCRIPT roman_eq end_POSTSUBSCRIPT and consider the stabilization to the upright position successful when the pendulum reaches 𝒒˙<\qtye3\pernorm˙𝒒\qty𝑒3\per||\dot{\boldsymbol{q}}||<\qty{e-3}{\per}| | over˙ start_ARG bold_italic_q end_ARG | | < italic_e - 3 and 𝒒𝒒des<\qtye3norm𝒒subscript𝒒des\qty𝑒3||\boldsymbol{q}-\boldsymbol{q}_{\mathrm{des}}||<\qty{e-3}{}| | bold_italic_q - bold_italic_q start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT | | < italic_e - 3 and call the respective time tendsubscript𝑡endt_{\mathrm{end}}italic_t start_POSTSUBSCRIPT roman_end end_POSTSUBSCRIPT.

The controller starts in the Start state and switches to the SwingUp state after the first time step. Given the motor torque limit τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT, we compute the energy level Edessubscript𝐸desE_{\mathrm{des}}italic_E start_POSTSUBSCRIPT roman_des end_POSTSUBSCRIPT that the swing-up controller must reach before the regulation controller (12) controller can take over. This is computed by finding the smallest energy level Ecritsubscript𝐸critE_{\mathrm{crit}}italic_E start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT such that 𝒈(Gi±(Ecrit))τmaxsubscriptnorm𝒈subscript𝐺limit-from𝑖plus-or-minussubscript𝐸critsubscript𝜏max||\boldsymbol{g}\left(G_{i\pm}(E_{\mathrm{crit}})\right)||_{\infty}\leq\tau_{% \mathrm{max}}| | bold_italic_g ( italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT ) ) | | start_POSTSUBSCRIPT ∞ end_POSTSUBSCRIPT ≤ italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT and Gi±(Ecrit)190°subscript𝐺limit-from𝑖plus-or-minussubscriptsubscript𝐸crit190°G_{i\pm}(E_{\mathrm{crit}})_{1}\geq$$italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT ) start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ≥ 90 ⁢ °, i.e., at the turning point of the brake orbit for the desired energy level the motors must be strong enough to counteract gravity to move the pendulum to the upright position. We call the corresponding turning point 𝒒crit=Gi±(Ecrit)subscript𝒒critsubscript𝐺limit-from𝑖plus-or-minussubscript𝐸crit\boldsymbol{q}_{\mathrm{crit}}=G_{i\pm}(E_{\mathrm{crit}})bold_italic_q start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT = italic_G start_POSTSUBSCRIPT italic_i ± end_POSTSUBSCRIPT ( italic_E start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT ).

The first experiment is on the swing-up via mode 1. We set the motor torque limit to \qty0.5Nm, which corresponds to 7.7%percent7.77.7\%7.7 % of the maximal gravitational torque τ^gsubscript^𝜏𝑔\hat{\tau}_{g}over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT. The critical angle for q1subscript𝑞1q_{1}italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT is at 175.58°175.58°175.58 ⁢ °, i.e. the turning point where the regulation controller to the upright position can take over is at q1=175.58°subscript𝑞1175.58°q_{1}=$$italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 175.58 ⁢ °. The controller switches to Hold at tHold=\qty11.8subscript𝑡Hold\qty11.8t_{\mathrm{\textsc{Hold}}}=\qty{11.8}{}italic_t start_POSTSUBSCRIPT Hold end_POSTSUBSCRIPT = 11.8 and the total swing-up time is tend=\qty15.1subscript𝑡end\qty15.1t_{\mathrm{end}}=\qty{15.1}{}italic_t start_POSTSUBSCRIPT roman_end end_POSTSUBSCRIPT = 15.1.

Panes (a1) and (a2) in Fig. 8a show how the joint angles and velocities evolve over time. Note the strong nonlinearity in the oscillations. On the bottom in (a4) and (a5) in Fig. 8a we additionally show the energy E𝐸Eitalic_E and modal phase φ𝜑\varphiitalic_φ. In contrast to harmonic oscillations, the phase does not evolve at a constant rate (frequency) over time. Pane (a3) shows the total applied motor torques in blue and orange; and the contribution to the total controller torque by eigenmanifold stabilization controller 𝝉subscript𝝉\boldsymbol{\tau}_{\mathcal{M}}bold_italic_τ start_POSTSUBSCRIPT caligraphic_M end_POSTSUBSCRIPT in light colors. Hence, the distance between the two lines is the torque due to the energy injection controller 𝝉Esubscript𝝉𝐸\boldsymbol{\tau}_{E}bold_italic_τ start_POSTSUBSCRIPT italic_E end_POSTSUBSCRIPT. We can observe that until we reach the critical energy level Ecritsubscript𝐸critE_{\mathrm{crit}}italic_E start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT, one of the motor torques always saturates if 𝒒˙𝟎˙𝒒0\dot{\boldsymbol{q}}\neq\boldsymbol{0}over˙ start_ARG bold_italic_q end_ARG ≠ bold_0. This is because the energy injection controller aims at using all the remaining torque margin to inject energy still ensuring the control action by the eigenmanifold stabilizer is not altered.

For the next experiment, we reduce the motor torque limit to \qty0.2N (3.0%percent3.03.0\%3.0 % of τ^gsubscript^𝜏𝑔\hat{\tau}_{g}over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT) and qcrit1=178.23°subscript𝑞crit1178.23°q_{\mathrm{crit}1}=$$italic_q start_POSTSUBSCRIPT crit1 end_POSTSUBSCRIPT = 178.23 ⁢ ° and chose mode 2 for the swing-up. Fig. 8b shows the results. This time we obtain tHold=\qty16.9subscript𝑡Hold\qty16.9t_{\mathrm{\textsc{Hold}}}=\qty{16.9}{}italic_t start_POSTSUBSCRIPT Hold end_POSTSUBSCRIPT = 16.9 and tend=\qty18.9subscript𝑡end\qty18.9t_{\mathrm{end}}=\qty{18.9}{}italic_t start_POSTSUBSCRIPT roman_end end_POSTSUBSCRIPT = 18.9.

We repeat the experiments for various settings of τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT and show the results in Table II for both modes. For each motor torque limit τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT we compute the critical angle qcrit1subscript𝑞crit1q_{\mathrm{crit}1}italic_q start_POSTSUBSCRIPT crit1 end_POSTSUBSCRIPT and the percentage of τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT of the maximal gravitational torque τ^gsubscript^𝜏𝑔\hat{\tau}_{g}over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT. These values help to intuitively understand the magnitude of the motor torques. For example, for τmax=\qty0.02𝑵subscript𝜏max\qty0.02𝑵\tau_{\mathrm{max}}=\qty{0.02}{\boldsymbol{N}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT = 0.02 bold_italic_N the motor torques are not strong enough to hold the pendulum when the first angle q1<179.82°subscript𝑞1179.82°q_{1}<$$italic_q start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT < 179.82 ⁢ °. We believe these values should emphasize how weak the motors are compared to the internal model forces.

As expected, the swing-up times tendsubscript𝑡endt_{\mathrm{end}}italic_t start_POSTSUBSCRIPT roman_end end_POSTSUBSCRIPT get longer as the motor torques get weaker. Swing-up via mode 2 is generally faster than via mode 1. The period times on mode 2 are shorter and joint velocities 𝒒˙˙𝒒\dot{\boldsymbol{q}}over˙ start_ARG bold_italic_q end_ARG are overall higher. Hence, the energy injection can inject more power via the faster mode.

An ✗ in the swing-up time column indicates that the respective setting failed. We consider a swing-up failed when the double pendulum’s state is too far from the eigenmanifols; or when energy suddenly drops; or when energy stagnates before completion of the swing-up. This is the case for very weak actuators and when using mode 2 for swing-up. The characteristic multipliers (Sec. II-D) indicate that mode 2 develops an unstable eigenvalue already at quite a low energy, which makes it harder to stabilize. Due to the very weak actuation, the available forces are not sufficient to stabilize the mode.

Both modes have exhibit unstable multipliers at energy levels close to Ecritsubscript𝐸critE_{\mathrm{crit}}italic_E start_POSTSUBSCRIPT roman_crit end_POSTSUBSCRIPT. This explains why the eigenmanifold stabilizer has significant contributions to the total torque at high energies (Fig. 8a for t>10s𝑡10𝑠t>10sitalic_t > 10 italic_s and Fig. 8b for t>12.5s𝑡12.5𝑠t>12.5sitalic_t > 12.5 italic_s).

TABLE II: Swing up times
Max. Torque Perentage Critical Angle Mode 1 Mode 2
τmaxsubscript𝜏max\tau_{\mathrm{max}}italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT τmax/τ^gsubscript𝜏maxsubscript^𝜏𝑔\nicefrac{{\tau_{\mathrm{max}}}}{{\hat{\tau}_{g}}}/ start_ARG italic_τ start_POSTSUBSCRIPT roman_max end_POSTSUBSCRIPT end_ARG start_ARG over^ start_ARG italic_τ end_ARG start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT end_ARG qcrit1subscript𝑞crit1q_{\mathrm{crit}1}italic_q start_POSTSUBSCRIPT crit1 end_POSTSUBSCRIPT tendsubscript𝑡endt_{\mathrm{end}}italic_t start_POSTSUBSCRIPT roman_end end_POSTSUBSCRIPT tendsubscript𝑡endt_{\mathrm{end}}italic_t start_POSTSUBSCRIPT roman_end end_POSTSUBSCRIPT
\qty0.5 7.7% 175.58°175.58°175.58 ⁢ ° \qty15.07 \qty8.67
\qty0.3N 4.6% 177.35°177.35°177.35 ⁢ ° \qty23.03 \qty13.03
\qty0.2N 3.0% 178.23°178.23°178.23 ⁢ ° \qty30.47 \qty18.94
\qty0.1N 1.5% 179.11°179.11°179.11 ⁢ ° \qty60.774
\qty0.05N 0.8% 179.55°179.55°179.55 ⁢ ° \qty124.05
\qty0.02N 0.3% 179.82°179.82°179.82 ⁢ ° \qty265.91

V Conclusions

We have shown that we can swing up the double pendulum in gravity with weak actuators thanks to the exploitation of its nonlinear modes. Weak means that the motor torque limits are small compared to the internal model forces. Our contributions are the nonlinear modal analysis of the double pendulum model for high energy levels, the insight that they both approach a homoclinic orbit and the design of an energy-injection controller using the available torque margin to swing up the double pendulum.

Additionally, we have shown the approach for a specific double pendulum. The question if we always obtain modes approaching homoclinic orbits through the upright position for arbitrary mass distribution and lengths remains open. The symmetry of the potential and mass tensor is independent of the mass- and length distribution, so also the NNM generators will be symmetric. This fact and the topological constraints of the torus ensure that the generators will approach homoclinics, if they exist at that energy level. The latter is the open question.

For future work, it remains to validate and replicate the approach on a real system. This entails that we do not have access to the full state and the mathematical model assumptions will deviate from the real hardware. This is especially true for friction and other dissipative effects, which will limit the lowest admissible torque saturation level.

References

  • [1] K. Graichen, M. Treuer, and M. Zeitz, “Swing-up of the double pendulum on a cart by feedforward and feedback control with experimental validation,” Automatica, vol. 43, no. 1, pp. 63–71, Jan. 2007.
  • [2] M. Yamakita, M. Iwashiro, Y. Sugahara, and K. Furuta, “Robust swing up control of double pendulum,” Proc. of 1995 Am. Control Conf., vol. 1, pp. 290–295, 1995.
  • [3] K. Flaßkamp, J. Timmermann, S. Ober-Blöbaum, and A. Trächtler, “Control strategies on stable manifolds for energy-efficient swing-ups of double pendula,” Int. J. Control, vol. 87, no. 9, 2014.
  • [4] I. Fantoni, R. Lozano, and M. Spong, “Energy based control of the pendubot,” IEEE Trans. on Autom. Control, vol. 45, no. 4, pp. 725–729, 2000.
  • [5] X. Xin and T. Yamasaki, “Energy-based swing-up control for a remotely driven acrobot: Theoretical and experimental results,” IEEE Trans. on Control Syst. Techn., vol. 20, no. 4, pp. 1048–1056, 2012.
  • [6] M. Spong, “The swing up control problem for the acrobot,” IEEE Control Syst. Magazine, vol. 15, no. 1, pp. 49–55, 1995.
  • [7] K. Flaßkamp, A. R. Ansari, and T. D. Murphey, “Hybrid control for tracking of invariant manifolds,” Nonlinear Analysis: Hybrid Syst., vol. 25, pp. 298–311, 2017.
  • [8] K. Åström and K. Furuta, “Swinging up a pendulum by energy control,” Automatica, vol. 36, no. 2, pp. 287–295, 2000.
  • [9] T. Shinbrot, C. Grebogi, J. Wisdom, and J. A. Yorke, “Chaos in a double pendulum,” Am. J. of Phys., vol. 60, no. 6, pp. 491–499, 1992.
  • [10] A. Albu-Schäffer and A. Sachtler, “What can algebraic topology and differential geometry teach us about intrinsic dynamics and global behavior of robots?” in Robotics Research, A. Billard, T. Asfour, and O. Khatib, Eds.   Springer Nature Switzerland, 2023, pp. 468–484.
  • [11] G. Kerschen, M. Peeters, J. Golinval, and A. Vakakis, “Nonlinear normal modes, part i: A useful framework for the structural dynamicist,” Mech. Syst. Signal Process., vol. 23, no. 1, pp. 170–194, 2009.
  • [12] A. Albu-Schäffer and C. Della Santina, “A review on nonlinear modes in conservative mechanical systems,” Annu. Rev. Control, vol. 50, pp. 49 – 71, 2020.
  • [13] C. Della Santina and A. Albu-Schäffer, “Exciting Efficient Oscillations in Nonlinear Mechanical Systems Through Eigenmanifold Stabilization,” IEEE Control Syst. Lett., vol. 5, no. 6, pp. 1916–1921, 2021.
  • [14] F. Bjelonic, A. Sachtler, A. Albu-Schäffer, and C. Della Santina, “Experimental closed-loop excitation of nonlinear normal modes on an elastic industrial robot,” IEEE Robot. Autom. Lett., vol. 7, no. 2, pp. 1689–1696, Apr. 2022.
  • [15] D. Calzolari, C. D. Santina, A. M. Giordano, A. Schmidt, and A. Albu-Schäffer, “Embodying quasi-passive modal trotting and pronking in a sagittal elastic quadruped,” IEEE Robot. Autom. Lett., vol. 8, no. 4, pp. 2285–2292, 2023.
  • [16] A. Sesselmann, F. Loeffl, C. D. Santina, M. A. Roa, and A. Albu-Schäffer, “Embedding a nonlinear strict oscillatory mode into a segmented leg,” in Proc. IEEE/RSJ Int. Conf. Intell. Robots and Syst., 2021, pp. 1370–1377.
  • [17] A. Sachtler and A. Albu-Schäffer, “Strict modes everywhere - bringing order into dynamics of mechanical systems by a potential compatible with the geodesic flow,” IEEE Robot. Autom. Lett., vol. 7, no. 2, pp. 2337–2344, 2022.
  • [18] R. P. Dickinson and R. J. Gelinas, “Sensitivity analysis of ordinary differential equation systems—a direct method,” J Comp. Phys., vol. 21, no. 2, pp. 123–143, 1976.
  • [19] Y. P. Wotte, A. Sachtler, A. Albu-Schäffer, and C. Della Santina, “Sufficient conditions for an eigenmanifold to be of the extended Rosenberg type,” Research Square Preprint, 2022.
  • [20] R. Rosenberg, “On nonlinear vibrations of systems with many degrees of freedom,” in Adv. in Appl. Mech., 1966, vol. 9, pp. 155 – 242.
  • [21] C. B. Barber, D. P. Dobkin, and H. Huhdanpaa, “The quickhull algorithm for convex hulls,” ACM Trans. Math. Softw., vol. 22, no. 4, p. 469–483, 1996.
  • [22] M. S. Floater, “Generalized barycentric coordinates and applications,” Acta Numerica, vol. 24, p. 161–214, 2015.
  • [23] G. J. Sussman and J. Wisdom, Structure and Interpretation of Classical Mechanics, 2nd ed.   Cambridge, USA: The MIT Press, 2015.
  • [24] S. H. Strogatz, Nonlinear Dynamics and Chaos: With Applications to Physics, Biology, Chemistry and Engineering, 2nd ed.   CRC Press, Taylor & Francis Group, 2014.
  • [25] E. Todorov, T. Erez, and Y. Tassa, “MuJoCo: A physics engine for model-based control,” in Proc. IEEE/RSJ Int. Conf. Intell. Robots Syst., 2012, pp. 5026–5033.