<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMC</journal-id>
<journal-id journal-id-type="nlm-ta">CMC</journal-id>
<journal-id journal-id-type="publisher-id">CMC</journal-id>
<journal-title-group>
<journal-title>Computers, Materials &#x0026; Continua</journal-title>
</journal-title-group>
<issn pub-type="epub">1546-2226</issn>
<issn pub-type="ppub">1546-2218</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">81203</article-id>
<article-id pub-id-type="doi">10.32604/cmc.2026.081203</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Disturbance Observers-Based Adaptive Visual Servoing for Aerial Vehicle with Trajectory Tracking Applications of Soccer</article-title>
<alt-title alt-title-type="left-running-head">Disturbance Observers-Based Adaptive Visual Servoing For Aerial Vehicle With Trajectory Tracking Applications of Soccer</alt-title>
<alt-title alt-title-type="right-running-head">Disturbance Observers-Based Adaptive Visual Servoing For Aerial Vehicle With Trajectory Tracking Applications of Soccer</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author">
<name name-style="western"><surname>Long</surname><given-names>Yao-Bo</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western"><surname>Ouyang</surname><given-names>Yu-Ke</given-names></name><xref ref-type="aff" rid="aff-2">2</xref></contrib>
<contrib id="author-3" contrib-type="author">
<name name-style="western"><surname>Zhuang</surname><given-names>Bo</given-names></name><xref ref-type="aff" rid="aff-2">2</xref></contrib>
<contrib id="author-4" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Liu</surname><given-names>Ao-Qi</given-names></name><xref ref-type="aff" rid="aff-3">3</xref><email>3230006888@student.must.edu.mo</email></contrib>
<aff id="aff-1"><label>1</label><institution>School of General Education, Guangdong University of Science and Technology</institution>, <addr-line>Dongguan</addr-line>, <country>China</country></aff>
<aff id="aff-2"><label>2</label><institution>School of Automation, Guangdong University of Technology</institution>, <addr-line>Guangzhou</addr-line>, <country>China</country></aff>
<aff id="aff-3"><label>3</label><institution>School of Computer Science and Engineering, Macau University of Science and Technology</institution>, <addr-line>Macau</addr-line>, <country>China</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Ao-Qi Liu. Email: <email>3230006888@student.must.edu.mo</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2026</year>
</pub-date>
<pub-date date-type="pub" publication-format="electronic">
<day>15</day><month>06</month><year>2026</year>
</pub-date>
<volume>88</volume>
<issue>2</issue>
<elocation-id>60</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>02</month>
<year>2026</year>
</date>
<date date-type="accepted">
<day>13</day>
<month>04</month>
<year>2026</year>
</date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2026 The Authors. Published by Tech Science Press.</copyright-statement>
<copyright-year>2026</copyright-year>
<copyright-holder>The Authors</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMC_81203.pdf"></self-uri>
<abstract>
<p>This study addresses the real-time visual tracking task in edge environments by proposing a robust visual servoing control system based on a higher-order sliding mode observer, enabling a quadrotor UAV to autonomously track a moving soccer ball during outdoor sports broadcasts while relying solely on a monocular camera and an inertial measurement unit, thereby eliminating any dependency on external positioning or velocity sensors such as GPS. The system adopts a hierarchical control architecture in which the observer plays a central role: operating on resource-constrained edge devices, it leverages only visual information to estimate unknown external disturbances and target motion states in real time, significantly reducing both hardware requirements and computational overhead to meet the lightweight deployment demands of edge nodes while simultaneously providing the continuous disturbance estimation necessary to sustain a low-latency control loop. Experimental validation was conducted under simulated real soccer match scenarios featuring wind disturbances and abrupt trajectory changes, and the results demonstrate that the system restores the ball to a stable position near the center of the camera&#x2019;s field of view within seconds of a perturbation, thereby satisfying the stringent stability and real-time performance requirements of live broadcasting. This work confirms the feasibility of delivering low-latency, highly reliable visual intelligence services on resource-constrained edge platforms through advanced observer design, offering a technical reference for the convergence of real-time perception and control within the edge Internet of Things and providing valuable insights for future research on large-scale edge collaboration and secure, sustainable service architectures.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Image-based visual servoing</kwd>
<kwd>adaptive control</kwd>
<kwd>aerial vehicles</kwd>
<kwd>disturbance observers</kwd>
<kwd>soccer ball</kwd>
</kwd-group>
<funding-group>
<award-group id="awg1">
<funding-source>School-Level Fund Project of Guangdong University of Science and Technology</funding-source>
<award-id>GKY-2025BSQDW-15</award-id>
</award-group>
</funding-group>
</article-meta>
</front>
<body>
<sec id="s1">
<label>1</label>
<title>Introduction</title>
<p>The increasing demand for immersive viewing experiences in live sports broadcasting&#x2014;particularly in dynamic football matches&#x2014;has revealed the inherent limitations of conventional static camera systems [<xref ref-type="bibr" rid="ref-1">1</xref>]. Traditional fixed-angle cameras cannot adequately capture rapid positional transitions, such as counterattacks or long-ball trajectories, leading to fragmented spectator engagement. In contrast, unmanned aerial vehicles (UAVs), with their agile mobility and autonomous tracking capabilities [<xref ref-type="bibr" rid="ref-2">2</xref>&#x2013;<xref ref-type="bibr" rid="ref-4">4</xref>], provide a disruptive solution capable of delivering cinematic-level perspectives beyond the reach of terrestrial setups. In this context, the visual-based drone tracking control method can effectively address the shortcomings of the traditional live streaming approach. Football tracking represents a fundamental task in drone-assisted live broadcasting, where the primary objective is high-precision trajectory tracking of the football&#x2019;s motion path. This aligns with the broader control paradigm of visual servoing for unmanned aerial systems [<xref ref-type="bibr" rid="ref-5">5</xref>,<xref ref-type="bibr" rid="ref-6">6</xref>].</p>
<p>Within the domain of robotic vision-guided control, two principal methodologies have emerged: position-based visual servoing (PBVS), which relies on reconstructed 3D target pose, and image-based visual servoing (IBVS), which directly utilizes 2D image features for error regulation [<xref ref-type="bibr" rid="ref-7">7</xref>]. The latter approach circumvents the need for explicit pose estimation, thereby mitigating projection model inaccuracies and camera calibration errors that commonly degrade PBVS performance. In quadrotor systems, traditional depth estimation approaches often lead to increased computational complexity and measurement inaccuracies [<xref ref-type="bibr" rid="ref-8">8</xref>]. To overcome these challenges, alternative solutions have been proposed, including techniques based on spherical image moments [<xref ref-type="bibr" rid="ref-9">9</xref>] and virtual image moments [<xref ref-type="bibr" rid="ref-10">10</xref>]. The virtual image moments approach introduces an auxiliary reference frame that effectively isolates roll and pitch dynamics, consequently streamlining controller development. Experimental validation has confirmed its superior effectiveness in stationary positioning scenarios [<xref ref-type="bibr" rid="ref-11">11</xref>].</p>
<p>While visual servoing methods have demonstrated considerable success in UAV control, significant challenges persist in tracking unknown dynamic targets and mitigating external disturbances [<xref ref-type="bibr" rid="ref-12">12</xref>], particularly limiting their application in dynamic environments like live soccer broadcasting. Current research predominantly assumes perfect knowledge of target dynamics, which proves unrealistic in practice&#x2014;for instance, the instantaneous velocity of a soccer ball during play cannot be predetermined. Several approaches have attempted to address these limitations: barrier Lyapunov function-based controllers [<xref ref-type="bibr" rid="ref-13">13</xref>] eliminate the need for explicit platform dynamics, while auxiliary dynamic systems [<xref ref-type="bibr" rid="ref-14">14</xref>] handle unknown target velocities by treating them as bounded disturbances, albeit with inherent steady-state tracking errors. More advanced solutions employ nonlinear tracking-differentiator observers [<xref ref-type="bibr" rid="ref-15">15</xref>] to estimate target motion through visual cues, with subsequent developments [<xref ref-type="bibr" rid="ref-16">16</xref>] extending virtual camera IBVS through velocity estimation for improved tracking of arbitrarily oriented planar targets. Nevertheless, these approaches still depend on velocity measurements from the UAV to indirectly determine the moving target&#x2019;s velocity. The noisy velocity signals propagate through the control system, causing undesirable oscillations in the attitude control loop and increased power expenditure [<xref ref-type="bibr" rid="ref-17">17</xref>].</p>
<p>In practical applications, UAVs conducting aerial live broadcasts over open soccer fields are susceptible to environmental disturbances such as wind, which can significantly compromise tracking accuracy and consequently degrade broadcast quality. To systematically address the challenge of disturbance rejection in quadrotor visual servoing, Xie et al. have developed a series of adaptive control solutions. Their initial work [<xref ref-type="bibr" rid="ref-18">18</xref>] established adaptive control schemes to enhance servoing performance under external disturbances. Building upon this foundation, their subsequent research [<xref ref-type="bibr" rid="ref-19">19</xref>] introduced an advanced output feedback IBVS approach with improved disturbance compensation capabilities. Nevertheless, these methods capable of compensating for external disturbances, though its effectiveness against time-varying disturbances in real-world scenarios remains limited. In work [<xref ref-type="bibr" rid="ref-20">20</xref>], a nonlinear model predictive control strategy was developed through the offline design of tightened constraint sets. Work [<xref ref-type="bibr" rid="ref-21">21</xref>] introduced a saturated control scheme for rotational dynamics to counteract external disturbances. However, model-based control approaches often rely on worst-case assumptions, trading off nominal performance for enhanced robustness [<xref ref-type="bibr" rid="ref-22">22</xref>]. Observer-based methodologies have gained prominence in addressing the critical trade-off triangle of control precision, disturbance attenuation, and closed-loop stability. Work [<xref ref-type="bibr" rid="ref-23">23</xref>] introduced an enhanced extended state observer (ESO) design exhibiting improved disturbance rejection capabilities. Finite-time estimation of external disturbances was accomplished using sliding-mode observers (SMOs) in [<xref ref-type="bibr" rid="ref-24">24</xref>]. To address the high-frequency chattering issue inherent in conventional sliding mode observers, reference [<xref ref-type="bibr" rid="ref-25">25</xref>] pioneered the introduction of a higher-order sliding mode observer (HOSMO) to achieve continuous estimation. Work [<xref ref-type="bibr" rid="ref-26">26</xref>] introduced a higher-order sliding mode observer design that leverages quadrotor position and velocity state feedback to enable both continuous and finite-time disturbance estimation. Recently, work [<xref ref-type="bibr" rid="ref-27">27</xref>] further designed HOSMO and successfully achieved highly accurate synchronous estimation of the relative speed of moving targets and external disturbances. While this method demonstrates effectiveness, its practical implementation critically depends on high-accuracy measurements of both positional and velocity states.</p>
<p>Building upon these research findings, this study focuses on controlling a quadrotor UAV to track a moving soccer ball, addressing needs distinct from conventional fixed-view broadcasting in football matches. In this work, we decompose the UAV control system into two cascaded loops: an attitude loop and a position loop. For the position control loop, we develop a high-order sliding mode observer that utilizes visual information to estimate both external disturbances and the football&#x2019;s velocity. A backstepping-based controller is then designed to actively compensate for these estimated disturbances and unknown football velocity, enabling accurate tracking of the football&#x2019;s trajectory. The attitude loop derives desired angular velocities from the position loop&#x2019;s thrust commands, while a torque controller ensures the UAV&#x2019;s angular velocities precisely track these reference commands. In this work, the onboard sensing suite comprises only a downward-facing camera and a standard IMU; no external positioning systems or dedicated velocity sensors are required. Compared with existing literature, the main contributions of this work are summarized as follows:<list list-type="simple">
<list-item>
<label>(1)</label>
<p>The proposed control architecture incorporates a state observer to reconstruct velocity information, providing a complete solution for vision-based football tracking that operates without physical velocity sensors and relies solely on an IMU and an onboard camera.</p></list-item>
<list-item>
<label>(2)</label>
<p>The proposed control scheme guarantees asymptotic convergence of tracking errors for UAVs operating under time-varying external disturbances.</p></list-item>
<list-item>
<label>(3)</label>
<p>The corresponding torque controller is designed based on the full nonlinear quadrotor dynamics rather than employing linearization techniques, thereby significantly enhancing the dynamic responsiveness of the IBVS strategy.</p></list-item>
</list></p>
<p>This paper is organized as follows. <xref ref-type="sec" rid="s2">Section 2</xref> introduces a quadrotor dynamic and a image dynamic. <xref ref-type="sec" rid="s3">Section 3</xref> presents the controller design and provides Lyapunov-based stability proofs for the closed-loop system. <xref ref-type="sec" rid="s4">Section 4</xref> presents comprehensive performance evaluation and experimental results of the proposed method, followed by concluding remarks in <xref ref-type="sec" rid="s5">Section 5</xref>.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Problem Formulation</title>
<p>This section formulates the rigid-body dynamic model of a quadrotor UAV in three-dimensional space and establishes a perspective projection model for the onboard camera system. By introducing a virtual camera paradigm, we derive image moment features defined on the virtual imaging plane, followed by a formal problem statement for the visual tracking task.</p>
<sec id="s2_1">
<label>2.1</label>
<title>System Description</title>
<p>To characterize the kinematic relationship between the UAV and the target soccer ball, four coordinate frames are considered for the quadrotor IBVS system description. The inertial frame <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>O</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>X</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Z</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> is aligned with north, east, down. <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:msub><mml:mi>F</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>O</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>X</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Y</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Z</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> represents a body-fixed coordinate system aligned with forward, right, and down axes, with its origin located at the center of mass of the quadrotor. Orign of frame B is located at <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>x</mml:mi><mml:mspace width=".5em" /><mml:mi>y</mml:mi><mml:mspace width=".5em" /><mml:mi>z</mml:mi><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mi>T</mml:mi></mml:msup></mml:math></inline-formula> with respect to the Inertia frame, its attitude is represented by three Euler angles <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:mi>&#x03D5;</mml:mi></mml:math></inline-formula>, <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:mi>&#x03B8;</mml:mi></mml:math></inline-formula>, and <inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:mi>&#x03C8;</mml:mi></mml:math></inline-formula>, corresponding to roll, pitch, and yaw angles, respectively. The transformation can be represented by a rotation matrix R: <inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:msub><mml:mi>F</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:math></inline-formula>. For the convenience of presentation, it is assumed that the camera frame <inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:msub><mml:mi>F</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>O</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>X</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Y</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Z</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> aligns with the quadrotor body frame. Consider a virtual camera frame <inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:msub><mml:mi>F</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>O</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>X</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Y</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi>Z</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> that inherits the translational motion of the real quadrotor without rotation, with its origin aligned with that of the actual camera frame, and its roll and pitch angles are zero and yaw angle is the same as the actual camera frame. The geometric relationships between the four frames is shown in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>.</p>
<fig id="fig-1">
<label>Figure 1</label>
<caption>
<title>The geometric relationship among the camera frame, virtual image frame, and inertial frame.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-1.tif"/>
</fig>
<p>Establishing the quadrotor dynamics model in the virtual camera coordinate system are as follows:<disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:mover><mml:mi>p</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mi>v</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mrow><mml:mi>f</mml:mi><mml:mi>R</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mi>m</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mi>g</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:mover><mml:mi>R</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mi>R</mml:mi><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mi>J</mml:mi><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mi>&#x03C4;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>J</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where the mass of the quadrotor <inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:mi>m</mml:mi></mml:math></inline-formula>, gravitational acceleration <inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:mi>g</mml:mi></mml:math></inline-formula>, and symmetric inertia matrix <italic>J</italic> define its physical properties. <inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:mi>v</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:math></inline-formula> respectively represent the linear velocity of the quadrotor within the virtual camera plane and the angular velocity in the body coordinate frame. <inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:mi>f</mml:mi></mml:math></inline-formula> and <inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15"><mml:mi>&#x03C4;</mml:mi></mml:math></inline-formula> represent the thrust force and torque inputs to the quadrotor. Lumped disturbance forces <inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:msub><mml:mi>d</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> and torques <inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:math></inline-formula> act on the translational and rotational dynamics of the quadrotor, respectively, arising from both unmodeled dynamics and external disturbances. The unit vector is defined as <inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:msub><mml:mi>e</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mspace width=".5em" /><mml:mn>0</mml:mn><mml:mspace width=".5em" /><mml:mn>1</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi>T</mml:mi></mml:msup></mml:math></inline-formula>, and <inline-formula id="ieqn-19"><mml:math id="mml-ieqn-19"><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mo>&#x22C5;</mml:mo><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> denotes the skew-symmetric matrix operator.</p>
<p>To facilitate the derivation of the quadrotor dynamic model and enable disturbance identification and compensation, this paper adopts the following fundamental assumptions:</p>
<p><bold>Assumption 1:</bold> The Euler angles of the quadrotor are constrained within the following ranges:<disp-formula id="ueqn-5"><mml:math id="mml-ueqn-5" display="block"><mml:mi>&#x03D5;</mml:mi><mml:mo>&#x2208;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>,</mml:mo><mml:mfrac><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>&#x03B8;</mml:mi><mml:mo>&#x2208;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>,</mml:mo><mml:mfrac><mml:mi>&#x03C0;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mi>&#x03C8;</mml:mi><mml:mo>&#x2208;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03C0;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x03C0;</mml:mi><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p><bold>Assumption 2:</bold> The disturbance <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:msub><mml:mi>d</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:math></inline-formula> in dynamics are second-order differentiable, with bounded first-order and second-order derivatives.</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>Image Dynamics</title>
<p>Our target of interest is the motion of a soccer ball, which projects as a circular shape in the camera plane. We therefore derive the image dynamics equation based on the virtual imaging plane using circular image moments. For a soccer ball located at <inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:msub><mml:mi>P</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>X</mml:mi><mml:mo>,</mml:mo><mml:mi>Y</mml:mi><mml:mo>,</mml:mo><mml:mi>Z</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> in the camera coordinate frame, the corresponding image-plane coordinates are given by
<disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mtable rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable><mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mi>Z</mml:mi></mml:mfrac><mml:mrow><mml:mo>[</mml:mo><mml:mtable rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi>X</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>Y</mml:mi></mml:mtd></mml:mtr></mml:mtable><mml:mo>]</mml:mo></mml:mrow></mml:math></disp-formula>with <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:msub><mml:mi>f</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> is the focal length of the camera.</p>
<p>The soccer ball coordinates in the virtual camera frame are <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:msub><mml:mi>P</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>X</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>Y</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>Z</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>. Based on the virtual imaging plane defined in the previous section, and utilizing the quadrotor angular measurements directly obtained from the IMU, we project points from the physical imaging plane to the virtual imaging plane through rotation matrix transformation:<disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mover><mml:mi>p</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow></mml:mrow></mml:mfrac><mml:mrow><mml:mo>[</mml:mo><mml:mtable rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mover><mml:mi>p</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mover><mml:mi>p</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow></mml:mtd></mml:mtr></mml:mtable><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:msub><mml:mi>p</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi>T</mml:mi></mml:msup></mml:math></inline-formula> denote the coordinates of the soccer ball projection in the virtual imaging plane, <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:mrow><mml:mover><mml:mi>p</mml:mi><mml:mo stretchy="false">&#x00AF;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, the <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x00D7;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> is the <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:mi>i</mml:mi></mml:math></inline-formula>th row of the orientation matrix <italic>R</italic>, for <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3.</mml:mn></mml:math></inline-formula></p>
<p>Then, the circle-based image moments <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> of order <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mi>j</mml:mi></mml:math></inline-formula> are defined as
<disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x222C;</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mi>n</mml:mi><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:mi>d</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mi>d</mml:mi><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mi>v</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>and the image feature vector is defined by
<disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>q</mml:mi><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:msub><mml:mi>x</mml:mi><mml:mi>g</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The visual feature parameters are mathematically defined through image moment calculations, where <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:msub><mml:mi>x</mml:mi><mml:mi>g</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mn>10</mml:mn></mml:mrow></mml:msub><mml:mi>a</mml:mi></mml:mfrac></mml:math></inline-formula> and <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:msub><mml:mi>y</mml:mi><mml:mi>g</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mn>01</mml:mn></mml:mrow></mml:msub><mml:mi>a</mml:mi></mml:mfrac></mml:math></inline-formula> specify the centroid coordinates of the circular feature in the virtual image plane, with <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mn>00</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> representing its observed area. The normalized area metric <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:msqrt><mml:mfrac><mml:msup><mml:mi>a</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup><mml:mi>a</mml:mi></mml:mfrac></mml:msqrt></mml:math></inline-formula>, incorporates the expected feature area <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:msup><mml:mi>a</mml:mi><mml:mo>&#x2217;</mml:mo></mml:msup></mml:math></inline-formula> at the desired quadrotor pose, while <inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:msub><mml:mi>z</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> corresponds to the target vertical coordinate in the body-fixed frame when the UAV achieves its reference position. These parameters collectively form the basis for visual servoing control, where <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>g</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>g</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> provides positional feedback and <inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:math></inline-formula> serves as a scale-invariant feature measurement. The reference features are given by the constant vector <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:msub><mml:mi>q</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula>, which represents the desired target in the virtual image plane at a desired height <inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:msub><mml:mi>z</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula>.</p>
<p>Define the image moment tracking error as
<disp-formula id="eqn-9"><label>(9)</label><mml:math id="mml-eqn-9" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>q</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Under the virtual quadrotor rotation-independent assumption and the kinematics, the differential relation <inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:msub><mml:mrow><mml:mover><mml:mi>P</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>v</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> holds, where the <inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:msub><mml:mi>v</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> denotes the velocity of the target soccer ball. This, when integrated with the projective mapping (<xref ref-type="disp-formula" rid="eqn-5">Eq. (5)</xref>), generates the visual dynamics as
<disp-formula id="eqn-10"><label>(10)</label><mml:math id="mml-eqn-10" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mover><mml:mi>q</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mi>v</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Let us define the velocity error term as
<disp-formula id="eqn-11"><label>(11)</label><mml:math id="mml-eqn-11" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>v</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Then we express the complete dynamics, incorporating both the velocity error dynamics and the image feature dynamics, in the following manner:<disp-formula id="eqn-12"><label>(12)</label><mml:math id="mml-eqn-12" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:mover><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-13"><label>(13)</label><mml:math id="mml-eqn-13" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mrow><mml:mi>f</mml:mi><mml:mi>R</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mi>m</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mi>g</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p><italic>Remark 1:</italic> Based on the perspective projection model, a visual servoing system is constructed using image moment features to establish precise mapping between image space and Cartesian space. This feature design offers two critical advantages: geometric invariance and dynamic decoupling. The virtual image plane maintains parallel alignment with the target plane during UAV attitude variations, while the scaled area feature directly correlates with depth information, thereby forming a complete image feature state representation.</p>
</sec>
</sec>
<sec id="s3">
<label>3</label>
<title>Controller Design</title>
<p>This section first designs a disturbance observer and linear velocity estimator based on quadrotor dynamics and image feature dynamics. Under conditions involving external disturbances and unknown target velocity, a visual feedback controller is derived using the backstepping method. Finally, a torque controller is developed to guarantee convergence of angular tracking errors, with rigorous stability proofs provided through Lyapunov theory. The control block diagram of the system is shown in the <xref ref-type="fig" rid="fig-2">Fig. 2</xref>.</p>
<fig id="fig-2">
<label>Figure 2</label>
<caption>
<title>Control structure.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-2.tif"/>
</fig>
<sec id="s3_1">
<label>3.1</label>
<title>Disturbance and Velocity Observers Design</title>
<p>The designed hierarchical control framework employs a dual-loop structure: the vision-based outer-loop controller calculates the necessary thrust force <italic>F</italic> according to visual servoing requirements and generates the target angular velocity command, which functions as the reference input for the inner-loop attitude control system. The inner-loop controller maintains stable quadrotor attitude control by producing accurate torque <inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mi>&#x03C4;</mml:mi></mml:math></inline-formula> outputs.</p>
<p>Rewrite the velocity error dynamics in a concise form:<disp-formula id="eqn-14"><label>(14)</label><mml:math id="mml-eqn-14" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>F</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-15"><label>(15)</label><mml:math id="mml-eqn-15" display="block"><mml:mtable columnalign="right center left" rowspacing="3pt" columnspacing="0 thickmathspace" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mi>F</mml:mi><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mrow><mml:mi>f</mml:mi><mml:mi>R</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mi>m</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mi>g</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>v</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The control objective necessitates trajectory tracking of a moving soccer ball by the quadrotor. Thus, <inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> represents a lumped disturbance term governing the velocity error dynamics, aggregating parametric uncertainties, exogenous disturbances, and target-induced motion perturbations. Since each component of the lumped disturbance is twice differentiable with bounded second derivatives, a constant <italic>A</italic> satisfying <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>&#x2264;</mml:mo><mml:mi>A</mml:mi></mml:math></inline-formula> can be deduced from Assumptions 2. In practice, an exact value of <italic>A</italic> is not required; a sufficiently large conservative estimate can be used to initialize the observer gains, which are then tuned experimentally to achieve a balance between estimation accuracy and robustness to measurement noise.</p>
<p>To facilitate subsequent derivations, for any real-valued vector <inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:mrow><mml:mi mathvariant="bold">x</mml:mi></mml:mrow><mml:mo>&#x2208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow><mml:mi>n</mml:mi></mml:msup></mml:math></inline-formula>, we define the element-wise function:<disp-formula id="ueqn-17"><mml:math id="mml-ueqn-17" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi mathvariant="bold">x</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x225C;</mml:mo><mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>]</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mspace width="2em" /><mml:mspace width="2em" /><mml:mrow><mml:mrow><mml:mo mathvariant="bold" stretchy="false">|</mml:mo></mml:mrow><mml:mi mathvariant="bold">x</mml:mi><mml:mrow><mml:mo mathvariant="bold" stretchy="false">|</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x225C;</mml:mo><mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mspace width="2em" /><mml:mspace width="2em" /><mml:msup><mml:mrow><mml:mi mathvariant="bold">x</mml:mi></mml:mrow><mml:mi>a</mml:mi></mml:msup><mml:mo>&#x225C;</mml:mo><mml:msup><mml:mrow><mml:mo>[</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mn>1</mml:mn><mml:mi>a</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mn>2</mml:mn><mml:mi>a</mml:mi></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>n</mml:mi><mml:mi>a</mml:mi></mml:msubsup><mml:mo>]</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>For each component:<disp-formula id="ueqn-18"><mml:math id="mml-ueqn-18" display="block"><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo>&#x2061;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if&#xA0;</mml:mtext></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if&#xA0;</mml:mtext></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x2212;</mml:mo><mml:mn>1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if&#xA0;</mml:mtext></mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x003C;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mspace width="1em" /><mml:mi mathvariant="normal">&#x2200;</mml:mi><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x2026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>To estimate the external disturbance force <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> and velocity error <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula>, the high-order sliding mode observer in the position loop are designed based on <xref ref-type="disp-formula" rid="eqn-12">Eqs. (12)</xref> and <xref ref-type="disp-formula" rid="eqn-14">(14)</xref> as follows:<disp-formula id="eqn-16"><label>(16)</label><mml:math id="mml-eqn-16" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x03C3;</mml:mi></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mi>F</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>4</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>4</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>4</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The formulation incorporates four correction terms <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:msub><mml:mi>z</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mspace width="negativethinmathspace" /><mml:mo>&#x2212;</mml:mo><mml:mspace width="negativethinmathspace" /><mml:msub><mml:mi>z</mml:mi><mml:mn>4</mml:mn></mml:msub></mml:math></inline-formula> and an auxiliary parameter <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:mi>&#x03B1;</mml:mi></mml:math></inline-formula>. The auxiliary variable <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:mi>&#x03B1;</mml:mi></mml:math></inline-formula> is initialized to zero for computational convenience. The correction terms are design as
<disp-formula id="eqn-17"><label>(17)</label><mml:math id="mml-eqn-17" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>z</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>3</mml:mn><mml:mn>4</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>2</mml:mn><mml:mn>3</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>z</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>z</mml:mi><mml:mn>4</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>4</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where the <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>4</mml:mn></mml:math></inline-formula>, are some positive constant.</p>
<p>The error terms are given by: <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:mrow><mml:mover><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:mrow><mml:mover><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>4</mml:mn></mml:msub><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mover><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03C3;</mml:mi><mml:mn>4</mml:mn></mml:msub></mml:math></inline-formula>. Then, the error dynamics can be written as
<disp-formula id="ueqn-21"><mml:math id="mml-ueqn-21" display="block"><mml:mtable columnalign="left left left left" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:mi mathvariant="normal">&#x039E;</mml:mi><mml:mo>:</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left right" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>3</mml:mn><mml:mn>4</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>2</mml:mn><mml:mn>3</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>4</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>&#x03C3;</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>4</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>4</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>With appropriately chosen observer gains
<disp-formula id="ueqn-22"><mml:math id="mml-ueqn-22" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>5</mml:mn><mml:msup><mml:mi>A</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>4</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mtext>&#xA0;</mml:mtext><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>3</mml:mn><mml:msup><mml:mi>A</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1.5</mml:mn><mml:msup><mml:mi>A</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:mn>4</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mtext>&#xA0;</mml:mtext><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mn>4</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1.1</mml:mn><mml:mi>A</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Based on Lemma 8 in [<xref ref-type="bibr" rid="ref-25">25</xref>], we obtain that the system <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:mi mathvariant="normal">&#x039E;</mml:mi></mml:math></inline-formula> will converge to zero in finite time. After the convergence of the errors, <inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula> approaches to <inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula> in finite time, respectively.</p>
<p><italic>Remark 2:</italic> Owing to the pronounced dynamic coupling inherent in quadrotor systems, the observer-based intermediate input necessitates availability of its first and second time derivatives. Verified herein, <inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> produces smooth estimations of <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:msub><mml:mi>D</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula>, ensuring second-order differentiability of control input. As established in [<xref ref-type="bibr" rid="ref-25">25</xref>], the HOSMO inherently exhibits finite-time convergence. This property inherently guarantees satisfaction of the separation principle, enabling decoupled design of controller and observer.</p>
</sec>
<sec id="s3_2">
<label>3.2</label>
<title>Outer-Loop Controller Design</title>
<p>Based on the image feature errors, the following Lyapunov function is defined:<disp-formula id="eqn-18"><label>(18)</label><mml:math id="mml-eqn-18" display="block"><mml:msub><mml:mi>V</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>By substituting <xref ref-type="disp-formula" rid="eqn-12">Eq. (12)</xref>, the time derivative of <inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:msub><mml:mi>V</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> is obtained as
<disp-formula id="eqn-19"><label>(19)</label><mml:math id="mml-eqn-19" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Let us consider <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula> as control input, the desired value <inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:msubsup><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi><mml:mi>d</mml:mi></mml:msubsup></mml:math></inline-formula> of <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula> is set as <inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:msubsup><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi><mml:mi>d</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, with the constant parameter <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. While direct assignment of <inline-formula id="ieqn-71"><mml:math id="mml-ieqn-71"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula> as a control input is infeasible, the backstepping methodology introduces a secondary error variable:<disp-formula id="eqn-20"><label>(20)</label><mml:math id="mml-eqn-20" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mfrac><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The incorporation of the new error term modifies the time derivatives of both <xref ref-type="disp-formula" rid="eqn-12">(12)</xref> and <xref ref-type="disp-formula" rid="eqn-19">(19)</xref>, resulting in 
<disp-formula id="eqn-21"><label>(21)</label><mml:math id="mml-eqn-21" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>q</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-22"><label>(22)</label><mml:math id="mml-eqn-22" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mspace width="thinmathspace" /><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Using <xref ref-type="disp-formula" rid="eqn-21">Eqs. (21)</xref> and <xref ref-type="disp-formula" rid="eqn-16">(16)</xref>, time derivative of <inline-formula id="ieqn-72"><mml:math id="mml-ieqn-72"><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> is
<disp-formula id="eqn-23"><label>(23)</label><mml:math id="mml-eqn-23" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>q</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mfrac><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mi>F</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Define a new Lyapunov function
<disp-formula id="eqn-24"><label>(24)</label><mml:math id="mml-eqn-24" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>V</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>By time-differentiating <inline-formula id="ieqn-73"><mml:math id="mml-ieqn-73"><mml:msub><mml:mi>V</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> yield
<disp-formula id="eqn-25"><label>(25)</label><mml:math id="mml-eqn-25" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mfrac><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mi>F</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Since the vector <italic>F</italic> serves as the actual control input, it is designed to satisfy
<disp-formula id="eqn-26"><label>(26)</label><mml:math id="mml-eqn-26" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>F</mml:mi><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-74"><mml:math id="mml-ieqn-74"><mml:msub><mml:mi>k</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> is a positive constant.</p>
<p>By substituting <xref ref-type="disp-formula" rid="eqn-26">(26)</xref> into <xref ref-type="disp-formula" rid="eqn-25">(25)</xref>, <inline-formula id="ieqn-75"><mml:math id="mml-ieqn-75"><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> will be
<disp-formula id="eqn-27"><label>(27)</label><mml:math id="mml-eqn-27" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mfrac><mml:msub><mml:mi>k</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Given the finite-time convergence property of the HOSMO, there exists a finite time constant <inline-formula id="ieqn-76"><mml:math id="mml-ieqn-76"><mml:mi>T</mml:mi><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> such that <inline-formula id="ieqn-77"><mml:math id="mml-ieqn-77"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> and <inline-formula id="ieqn-78"><mml:math id="mml-ieqn-78"><mml:msub><mml:mrow><mml:mover><mml:mi>D</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>f</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> for all <inline-formula id="ieqn-79"><mml:math id="mml-ieqn-79"><mml:mi>t</mml:mi><mml:mo>&#x2265;</mml:mo><mml:mi>T</mml:mi></mml:math></inline-formula>. During the transient phase <inline-formula id="ieqn-80"><mml:math id="mml-ieqn-80"><mml:mi>t</mml:mi><mml:mo>&#x2208;</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, the observer estimation errors remain bounded and can be treated as bounded disturbances in the Lyapunov analysis of the controller. By the input-to-state stability (ISS) property of the closed-loop system, these bounded observer errors lead to bounded tracking errors. After the observer converges, i.e., for <inline-formula id="ieqn-81"><mml:math id="mml-ieqn-81"><mml:mi>t</mml:mi><mml:mo>&#x2265;</mml:mo><mml:mi>T</mml:mi></mml:math></inline-formula>, the nominal Lyapunov analysis ensures asymptotic convergence of all tracking errors. This cascaded systems approach rigorously justifies the separation between the observer and controller designs [<xref ref-type="bibr" rid="ref-12">12</xref>].</p>
<p>Specifically, since the velocity estimation error <inline-formula id="ieqn-82"><mml:math id="mml-ieqn-82"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub></mml:math></inline-formula> achieves finite-time convergence to zero, there exists a finite time constant <inline-formula id="ieqn-83"><mml:math id="mml-ieqn-83"><mml:msub><mml:mi>t</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> such that <inline-formula id="ieqn-84"><mml:math id="mml-ieqn-84"><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>v</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> for all <inline-formula id="ieqn-85"><mml:math id="mml-ieqn-85"><mml:mi>t</mml:mi><mml:mo>&#x2265;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>. For <inline-formula id="ieqn-86"><mml:math id="mml-ieqn-86"><mml:mi>t</mml:mi><mml:mo>&#x2265;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, the closed-loop dynamics of <inline-formula id="ieqn-87"><mml:math id="mml-ieqn-87"><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> is governed by the following:<disp-formula id="eqn-28"><label>(28)</label><mml:math id="mml-eqn-28" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mn>2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mfrac><mml:msub><mml:mi>k</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>By choosing the constants satisfying
<disp-formula id="ueqn-34"><mml:math id="mml-ueqn-34" display="block"><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mfrac><mml:msub><mml:mi>k</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mrow><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></disp-formula>We obtain that <inline-formula id="ieqn-88"><mml:math id="mml-ieqn-88"><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. Analysis of <xref ref-type="disp-formula" rid="eqn-24">Eq. (24)</xref> reveals that <inline-formula id="ieqn-89"><mml:math id="mml-ieqn-89"><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> is satisfied if and only if <inline-formula id="ieqn-90"><mml:math id="mml-ieqn-90"><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-91"><mml:math id="mml-ieqn-91"><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. The designed controller is uniformly asymptotically stable, and the system errors <inline-formula id="ieqn-92"><mml:math id="mml-ieqn-92"><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-93"><mml:math id="mml-ieqn-93"><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> will converge to zero. According to <xref ref-type="disp-formula" rid="eqn-20">Eq. (20)</xref>, when the terms <inline-formula id="ieqn-94"><mml:math id="mml-ieqn-94"><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, it follows that <inline-formula id="ieqn-95"><mml:math id="mml-ieqn-95"><mml:msub><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>.</p>
</sec>
<sec id="s3_3">
<label>3.3</label>
<title>Inner-Loop Attitude Controller</title>
<p>In the previous subsection, we derived the control input <inline-formula id="ieqn-96"><mml:math id="mml-ieqn-96"><mml:msub><mml:mi>u</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:math></inline-formula> required for the quadrotor to complete the visual servoing task. The objective of the inner-loop attitude controller is to design the control input <inline-formula id="ieqn-97"><mml:math id="mml-ieqn-97"><mml:mi>&#x03C4;</mml:mi></mml:math></inline-formula> that enables the quadrotor to adjust its attitude angles and track the desired force vector. This section will focus on torque controller design based on unknown parameter and disturbance.</p>
<p>It follows from Assumption 2 that there exist positive constant <italic>B</italic> such that: <inline-formula id="ieqn-98"><mml:math id="mml-ieqn-98"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>&#x2264;</mml:mo><mml:mi>B</mml:mi></mml:math></inline-formula>. A sliding-mode disturbance observer is designed for the external disturbances acting on the quadrotor during rotational motion. Let <inline-formula id="ieqn-99"><mml:math id="mml-ieqn-99"><mml:mrow><mml:mover><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> represent the estimated value of <inline-formula id="ieqn-100"><mml:math id="mml-ieqn-100"><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:math></inline-formula> denote the estimated error, and to observe the system disturbance signals, the following auxiliary variables are designed as
<disp-formula id="eqn-29"><label>(29)</label><mml:math id="mml-eqn-29" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>J</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-30"><label>(30)</label><mml:math id="mml-eqn-30" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>z</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>J</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>+</mml:mo><mml:mi>&#x03C4;</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msup><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> are positive constant, <inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:mn>0</mml:mn><mml:mo>&#x003C;</mml:mo><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x003C;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>.</p>
<p>The sliding mode surface and the reaching law are designed to make the error converge to zero in a finite time, which is shown as follows:<disp-formula id="eqn-31"><label>(31)</label><mml:math id="mml-eqn-31" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:mrow><mml:mover><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mover><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>e</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>r</mml:mi><mml:mi>e</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="eqn-32"><label>(32)</label><mml:math id="mml-eqn-32" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd /><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mrow><mml:mover><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>A new Lyapunov candidate function is defined as
<disp-formula id="eqn-33"><label>(33)</label><mml:math id="mml-eqn-33" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>L</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The time derivative of <inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:msub><mml:mi>L</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula> yields
<disp-formula id="eqn-34"><label>(34)</label><mml:math id="mml-eqn-34" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>L</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mrow><mml:mover><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>g</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mi>u</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msubsup><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mi></mml:mi><mml:mo>&#x2264;</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>B</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mi>u</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Vector <inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>u</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2265;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-108"><mml:math id="mml-ieqn-108"><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> (<inline-formula id="ieqn-109"><mml:math id="mml-ieqn-109"><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:math></inline-formula>) represents the <inline-formula id="ieqn-110"><mml:math id="mml-ieqn-110"><mml:mi>i</mml:mi></mml:math></inline-formula>-th component value of vector <inline-formula id="ieqn-111"><mml:math id="mml-ieqn-111"><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:math></inline-formula>. With <inline-formula id="ieqn-112"><mml:math id="mml-ieqn-112"><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-113"><mml:math id="mml-ieqn-113"><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mi>B</mml:mi></mml:math></inline-formula>, hence <inline-formula id="ieqn-114"><mml:math id="mml-ieqn-114"><mml:msub><mml:mrow><mml:mover><mml:mi>L</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. The disturbance estimation error is guaranteed to converge to zero. We now design a torque controller for the quadrotor.</p>
<p>Let <inline-formula id="ieqn-115"><mml:math id="mml-ieqn-115"><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mspace width=".5em" /><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">]</mml:mo></mml:math></inline-formula> denote the desired angular velocity expressed in the body frame. Recall the expression of <italic>F</italic> in <xref ref-type="disp-formula" rid="eqn-15">Eq. (15)</xref>, the control input admits the following reformulation:<disp-formula id="eqn-35"><label>(35)</label><mml:math id="mml-eqn-35" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>F</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mrow></mml:mrow><mml:mi>m</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mi>g</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>By time-differentiating <xref ref-type="disp-formula" rid="eqn-26">(26)</xref>, we can obtain the desired attitude matrix <inline-formula id="ieqn-116"><mml:math id="mml-ieqn-116"><mml:msub><mml:mi>R</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> as
<disp-formula id="eqn-36"><label>(36)</label><mml:math id="mml-eqn-36" display="block"><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left right" rowspacing="4pt" columnspacing="1em"><mml:mtr><mml:mtd><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>&#x00D7;</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>&#x00D7;</mml:mo><mml:mi mathvariant="normal">&#x03A8;</mml:mi></mml:mrow><mml:mrow><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>&#x00D7;</mml:mo><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mi>F</mml:mi><mml:mrow><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo><mml:mi>F</mml:mi><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula>where the <inline-formula id="ieqn-117"><mml:math id="mml-ieqn-117"><mml:mi mathvariant="normal">&#x03A8;</mml:mi><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mtext>cos</mml:mtext><mml:msub><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mtext>sin</mml:mtext><mml:msub><mml:mi>&#x03C8;</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, <inline-formula id="ieqn-118"><mml:math id="mml-ieqn-118"><mml:msub><mml:mi>&#x03C8;</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> denotes the desired yaw angle.</p>
<p>For a time-varying <inline-formula id="ieqn-119"><mml:math id="mml-ieqn-119"><mml:msub><mml:mi>R</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula>, the desired angular velocity and its derivative can be derived as
<disp-formula id="ueqn-43"><mml:math id="mml-ueqn-43" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>R</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mspace width="1em" /><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>s</mml:mi><mml:mi>k</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo stretchy="false">)</mml:mo><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>R</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>R</mml:mi><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>By solving for <inline-formula id="ieqn-120"><mml:math id="mml-ieqn-120"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-121"><mml:math id="mml-ieqn-121"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, the desired angular velocity <inline-formula id="ieqn-122"><mml:math id="mml-ieqn-122"><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> and angular acceleration <inline-formula id="ieqn-123"><mml:math id="mml-ieqn-123"><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> can be obtained.</p>
<p>Note that the intermediary input <italic>F</italic> designed in <xref ref-type="disp-formula" rid="eqn-26">Eq. (26)</xref> is twice differentiable, ensuring the well-defined nature of <inline-formula id="ieqn-124"><mml:math id="mml-ieqn-124"><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-125"><mml:math id="mml-ieqn-125"><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula>. However, higher-order derivatives of <italic>F</italic> cannot be reliably computed through difference methods due to image noise and external disturbances. To address this, we propose employing an HOSM differentiator to estimate <inline-formula id="ieqn-126"><mml:math id="mml-ieqn-126"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-127"><mml:math id="mml-ieqn-127"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>. Let <inline-formula id="ieqn-128"><mml:math id="mml-ieqn-128"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> represent the estimated value of <italic>F</italic>, define the estimated error <inline-formula id="ieqn-129"><mml:math id="mml-ieqn-129"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x2212;</mml:mo><mml:mi>F</mml:mi></mml:math></inline-formula>.
<disp-formula id="eqn-37"><label>(37)</label><mml:math id="mml-eqn-37" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>x</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:msup><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo><mml:mrow><mml:mfrac><mml:mn>2</mml:mn><mml:mn>3</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>x</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:msup><mml:mo fence="false" stretchy="false">&#x2016;</mml:mo><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mn>3</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>x</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mtext>sign</mml:mtext></mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The positive constant gains <inline-formula id="ieqn-130"><mml:math id="mml-ieqn-130"><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-131"><mml:math id="mml-ieqn-131"><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-132"><mml:math id="mml-ieqn-132"><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> are selected, with the estimator outputs <inline-formula id="ieqn-133"><mml:math id="mml-ieqn-133"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-134"><mml:math id="mml-ieqn-134"><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>, and <inline-formula id="ieqn-135"><mml:math id="mml-ieqn-135"><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:math></inline-formula>. As established in [<xref ref-type="bibr" rid="ref-28">28</xref>], finite-time stability guarantees <inline-formula id="ieqn-136"><mml:math id="mml-ieqn-136"><mml:mi>F</mml:mi><mml:mo>=</mml:mo><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-137"><mml:math id="mml-ieqn-137"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-138"><mml:math id="mml-ieqn-138"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mover><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> within finite time. Consequently, both the desired angular velocity <inline-formula id="ieqn-139"><mml:math id="mml-ieqn-139"><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> and its derivative <inline-formula id="ieqn-140"><mml:math id="mml-ieqn-140"><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula> are obtained.</p>
<p>The angular velocity tracking error is defined as follows:<disp-formula id="eqn-38"><label>(38)</label><mml:math id="mml-eqn-38" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>A new Lyapunov function is selected as follows:<disp-formula id="eqn-39"><label>(39)</label><mml:math id="mml-eqn-39" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mi>V</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:msubsup><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mi>J</mml:mi><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Differentiating this function yields:<disp-formula id="eqn-40"><label>(40)</label><mml:math id="mml-eqn-40" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>L</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>1</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>e</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:mrow></mml:msubsup><mml:mo stretchy="false">(</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>J</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>+</mml:mo><mml:mi>&#x03C4;</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>J</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The torque controller is designed as:<disp-formula id="eqn-41"><label>(41)</label><mml:math id="mml-eqn-41" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:mi>&#x03C4;</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x00D7;</mml:mo><mml:mi>J</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>+</mml:mo><mml:mi>J</mml:mi><mml:msub><mml:mrow><mml:mover><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>d</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x005E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Substituting <xref ref-type="disp-formula" rid="eqn-41">Eq. (41)</xref> into <xref ref-type="disp-formula" rid="eqn-40">(40)</xref> yields
<disp-formula id="eqn-42"><label>(42)</label><mml:math id="mml-eqn-42" display="block"><mml:mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>3</mml:mn></mml:msub></mml:mtd><mml:mtd><mml:mi></mml:mi><mml:mo>=</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mi>u</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msubsup><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mi>k</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd /><mml:mtd><mml:mi></mml:mi><mml:mo>&#x2264;</mml:mo><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mi>&#x03BE;</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:msubsup><mml:mrow><mml:mover><mml:mi>d</mml:mi><mml:mo stretchy="false">&#x007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mi>u</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi>&#x03C4;</mml:mi></mml:msubsup><mml:mo>&#x2212;</mml:mo><mml:msubsup><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>&#x2212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mo>)</mml:mo></mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Then, the control parameters <inline-formula id="ieqn-141"><mml:math id="mml-ieqn-141"><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-142"><mml:math id="mml-ieqn-142"><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-143"><mml:math id="mml-ieqn-143"><mml:msub><mml:mi>k</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:math></inline-formula> are selected to satisfy the following relationship:<disp-formula id="eqn-43"><label>(43)</label><mml:math id="mml-eqn-43" display="block"><mml:mrow><mml:mo>{</mml:mo><mml:mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mo>&#x003E;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mo>,</mml:mo></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mo>&#x003E;</mml:mo><mml:mi>B</mml:mi><mml:mo>,</mml:mo></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" scriptlevel="0"><mml:msub><mml:mi>k</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>&#x003E;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mo>.</mml:mo></mml:mstyle></mml:mtd></mml:mtr></mml:mtable><mml:mo fence="true" stretchy="true" symmetric="true"></mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>Substituting <xref ref-type="disp-formula" rid="eqn-43">Eq. (43)</xref> into <xref ref-type="disp-formula" rid="eqn-42">(42)</xref>, we obtain that <inline-formula id="ieqn-144"><mml:math id="mml-ieqn-144"><mml:msub><mml:mrow><mml:mover><mml:mi>V</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow><mml:mn>3</mml:mn></mml:msub><mml:mo>&#x2264;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, the closed-loop system exhibits uniform asymptotic stability, satisfying that <inline-formula id="ieqn-145"><mml:math id="mml-ieqn-145"><mml:munder><mml:mo movablelimits="true" form="prefix">lim</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mi mathvariant="normal">&#x221E;</mml:mi></mml:mrow></mml:munder><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mrow><mml:mi mathvariant="normal">&#x03A9;</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>.</p>
<p><italic>Remark 3:</italic> The desired angular velocity is derived from <xref ref-type="disp-formula" rid="eqn-15">Eq. (15)</xref>. Unlike conventional PD controllers that track <inline-formula id="ieqn-146"><mml:math id="mml-ieqn-146"><mml:msub><mml:mi mathvariant="normal">&#x03A9;</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:math></inline-formula>, the proposed torque controller directly incorporates the quadrotor&#x2019;s dynamic model characteristics. This approach provides more accurate dynamic compensation while addressing model uncertainties and environmental variations, resulting in improved robustness and real-time performance compared to traditional methods. Moreover, since conventional differentiation methods introduce unacceptable errors in computing higher-order derivatives of <italic>F</italic>, a high-order sliding mode observer is employed to accurately estimate <inline-formula id="ieqn-147"><mml:math id="mml-ieqn-147"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x02D9;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-148"><mml:math id="mml-ieqn-148"><mml:mrow><mml:mover><mml:mi>F</mml:mi><mml:mo>&#x00A8;</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, thereby enhancing the controller&#x2019;s precision.</p>
</sec>
</sec>
<sec id="s4">
<label>4</label>
<title>Experimental Results and Discussion</title>
<p>This section experimentally validates the proposed observer-based IBVS controller under conditions of unknown ball velocity and external disturbances. Two representative disturbance scenarios are investigated: (i) constant disturbances to evaluate steady-state disturbance rejection capability, and (ii) time-varying disturbances to validate robustness under realistic environmental conditions such as wind fluctuations. Correspondingly, two distinct target motion trajectories are considered: (i) a curvilinear-to-linear ground trajectory (xy-plane motion with <inline-formula id="ieqn-149"><mml:math id="mml-ieqn-149"><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>), modeling receiving-and-kicking maneuvers; and (ii) a parabolic aerial trajectory (xyz-axis motion), representing long-kicking situations.</p>
<sec id="s4_1">
<label>4.1</label>
<title>Hardware Platform</title>
<p>A comprehensive hardware setup was implemented to experimentally validate the proposed disturbance-observer-based visual control strategy. The platform was designed to meet the specific demands of dynamic soccer ball tracking, emphasizing real-time image processing, robust communication, and precise flight control. The core components are detailed in the following subsections.</p>
<p>For visual perception, a downward-facing global shutter camera was mounted on a vibration-damped plate to ensure clear image capture during flight. The critical task of real-time image processing, feature extraction, and executing the high-order sliding mode observer and backstepping controller was handled by a Raspberry Pi 4B single-board computer, which served as the onboard computational unit. This choice provides a compact, low-power solution capable of meeting the processing demands of the vision-based control system. A Pixhawk flight controller managed the low-level attitude stabilization and motor control. The entire system was integrated through the Robot Operating System (ROS) framework, with the signal architecture illustrated in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>, ensuring robust and synchronized communication between all components.</p>
<fig id="fig-3">
<label>Figure 3</label>
<caption>
<title>Signal architecture of quadrotor control system.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-3.tif"/>
</fig>
<p>Physical parameters of the quadrotor were set as: mass <inline-formula id="ieqn-150"><mml:math id="mml-ieqn-150"><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn>2</mml:mn><mml:mspace width="thinmathspace" /><mml:mi mathvariant="normal">k</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:math></inline-formula>, gravitational acceleration <inline-formula id="ieqn-151"><mml:math id="mml-ieqn-151"><mml:mi>g</mml:mi><mml:mo>=</mml:mo><mml:mn>9.81</mml:mn><mml:mspace width="thinmathspace" /><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:math></inline-formula>, and moment of inertia <inline-formula id="ieqn-152"><mml:math id="mml-ieqn-152"><mml:mi>J</mml:mi><mml:mo>=</mml:mo><mml:mtext>diag</mml:mtext><mml:mo stretchy="false">(</mml:mo><mml:mn>0.0745</mml:mn><mml:mo>,</mml:mo><mml:mn>0.0745</mml:mn><mml:mo>,</mml:mo><mml:mn>0.113</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:mspace width="thinmathspace" /><mml:mtext>kg</mml:mtext><mml:mspace width="negativethinmathspace" /><mml:mo>&#x22C5;</mml:mo><mml:mspace width="negativethinmathspace" /><mml:msup><mml:mtext>m</mml:mtext><mml:mn>2</mml:mn></mml:msup><mml:mrow><mml:mo>/</mml:mo></mml:mrow><mml:msup><mml:mtext>rad</mml:mtext><mml:mn>2</mml:mn></mml:msup><mml:mo>.</mml:mo></mml:math></inline-formula> A downward-facing camera with a focal length of 1.8 mm and resolution of 640 <inline-formula id="ieqn-153"><mml:math id="mml-ieqn-153"><mml:mo>&#x00D7;</mml:mo></mml:math></inline-formula> 480 pixels was mounted beneath the quadrotor. The reference image moment and height were specified as <inline-formula id="ieqn-154"><mml:math id="mml-ieqn-154"><mml:msub><mml:mi>q</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mspace width=".5em" /><mml:mn>0</mml:mn><mml:mspace width=".5em" /><mml:mn>2</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi>T</mml:mi></mml:msup></mml:math></inline-formula> and <inline-formula id="ieqn-155"><mml:math id="mml-ieqn-155"><mml:msub><mml:mi>z</mml:mi><mml:mi>d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math></inline-formula>. Controller and observer parameters were set as: <inline-formula id="ieqn-156"><mml:math id="mml-ieqn-156"><mml:msub><mml:mi>k</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-157"><mml:math id="mml-ieqn-157"><mml:msub><mml:mi>k</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>6</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-158"><mml:math id="mml-ieqn-158"><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>4</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-159"><mml:math id="mml-ieqn-159"><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>12</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-160"><mml:math id="mml-ieqn-160"><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>&#x03BB;</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>6</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-161"><mml:math id="mml-ieqn-161"><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>0.5</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-162"><mml:math id="mml-ieqn-162"><mml:msub><mml:mi>&#x03B4;</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn>2</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-163"><mml:math id="mml-ieqn-163"><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>10</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-164"><mml:math id="mml-ieqn-164"><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>20</mml:mn></mml:math></inline-formula>, <inline-formula id="ieqn-165"><mml:math id="mml-ieqn-165"><mml:msub><mml:mi>k</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>30</mml:mn></mml:math></inline-formula>.</p>
</sec>
<sec id="s4_2">
<label>4.2</label>
<title>Image Processing and Real-Time Implementation Strategy</title>
<p>To ensure high-frequency visual servoing on the resource-constrained embedded platform (Raspberry Pi 4B), it is possible to implement a Region of Interest (ROI) extraction strategy based on spatio-temporal continuity.</p>
<p>Vision Algorithm Pipeline: The algorithm initiates with a global search in the first frame to lock onto the target soccer ball. Once the target is identified, subsequent processing is confined to a dynamic ROI window centered on the feature coordinates from the previous frame. Within this localized window, feature extraction is executed through HSV color space segmentation, morphological filtering, and the Hough Circle Transform. To strike an optimal balance between the field of view (FOV) and computational overhead, the image acquisition resolution is configured at 640 <inline-formula id="ieqn-166"><mml:math id="mml-ieqn-166"><mml:mo>&#x00D7;</mml:mo></mml:math></inline-formula> 480 pixels.</p>
<p>Latency and Update Frequency: The vision processing pipeline is optimized using the OpenCV library on the Raspberry Pi, achieving an average per-frame processing time of approximately 18 ms. Coupled with a camera acquisition rate of 30 FPS, the overall update frequency of the visual control loop is maintained at a consistent 30 Hz.</p>
<p>Communication and Architectural Advantages: Communication between the Raspberry Pi and the Pixhawk flight controller is facilitated via a TTL serial port using the MAVLink protocol at a high baud rate of 921,600 bps. Since all visual computations are executed locally on the onboard edge device, the system entirely circumvents the bandwidth fluctuations and multi-second latencies inherent in traditional wireless image transmission. This edge-computing architecture ensures that the total end-to-end latency is strictly controlled within 50 ms, providing the necessary real-time responsiveness for tracking high-dynamic targets in outdoor environments.</p>
</sec>
<sec id="s4_3">
<label>4.3</label>
<title>Results and Discussion</title>
<sec id="s4_3_1">
<label>4.3.1</label>
<title>Curvilinear-to-Linear Ground Trajectory</title>
<p>The football&#x2019;s velocity is initially set to <inline-formula id="ieqn-167"><mml:math id="mml-ieqn-167"><mml:mrow><mml:mi mathvariant="bold">v</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mn>0.25</mml:mn><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mn>0.25</mml:mn><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m/s for the first 20 s, then switched to <inline-formula id="ieqn-168"><mml:math id="mml-ieqn-168"><mml:mrow><mml:mi mathvariant="bold">v</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>2.8</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x2212;</mml:mo><mml:mn>1.9</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m/s from 20 to 40 s. The system is subject to constant external disturbances including a linear acceleration disturbance <inline-formula id="ieqn-169"><mml:math id="mml-ieqn-169"><mml:msub><mml:mi>d</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0.6</mml:mn><mml:mo>,</mml:mo><mml:mn>0.5</mml:mn><mml:mo>,</mml:mo><mml:mn>0.3</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m/s<sup>2</sup> and an angular acceleration disturbance <inline-formula id="ieqn-170"><mml:math id="mml-ieqn-170"><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0.4</mml:mn><mml:mo>,</mml:mo><mml:mn>0.5</mml:mn><mml:mo>,</mml:mo><mml:mn>0.6</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> rad/s<sup>2</sup> throughout the entire duration. This configuration enables evaluation of the system&#x2019;s dynamic response under changing motion conditions while maintaining persistent disturbance inputs. The initial positions expressed in the initial frame are set to <inline-formula id="ieqn-171"><mml:math id="mml-ieqn-171"><mml:mo stretchy="false">[</mml:mo><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m for the unmanned aerial vehicle (UAV) and <inline-formula id="ieqn-172"><mml:math id="mml-ieqn-172"><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m for the soccer ball. To evaluate the performance advantages of the proposed control scheme, the IBVS method without disturbance compensation was employed as a baseline for comparison. The test results are shown in <xref ref-type="fig" rid="fig-4">Figs. 4</xref>&#x2013;<xref ref-type="fig" rid="fig-7">7</xref>.</p>
<fig id="fig-4">
<label>Figure 4</label>
<caption>
<title>The spatial trajectories of the drone and the soccer ball.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-4.tif"/>
</fig><fig id="fig-5">
<label>Figure 5</label>
<caption>
<title>The relative position of the quadrotor with respect to the soccer ball.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-5.tif"/>
</fig><fig id="fig-6">
<label>Figure 6</label>
<caption>
<title>The state variables of the quadrotor. (<bold>a</bold>) The velocity of quadrotor (The dashed line represents the soccer ball&#x2019;s velocity, while the solid line indicates the quadrotor velocity). (<bold>b</bold>) The Euler angles of the quadrotor.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-6.tif"/>
</fig><fig id="fig-7">
<label>Figure 7</label>
<caption>
<title>Time evolution of the Image errors. (<bold>a</bold>) Time evolution of <inline-formula id="ieqn-173"><mml:math id="mml-ieqn-173"><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>. (<bold>b</bold>) Time evolution of <inline-formula id="ieqn-174"><mml:math id="mml-ieqn-174"><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-7.tif"/>
</fig>
<p><xref ref-type="fig" rid="fig-4">Figs. 4</xref> and <xref ref-type="fig" rid="fig-5">5</xref> demonstrate that the proposed control algorithm achieves stable tracking of a moving soccer ball in the presence of constant external disturbances and unknown ball velocity, delivering satisfactory tracking performance and accuracy, thereby validating our theoretical results. To illustrate the effectiveness of the proposed approach, it is observed that the proposed method (solid orange line) achieves higher fidelity in tracking the soccer ball trajectory (blue line) compared to the baseline method (dashed green line). Starting from the same initial position, the proposed controller rapidly adjusts the UAV&#x2019;s path to maintain the desired relative pose directly above the moving target. In contrast, the method without disturbance compensation exhibits a significant and persistent offset throughout the flight. As can be seen from <xref ref-type="fig" rid="fig-5">Fig. 5</xref>, due to the sudden change in the velocity of the soccer ball, a slight chattering occurs in the drone&#x2019;s relative position at <inline-formula id="ieqn-175"><mml:math id="mml-ieqn-175"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>20</mml:mn><mml:mspace width="thinmathspace" /><mml:mi mathvariant="normal">s</mml:mi></mml:math></inline-formula>. However, the amplitude of chattering is very small, and the relative position re-converges to stability within 1.5 s, demonstrating the robustness of the proposed control algorithm. The proposed method (solid lines) successfully drives the relative x and y positions to zero and the z position to the desired altitude of 2.0 m within approximately 4 s. Conversely, the comparison method (dashed lines) fails to eliminate steady-state errors, resulting in constant offsets of approximately 0.5 m in x and 0.8 m in y and a bias in altitude.</p>
<p>As can be observed from <xref ref-type="fig" rid="fig-6">Fig. 6a</xref>, since the drone is initially far from the soccer ball at <inline-formula id="ieqn-176"><mml:math id="mml-ieqn-176"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mspace width="thinmathspace" /><mml:mi mathvariant="normal">s</mml:mi></mml:math></inline-formula>, it needs to accelerate to converge to the desired position directly above the ball. Upon reaching the target position, the drone successfully tracks the ball&#x2019;s velocity with high precision, maintaining a constant relative position to the moving ball. <xref ref-type="fig" rid="fig-6">Fig. 6b</xref> demonstrates that when the soccer ball&#x2019;s velocity changes abruptly, the quadrotor Euler angles exhibit minor oscillations but rapidly regain convergence. This validates both the effectiveness and robustness of our proposed attitude-loop controller. <xref ref-type="fig" rid="fig-7">Fig. 7</xref> demonstrates the convergence of image feature errors, which ensures simultaneous convergence of both the UAV&#x2019;s spatial positioning and velocity tracking errors.</p>
</sec>
<sec id="s4_3_2">
<label>4.3.2</label>
<title>Parabolic Aerial Trajectory</title>
<p>The football&#x2019;s velocity is initially set to <inline-formula id="ieqn-177"><mml:math id="mml-ieqn-177"><mml:mrow><mml:mi mathvariant="bold">v</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>3</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mn>0.25</mml:mn><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:mo>&#x2212;</mml:mo><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mn>0.25</mml:mn><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mn>0.314</mml:mn><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m/s for the first 20 s, then switched to <inline-formula id="ieqn-178"><mml:math id="mml-ieqn-178"><mml:mrow><mml:mi mathvariant="bold">v</mml:mi></mml:mrow><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>2</mml:mn><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m/s from 20 to 25 s. The system is subject to external disturbances including a variational disturbance <inline-formula id="ieqn-179"><mml:math id="mml-ieqn-179"><mml:msub><mml:mi>d</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0.2</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>0.5</mml:mn><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>0.4</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mn>1.5</mml:mn><mml:mspace width="thinmathspace" /><mml:mi>t</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m/s<sup>2</sup> and an angular acceleration disturbance <inline-formula id="ieqn-180"><mml:math id="mml-ieqn-180"><mml:msub><mml:mi>d</mml:mi><mml:mi>&#x03C4;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo stretchy="false">[</mml:mo><mml:mn>0.4</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>0.5</mml:mn><mml:mi>c</mml:mi><mml:mi>o</mml:mi><mml:mi>s</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>0.6</mml:mn><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi><mml:mn>2</mml:mn><mml:mi>t</mml:mi><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> rad/s<sup>2</sup> throughout the entire duration. This configuration enables to validate the effectiveness of the proposed algorithm under time-varying disturbances and varying soccer ball depth information. The initial positions expressed in the initial frame are set to <inline-formula id="ieqn-181"><mml:math id="mml-ieqn-181"><mml:mo stretchy="false">[</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>4</mml:mn><mml:mo>,</mml:mo><mml:mn>3</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m for the unmanned aerial vehicle and <inline-formula id="ieqn-182"><mml:math id="mml-ieqn-182"><mml:mo stretchy="false">[</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>0</mml:mn><mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mi mathvariant="normal">&#x22A4;</mml:mi></mml:msup></mml:math></inline-formula> m for the soccer ball. To evaluate the superiority of the proposed HOSMO, we introduced a nonlinear Extended State Observer (ESO) as a baseline, which is a widely recognized benchmark for disturbance estimation. The test results are shown in <xref ref-type="fig" rid="fig-8">Figs. 8</xref>&#x2013;<xref ref-type="fig" rid="fig-12">12</xref>.</p>
<fig id="fig-8">
<label>Figure 8</label>
<caption>
<title>The spatial trajectories of the drone and the soccer ball.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-8.tif"/>
</fig><fig id="fig-9">
<label>Figure 9</label>
<caption>
<title>The relative position of the quadrotor with respect to the soccer ball.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-9.tif"/>
</fig><fig id="fig-10">
<label>Figure 10</label>
<caption>
<title>The state variables of the quadrotor. (<bold>a</bold>) The velocity of quadrotor (The dashed line represents the soccer ball&#x2019;s velocity, while the solid line indicates the quadrotor velocity). (<bold>b</bold>) The Euler angles of the quadrotor.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-10.tif"/>
</fig><fig id="fig-11">
<label>Figure 11</label>
<caption>
<title>Time evolution of the Image errors. (<bold>a</bold>) Time evolution of <inline-formula id="ieqn-183"><mml:math id="mml-ieqn-183"><mml:msub><mml:mi>q</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:math></inline-formula>. (<bold>b</bold>) Time evolution of <inline-formula id="ieqn-184"><mml:math id="mml-ieqn-184"><mml:msub><mml:mi>q</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:math></inline-formula>.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-11.tif"/>
</fig><fig id="fig-12">
<label>Figure 12</label>
<caption>
<title>Error convergence situation. (<bold>a</bold>) Position-loop disturbance estimation error (The solid line represents HOSMO, and the dotted line represents ESO). (<bold>b</bold>) Evolution of the Euclidean norm of tracking errors over time.</title>
</caption>
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_81203-fig-12.tif"/>
</fig>
<p>As shown in <xref ref-type="fig" rid="fig-8">Figs. 8</xref> and <xref ref-type="fig" rid="fig-9">9</xref>, the proposed control strategy successfully maintains accurate tracking of the motion of the soccer ball despite time-varying external disturbances and variations in ball altitude, demonstrating satisfactory tracking precision. Unlike the conventional ESO, which only provides asymptotic convergence, the proposed HOSMO guarantees finite-time convergence of the estimation errors. This allows the observer to reconstruct the lumped disturbances and target velocities with a significantly superior convergence rate.</p>
<p><xref ref-type="fig" rid="fig-9">Fig. 9</xref> reveals a transient response at <inline-formula id="ieqn-185"><mml:math id="mml-ieqn-185"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>20</mml:mn><mml:mspace width="thinmathspace" /><mml:mtext>s</mml:mtext></mml:math></inline-formula> following the velocity of the ball discontinuity, where the drone exhibits minor positional chattering. The system demonstrates rapid recovery, achieving restabilization within <inline-formula id="ieqn-186"><mml:math id="mml-ieqn-186"><mml:mn>2.5</mml:mn><mml:mspace width="thinmathspace" /><mml:mi mathvariant="normal">s</mml:mi></mml:math></inline-formula>-evidence of the disturbance rejection capability of the controller. <xref ref-type="fig" rid="fig-10">Fig. 10a</xref> demonstrates the drone&#x2019;s convergence from an initial offset position at <inline-formula id="ieqn-187"><mml:math id="mml-ieqn-187"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mspace width="thinmathspace" /><mml:mtext>s</mml:mtext></mml:math></inline-formula>, achieving precise velocity tracking and stable relative positioning above the moving ball. <xref ref-type="fig" rid="fig-10">Fig. 10b</xref> confirms the attitude controller&#x2019;s robustness through Euler angle dynamics during velocity transitions, with transient oscillations dampening within <inline-formula id="ieqn-188"><mml:math id="mml-ieqn-188"><mml:mn>1</mml:mn><mml:mspace width="thinmathspace" /><mml:mtext>s</mml:mtext></mml:math></inline-formula>. Notably, <xref ref-type="fig" rid="fig-11">Fig. 11</xref> establishes the image feature error convergence, which guarantees simultaneous stabilization of both spatial positioning and velocity tracking errors through the visual servoing framework.</p>
<p>As shown in <xref ref-type="fig" rid="fig-12">Fig. 12a</xref>, the disturbance estimation errors of the HOSMO (solid lines) exhibit a significantly faster convergence rate compared to the ESO (dotted lines). At the initial phase and during the disturbance occurrence at <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-189"><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn>20</mml:mn><mml:mspace width="thinmathspace" /><mml:mi mathvariant="normal">s</mml:mi></mml:math></inline-formula>, the HOSMO-based observer demonstrates its finite-time stability by reconstructing the unknown perturbations almost instantaneously. <xref ref-type="fig" rid="fig-12">Fig. 12b</xref> illustrates the evolution of the Euclidean norm of tracking errors <inline-formula id="ieqn-190"><mml:math id="mml-ieqn-190"><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:math></inline-formula>. The proposed method (solid blue line) achieves a rapid settling time of approximately 4 s, while the ESO-based method (dashed purple line) requires nearly 7 s to reach a comparable steady state.</p>
</sec>
</sec>
</sec>
<sec id="s5">
<label>5</label>
<title>Conclusion and Discussion</title>
<p>This research delivers a robust vision-based solution for quadrotor tracking of soccer balls during high-dynamic matches, directly addressing sports filming challenges. The virtual camera projection enables consistent ball imaging regardless of drone attitude changes, while moment features decouple depth and position sensing&#x2014;ensuring the target remains centered during free kicks or aerial passes. The integrated control architecture compensates for unpredictable ball motions and environmental disturbances through finite-time disturbance observers and adaptive backstepping, achieving sub-meter tracking precision (as quantified in <xref ref-type="table" rid="table-1">Table 1</xref>) even in parabolic flight tests with time-varying wind interference. Crucially, the system operates using only desired flight height and yaw orientation, simplifying deployment in stadium environments.</p>
<table-wrap id="table-1">
<label>Table 1</label>
<caption>
<title>Quantitative comparison of tracking performance (Unit: m).</title>
</caption>
<table>
<colgroup>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/>
<col align="center"/> </colgroup>
<thead>
<tr>
<th align="center" rowspan="2">RMSE</th>
<th colspan="2">Proposed Method</th>
<th colspan="2">Comparison Method</th>
</tr>
<tr>
<th>Experiment 1</th>
<th>Experiment 2</th>
<th>Experiment 1</th>
<th>Experiment 2</th>
</tr>
</thead>
<tbody>
<tr>
<td><inline-formula id="ieqn-191"><mml:math id="mml-ieqn-191"><mml:mi>x</mml:mi></mml:math></inline-formula> (m)</td>
<td>0.0787</td>
<td>0.1780</td>
<td>0.5864</td>
<td>0.2274</td>
</tr>
<tr>
<td><inline-formula id="ieqn-192"><mml:math id="mml-ieqn-192"><mml:mi>y</mml:mi></mml:math></inline-formula> (m)</td>
<td>0.0501</td>
<td>0.3876</td>
<td>0.8068</td>
<td>0.7586</td>
</tr>
<tr>
<td><inline-formula id="ieqn-193"><mml:math id="mml-ieqn-193"><mml:mi>z</mml:mi></mml:math></inline-formula> (m)</td>
<td>0.0008</td>
<td>0.0035</td>
<td>0.4977</td>
<td>0.0631</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Future work will focus on computational optimization for onboard vision systems and multi-drone cooperative filming strategies to expand coverage for large-scale sporting events. Additionally, a comparative evaluation of resource utilization (e.g., memory footprint, power consumption) across different edge platforms will be conducted to further validate the lightweight deployment capability.</p>
</sec>
</body>
<back>
<ack>
<p>Not applicable.</p>
</ack>
<sec>
<title>Funding Statement</title>
<p>This research was supported by the School-Level Fund Project of Guangdong University of Science and Technology (No. GKY-2025BSQDW-15).</p>
</sec>
<sec>
<title>Author Contributions</title>
<p>The authors confirm contribution to the paper as follows: Conceptualization, Yao-Bo Long; methodology, Yao-Bo Long, Yu-Ke Ouyang; software, Yu-Ke Ouyang; validation, Yu-Ke Ouyang, Bo Zhuang, Ao-Qi Liu; formal analysis, Yao-Bo Long, Yu-Ke Ouyang; investigation, Yao-Bo Long; resources, Yao-Bo Long; data curation, Yao-Bo Long; writing&#x2014;original draft preparation, Yu-Ke Ouyang; writing&#x2014;review and editing, Ao-Qi Liu; visualization, Bo Zhuang; supervision, Ao-Qi Liu; project administration, Yao-Bo Long. All authors reviewed and approved the final version of the manuscript.</p>
</sec>
<sec sec-type="data-availability">
<title>Availability of Data and Materials</title>
<p>Data available within the article.</p>
</sec>
<sec>
<title>Ethics Approval</title>
<p>Not applicable.</p>
</sec>
<sec sec-type="COI-statement">
<title>Conflicts of Interest</title>
<p>The authors declare no conflicts of interest.</p>
</sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Ding</surname> <given-names>R</given-names></string-name>, <string-name><surname>Zhu</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Feng</surname> <given-names>X</given-names></string-name>, <string-name><surname>Chai</surname> <given-names>B</given-names></string-name>, <string-name><surname>Ji</surname> <given-names>R</given-names></string-name></person-group>. <article-title>A multi-objective assignment algorithm for UAVs in multiple task with different workloads</article-title>. In: <conf-name>Proceedings of the 2023 Asia-Pacific Conference on Image Processing, Electronics and Computers (IPEC); 2023 Apr 14&#x2013;16</conf-name>; <publisher-loc>Dalian, China</publisher-loc>. p. <fpage>354</fpage>&#x2013;<lpage>9</lpage>.</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><surname>Hulens</surname> <given-names>D</given-names></string-name>, <string-name><surname>Goedem&#x00E9;</surname> <given-names>T</given-names></string-name></person-group>. <article-title>Autonomous flying cameraman with embedded person detection and tracking while applying cinematographic rules</article-title>. In: <conf-name>Proceedings of the 2017 14th Conference on Computer and Robot Vision (CRV); 2017 May 16&#x2013;19</conf-name>; <publisher-loc>Edmonton, AB, Canada</publisher-loc>. p. <fpage>56</fpage>&#x2013;<lpage>63</lpage>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Pueyo</surname> <given-names>P</given-names></string-name>, <string-name><surname>Dendarieta</surname> <given-names>J</given-names></string-name>, <string-name><surname>Montijano</surname> <given-names>E</given-names></string-name>, <string-name><surname>Murillo</surname> <given-names>A</given-names></string-name>, <string-name><surname>Schwager</surname> <given-names>M</given-names></string-name></person-group>. <article-title>CineMPC: a fully autonomous drone cinematography system incorporating zoom, focus, pose, and scene composition</article-title>. <source>IEEE Trans Robot</source>. <year>2024</year>;<volume>40</volume>:<fpage>1740</fpage>&#x2013;<lpage>57</lpage>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Mademlis</surname> <given-names>I</given-names></string-name>, <string-name><surname>Mygdalis</surname> <given-names>V</given-names></string-name>, <string-name><surname>Nikolaidis</surname> <given-names>N</given-names></string-name>, <string-name><surname>Montagnuolo</surname> <given-names>M</given-names></string-name>, <string-name><surname>Negro</surname> <given-names>F</given-names></string-name>, <string-name><surname>Messina</surname> <given-names>A</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>High-level multiple-UAV cinematography tools for covering outdoor events</article-title>. <source>IEEE Trans Broadcast</source>. <year>2019</year>;<volume>65</volume>(<issue>3</issue>):<fpage>627</fpage>&#x2013;<lpage>35</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tbc.2019.2892585</pub-id>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lin</surname> <given-names>J</given-names></string-name>, <string-name><surname>Miao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>H</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>X</given-names></string-name>, <string-name><surname>Fierro</surname> <given-names>R</given-names></string-name></person-group>. <article-title>Vision-based safety-critical landing control of quadrotors with external uncertainties and collision avoidance</article-title>. <source>IEEE Trans Control Syst Technol</source>. <year>2024</year>;<volume>32</volume>(<issue>4</issue>):<fpage>1310</fpage>&#x2013;<lpage>22</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tcst.2024.3363372</pub-id>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Chen</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Wu</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Lan</surname> <given-names>L</given-names></string-name>, <string-name><surname>Zhong</surname> <given-names>H</given-names></string-name>, <string-name><surname>Miao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>H</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>Dynamic target tracking of unmanned aerial vehicles under unpredictable disturbances</article-title>. <source>Engineering</source>. <year>2024</year>;<volume>35</volume>(<issue>5</issue>):<fpage>74</fpage>&#x2013;<lpage>85</lpage>. doi:<pub-id pub-id-type="doi">10.1016/j.eng.2023.05.017</pub-id>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Janabi-Sharifi</surname> <given-names>F</given-names></string-name>, <string-name><surname>Deng</surname> <given-names>L</given-names></string-name>, <string-name><surname>Wilson</surname> <given-names>W</given-names></string-name></person-group>. <article-title>Comparison of basic visual servoing methods</article-title>. <source>IEEE/ASME Trans Mechatron</source>. <year>2011</year>;<volume>16</volume>(<issue>5</issue>):<fpage>967</fpage>&#x2013;<lpage>83</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tmech.2010.2063710</pub-id>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lu</surname> <given-names>M</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>H</given-names></string-name>, <string-name><surname>Lu</surname> <given-names>P</given-names></string-name></person-group>. <article-title>Perception and avoidance of multiple small fast moving objects for quadrotors with only low-cost RGBD camera</article-title>. <source>IEEE Robot Autom Lett</source>. <year>2022</year>;<volume>7</volume>(<issue>4</issue>):<fpage>11657</fpage>&#x2013;<lpage>64</lpage>. doi:<pub-id pub-id-type="doi">10.1109/lra.2022.3205114</pub-id>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Guo</surname> <given-names>D</given-names></string-name>, <string-name><surname>Leang</surname> <given-names>K</given-names></string-name></person-group>. <article-title>Image-based estimation, planning, and control for high-speed flying through multiple openings</article-title>. <source>Int J Robot Res</source>. <year>2020</year>;<volume>39</volume>(<issue>9</issue>):<fpage>1122</fpage>&#x2013;<lpage>37</lpage>. doi:<pub-id pub-id-type="doi">10.1177/0278364920921943</pub-id>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhang</surname> <given-names>X</given-names></string-name>, <string-name><surname>Fang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>X</given-names></string-name>, <string-name><surname>Jiang</surname> <given-names>J</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>X</given-names></string-name></person-group>. <article-title>A novel geometric hierarchical approach for dynamic visual servoing of quadrotors</article-title>. <source>IEEE Trans Ind Electron</source>. <year>2020</year>;<volume>67</volume>(<issue>5</issue>):<fpage>3840</fpage>&#x2013;<lpage>9</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tie.2019.2917420</pub-id>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zheng</surname> <given-names>D</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>H</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>J</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>S</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>W</given-names></string-name>, <string-name><surname>Liang</surname> <given-names>X</given-names></string-name></person-group>. <article-title>Image-based visual servoing of a quadrotor using virtual camera approach</article-title>. <source>IEEE/ASME Trans Mechatron</source>. <year>2017</year>;<volume>22</volume>(<issue>2</issue>):<fpage>972</fpage>&#x2013;<lpage>82</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tmech.2016.2639531</pub-id>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Lin</surname> <given-names>J</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Miao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Fan</surname> <given-names>S</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Robust observer-based visual servo control for quadrotors tracking unknown moving targets</article-title>. <source>IEEE/ASME Trans Mechatron</source>. <year>2023</year>;<volume>28</volume>(<issue>3</issue>):<fpage>1268</fpage>&#x2013;<lpage>79</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tmech.2022.3217034</pub-id>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Asl</surname> <given-names>H</given-names></string-name>, <string-name><surname>Yoon</surname> <given-names>J</given-names></string-name></person-group>. <article-title>Bounded&#x2010;input control of the quadrotor unmanned aerial vehicle: a vision&#x2010;based approach</article-title>. <source>Asian J Control</source>. <year>2017</year>;<volume>19</volume>(<issue>3</issue>):<fpage>840</fpage>&#x2013;<lpage>55</lpage>. doi:<pub-id pub-id-type="doi">10.1002/asjc.1420</pub-id>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Asl</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Robust vision-based tracking control of VTOL unmanned aerial vehicles</article-title>. <source>Automatica</source>. <year>2019</year>;<volume>107</volume>:<fpage>425</fpage>&#x2013;<lpage>32</lpage>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Cao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Chen</surname> <given-names>X</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Yu</surname> <given-names>J</given-names></string-name>, <string-name><surname>Liu</surname> <given-names>X</given-names></string-name>, <string-name><surname>Zhou</surname> <given-names>C</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>Image dynamics-based visual servoing for quadrotors tracking a target with a nonlinear trajectory observer</article-title>. <source>IEEE Trans Syst Man Cybern Syst</source>. <year>2020</year>;<volume>50</volume>(<issue>1</issue>):<fpage>376</fpage>&#x2013;<lpage>84</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tsmc.2017.2720173</pub-id>.</mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname> <given-names>J</given-names></string-name>, <string-name><surname>Xie</surname> <given-names>H</given-names></string-name>, <string-name><surname>Low</surname> <given-names>K</given-names></string-name>, <string-name><surname>Yong</surname> <given-names>J</given-names></string-name>, <string-name><surname>Li</surname> <given-names>B</given-names></string-name></person-group>. <article-title>Image-based visual servoing of rotorcrafts to planar visual targets of arbitrary orientation</article-title>. <source>IEEE Robot Autom Lett</source>. <year>2021</year>;<volume>6</volume>(<issue>4</issue>):<fpage>7861</fpage>&#x2013;<lpage>8</lpage>. doi:<pub-id pub-id-type="doi">10.1109/lra.2021.3101878</pub-id>.</mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Chen</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Wu</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Miao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Zhong</surname> <given-names>H</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>H</given-names></string-name>, <etal>et al</etal></person-group>. <article-title>Image-based visual servoing of unmanned aerial manipulators for tracking and grasping a moving target</article-title>. <source>IEEE Trans Ind Inform</source>. <year>2023</year>;<volume>19</volume>:<fpage>8889</fpage>&#x2013;<lpage>99</lpage>.</mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xie</surname> <given-names>H</given-names></string-name>, <string-name><surname>Low</surname> <given-names>K</given-names></string-name>, <string-name><surname>He</surname> <given-names>Z</given-names></string-name></person-group>. <article-title>Adaptive visual servoing of unmanned aerial vehicles in GPS-denied environments</article-title>. <source>IEEE/ASME Trans Mechatron</source>. <year>2017</year>;<volume>22</volume>(<issue>6</issue>):<fpage>2554</fpage>&#x2013;<lpage>63</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tmech.2017.2755669</pub-id>.</mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Xie</surname> <given-names>H</given-names></string-name>, <string-name><surname>Lynch</surname> <given-names>A</given-names></string-name>, <string-name><surname>Low</surname> <given-names>K</given-names></string-name>, <string-name><surname>Mao</surname> <given-names>S</given-names></string-name></person-group>. <article-title>Adaptive output-feedback image-based visual servoing for quadrotor unmanned aerial vehicles</article-title>. <source>IEEE Trans Control Syst Technol</source>. <year>2020</year>;<volume>28</volume>(<issue>3</issue>):<fpage>1034</fpage>&#x2013;<lpage>41</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tcst.2019.2892034</pub-id>.</mixed-citation></ref>
<ref id="ref-20"><label>[20]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhang</surname> <given-names>K</given-names></string-name>, <string-name><surname>Shi</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Sheng</surname> <given-names>H</given-names></string-name></person-group>. <article-title>Robust nonlinear model predictive control based visual servoing of quadrotor UAVs</article-title>. <source>IEEE/ASME Trans Mechatron</source>. <year>2021</year>;<volume>26</volume>(<issue>2</issue>):<fpage>700</fpage>&#x2013;<lpage>8</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tmech.2021.3053267</pub-id>.</mixed-citation></ref>
<ref id="ref-21"><label>[21]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Jabbari Asl</surname> <given-names>H</given-names></string-name>, <string-name><surname>Yoon</surname> <given-names>J</given-names></string-name></person-group>. <article-title>Robust image-based control of the quadrotor unmanned aerial vehicle</article-title>. <source>Nonlinear Dyn</source>. <year>2016</year>;<volume>85</volume>(<issue>3</issue>):<fpage>2035</fpage>&#x2013;<lpage>48</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s11071-016-2813-2</pub-id>.</mixed-citation></ref>
<ref id="ref-22"><label>[22]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Chen</surname> <given-names>W</given-names></string-name>, <string-name><surname>Yang</surname> <given-names>J</given-names></string-name>, <string-name><surname>Guo</surname> <given-names>L</given-names></string-name>, <string-name><surname>Li</surname> <given-names>S</given-names></string-name></person-group>. <article-title>Disturbance-observer-based control and related methods&#x2014;an overview</article-title>. <source>IEEE Trans Ind Electron</source>. <year>2015</year>;<volume>63</volume>(<issue>2</issue>):<fpage>1083</fpage>&#x2013;<lpage>95</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tie.2015.2478397</pub-id>.</mixed-citation></ref>
<ref id="ref-23"><label>[23]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hua</surname> <given-names>H</given-names></string-name>, <string-name><surname>Fang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Zhang</surname> <given-names>X</given-names></string-name>, <string-name><surname>Lu</surname> <given-names>B</given-names></string-name></person-group>. <article-title>A novel robust observer-based nonlinear trajectory tracking control strategy for quadrotors</article-title>. <source>IEEE Trans Control Syst Technol</source>. <year>2021</year>;<volume>29</volume>(<issue>5</issue>):<fpage>1952</fpage>&#x2013;<lpage>63</lpage>. doi:<pub-id pub-id-type="doi">10.1109/tcst.2020.3024805</pub-id>.</mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Li</surname> <given-names>B</given-names></string-name>, <string-name><surname>Gong</surname> <given-names>W</given-names></string-name>, <string-name><surname>Yang</surname> <given-names>Y</given-names></string-name>, <string-name><surname>Xiao</surname> <given-names>B</given-names></string-name>, <string-name><surname>Ran</surname> <given-names>D</given-names></string-name></person-group>. <article-title>Appointed fixed time observer-based sliding mode control for a quadrotor UAV under external disturbances</article-title>. <source>IEEE Trans Aerosp Electron Syst</source>. <year>2022</year>;<volume>58</volume>(<issue>1</issue>):<fpage>290</fpage>&#x2013;<lpage>303</lpage>. doi:<pub-id pub-id-type="doi">10.1109/taes.2021.3101562</pub-id>.</mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Levant</surname> <given-names>A</given-names></string-name></person-group>. <article-title>Higher-order sliding modes, differentiation and output-feedback control</article-title>. <source>Int J Control</source>. <year>2003</year>;<volume>76</volume>:<fpage>924</fpage>&#x2013;<lpage>41</lpage>. doi:<pub-id pub-id-type="doi">10.1080/0020717031000099029</pub-id>.</mixed-citation></ref>
<ref id="ref-26"><label>[26]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Zhao</surname> <given-names>Z</given-names></string-name>, <string-name><surname>Cao</surname> <given-names>D</given-names></string-name>, <string-name><surname>Yang</surname> <given-names>J</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>H</given-names></string-name></person-group>. <article-title>High-order sliding mode observer-based trajectory tracking control for a quadrotor UAV with uncertain dynamics</article-title>. <source>Nonlinear Dyn</source>. <year>2020</year>;<volume>102</volume>:<fpage>2583</fpage>&#x2013;<lpage>96</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s11071-020-06050-2</pub-id>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Hu</surname> <given-names>S</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>Q</given-names></string-name>, <string-name><surname>Wang</surname> <given-names>F</given-names></string-name>, <string-name><surname>Li</surname> <given-names>Y</given-names></string-name></person-group>. <article-title>Finite-time dynamic visual servo control for quadrotor tracking unknown motion target</article-title>. <source>Nonlinear Dyn</source>. <year>2025</year>;<volume>113</volume>(<issue>7</issue>):<fpage>6959</fpage>&#x2013;<lpage>77</lpage>. doi:<pub-id pub-id-type="doi">10.1007/s11071-024-10713-9</pub-id>.</mixed-citation></ref>
<ref id="ref-28"><label>[28]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><surname>Moreno</surname> <given-names>J</given-names></string-name></person-group>. <article-title>A Lyapunov approach to output feedback control using second-order sliding modes</article-title>. <source>IMA J Math Control Inf</source>. <year>2012</year>;<volume>29</volume>(<issue>3</issue>):<fpage>291</fpage>&#x2013;<lpage>308</lpage>. doi:<pub-id pub-id-type="doi">10.1093/imamci/dnr036</pub-id>.</mixed-citation></ref>
</ref-list>
</back></article>