MEKAWIRE
ExpertarXiv

An Open MuJoCo Simulation Framework for a Quadrotor Carrying a Tendon-Driven Soft Continuum Arm

Haitham El-Hussieny
From the abstract

Combining aerial robots with soft continuum manipulators promises safe, compliant interaction with the environment, but the coupled dynamics of a free-flying base and a highly deformable, underactuated arm are difficult to study without a suitable simulator. This paper describes an open-source simulation framework, built on the MuJoCo physics engine, for a quadrotor that carries a tendon-driven soft continuum arm underneath its body.

From the abstract. Our summary is in progress.

Full paper

An Open MuJoCo Simulation Framework for a Quadrotor Carrying a Tendon-Driven Soft Continuum Arm

Haitham El-Hussieny

Published under CC BY 4.0. Reproduced with attribution; original at arXiv:2610.15308 (PDF).

Abstract

Combining aerial robots with soft continuum manipulators promises safe, compliant interaction with the environment, but the coupled dynamics of a free-flying base and a highly deformable, underactuated arm are difficult to study without a suitable simulator. This paper describes an open-source simulation framework, built on the MuJoCo physics engine, for a quadrotor that carries a tendon-driven soft continuum arm underneath its body. The arm is modelled as a pseudo-rigid-body chain of twelve segments joined by pairs of orthogonal compliant hinges. Three tendons, spaced 120\text{\,}\mathrm{\SIUnitSymbolDegree} apart and routed through every segment, bend it in any direction. A geometric tracking controller on SE(3) flies the vehicle; its rotor allocation matrix is generated directly from the model description. A closed-form tendon-tension allocation keeps every tension within its limits and gives the same bending moment in every direction. We report the full set of modelling choices and parameters, and we evaluate the framework in four simulated scenarios: a 36\text{\,}\mathrm{s} mission with a figure-eight and a tendon-driven tip sweep, an attitude-gain study, a quasi-static characterization of the bending workspace, and an impulsive disturbance applied to the arm tip. With the nominal gains the vehicle tracks the mission with 3.1\text{\,}\mathrm{cm} RMS position error while the arm tip swings up to 37\text{\,}\mathrm{cm} from the body axis. The gain study shows that a low-bandwidth attitude loop lets the arm excite sustained oscillations. The simulation runs about 15\times faster than real time on a laptop CPU. All models, controllers and scripts that reproduce the figures are released.

Index Terms:

Aerial manipulation, soft robotics, continuum robots, tendon-driven actuation, quadrotor control, MuJoCo, simulation.

I Introduction

Aerial manipulators extend the workspace of robotic arms to places that ground robots cannot reach, such as infrastructure at height, canopies and disaster sites [1]. Most aerial manipulators use rigid, serial arms. Rigid arms are precise, but they transmit contact forces straight to the flying base and can be unsafe near people and fragile objects. Soft and continuum robots [2, 3, 4] offer an attractive alternative. Their intrinsic compliance absorbs impacts, adapts to object geometry, and makes the arm safer to operate near people. Soft grippers have already been used on drones for dynamic grasping [5].

Attaching a soft continuum arm to a multirotor raises its own modelling and control problems. The arm has many lightly damped degrees of freedom. Its motion shifts the centre of mass of the whole system and exerts reaction wrenches on the base. Gravity, inertial loads from flight manoeuvres and the actuation all deform it at the same time. Quadrotor tracking controllers, from geometric control on SE(3) [6] to data-driven approaches such as deep Koopman-based model predictive control [7], are usually designed and evaluated for a rigid vehicle, and a swinging soft arm violates that assumption. Before any hardware is built, designers need a simulator that captures these couplings well enough to choose arm stiffness, tendon routing, actuator limits and controller gains. General-purpose multirotor simulators such as Gazebo with RotorS [8, 9] focus on rigid vehicles and rigid payloads. Detailed continuum-robot models based on Cosserat rods [10] are usually solved on a fixed base and are too expensive to run in closed loop with flight dynamics.

This paper documents a lightweight framework that fills this gap using MuJoCo [11], a fast physics engine for articulated systems with contact. The contributions are:

  1. An MJCF model of an X-configuration quadrotor that carries a tendon-driven soft continuum arm. The arm uses a pseudo-rigid-body discretization with two-axis compliant joints and three spatial tendons (Section II).
  2. A flight controller that combines a geometric SE(3) tracking law with an allocation matrix derived from the model’s actuator definitions. It is paired with a closed-form, saturation-free tendon allocation that bends the arm equally in every direction (Section III).
  3. A set of reproducible simulation experiments that quantify tracking performance, the effect of attitude-loop bandwidth on arm-induced oscillations, the bending workspace, disturbance rejection and computational cost (Section IV).

The code is publicly available (see Code Availability). Every number and figure in this paper is produced by a single script.

II System Modelling

Fig. 1 shows the simulated system. Table I lists its parameters. The model is written in MuJoCo’s MJCF format and compiled by MuJoCo 3.15. It has n_{q}=31 position coordinates and n_{v}=30 velocity coordinates: a 6-DoF free joint for the quadrotor and 24 hinge joints for the arm. There are seven actuators (four rotors and three tendons).

Fig. 1: Rendered frames from the demonstration mission. (a) Hover with the arm hanging under gravity. (b) Figure-eight flight with the arm deflected by inertial loads. (c)–(f) Hover while the tendons sweep the bending direction through a full revolution. The arm curls into a hook toward the tensioned side.
TABLE I: Model parameters
  • Quadrotor
    Parameter
    Mass (frame, rotors, flange)
    Value
    1.06\text{\,}\mathrm{kg}
  • Principal inertia
    Parameter
    (6.7,6.7,12.9)\times 10^{-3} \mathrm{kg}\text{\,}{\mathrm{m}}^{2}
    Value
    No data
  • Arm (rotor) offset (\pm x_{r},\pm y_{r})
    Parameter
    (\pm 0.177,\pm 0.177) \mathrm{m}
    Value
    No data
  • Thrust limit per rotor
    Parameter
    0\text{\,}\mathrm{N}8\text{\,}\mathrm{N}
    Value
    No data
  • Drag-to-thrust ratio \kappa
    Parameter
    0.016\text{\,}\mathrm{m}
    Value
    No data
  • Hover thrust per rotor
    Parameter
    3.09\text{\,}\mathrm{N}
    Value
    No data
  • Continuum arm
    Parameter
    Segments N / segment length \ell
    Value
    12 / 40\text{\,}\mathrm{mm}
  • Segment radius / mass
    Parameter
    12\text{\,}\mathrm{mm} / 15\text{\,}\mathrm{g}
    Value
    No data
  • Tip mass (end-effector sphere)
    Parameter
    20\text{\,}\mathrm{g}
    Value
    No data
  • Arm mass / backbone length
    Parameter
    0.20\text{\,}\mathrm{kg} / 0.48\text{\,}\mathrm{m}
    Value
    No data
  • Tip depth below hub centre
    Parameter
    0.53\text{\,}\mathrm{m}
    Value
    No data
  • Joint stiffness k (each axis)
    Parameter
    0.06\text{\,}\mathrm{N}\text{\,}\mathrm{m}\text{/}\mathrm{rad}
    Value
    No data
  • Joint damping c (each axis)
    Parameter
    0.01\text{\,}\mathrm{N}\text{\,}\mathrm{m}\text{\,}\mathrm{s}\text{/}\mathrm{rad}
    Value
    No data
  • Joint range
    Parameter
    \pm$0.6\text{\,}\mathrm{rad}$
    Value
    No data
  • Tendon offset r / angles \phi_{i}
    Parameter
    16\text{\,}\mathrm{mm} / 0,120,240^{\circ}
    Value
    No data
  • Tendon tension limit T_{\max}
    Parameter
    0\text{\,}\mathrm{N}6\text{\,}\mathrm{N}
    Value
    No data
  • Sim.
    Parameter
    Time step / integrator
    Value
    2\text{\,}\mathrm{ms} / implicitfast
  • Controller rate
    Parameter
    500\text{\,}\mathrm{Hz} (every step)
    Value
    No data
  • Air density / viscosity
    Parameter
    1.2\text{\,}\mathrm{kg}\text{/}{\mathrm{m}}^{3} / 1.8\text{\times}{10}^{-5}\text{\,}\mathrm{Pa}\text{\,}\mathrm{s}
    Value
    No data

II-A Quadrotor

The quadrotor is a single rigid body attached to the world by a free joint. Its position is \boldsymbol{p}\in\mathbb{R}^{3}, its attitude is R\in SO(3), its linear velocity in the world frame is \boldsymbol{v}, and its angular velocity in the body frame is \boldsymbol{\omega}. Each rotor j\in\{1,\dots,4\} sits at (x_{j},y_{j}) in the body frame and is modelled as a MuJoCo motor acting on a site at the rotor hub. Its gear vector is [0,0,1,0,0,s_{j}\kappa]^{\top}, so a control input u_{j} (in newtons) applies a thrust u_{j} along the body z-axis and a reaction (drag) torque s_{j}\kappa u_{j} about it. The spin directions alternate, s_{j}\in\{+1,-1,+1,-1\}. The resulting body wrench is

\begin{bmatrix}f\\
\boldsymbol{\tau}\end{bmatrix}=A\,\boldsymbol{u},\quad A=\begin{bmatrix}1&1&1&1\\
y_{1}&y_{2}&y_{3}&y_{4}\\
-x_{1}&-x_{2}&-x_{3}&-x_{4}\\
s_{1}\kappa&s_{2}\kappa&s_{3}\kappa&s_{4}\kappa\end{bmatrix},
(1)

where f is the collective thrust and \boldsymbol{\tau} the body torque. The controller builds A at start-up from the compiled model (site positions and actuator gears) rather than from hand-coded constants. Changing the airframe in the MJCF file therefore cannot desynchronize the mixer. Rotor speed dynamics, motor lag and blade-element aerodynamics are deliberately left out (Section V).

II-B Soft continuum arm

Simulating the arm as a Cosserat rod would require a dedicated solver. We instead use a pseudo-rigid-body (PRB) discretization [12], which MuJoCo’s articulated-body machinery handles efficiently. The arm consists of N=12 capsules of length \ell, connected in series below a mounting flange on the quadrotor. Each link k connects to its parent through two orthogonal hinges, about the local x and y axes, with angles \boldsymbol{\theta}_{k}=(\theta_{k,x},\theta_{k,y}). Each hinge has a linear spring of stiffness k and a viscous damper c. The elastic potential energy is therefore

V_{e}=\tfrac{1}{2}\,k\sum_{k=1}^{N}\|\boldsymbol{\theta}_{k}\|^{2},
(2)

which is the discretized bending energy \tfrac{1}{2}\int EI\,\kappa^{2}\,ds of a rod with flexural rigidity EI=k\ell. With the values of Table I, EI=2.4×10⁻³ N m². For a solid circular cross-section of radius 12\text{\,}\mathrm{mm}, this corresponds to a Young’s modulus of about 0.15\text{\,}\mathrm{MPa}, which is within the range of soft silicone elastomers. Torsion and axial extension are not modelled. The 20\text{\,}\mathrm{g} sphere at the distal end stands in for a small gripper or sensor.

Contacts. The arm geoms use a collision bitmask that lets them touch the ground and the quadrotor frame but not each other. Neighbouring links overlap at their capsule caps, so self-collisions would otherwise produce spurious contact forces.

II-C Tendon actuation

Three spatial tendons i\in\{a,b,c\} run parallel to the backbone at a radial offset r and angular positions \phi_{i}\in\{0^{\circ},120^{\circ},240^{\circ}\}. Each tendon is anchored on the flange and passes through a via-point (MuJoCo site) at the distal end of every link. MuJoCo computes each tendon’s length L_{i}(\boldsymbol{q}) as the sum of the straight-line distances between consecutive sites, together with the moment arms \partial L_{i}/\partial\boldsymbol{q}. A motor actuator with gear -1 converts a non-negative control T_{i}\in[0,T_{\max}] into a tension that shortens the tendon. The generalized force is \boldsymbol{\tau}_{q}=-\sum_{i}T_{i}\,(\partial L_{i}/\partial\boldsymbol{q})^{\top}.

For a straight arm, the forces at the intermediate via-points cancel. A tensioned tendon then produces the same bending moment of magnitude rT_{i} at every joint, directed about the axis (\sin\phi_{i},-\cos\phi_{i},0). In the absence of gravity this produces approximately constant curvature, the usual idealization of tendon-driven continuum robots [4]. The net bending moment is

\boldsymbol{m}=r\sum_{i}T_{i}\,\boldsymbol{n}_{i},\qquad\boldsymbol{n}_{i}=(\cos\phi_{i},\sin\phi_{i})^{\top},
(3)

where \boldsymbol{m} is expressed by the in-plane direction toward which the arm bends. Gravity adds a configuration-dependent restoring moment. In our parameter range it dominates the elastic stiffness, so pulling a tendon curls the distal part of the arm into a hook rather than a uniform arc (Fig. 1c–f). The reaction to the tendon tensions acts on the flange, so the quadrotor experiences the internal loads of the arm.

II-D Environment and integration

MuJoCo’s built-in inertia-based fluid model is enabled with the density and viscosity of air. It adds drag to every body, which provides a mild amount of aerodynamic damping for the swinging arm. Rotor downwash on the arm is not modelled. The equations of motion are integrated with MuJoCo’s implicitfast integrator, which treats the joint damping implicitly, at a time step of 2\text{\,}\mathrm{ms}.

III Control

The controller has full state access and runs at every simulation step. It treats the arm as an unmodelled disturbance and uses only the total mass m_{\Sigma}=1.26 kg of the quadrotor and arm. This deliberately simple baseline isolates the effect of the soft arm on a standard flight controller.

III-A Position loop

Given a reference (\boldsymbol{p}_{d},\boldsymbol{v}_{d},\boldsymbol{a}_{d},\psi_{d}), the commanded acceleration is

\boldsymbol{a}_{c}=K_{p}\boldsymbol{e}_{p}+K_{d}\boldsymbol{e}_{v}+K_{i}\!\int\!\boldsymbol{e}_{p}\,dt+\boldsymbol{a}_{d},
(4)

with \boldsymbol{e}_{p}=\boldsymbol{p}_{d}-\boldsymbol{p}, \boldsymbol{e}_{v}=\boldsymbol{v}_{d}-\boldsymbol{v}, and an integrator clamped to \pm1 m s. The horizontal part of \boldsymbol{a}_{c} is saturated so that the commanded tilt never exceeds 35\text{\,}\mathrm{\SIUnitSymbolDegree}. The desired force is \boldsymbol{F}_{d}=m_{\Sigma}(\boldsymbol{a}_{c}+g\boldsymbol{e}_{3}).

III-B Attitude loop

Following [6], the desired body axes are \boldsymbol{b}_{3d}=\boldsymbol{F}_{d}/\|\boldsymbol{F}_{d}\|, \boldsymbol{b}_{2d}=\boldsymbol{b}_{3d}\times\boldsymbol{b}_{1c}/\|\boldsymbol{b}_{3d}\times\boldsymbol{b}_{1c}\| with \boldsymbol{b}_{1c}=(\cos\psi_{d},\sin\psi_{d},0), and \boldsymbol{b}_{1d}=\boldsymbol{b}_{2d}\times\boldsymbol{b}_{3d}. Together they give R_{d}=[\boldsymbol{b}_{1d}\;\boldsymbol{b}_{2d}\;\boldsymbol{b}_{3d}]. The thrust and torque commands are

\displaystyle f \\ \displaystyle=\boldsymbol{F}_{d}^{\top}R\,\boldsymbol{e}_{3}, \\ \displaystyle\boldsymbol{e}_{R} \\ \displaystyle=\tfrac{1}{2}\left(R_{d}^{\top}R-R^{\top}R_{d}\right)^{\vee}, \\ \displaystyle\boldsymbol{\tau} \\ \displaystyle=-K_{R}\,\boldsymbol{e}_{R}-K_{\omega}\,\boldsymbol{\omega},
(5) (6) (7)

where (\cdot)^{\vee} maps a skew-symmetric matrix to a vector. We omit the feed-forward angular velocity and gyroscopic terms of the full law because the references used here are slow relative to the attitude dynamics. The rotor commands are \boldsymbol{u}=\mathrm{sat}_{[0,8]}\big(A^{-1}[f;\boldsymbol{\tau}]\big). The nominal gains are K_{p}=\diag(6,6,10), K_{d}=\diag(4,4,6), K_{i}=\diag(1,1,2), K_{R}=\diag(4,4,0.8) and K_{\omega}=\diag(0.4,0.4,0.15) in SI units. Section IV-B justifies the attitude gains.

III-C Tendon tension allocation

The bending command is a direction \beta in the body xy-plane and a normalized magnitude \mu\in[0,1]. Because tendons can only pull, the tensions must satisfy 0\leq T_{i}\leq T_{\max}. Let c_{i}=\cos(\beta-\phi_{i}). For three equally spaced tendons, \sum_{i}\boldsymbol{n}_{i}\boldsymbol{n}_{i}^{\top}=\tfrac{3}{2}I and \sum_{i}\boldsymbol{n}_{i}=\boldsymbol{0}. Hence the minimum-norm solution of (3), T_{i}\propto c_{i}, can be shifted by any common-mode tension without changing the net moment. We choose

T_{i}=\frac{\mu\,T_{\max}}{\sqrt{3}}\,\Big(c_{i}-\min_{j}c_{j}\Big),
(8)

which sets the slackest tendon to zero. Over all \beta, the spread \max_{j}c_{j}-\min_{j}c_{j} reaches its largest value, \sqrt{3}, when \beta lies midway between two tendons. Therefore (8) never exceeds T_{\max}, and no clipping is needed. Substituting into (3) gives

\boldsymbol{m}=\tfrac{\sqrt{3}}{2}\,r\,\mu\,T_{\max}\,(\cos\beta,\sin\beta)^{\top}
(9)

for every \beta. The bending authority is thus direction-independent. We verified numerically that the peak tension is exactly T_{\max} and that the resultant is constant at \tfrac{\sqrt{3}}{2}T_{\max}=5.20 N over a 0.1^{\circ} sweep of \beta. An earlier version of the framework used T_{i}=\mu T_{\max}\max(c_{i},0). That map loses half of its authority between tendons, and in simulation it produced a tip workspace whose radius varied between 10.7\text{\,} and 15.9\text{\,}\mathrm{cm} with direction.

III-D Reference generation

Transitions use the minimum-jerk blend \sigma(s)=10s^{3}-15s^{4}+6s^{5} [13]. The horizontal figure-eight is \boldsymbol{p}_{d}=(A\sin\Omega\tau,\;0.6A\sin 2\Omega\tau,\;z_{c}) with \Omega=2\pi/8~rad/s and z_{c}=1.6 m. The amplitude A is ramped from 0 to 1.2\text{\,}\mathrm{m} and back with \sigma over 2\text{\,}\mathrm{s} at each end of the segment. Velocity and acceleration feed-forward terms are obtained by central finite differences of the reference. The peak reference speed is 1.47\text{\,}\mathrm{m}\text{/}\mathrm{s}, and the peak horizontal acceleration is 3.2\text{\,}\mathrm{m}\text{/}{\mathrm{s}}^{2}, equivalent to a quasi-static tilt of 18\text{\,}\mathrm{\SIUnitSymbolDegree}.

IV Simulation Experiments

All experiments were run with MuJoCo 3.15.0 and Python 3.12 on an Apple M3 Pro laptop. They are generated by paper/make_figures.py. The vehicle always starts at rest at 1\text{\,}\mathrm{m} altitude with the arm hanging straight.

IV-A Demonstration mission

The 36\text{\,}\mathrm{s} mission consists of five phases: (i) hover at 1.0\text{\,}\mathrm{m}; (ii) climb to 1.6\text{\,}\mathrm{m}; (iii) a 16\text{\,}\mathrm{s} figure-eight with the tendons slack; (iv) a 10\text{\,}\mathrm{s} hover during which the bending direction rotates at 0.2 revolutions per second and \mu is ramped to 1; and (v) a return to the start point. Fig. 2 shows the tracking result, Fig. 3 the horizontal path, and Table II the statistics for each phase.

Fig. 2: Demonstration mission. Top: quadrotor position (solid) and reference (dashed). Middle: position error norm (log scale). Bottom: tendon tensions from (8). Dotted lines mark the phase boundaries.
Fig. 3: Top view of the figure-eight phase. The arm tip lags the vehicle and swings outward at the turns.
TABLE II: Mission statistics per phase (nominal gains)
  • Hover
    \|\boldsymbol{e}_{p}\| [cm] RMS
    <0.01
    \|\boldsymbol{e}_{p}\| [cm] max
    <0.01
    Tilt max [∘]
    0.0
    Tip lat. max [cm]
    0.0
    Thrust range [N]
    3.09–3.09
  • Climb
    \|\boldsymbol{e}_{p}\| [cm] RMS
    0.03
    \|\boldsymbol{e}_{p}\| [cm] max
    0.05
    Tilt max [∘]
    0.0
    Tip lat. max [cm]
    0.0
    Thrust range [N]
    2.97–3.21
  • Figure-eight
    \|\boldsymbol{e}_{p}\| [cm] RMS
    3.90
    \|\boldsymbol{e}_{p}\| [cm] max
    8.87
    Tilt max [∘]
    23.5
    Tip lat. max [cm]
    36.8
    Thrust range [N]
    2.95–3.53
  • Tendon sweep
    \|\boldsymbol{e}_{p}\| [cm] RMS
    3.34
    \|\boldsymbol{e}_{p}\| [cm] max
    5.16
    Tilt max [∘]
    4.7
    Tip lat. max [cm]
    21.8
    Thrust range [N]
    2.73–3.42
  • Return
    \|\boldsymbol{e}_{p}\| [cm] RMS
    0.50
    \|\boldsymbol{e}_{p}\| [cm] max
    1.50
    Tilt max [∘]
    0.6
    Tip lat. max [cm]
    2.1
    Thrust range [N]
    3.02–3.16
  • Whole mission
    \|\boldsymbol{e}_{p}\| [cm] RMS
    3.14
    \|\boldsymbol{e}_{p}\| [cm] max
    8.87
    Tilt max [∘]
    23.5
    Tip lat. max [cm]
    36.8
    Thrust range [N]
    2.73–3.53

The largest errors occur during the figure-eight. Here the arm, whose mass is 16\text{\,}\mathrm{\%} of the total, lags behind the vehicle (Fig. 3) and swings laterally by up to 37\text{\,}\mathrm{cm} from the body axis. The reaction to this swing is a disturbance that the controller does not model. The thrusts stay between 2.7\text{\,} and 3.6\text{\,}\mathrm{N}, well within the 8\text{\,}\mathrm{N} limit. The thrust-to-weight ratio is 2.6, so there is ample margin.

During the tendon sweep the position error rises to 3.3\text{\,}\mathrm{cm} RMS even though the vehicle is commanded to hover. Static tests (Section IV-C) explain why. When the arm bends, its weight acts off the body axis and creates a pitching or rolling moment. The attitude loop is a PD law without integral action, so it balances this moment with a small steady attitude error. With the nominal gains this error is only about 0.02\text{\,}\mathrm{\SIUnitSymbolDegree}, but the horizontal thrust component it produces makes the vehicle drift slowly toward the bending side until the position integrator compensates. In a held-bend test at \mu=1 the drift was 1.9\text{\,}\mathrm{cm} after 5\text{\,}\mathrm{s}, 0.3\text{\,}\mathrm{cm} after 15\text{\,}\mathrm{s} and 0.02\text{\,}\mathrm{cm} after 30\text{\,}\mathrm{s}. A feed-forward term based on the arm’s centre of mass would remove most of this error.

IV-B Effect of attitude-loop bandwidth

Our first implementation used the soft attitude gains listed first in Table III. With these gains the vehicle never settled during hover; it kept oscillating together with the arm. To quantify this effect we repeated the mission with four attitude gain sets, keeping the position gains fixed (Table III). With J\approx6.7×10⁻³ kg m², the roll/pitch natural frequency \sqrt{K_{R}/J} of the bare vehicle ranges from about 7\text{\,} to 24\text{\,}\mathrm{rad}\text{/}\mathrm{s} across the four sets. With the softest gains, a sustained, low-frequency (below 0.5\text{\,}\mathrm{Hz}) coupled oscillation between the vehicle and the arm persists through the hover phases. Its RMS error after t=24 s is 34\text{\,}\mathrm{cm}, larger than during the aggressive figure-eight. Each doubling of K_{R} roughly halves the error. The nominal set, the stiffest one tested, still leaves a wide thrust margin and reduces the RMS error to 3.1\text{\,}\mathrm{cm}. The attitude loop therefore needs a bandwidth well above the dominant frequencies of the arm. This requirement is worth checking against the real motor and ESC bandwidth when the design is transferred to hardware.

TABLE III: Mission performance versus roll/pitch attitude gains
  • Soft
    K_{R,xy}
    0.35
    K_{\omega,xy}
    0.06
    RMS [cm]
    22.67
    max [cm]
    52.82
    RMS{}_{t>24\,\mathrm{s}} [cm]
    33.59
    Tiltmax [∘]
    40.7
  • Medium
    K_{R,xy}
    1.0
    K_{\omega,xy}
    0.15
    RMS [cm]
    7.99
    max [cm]
    16.70
    RMS{}_{t>24\,\mathrm{s}} [cm]
    11.04
    Tiltmax [∘]
    28.6
  • Stiff
    K_{R,xy}
    2.0
    K_{\omega,xy}
    0.25
    RMS [cm]
    4.80
    max [cm]
    11.97
    RMS{}_{t>24\,\mathrm{s}} [cm]
    5.56
    Tiltmax [∘]
    25.4
  • Nominal
    K_{R,xy}
    4.0
    K_{\omega,xy}
    0.40
    RMS [cm]
    3.14
    max [cm]
    8.87
    RMS{}_{t>24\,\mathrm{s}} [cm]
    2.85
    Tiltmax [∘]
    23.5

IV-C Bending workspace

To characterize the arm independently of the flight manoeuvres, the vehicle is commanded to hover at 1.6\text{\,}\mathrm{m}. A constant bending command is ramped in over 1\text{\,}\mathrm{s}, and the tip position, expressed in the body frame, is recorded after 5\text{\,}\mathrm{s}. Fig. 4 (left) shows the tip position for \beta=0 as \mu increases. The lateral deflection grows almost linearly at first and saturates at 15.3\text{\,}\mathrm{cm} at \mu=1. Meanwhile the tip rises from 52.6\text{\,} to 37.8\text{\,}\mathrm{cm} below the body, because the distal links curl back. The vehicle’s tilt stays below 0.03\text{\,}\mathrm{\SIUnitSymbolDegree} throughout. Fig. 4 (right) sweeps \beta in 15\text{\,}\mathrm{\SIUnitSymbolDegree} steps. Thanks to (8), the tip traces a nearly circular workspace whose radius varies only between 14.95\text{\,} and 15.32\text{\,}\mathrm{cm} (\pm 1.2\%) at \mu=1. The remaining anisotropy comes from the serial x–y hinge order and the discrete tendon routing.

Fig. 4: Quasi-static bending in hover. Left: tip lateral deflection and depth versus the bending command \mu for \beta=0. Right: tip workspace in the body xy-plane when \beta is swept, for \mu=0.5 and \mu=1. Arrows show the tendon directions \phi_{i}.

IV-D Disturbance on the arm tip

With the vehicle hovering at 1\text{\,}\mathrm{m}, a lateral force of 2\text{\,}\mathrm{N} is applied to the distal link for 0.2\text{\,}\mathrm{s}, an impulse of 0.4\text{\,}\mathrm{N}\text{\,}\mathrm{s} (Fig. 5). The tip swings by up to 47\text{\,}\mathrm{cm} relative to the body. The vehicle tilts by at most 7.0\text{\,}\mathrm{\SIUnitSymbolDegree} and deviates by at most 7.9\text{\,}\mathrm{cm}. Its position returns to within 1\text{\,}\mathrm{cm} of the set-point 5.0\text{\,}\mathrm{s} after the push. The lightly damped swing of the arm, rather than the flight controller, determines this recovery time. Faster recovery would require more structural damping in the arm or active damping through the tendons.

Fig. 5: Response to a 0.4\text{\,}\mathrm{N}\text{\,}\mathrm{s} lateral impulse on the arm tip (shaded) during hover: vehicle position error and tip lateral displacement relative to the vehicle.

IV-E Computational cost

The full mission (18\,000 steps, including the Python controller and reference generation at every step) takes 2.3\text{\,}\mathrm{s} of wall-clock time, or about 129\text{\,}\mathrm{\SIUnitSymbolMicro s} per step. This is a real-time factor of about 15 on a single CPU core without rendering. The framework is therefore fast enough for interactive use, for gain sweeps and Monte-Carlo studies, and as a candidate environment for learning-based controllers.

V Discussion and Limitations

The framework is intended for early design studies and controller prototyping, not for high-fidelity prediction. Its main limitations are:

Arm model. The PRB chain captures bending, gravity loading, inertia and tendon actuation. It neglects shear, torsion, axial extension, material nonlinearity, hysteresis and tendon friction. Its parameters are representative but have not been identified from a physical prototype. Comparing it with a Cosserat-rod model [10] and with experiments is a natural next step. Increasing N refines the discretization at a linear cost in computation.

Aerodynamics. Rotors are ideal force generators without speed dynamics. Downwash, ground effect and rotor–arm aerodynamic interaction are not modelled. Downwash could noticeably load a light, slender arm hanging directly below the rotors.

Sensing and control. The controller uses exact state feedback and treats the arm as a disturbance. A rigorous treatment of the coupled system calls for estimation of the arm’s shape and model-based control that accounts for the arm [14]. Examples include feed-forward compensation of the centre of mass or of the reaction wrench, and coordinated planning of the vehicle and the arm. The model makes these extensions straightforward to prototype.

VI Conclusion

We presented an open MuJoCo framework for simulating a quadrotor that carries a tendon-driven soft continuum arm. It comprises a PRB arm with spatial tendons, a geometric flight controller whose rotor allocation comes from the model, and a closed-form tendon allocation that is saturation-free and bends the arm equally in every direction. Reproducible experiments showed centimetre-level tracking with 3.1\text{\,}\mathrm{cm} RMS error during aggressive manoeuvres. They identified attitude-loop bandwidth as a key requirement when flying with a soft arm, and they characterized a bending workspace of about 15\text{\,}\mathrm{cm} radius that is nearly identical in every direction. The simulation runs about 15\times faster than real time. Future work will add motor dynamics and a downwash model, compensation that accounts for the arm’s dynamics, and validation against a physical prototype.

Code Availability

The MJCF model (quad_continuum.xml), the controller (controller.py), the interactive demonstration (demo.py), and the script that regenerates every figure and number in this paper (paper/make_figures.py) are available at https://github.com/elhussieny/quad-soft-continuum.

References

  1. [1] F. Ruggiero, V. Lippiello, and A. Ollero (2018) Aerial manipulation: a literature review. IEEE Robotics and Automation Letters 3 (3), pp. 1957–1964.
  2. [2] D. Rus and M. T. Tolley (2015) Design, fabrication and control of soft robots. Nature 521 (7553), pp. 467–475.
  3. [3] S. Kim, C. Laschi, and B. Trimmer (2013) Soft robotics: a bioinspired evolution in robotics. Trends in Biotechnology 31 (5), pp. 287–294.
  4. [4] R. J. Webster III and B. A. Jones (2010) Design and kinematic modeling of constant curvature continuum robots: a review. The International Journal of Robotics Research 29 (13), pp. 1661–1683.
  5. [5] J. Fishman, S. Ubellacker, N. Hughes, and L. Carlone (2021) Dynamic grasping with a “soft” drone: from theory to practice. In Proc. IEEE/RSJ Int. Conf. Intelligent Robots and Systems (IROS),
  6. [6] T. Lee, M. Leok, and N. H. McClamroch (2010) Geometric tracking control of a quadrotor UAV on SE(3). In Proc. 49th IEEE Conf. Decision and Control (CDC), pp. 5420–5425.
  7. [7] H. El-Hussieny (2026) Real-time trajectory tracking and stabilization of quadrotors using deep Koopman-based model predictive control. Applied Computing and Informatics, pp. 1–19.
  8. [8] N. Koenig and A. Howard (2004) Design and use paradigms for Gazebo, an open-source multi-robot simulator. In Proc. IEEE/RSJ Int. Conf. Intelligent Robots and Systems (IROS), pp. 2149–2154.
  9. [9] F. Furrer, M. Burri, M. Achtelik, and R. Siegwart (2016) RotorS—a modular Gazebo MAV simulator framework. In Robot Operating System (ROS): The Complete Reference (Volume 1), pp. 595–625.
  10. [10] D. C. Rucker and R. J. Webster III (2011) Statics and dynamics of continuum robots with general tendon routing and external loading. IEEE Transactions on Robotics 27 (6), pp. 1033–1044.
  11. [11] E. Todorov, T. Erez, and Y. Tassa (2012) MuJoCo: a physics engine for model-based control. In Proc. IEEE/RSJ Int. Conf. Intelligent Robots and Systems (IROS), pp. 5026–5033.
  12. [12] L. L. Howell (2001) Compliant mechanisms. Wiley, New York.
  13. [13] T. Flash and N. Hogan (1985) The coordination of arm movements: an experimentally confirmed mathematical model. Journal of Neuroscience 5 (7), pp. 1688–1703.
  14. [14] C. Della Santina, C. Duriez, and D. Rus (2023) Model-based control of soft robots: a survey of the state of the art and open challenges. IEEE Control Systems Magazine 43 (3), pp. 30–65.