<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurorobot.</journal-id>
<journal-title>Frontiers in Neurorobotics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurorobot.</abbrev-journal-title>
<issn pub-type="epub">1662-5218</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnbot.2022.1102259</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Adaptive optimal output regulation for wheel-legged robot Ollie: A data-driven approach</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Zhang</surname> <given-names>Jingfan</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>&#x02020;</sup></xref>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Li</surname> <given-names>Zhaoxiang</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>&#x02020;</sup></xref>
<xref ref-type="author-notes" rid="fn002"><sup>&#x02021;</sup></xref>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Wang</surname> <given-names>Shuai</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/2097583/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Dai</surname> <given-names>Yuan</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Zhang</surname> <given-names>Ruirui</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/2139502/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Lai</surname> <given-names>Jie</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Zhang</surname> <given-names>Dongsheng</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Chen</surname> <given-names>Ke</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Hu</surname> <given-names>Jie</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Gao</surname> <given-names>Weinan</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Tang</surname> <given-names>Jianshi</given-names></name>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/581323/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Zheng</surname> <given-names>Yu</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Tencent Robotics X, Tencent Holdings, Shenzhen</institution>, <addr-line>Guangdong</addr-line>, <country>China</country></aff>
<aff id="aff2"><sup>2</sup><institution>School of Computer Science, Yangtze University, Jingzhou</institution>, <addr-line>Hubei</addr-line>, <country>China</country></aff>
<aff id="aff3"><sup>3</sup><institution>State Key Laboratory of Synthetical Automation for Process Industries, Northeastern University</institution>, <addr-line>Shenyang</addr-line>, <country>China</country></aff>
<aff id="aff4"><sup>4</sup><institution>School of Integrated Circuits, Tsinghua University</institution>, <addr-line>Beijing</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Tiantai Deng, The University of Sheffield, United Kingdom</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Jie Jin, Hunan University of Science and Engineering, China; Zhu Bingjie, National University of Defense Technology, China; Ziang Li, Nanjing Tech University, China</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Shuai Wang &#x02709; <email>shawnshwang&#x00040;tencent.com</email></corresp>
<fn fn-type="equal" id="fn001"><p><sup>&#x02020;</sup>These authors have contributed equally to this work and share first authorship</p></fn>
<fn fn-type="other" id="fn002"><p><sup>&#x02021;</sup>This work was done when Zhaoxiang was an intern at Tencent Robotics X</p></fn></author-notes>
<pub-date pub-type="epub">
<day>12</day>
<month>01</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>16</volume>
<elocation-id>1102259</elocation-id>
<history>
<date date-type="received">
<day>18</day>
<month>11</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>14</day>
<month>12</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2023 Zhang, Li, Wang, Dai, Zhang, Lai, Zhang, Chen, Hu, Gao, Tang and Zheng.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Zhang, Li, Wang, Dai, Zhang, Lai, Zhang, Chen, Hu, Gao, Tang and Zheng</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>The dynamics of a robot may vary during operation due to both internal and external factors, such as non-ideal motor characteristics and unmodeled loads, which would lead to control performance deterioration and even instability. In this paper, the adaptive optimal output regulation (AOOR)-based controller is designed for the wheel-legged robot Ollie to deal with the possible model uncertainties and disturbances in a data-driven approach. We test the AOOR-based controller by forcing the robot to stand still, which is a conventional index to judge the balance controller for two-wheel robots. By online training with small data, the resultant AOOR achieves the optimality of the control performance and stabilizes the robot within a small displacement in rich experiments with different working conditions. Finally, the robot further balances a rolling cylindrical bottle on its top with the balance control using the AOOR, but it fails with the initial controller. Experimental results demonstrate that the AOOR-based controller shows the effectiveness and high robustness with model uncertainties and external disturbances.</p></abstract>
<kwd-group>
<kwd>optimal control</kwd>
<kwd>output regulation</kwd>
<kwd>adaptive control</kwd>
<kwd>data-driven control</kwd>
<kwd>wheel-legged robot</kwd>
</kwd-group>
<counts>
<fig-count count="14"/>
<table-count count="2"/>
<equation-count count="16"/>
<ref-count count="40"/>
<page-count count="13"/>
<word-count count="6940"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>The control performance deterioration on real robots is often blamed on the inaccurate model. First, it is hard to model the robot accurately and to obtain the precise model parameters. In addition, the robotic system may vary during operation, so the inherent model also varies. Furthermore, some environmental changes in terrains, loads, etc. are also reflected as variations in the robot dynamics. The model issue is troublesome in general and could be hazardous for highly dynamic and statically unstable robots, such as two-wheel and wheel-legged robots. For example, the model-based optimal control is designed for the ballbot (Lauwers et al., <xref ref-type="bibr" rid="B24">2006</xref>), but the model should be updated when a load, such as an arm, is equipped (Nagarajan et al., <xref ref-type="bibr" rid="B27">2012</xref>). In addition, for the wheel-legged robot Ascento (Klemm et al., <xref ref-type="bibr" rid="B23">2020</xref>), the optimality of the model-based control may be hard to be ensured when the working condition changes. Furthermore, for the two-wheel robot Segway, the robustness of the balance control may not overcome working condition variations, which lead to serious injuries (Ashurst and Wagner, <xref ref-type="bibr" rid="B2">2015</xref>).</p>
<p>The issue on the model accuracy motivates the application of non-model-based or data-driven control algorithms, such as data-driven MPC (Willems et al., <xref ref-type="bibr" rid="B33">2005</xref>; Jianwang and Ramirez-Mendoza, <xref ref-type="bibr" rid="B20">2022</xref>) and adaptive dynamic programming (ADP) (Jiang and Jiang, <xref ref-type="bibr" rid="B16">2012a</xref>, <xref ref-type="bibr" rid="B19">2013</xref>, <xref ref-type="bibr" rid="B18">2017</xref>; Bian and Jiang, <xref ref-type="bibr" rid="B3">2016</xref>). For both of them, an optimal stabilizing controller can be trained using small data without system identification, which makes online implementation possible.</p>
<p>Particularly, the ADP consists of the policy iteration (PI) method and the value iteration (VI) method. The ADP was explored in our previous researches and proved to be useful, especially for the balance control of configuration changeable and statically unstable robots (Cui et al., <xref ref-type="bibr" rid="B5">2021</xref>; Zhang et al., <xref ref-type="bibr" rid="B37">2022</xref>). By the PI, the initial control should be stabilizing but not necessarily be optimal, and the training results in an approximated optimal controller (Jiang and Jiang, <xref ref-type="bibr" rid="B16">2012a</xref>,<xref ref-type="bibr" rid="B17">b</xref>). This property is suitable when the configuration of the robot changes. By the VI, the initial control can be arbitrary and even manual or unstable. The training by the VI results in an initial optimal controller at the cost of longer iterations to converge (Bian and Jiang, <xref ref-type="bibr" rid="B3">2016</xref>, <xref ref-type="bibr" rid="B4">2022</xref>). This property is significant for statically unstable robots, because the training can start without any controller design. In the most recent study (Qasem et al., <xref ref-type="bibr" rid="B29">2021</xref>), the proposed hybrid iteration combines the advantages of PI and VI. Moreover, the controller iteration in the ADP is robust to the noisy data in sense of data with the bounded noise leading to a controller bounded in a neighborhood of the nominal optimal solution (Pang et al., <xref ref-type="bibr" rid="B28">2022</xref>). Compared with reinforcement learning applications on the balance control of two-wheel robots (majorly in simulation) (Raudys and &#x00160;ubonien&#x00117;, <xref ref-type="bibr" rid="B30">2020</xref>; Guo et al., <xref ref-type="bibr" rid="B11">2021</xref>), the ADP requires small data and the stability can be proved theoretically, which enables the training on real robots directly and removes the troublesome sim-to-real gap.</p>
<p>Besides the model uncertainty, another issue may affect the control performance is unmodeled disturbances on real robots. The disturbance may be caused by any mismatch between the ideal simulation and the real robot, such as the terrain changes, uncertain frictions and slight offsets of robot states, which are hard to be sourced and analyzed completely. For wheel-legged robots, a common consequence of these disturbances is the steady-state error. In our previous works, although the controller is stabilizing, the robot cannot stand still without extra manual adjustment, which is mentioned as an unsolved problem in Zhang et al. (<xref ref-type="bibr" rid="B37">2022</xref>). This phenomenon is common in real-robot experiments of two-wheel and wheel-legged robots (Jung and Kim, <xref ref-type="bibr" rid="B21">2008</xref>; Huang et al., <xref ref-type="bibr" rid="B13">2012</xref>; Zafar et al., <xref ref-type="bibr" rid="B34">2019</xref>; Zhang et al., <xref ref-type="bibr" rid="B36">2019</xref>; Zhou et al., <xref ref-type="bibr" rid="B40">2021</xref>), but it is unnoticed if the asymptotic stability is not required strictly.</p>
<p>In the existing literature on wheel-legged robots, the steady-state error is eliminated by the centroidal adjustment in Zhou et al. (<xref ref-type="bibr" rid="B39">2019</xref>) and by arm acceleration control in Raza et al. (<xref ref-type="bibr" rid="B31">2021</xref>). In addition to the case-by-case solutions to the disturbance, a more systematic approach is to apply output regulation on selected outputs (Isidori and Byrnes, <xref ref-type="bibr" rid="B15">1990</xref>; Huang, <xref ref-type="bibr" rid="B12">2004</xref>). In Wang et al. (<xref ref-type="bibr" rid="B32">2021</xref>), the output regulation is applied to force the robot to stand still using the cart-pole model where the disturbance is estimated by an observer.</p>
<p>To overcome the both aforementioned issues by model uncertainties and unmodeled disturbances, a novel solution is the adaptive optimal output regulation (AOOR) (Gao and Jiang, <xref ref-type="bibr" rid="B7">2016</xref>, <xref ref-type="bibr" rid="B9">2022</xref>). Similar to the standard ADP, the training can be conducted on real robots directly, and the system identification is not needed. In the author&#x00027;s previous researches, the optimal output regulation has been applied to semi-autonomous vehicles (Huang et al., <xref ref-type="bibr" rid="B14">2019</xref>) and connected autonomous vehicles (Gao et al., <xref ref-type="bibr" rid="B10">2016</xref>, <xref ref-type="bibr" rid="B6">2019</xref>; Gao and Jiang, <xref ref-type="bibr" rid="B8">2017</xref>). However, there is no application on balance augmentation for wheel-legged robots.</p>
<p>In this paper, we design the AOOR-based controller on the wheel-legged robot Ollie (<xref ref-type="fig" rid="F1">Figure 1</xref>) to achieve non-model-based optimal control and regulate it to stand still in various working conditions. Compared with our previous works (Cui et al., <xref ref-type="bibr" rid="B5">2021</xref>; Wang et al., <xref ref-type="bibr" rid="B32">2021</xref>; Zhang et al., <xref ref-type="bibr" rid="B37">2022</xref>), the contributions in this paper are concluded as follows.</p>
<list list-type="bullet">
<list-item><p>In Cui et al. (<xref ref-type="bibr" rid="B5">2021</xref>) and Zhang et al. (<xref ref-type="bibr" rid="B37">2022</xref>), the robot is balanced but cannot stand still, which was stated as a limitation of the ADP algorithm. In this paper, the problem is solved by further regulating the velocity of the robot to zero in a systematic approach.</p></list-item>
<list-item><p>The robot was forced to stand still when it is at the minimum height (Wang et al., <xref ref-type="bibr" rid="B32">2021</xref>) based on the cart-pole model, but this model-based method cannot keep the robot standing still when robot configuration or the environment changes. In this paper, the data-driven approach based on the ADP is applied to regulate the robot adaptively.</p></list-item>
<list-item><p>In addition to solving the problems in the scenarios of our previous works, more challenging scenarios are invoked to test the generality of the proposed control algorithm.</p></list-item>
</list>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>The wheel-legged robot Ollie. Many more maneuvers in action and experimental data are shown in the accompanying video. <bold>(A)</bold> Train the controller on a slope. <bold>(B)</bold> Test the controller to balance a cup.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0001.tif"/>
</fig>
<p>The structure of the remaining paper is as follows. In Section 2.1, the robot system and the control framework are introduced briefly, with the problem statement of the control given in Section 2.3. In Section 3, the main controller design based on the AOOR is provided with its algorithm. In Section 4, the experiment results on the training process and the related testing process using the AOOR-based controller are demonstrated, and an interesting application is also shown. Finally, conclusions and several feasible future studies are given in Section 5.</p></sec>
<sec id="s2">
<title>2. Robotic system and control framework</title>
<sec>
<title>2.1. Introduction to the robotic system</title>
<p>The robot we used in this paper is the wheel-legged robot Ollie. This robot was self-developed by Tencent Robotics X and was first released in both the plenary talk and the research paper (Wang et al., <xref ref-type="bibr" rid="B32">2021</xref>) at ICRA 2021. Ollie (mechanical model shown in <xref ref-type="fig" rid="F2">Figure 2</xref>) is designed using eight driving motors: four motors on the hips, two motors on the tail and two motors on the wheels. The five-bar linkage mechanism is used so that each leg is actuated by two motors on the base, without actuators on the knees. Based on the mechanical design, each five-bar leg is able to move along the <italic>x</italic> and <italic>z</italic>-axis in the leg plane, which keeps perpendicular to the robot base. Except for two-wheel balancing, the robot has the ability to switch flexibly between two-wheel and three-wheel modes. Moreover, the attitude of the base can be adjusted by changing the height of each leg, i.e., distance between the center of the wheel and the base in the leg plane. With an optimal mechanical design of legs, the robot can stride over obstacles, jump, and flip, demonstrating its strong ability to realize dynamic movements (Ackerman, <xref ref-type="bibr" rid="B1">2021</xref>). The total weight of Ollie is around 15 kg. The height of the robot is between 0.33 and 0.7 m.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Mechanical design of the robot Ollie and simplified model on the sagittal plane, where the geometric center and the CoM are marked in a hollow circle and a filled circle, respectively. The actual pitch angle <inline-formula><mml:math id="M1"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> is the subtraction of the measured value &#x003B8; and an offset &#x00394;&#x003B8;, i.e., <inline-formula><mml:math id="M2"><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mo>-</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B8;</mml:mi></mml:math></inline-formula>. The displacement of the robot in the x direction is denoted as <italic>x</italic> with its velocity &#x01E8B;. The wheel is actuated by the motor torque &#x003C4;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0002.tif"/>
</fig>
</sec>
<sec>
<title>2.2. Robotic control framework</title>
<p>In order to keep Ollie moving with agile and flexible body poses at the same time of wheel balancing, the whole-body control (WBC) is used. The robotic control framework is shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. See details of the whole-body dynamics model and optimization formulation in the authors&#x00027; previous publication (Zhang et al., <xref ref-type="bibr" rid="B37">2022</xref>).</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Control framework of the robot system.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0003.tif"/>
</fig>
<p>Before the WBC module, an individual controller is designed to generate the reference torques <bold>&#x003C4;</bold><sup>des</sup> for the balancing task due to the nonminimum-phase property of the wheel-legged robot. Conventionally, references of the balancing task in the WBC are usually generated by controller design based on a simplified model (Klemm et al., <xref ref-type="bibr" rid="B23">2020</xref>; Murtaza et al., <xref ref-type="bibr" rid="B26">2020</xref>) or by a manual tuning controller (Zambella et al., <xref ref-type="bibr" rid="B35">2019</xref>). To overcome the aforementioned model uncertainties and inaccuracy of model parameters and external disturbances (formally stated in Section 2.3), the AOOR is used to calculate balancing task references.</p>
<p>Other task references, such as attitudes and height of the robot, are obtained from the motion generation and classic controllers.</p>
</sec>
<sec>
<title>2.3. Problem statement</title>
<p>The problem mentioned in Zhang et al. (<xref ref-type="bibr" rid="B37">2022</xref>) is that it is hard for such a wheel-legged robot to keep standing completely still in different working conditions. In order to make the robot stand still, the center of mass (CoM) and the middle of wheels should be vertical. Therefore, the accurate estimation of the CoM position is crucial for model-based controllers, but the deviation from the expected position is inevitable in practice due to the nonuniform mass distribution and the assembly errors. This is presented in the sagittal plane in <xref ref-type="fig" rid="F2">Figure 2</xref>, where the CoM of the floating base is assumed to be consistent with the geometric center but they are different in practice.</p>
<p>In the balancing task, the pitch angle <inline-formula><mml:math id="M3"><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula>, pitch angular velocity <inline-formula><mml:math id="M4"><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> and the robot&#x00027;s linear velocity <inline-formula><mml:math id="M5"><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> are regulated to zero by controlling the motor torque &#x003C4; at the wheel. The balancing system can be expressed in the linear form</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M6"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>A</mml:mi></mml:mstyle><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>B</mml:mi></mml:mstyle><mml:mi>&#x003C4;</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M7"><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mtext>&#x000A0;</mml:mtext><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mtext>&#x000A0;</mml:mtext><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, <italic><bold>A</bold></italic> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>n</italic></sup> and <italic><bold>B</bold></italic> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>m</italic></sup> (<italic>n</italic> &#x0003D; 3, <italic>m</italic> &#x0003D; 1). It must be highlighted that, due to the uncertain factors of the robotic system, it is hard to model an accurate expression of <italic><bold>A</bold></italic> and <italic><bold>B</bold></italic>, and they are not used in this paper.</p>
<p>Particularly, considering the deviation of the CoM, the real pitch angle is the subtraction of the measured value &#x003B8; and an offset &#x00394;&#x003B8;, i.e., <inline-formula><mml:math id="M8"><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>&#x003B8;</mml:mi><mml:mo>-</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B8;</mml:mi></mml:math></inline-formula> (Note that subtraction is used to keep consistent with the formulation in Section 3), while the real value and the measured value are equal for the other two states (<inline-formula><mml:math id="M9"><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, <inline-formula><mml:math id="M10"><mml:mover accent="true"><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>&#x01E8B;</mml:mi></mml:math></inline-formula>). Then, the dynamic model (Equation 1) is equivalent to</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M11"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>A</mml:mi></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>B</mml:mi></mml:mstyle><mml:mi>&#x003C4;</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>D</mml:mi></mml:mstyle><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M12"><mml:mstyle mathvariant="bold"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mi>&#x003B8;</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi>&#x01E8B;</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, <italic><bold>D</bold></italic> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>q</italic></sup> (<italic>q</italic> &#x0003D; 1) and <italic><bold>D</bold></italic> &#x0003D; <italic><bold>A</bold></italic>[&#x02212;&#x00394;, &#x003B8;, 0, 0]<sup><italic>T</italic></sup>.</p>
<p>In addition, to stop the robot at a fixed position, &#x01E8B; is chosen as the output to be regulated to zero, and the error is</p>
<disp-formula id="E3"><label>(3)</label><mml:math id="M13"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>e</mml:mi><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>C</mml:mi></mml:mstyle><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>C</mml:mi></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic><bold>C</bold></italic> &#x0003D; [0 0 1].</p>
<p>In this paper, we consider the balancing task in the WBC framework with the system described in Equations (2) and (3) with the unknown parameters <italic><bold>A</bold></italic>, <italic><bold>B</bold></italic>, and &#x00394;&#x003B8;. The objective is to stabilize the system by optimal control adaptively and to regulate the output to zero.</p></sec>
</sec>
<sec id="s3">
<title>3. AOOR-based balance control algorithm</title>
<p>One possible way to keep the wheel-legged robot standstill while balancing is to design a controller based on the AOOR. A similar data-driven optimal output regulation for linear systems with exogenous disturbances is proposed in Gao and Jiang (<xref ref-type="bibr" rid="B7">2016</xref>), but the controller design based on the similar data-driven method on the balance augmentation of wheel-legged robots is not trivial. In this section, we design the AOOR-based controller for the particular application on the balancing task of wheel-legged robots.</p>
<sec>
<title>3.1. Model-based optimal output regulation</title>
<p>The standard state feedback control of the system (Equation 1) is</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M14"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>&#x003C4;</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>when (<italic><bold>A</bold></italic>, <italic><bold>B</bold></italic>) is stabilizable, where <italic><bold>K</bold></italic> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;1</sup> is a stabilizing feedback gain. The control law can be rewritten in the equivalent form for the system (Equation 2) as</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M15"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>&#x003C4;</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>L</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>L</italic> &#x0003D; <italic><bold>KZ</bold></italic> &#x0002B; <italic>T</italic> with <italic><bold>Z</bold></italic> &#x0003D; [&#x00394;&#x003B8; 0 0]<sup><italic>T</italic></sup>. In the control law (Equation 5), the first term regulates the state <bold>&#x003B6;</bold>, and the second term compensates the uncertainty <italic><bold>D</bold></italic>. Then, the original system (Equation 1) is asymptotically stable (<inline-formula><mml:math id="M16"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">lim</mml:mo></mml:mrow><mml:mrow><mml:mi>t</mml:mi><mml:mo>&#x02192;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:munder><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:math></inline-formula>) if the unknown <italic><bold>Z</bold></italic> and <italic>T</italic> are solvable by the regulator equation (see the proof in Huang, <xref ref-type="bibr" rid="B12">2004</xref>):</p>
<disp-formula id="E6"><label>(6)</label><mml:math id="M17"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:mstyle mathvariant="bold-italic"><mml:mn>0</mml:mn></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>A</mml:mi></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>B</mml:mi></mml:mstyle><mml:mi>T</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>D</mml:mi></mml:mstyle><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mn>0</mml:mn><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>C</mml:mi></mml:mstyle> <mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Due to the specific underactuated dynamics of the wheel-legged robot, there exists a unique solution of the regulation equation. It is self-evident because the steady-state must be <bold>&#x003B6;</bold> &#x0003D; [&#x00394;&#x003B8;, 0, 0] for the standstill condition, and the torque is then fixed. However, for other types of robots, there may exist multiple solutions, and an optimization problem can be designed to solve the optimal solution (Gao and Jiang, <xref ref-type="bibr" rid="B7">2016</xref>).</p>
<p>In this paper, the optimality is represented by solving the following constrained optimization problem for the state feedback control.</p>
<disp-formula id="E7"><label>(7)</label><mml:math id="M18"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">min</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo class="qopname">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msubsup></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold-italic"><mml:mi>Q</mml:mi></mml:mstyle><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo>&#x0002B;</mml:mo><mml:mi>R</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:mtext class="textrm" mathvariant="normal">subject&#x000A0;to&#x000A0;&#x000A0;&#x000A0;(Equation&#x000A0;1)</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic><bold>Q</bold></italic> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>n</italic></sup> is positive-definite and <italic>R</italic> &#x02208; &#x0211D; is positive. The optimal solution is represented by the optimal feedback gain</p>
<disp-formula id="E8"><label>(8)</label><mml:math id="M19"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>B</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where the positive-definite <italic><bold>P</bold></italic><sup>&#x0002A;</sup> is the solution of the algebraic Riccati equation (ARE) (Lewis et al., <xref ref-type="bibr" rid="B25">1995</xref>).</p>
</sec>
<sec>
<title>3.2. Data-driven optimal output regulation</title>
<p>In the data-driven approach, the main objective is to remove the dependency on the model parameter <italic><bold>A</bold></italic>, <italic><bold>B</bold></italic> and <italic><bold>D</bold></italic>, and determine the optimal solution (<italic><bold>K</bold></italic><sup>&#x0002A;</sup>, <italic><bold>P</bold></italic><sup>&#x0002A;</sup>) and (<italic><bold>Z</bold></italic>, <italic>T</italic>).</p>
<p>To determine the optimal feedback gain <italic><bold>K</bold></italic><sup>&#x0002A;</sup>, by utilizing the collected data <bold>&#x003B6;</bold>(<italic>t</italic>) and &#x003C4;(<italic>t</italic>), the optimization problem (Equation 7) is solved iteratively. Particularly, the dependency on <italic><bold>A</bold></italic> is removed by the Lyapunov equation</p>
<disp-formula id="E9"><label>(9)</label><mml:math id="M31"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mi>R</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>Q</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>A</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>A</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>j</italic> is the index of iteration. Meanwhile, the dependency on <italic><bold>B</bold></italic> is removed by the gain iteration</p>
<disp-formula id="E10"><label>(10)</label><mml:math id="M32"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>B</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>In addition, <italic><bold>D</bold></italic> is set as a variable to be determined in each iteration. When <italic><bold>K</bold></italic> and <italic><bold>P</bold></italic> converge, the results can be proved as the optimal solutions <italic><bold>K</bold></italic><sup>&#x0002A;</sup> and <italic><bold>P</bold></italic><sup>&#x0002A;</sup> (Kleinman, <xref ref-type="bibr" rid="B22">1968</xref>).</p>
<p>To determine the regulation parameters (<italic><bold>Z</bold></italic>, <italic>T</italic>), a basis of <italic><bold>Z</bold></italic> is defined as <inline-formula><mml:math id="M33"><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mtext>&#x000A0;</mml:mtext><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mtext>&#x000A0;</mml:mtext><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> such that <inline-formula><mml:math id="M34"><mml:mstyle mathvariant="bold"><mml:mi>Z</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula> with a scalar &#x003B1; and the second equation in the regulator (Equation 6) is satisfied. Notice that the construction of the basis of <italic><bold>Z</bold></italic> is slightly different from Gao and Jiang (<xref ref-type="bibr" rid="B7">2016</xref>) in this particular application on Ollie. Then, by defining a Sylvester map <italic>S</italic>:&#x0211D;<sup><italic>n</italic></sup>&#x021A6;&#x0211D;<sup><italic>n</italic></sup> by <italic>S</italic>(<italic><bold>Z</bold></italic>) &#x0003D; &#x02212;<italic><bold>AZ</bold></italic>, the first equation in the regulation equation is rewritten as</p>
<disp-formula id="E11"><label>(11)</label><mml:math id="M35"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02261;</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>B</mml:mi></mml:mstyle><mml:mi>T</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>D</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>R</mml:mi><mml:mi>T</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>D</mml:mi></mml:mstyle></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic><bold>B</bold></italic> is represented by Equation (10) using <italic><bold>K</bold></italic><sup>&#x0002A;</sup> and <italic><bold>P</bold></italic><sup>&#x0002A;</sup> from the previous step, and <italic><bold>D</bold></italic> is solved in the previous step.</p>
<p>Then, if <inline-formula><mml:math id="M36"><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> is available, the pair (<italic><bold>Z</bold></italic>, <italic>T</italic>) can be computed by solving the following linear equation</p>
<disp-formula id="E12"><label>(12)</label><mml:math id="M37"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mstyle mathvariant="bold-italic"><mml:mn>0</mml:mn></mml:mstyle></mml:mtd><mml:mtd><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>R</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mtd><mml:mtd><mml:mo>-</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>I</mml:mi></mml:mstyle></mml:mtd><mml:mtd><mml:mstyle mathvariant="bold-italic"><mml:mn>0</mml:mn></mml:mstyle></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mi>&#x003B1;</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold-italic"><mml:mi>Z</mml:mi></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>T</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold-italic"><mml:mi>D</mml:mi></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold-italic"><mml:mn>0</mml:mn></mml:mstyle></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Finally, by setting <italic>L</italic> &#x0003D; <italic><bold>K</bold></italic><sup>&#x0002A;</sup><italic><bold>Z</bold></italic> &#x0002B; <italic>T</italic>, the optimal output regulation law in Equation (5) is attained.</p>
<p>The proposed AOOR is provided in <xref ref-type="table" rid="A1">Algorithm 1</xref>, with the related matrices defined in Equations (13) and (14), where the notation vec() denotes the vectorization, and &#x02297; denotes the Kronecker product. It is suggested to check the conditioning number of <bold>&#x003A8;</bold> and <inline-formula><mml:math id="M38"><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>&#x003A8;</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula> to avoid potential numerical problems caused by ill-conditioned matrix. The general idea of the proof follows from Gao and Jiang (<xref ref-type="bibr" rid="B7">2016</xref>), but the AOOR-based control is applied for the specific problem on the balance augmentation of wheel-legged robots. Due to the page limit, the detailed proof is omitted.</p>
<disp-formula id="E13"><label>(13)</label><mml:math id="M39"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mo>&#x0039B;</mml:mo></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>|</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>|</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>|</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mo>&#x02297;</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E14"><label>(14)</label><mml:math id="M40"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mo>&#x0039B;</mml:mo></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>|</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>|</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mstyle displaystyle="true"><mml:msubsup><mml:mo>|</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>&#x02297;</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:msubsup><mml:mrow><mml:mo>&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msubsup></mml:mstyle><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>&#x003B6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<table-wrap position="float" id="A1">
<label>Algorithm 1</label>
<caption><p>Adaptive optimal output regulation.</p></caption>
<table frame="hsides" rules="groups">
<tr>
<td valign="top" align="left">1:</td>
<td valign="top" align="left">Apply the initial stabilizing control &#x003C4; &#x0003D; &#x02212;<italic><bold>K</bold></italic><sub>0</sub><bold>&#x003B6;</bold> &#x0002B; &#x003B2; with the exploration noise &#x003B2;(<italic>t</italic>),</td>
</tr>
<tr>
<td/>
<td valign="top" align="left">and collect data on [<italic>t</italic><sub>0</sub>, <italic>t</italic><sub><italic>s</italic></sub>].</td>
</tr>
<tr>
<td valign="top" align="left">2:</td>
<td valign="top" align="left">Compute the matrices in Equations (13) and (14).</td>
</tr>
<tr>
<td valign="top" align="left">3:</td>
<td valign="top" align="left">Ensure the rank condition holds.</td>
</tr>
<tr>
<td/>
<td valign="top" align="left">&#x000A0;&#x000A0;<inline-formula><mml:math id="M20"><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">rank</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>n</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mi>n</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>q</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>12</mml:mn><mml:mo>,</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td/>
<td valign="top" align="left">&#x000A0;&#x000A0;<inline-formula><mml:math id="M21"><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">rank</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>n</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mi>n</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mi>q</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>12</mml:mn><mml:mo>.</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">4:</td>
<td valign="top" align="left">Set <italic>j</italic> &#x0003D; 0.</td>
</tr>
<tr>
<td valign="top" align="left">5:</td>
<td valign="top" align="left"><bold>While</bold> ||<italic><bold>P</bold></italic><sub><italic>j</italic>&#x0002B;1</sub>&#x02212;<italic><bold>P</bold></italic><sub><italic>j</italic></sub>|| &#x0003C; &#x003F5; with some small &#x003F5;</td>
</tr>
<tr>
<td valign="top" align="left">6:</td>
<td valign="top" align="left">Solve <italic><bold>P</bold></italic><sub><italic>j</italic></sub>, <italic><bold>K</bold></italic><sub><italic>j</italic>&#x0002B;1</sub> and <italic><bold>D</bold></italic> by</td>
</tr>
<tr>
<td/>
<td valign="top" align="left">&#x000A0;&#x000A0;<inline-formula><mml:math id="M22"><mml:mstyle mathvariant="bold"><mml:mtext>&#x003A8;</mml:mtext></mml:mstyle><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>D</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mi>&#x003A6;</mml:mi></mml:mstyle></mml:math></inline-formula></td>
</tr>
<tr>
<td/>
<td valign="top" align="left">where</td>
</tr>
<tr>
<td/>
<td valign="top" align="left"><inline-formula><mml:math id="M23"><mml:mstyle mathvariant="bold"><mml:mtext>&#x003A8;</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x0039B;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>I</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02297;</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mi>R</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>I</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi>R</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td/>
<td valign="top" align="left"><inline-formula><mml:math id="M24"><mml:mstyle mathvariant="bold"><mml:mi>&#x003A6;</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>,</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow></mml:msub><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Q</mml:mi></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mi>R</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">7:</td>
<td valign="top" align="left"><bold>End while</bold></td>
</tr>
<tr>
<td valign="top" align="left">8:</td>
<td valign="top" align="left">Set <inline-formula><mml:math id="M25"><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula><mml:math id="M26"><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> as optimal solutions for Equation (7).</td>
</tr>
<tr>
<td valign="top" align="left">9:</td>
<td valign="top" align="left">Solve <inline-formula><mml:math id="M27"><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> by</td>
</tr>
<tr>
<td/>
<td valign="top" align="left">&#x000A0;&#x000A0;<inline-formula><mml:math id="M28"><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>&#x003A8;</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>D</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:mi>S</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Z</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>P</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:math></inline-formula></td>
</tr>
<tr>
<td/>
<td valign="top" align="left">where</td>
</tr>
<tr>
<td/>
<td valign="top" align="left"><inline-formula><mml:math id="M29"><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>&#x003A8;</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x0039B;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>I</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02297;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>R</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>I</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi>R</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td/>
<td valign="top" align="left"><inline-formula><mml:math id="M30"><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A6;</mml:mi></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>&#x003A3;</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="false"><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow></mml:msub><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">vec</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>Q</mml:mi></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mi>R</mml:mi><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:math></inline-formula></td>
</tr>
<tr>
<td valign="top" align="left">10:</td>
<td valign="top" align="left">Solve <italic><bold>Z</bold></italic> and <italic>T</italic> by Equation (12).</td>
</tr>
<tr>
<td valign="top" align="left">11:</td>
<td valign="top" align="left">Let <italic>L</italic> &#x0003D; <italic><bold>K</bold></italic><sup>&#x0002A;</sup><italic><bold>Z</bold></italic> &#x0002B; <italic>T</italic>, the optimal output regulation law is</td>
</tr>
<tr>
<td/>
<td valign="top" align="left">&#x000A0;&#x000A0;&#x003C4; &#x0003D; &#x02212;<italic><bold>K</bold></italic><sup>&#x0002A;</sup><bold>&#x003B6;</bold> &#x0002B; <italic>L</italic>.</td>
</tr>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s4">
<title>4. Experimental results</title>
<sec>
<title>4.1. Experimental setup</title>
<p>In the experiment, the control framework in <xref ref-type="fig" rid="F3">Figure 3</xref> is realized by the CPU PICO-WHU4 at a frequency of 1 k Hz. The rotation of the floating base is measured by the onboard IMU at a frequency of 400 Hz. The experimental data are saved at a frequency of 1 k Hz. The rotation of each actuated joint is measured by the motor encoder. The reference velocity and the reference height of the robot are set by the operator using a remote controller.</p>
</sec>
<sec>
<title>4.2. Training</title>
<p>We train the data-driven optimal output regulation controller for Ollie in four scenarios to deal with uncertainties in model and disturbances. In our previous work (Cui et al., <xref ref-type="bibr" rid="B5">2021</xref>; Zhang et al., <xref ref-type="bibr" rid="B37">2022</xref>), the robot kept balanced, but it could not stand still, which was mentioned as a limitation. Hence, in the first two scenarios, we deal with the asymptotic stability problem in our previous works where the robot is at the height 0.33 m (<xref ref-type="fig" rid="F4">Figure 4A</xref>) and the height 0.5 m (<xref ref-type="fig" rid="F4">Figure 4B</xref>). Furthermore, we invoke two more challenging scenarios. In the third scenario, we mount an eccentric load of 3.5 kg in the front of the floating base (<xref ref-type="fig" rid="F4">Figure 4C</xref>). As the floating base is about 11 kg, the heavy load would change the equilibrium point significantly. In the fourth scenario, we train the robot on a slope (<xref ref-type="fig" rid="F4">Figure 4D</xref>). It is clear that extra torque is required to compensate for the component of gravity in the direction of the slope, which in turn implies that the equilibrium point changes. Notice that no information of the load (e.g., mass, shape, location) and the slope (e.g., gradient) is used in the training process, and they are treated as unknown disturbances.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>Images during the training. Many more maneuvers in action and experimental data are shown in the accompanying video. <bold>(A)</bold> Height = 0.33 m, <bold>(B)</bold> height = 0.5 m, <bold>(C)</bold> height = 0.5 m with the load, and <bold>(D)</bold> height = 0.5 m on the slope.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0004.tif"/>
</fig>
<p>During the training, the initial controller gain <italic><bold>K</bold></italic><sub>0</sub> &#x0003D; [&#x02212;74 &#x02212; 26 &#x02212; 10] is used, which is close to the resultant controller obtained from the VI training in Zhang et al. (<xref ref-type="bibr" rid="B37">2022</xref>). As the controller is stabilizing, the robot can move forward and backward repeatedly according to the remote control and the exploration noise &#x003B2;(<italic>t</italic>) &#x0003D; 1.6sin(8&#x003C0;<italic>t</italic>) &#x0002B; 0.8cos(12&#x003C0;<italic>t</italic>) is used to trigger more informative data. Training data of 6 s are collected for each experiment with the sampling interval 0.015 s. It means that, in <xref ref-type="table" rid="A1">Algorithm 1</xref>, <italic>t</italic><sub>0</sub> &#x0003D; 0, <italic>t</italic><sub><italic>s</italic></sub> &#x0003D; 6 s, and <italic>t</italic><sub><italic>k</italic>&#x0002B;1</sub> &#x02212; <italic>t</italic><sub><italic>k</italic></sub> &#x0003D; 0.015 s. Considering the sampling rate of 1 k Hz, there are 400 elements in each matrix in Equations (13) and (14). As suggested in Jiang and Jiang (<xref ref-type="bibr" rid="B18">2017</xref>), it is a good practice to guarantee the full rank condition in Alglorithm 1 by collecting data for which every matrix in Equations (13) and (14) has elements more than twice as many as the required rank. Hence, the full rank condition would be satisfied easily in this work.</p>
<p>The training data when the robot is at the height 0.33 m and when the robot is at the height 0.5 m on the slope are shown in <xref ref-type="fig" rid="F5">Figures 5</xref>, <xref ref-type="fig" rid="F6">6</xref> respectively as an example, where the oscillation implies the exploration noise. Other training data are given in the accompanying video.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>Training data for height = 0.33 m. <bold>(A)</bold> Pitch angle &#x003B8;, <bold>(B)</bold> pitch velocity <inline-formula><mml:math id="M41"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, <bold>(C)</bold> line velocity &#x01E8B;, and <bold>(D)</bold> input torque &#x003C4;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0005.tif"/>
</fig>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>Training data for height = 0.5 m on the slope. <bold>(A)</bold> Pitch angle &#x003B8;, <bold>(B)</bold> pitch velocity <inline-formula><mml:math id="M42"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, <bold>(C)</bold> line velocity &#x01E8B;, and <bold>(D)</bold> input torque &#x003C4;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0006.tif"/>
</fig>
<p>Finally, by setting <italic><bold>Q</bold></italic> &#x0003D; diag(900, 400, 150), <italic>R</italic> &#x0003D; 1 in <xref ref-type="table" rid="A1">Algorithm 1</xref>, the control parameters of the four training converge to</p>
<disp-formula id="E15"><label>(15)</label><mml:math id="M43"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>67</mml:mn><mml:mo>.</mml:mo><mml:mn>96</mml:mn><mml:mo>-</mml:mo><mml:mn>29</mml:mn><mml:mo>.</mml:mo><mml:mn>13</mml:mn><mml:mo>-</mml:mo><mml:mn>9</mml:mn><mml:mo>.</mml:mo><mml:mn>20</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn>4</mml:mn><mml:mo>.</mml:mo><mml:mn>21</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>80</mml:mn><mml:mo>.</mml:mo><mml:mn>92</mml:mn><mml:mo>-</mml:mo><mml:mn>27</mml:mn><mml:mo>.</mml:mo><mml:mn>38</mml:mn><mml:mo>-</mml:mo><mml:mn>10</mml:mn><mml:mo>.</mml:mo><mml:mn>79</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>.</mml:mo><mml:mn>78</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>86</mml:mn><mml:mo>.</mml:mo><mml:mn>61</mml:mn><mml:mo>-</mml:mo><mml:mn>27</mml:mn><mml:mo>.</mml:mo><mml:mn>37</mml:mn><mml:mo>-</mml:mo><mml:mn>10</mml:mn><mml:mo>.</mml:mo><mml:mn>89</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn>5</mml:mn><mml:mo>.</mml:mo><mml:mn>97</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>61</mml:mn><mml:mo>.</mml:mo><mml:mn>04</mml:mn><mml:mo>-</mml:mo><mml:mn>19</mml:mn><mml:mo>.</mml:mo><mml:mn>86</mml:mn><mml:mo>-</mml:mo><mml:mn>7</mml:mn><mml:mo>.</mml:mo><mml:mn>97</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>.</mml:mo><mml:mn>30</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>by the stopping criterion &#x003F5; &#x0003D; 10<sup>&#x02212;4</sup> in 19, 18, 16, and 21 iterations, respectively (<xref ref-type="fig" rid="F7">Figure 7</xref>). It should be highlighted that the fast convergence enables <xref ref-type="table" rid="A1">Algorithm 1</xref> to be implemented online. Moreover, the robustness of the ADP-based algorithm guarantees the convergence to a small neighborhood of the optimal solution when noisy data are used (Pang et al., <xref ref-type="bibr" rid="B28">2022</xref>).</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Convergence of the feedback gain <italic>K</italic>. <bold>(A)</bold> Height = 0.33 m, <bold>(B)</bold> height = 0.5 m, <bold>(C)</bold> height = 0.5 m with the load, and <bold>(D)</bold> height = 0.5 m on the slope.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0007.tif"/>
</fig>
<p>The tuning of the parameter <italic><bold>Q</bold></italic> and <italic>R</italic> follows the standard process of LQR design. It is noticed in Zhang et al. (<xref ref-type="bibr" rid="B37">2022</xref>) and its accompanying video that the motor input is oscillating, which is caused by the overlarge regulation on the pitch angle of the robot. In this paper, the first diagonal term of <italic><bold>Q</bold></italic> is reduced accordingly. Moreover, by manual testing, the convergence of the algorithm is most sensitive on the third diagonal term of <italic><bold>Q</bold></italic>, whose feasible range is from 90 to 280. In addition, the second diagonal term of <italic><bold>Q</bold></italic> should be larger than 180, and the first diagonal term can be any positive value. These results indicate the robustness of the convergence of <xref ref-type="table" rid="A1">Algorithm 1</xref> on the parameters <italic><bold>Q</bold></italic> and <italic>R</italic>.</p>
</sec>
<sec>
<title>4.3. Testing</title>
<p>In the accompanying video, the trained controllers are updated to the robot online after the data collection. Here, we compare the initial controller and the result controller of AOOR directly to avoid the effect on the visual sense caused by the movement and exploration noises in the training process.</p>
<p>In the first experiment, the robot is at the height 0.33 m, with experimental data given in <xref ref-type="fig" rid="F8">Figure 8</xref>. The initial controller <italic><bold>K</bold></italic><sub>0</sub> is used at first, and the experimenter uses the remote controller to force the robot to stand still. Then, after releasing the remote controller, the robot moves forward continuously in the first 2 s, which is indicated by the red line in <xref ref-type="fig" rid="F8">Figure 8C</xref>. Then, by enabling the updated controller with <inline-formula><mml:math id="M45"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mi>K</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula> and <italic>L</italic><sub><italic>a</italic></sub> at <italic>t</italic> &#x0003D; 2 s, the robot decelerates sharply and stays still in the following 6 s, which is indicated by the blue line in <xref ref-type="fig" rid="F8">Figure 8C</xref>. In order to realize the fast regulation, the motor input is a little oscillating, but the effects on the pitch angle (<xref ref-type="fig" rid="F8">Figure 8A</xref>) and the linear velocity (<xref ref-type="fig" rid="F8">Figure 8C</xref>) are acceptable. The still image of the testing process is shown in <xref ref-type="fig" rid="F9">Figure 9A</xref>. Combining the still image and the testing data, it is clear that the average velocity when using the AOOR is much slower than the initial case, reflected by the smaller displacement during a longer time. The small displacement during the AOOR period is caused by the convergence from the initial velocity to zero, which is naturally inevitable.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Testing results for height = 0.33 m. <bold>(A)</bold> Pitch angle &#x003B8;, <bold>(B)</bold> pitch velocity <inline-formula><mml:math id="M44"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003B8;</mml:mi></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, <bold>(C)</bold> line velocity &#x01E8B;, and <bold>(D)</bold> input torque &#x003C4;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0008.tif"/>
</fig>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p>Still images during the testing. Many more maneuvers in action and experimental data are shown in the accompanying video. <bold>(A)</bold> Height = 0.33 m, <bold>(B)</bold> height = 0.5 m, <bold>(C)</bold> height = 0.5 m with the load, <bold>(D)</bold> height = 0.5 m on the slope.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0009.tif"/>
</fig>
<p>The testing processes when the robot is at the height 0.5 m and with the load are similar. By the testing data (<xref ref-type="fig" rid="F10">Figures 10</xref>, <xref ref-type="fig" rid="F11">11</xref>), the robot decelerates and stands still (&#x01E8B; &#x02192; 0) after the AOOR is enabled. The small displacement, including the deceleration phase, is demonstrated in <xref ref-type="fig" rid="F9">Figures 9B</xref>, <xref ref-type="fig" rid="F9">C</xref> respectively.</p>
<fig id="F10" position="float">
<label>Figure 10</label>
<caption><p>Testing results for height = 0.5 m. <bold>(A)</bold> Pitch angle &#x003B8;. <bold>(B)</bold> line velocity &#x01E8B;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0010.tif"/>
</fig>
<fig id="F11" position="float">
<label>Figure 11</label>
<caption><p>Testing results for height = 0.5 m with the load. <bold>(A)</bold> Pitch angle &#x003B8;. <bold>(B)</bold> line velocity &#x01E8B;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0011.tif"/>
</fig>
<p>For the testing on the slope, the method is similar. The difference is that the AOOR is used in the beginning to compare with the initial control latter. The reason is that, if the initial control is used in the beginning, the robot may leave the slope quickly before enabling the AOOR. The outstanding regulation performance is indicated by the data (<xref ref-type="fig" rid="F12">Figure 12</xref>) together with the still image (<xref ref-type="fig" rid="F9">Figure 9D</xref>).</p>
<fig id="F12" position="float">
<label>Figure 12</label>
<caption><p>Testing results for height = 0.5 m on the slope. <bold>(A)</bold> Pitch angle &#x003B8;. <bold>(B)</bold> line velocity &#x01E8B;.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0012.tif"/>
</fig>
<p>The comparison of the controllers are summarized in <xref ref-type="table" rid="T1">Table 1</xref>. The much smaller displacement within the longer time by the AOOR indicates the strong regulation. The nonzero displacement includes the deceleration phase after enabling the AOOR, and any slight error in the regulation term <italic>L</italic> may also cause a small displacement in the steady state.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>Comparison of the controllers during the testing.</p></caption>
<table frame="box" rules="all">
<thead><tr style="background-color:#919497; color:#FFFFFF">
<th valign="middle" align="left" rowspan="3"><bold>Scenario</bold></th>
<th valign="top" align="center" colspan="2"><bold>Initial controller</bold></th>
<th valign="top" align="center" colspan="2"><bold>AOOR</bold></th>
</tr>
<tr style="background-color:#919497; color:#FFFFFF">
<th valign="top" align="left"><bold>Time</bold></th>
<th valign="top" align="left"><bold>Displacement</bold></th>
<th valign="top" align="left"><bold>Time</bold></th>
<th valign="top" align="left"><bold>Displacement</bold></th>
</tr>
<tr style="background-color:#919497; color:#FFFFFF">
<th valign="top" align="left"><bold>(s)</bold></th>
<th valign="top" align="left"><bold>(m)</bold></th>
<th valign="top" align="left"><bold>(s)</bold></th>
<th valign="top" align="left"><bold>(m)</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">No. 1</td>
<td valign="top" align="center">2.0</td>
<td valign="top" align="center">0.46</td>
<td valign="top" align="center">5.8</td>
<td valign="top" align="center">0.15</td>
</tr> <tr>
<td valign="top" align="left">No. 2</td>
<td valign="top" align="center">2.9</td>
<td valign="top" align="center">0.56</td>
<td valign="top" align="center">7.1</td>
<td valign="top" align="center">0.15</td>
</tr> <tr>
<td valign="top" align="left">No. 3</td>
<td valign="top" align="center">2.5</td>
<td valign="top" align="center">1.01</td>
<td valign="top" align="center">5.4</td>
<td valign="top" align="center">0.04</td>
</tr> <tr>
<td valign="top" align="left">No. 4</td>
<td valign="top" align="center">2.3</td>
<td valign="top" align="center">0.42</td>
<td valign="top" align="center">2.5</td>
<td valign="top" align="center">0.10</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>4.4. Application</title>
<p>The AOOR is applied when the robot is balancing a rolling cylindrical water bottle on the top. A PD controller is used to tune the floating base by the feedback of the bottle position (<italic>s</italic><sub><italic>b</italic></sub>) and velocity (&#x01E61;<sub><italic>b</italic></sub>) with respect to the center of the floating base in the x direction by the following laws</p>
<disp-formula id="E16"><mml:math id="M46"><mml:mtable columnalign="left"><mml:mtr><mml:mtd columnalign="left"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>q</mml:mi></mml:mstyle></mml:mrow><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>5</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">des</mml:mtext></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">ball</mml:mtext></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">ball</mml:mtext></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>&#x01E61;</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">base</mml:mtext></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>q</mml:mi></mml:mstyle></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>5</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">base</mml:mtext></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mi>q</mml:mi></mml:mstyle></mml:mrow><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>5</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic><bold>q</bold></italic><sub>(5)</sub> denotes the pitch angle of the floating base of the robot. Hence, the controller aims to regulate the ball at the target position (<inline-formula><mml:math id="M47"><mml:msubsup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mo>*</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>) with the PD gain <inline-formula><mml:math id="M48"><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">ball</mml:mtext></mml:mstyle></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula><mml:math id="M49"><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">ball</mml:mtext></mml:mstyle></mml:mrow></mml:msubsup></mml:math></inline-formula>, and to keep the floating base horizontal (<italic><bold>q</bold></italic><sub>(5)</sub> &#x0003D; 0) wit the PD gain <inline-formula><mml:math id="M50"><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">base</mml:mtext></mml:mstyle></mml:mrow></mml:msubsup></mml:math></inline-formula>, <inline-formula><mml:math id="M51"><mml:msubsup><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">base</mml:mtext></mml:mstyle></mml:mrow></mml:msubsup></mml:math></inline-formula>. The signs depend on the positive directions of the predefined coordinates. In addition, the state <italic>s</italic><sub><italic>b</italic></sub> is updated by a self-developed tactile sensor (Zhao et al., <xref ref-type="bibr" rid="B38">2022</xref>) by Tencent Robotics X.</p>
<p>First, with the initial controller, the robot keeps moving forward as shown in <xref ref-type="fig" rid="F13">Figure 13</xref>. In consequence, when the bottle is placed on the top, the overlarge relative velocity between the robot and the bottle is a destructive initial condition for the bottle balancing task. As shown in the figure, the control is not converging, and the bottle drops in 2 s.</p>
<fig id="F13" position="float">
<label>Figure 13</label>
<caption><p>Still images and real-time data obtained during bottle balancing using the initial controller. Many more maneuvers in action and experimental data are shown in the accompanying video.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0013.tif"/>
</fig>
<p>Next, with the AOOR, the robot almost stands still, so the ignorable relative velocity provides an ideal initial condition for the bottle balancing task. As shown in <xref ref-type="fig" rid="F14">Figure 14</xref>, the bottle is controlled to the middle of the top. Combining with the mobility over complex terrains, this result shows the possibility to apply the wheel-legged robot to deliver goods for which the contact with the robot is not closed.</p>
<fig id="F14" position="float">
<label>Figure 14</label>
<caption><p>Still images and real-time data obtained during bottle balancing using the AOOR. Many more maneuvers in action and experimental data are shown in the accompanying video.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fnbot-16-1102259-g0014.tif"/>
</fig></sec>
</sec>
<sec sec-type="conclusions" id="s5">
<title>5. Conclusion</title>
<p>The mismatch between the ideal modeling in simulation and the real robot would cause the deterioration of the control performance. This is reflected in the experiments of our previous works, where the robot is balanced but cannot stand still without extra manual adjustment. Moreover, it is also troublesome to deal with the possible variations in the robot dynamics during the operation caused by both internal and external factors. To solve these problems, the idea of AOOR in the author&#x00027;s previous publication is applied in the balance controller design of the wheel-legged robot Ollie. In the experiments, by a training process of 6 s using the AOOR, the optimality of the controller is preserved when the working condition changes. In addition, the noticed problems in the previous works are solved, where the robot can stand still when it is at different heights. Furthermore, more challenging experiments are designed to test the AOOR-based controller by adding an eccentric heavy load to the robot, and by driving the robot on a slope. Finally, the proposed AOOR-based controller improves the success rate when the robot is balancing a cylinder water bottle on the top cover. This result makes it possible to apply the robot to deliver goods for which the limitation on the shape is relaxed.</p>
<p>Several feasible future studies would be interesting to further improve the control performance. In this paper, the working condition of the robot is changed during operation but is not time-varying. In the case of time-varying disturbances, it is possible to extend the AOOR algorithm to include the output regulation term that deals with time-varying disturbances. Moreover, in our previous research, the robot could be stabilized from arbitrary (unstable) input by the VI algorithm. Hence, it is also interesting to explore a VI-based AOOR algorithm to regulate the robot to its equilibrium point from arbitrary input. Finally, the robot works in its linearizable region in this work. However, for a wider working range or for more complex robotic systems, it is worth studying to extend the AOOR to nonlinear systems by combining the nonlinear ADP and nonlinear output regulation, where the computational efficiency would be a core issue.</p></sec>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/<xref ref-type="supplementary-material" rid="SM1">Supplementary material</xref>, further inquiries can be directed to the corresponding author.</p></sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>JZ and ZL proposed the theory, conducted the experiment, and wrote the manuscript. SW proposed the general idea of this theory and its application to the robot. SW and YZ supervised this work and revised the manuscript. YD and JT designed and fabricated the tactile sensor on the robot. RZ designed the data collection board of the tactile sensor. JL and KC designed and integrated the hardware and embedded system of the robot. DZ designed and maintained the mechanical system of the robot. JH revised the manuscript. WG discussed the theory and revised the manuscript. All authors contributed to the article and approved the submitted version.</p>
</sec>
</body>
<back>
<ack><p>The authors acknowledge Leilei Cui, Prof. Zhong-Ping Jiang from New York University and Dr. Zhengyou Zhang from Tencent Robotics X for their useful suggestions and discussions, and Haitao Wang, Jiahao Wang from Tencent Robotics X for their generous help and assistance in the system integration and experiments.</p>
</ack>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of interest</title>
<p>JZ, ZL, SW, YD, RZ, JL, DZ, KC, and YZ are employed by Tencent Holdings. The remaining authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s8">
<title>Publisher&#x00027;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<sec sec-type="supplementary-material" id="s9">
<title>Supplementary material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fnbot.2022.1102259/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fnbot.2022.1102259/full#supplementary-material</ext-link></p>
<supplementary-material xlink:href="Video_1.MP4" id="SM1" mimetype="video/mp4" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>

<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Ackerman</surname> <given-names>E.</given-names></name></person-group> (<year>2021</year>). <source>Tencent&#x00027;s New Wheeled Robot Flicks Its Tail to do Backflips. IEEE Spectrum</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://spectrum.ieee.org/tencents-new-wheeled-robot-flicks-its-tail-to-do-backflips">https://spectrum.ieee.org/tencents-new-wheeled-robot-flicks-its-tail-to-do-backflips</ext-link> (accessed December 22, 2022).</citation></ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ashurst</surname> <given-names>J.</given-names></name> <name><surname>Wagner</surname> <given-names>B.</given-names></name></person-group> (<year>2015</year>). <article-title>Injuries following segway personal transporter accidents: case report and review of the literature</article-title>. <source>Western J. Emergency Med</source>. 16, 693. <pub-id pub-id-type="doi">10.5811/westjem.2015.7.26549</pub-id><pub-id pub-id-type="pmid">26587093</pub-id></citation></ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bian</surname> <given-names>T.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2016</year>). <article-title>Value iteration and adaptive dynamic programming for data-driven adaptive optimal control design</article-title>. <source>Automatica</source> <volume>71</volume>, <fpage>348</fpage>&#x02013;<lpage>360</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2016.05.003</pub-id></citation></ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bian</surname> <given-names>T.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2022</year>). <article-title>Reinforcement learning and adaptive optimal control for continuous-time nonlinear systems: a value iteration approach</article-title>. <source>IEEE Trans. Neural Netw. Learn. Syst</source>. <volume>33</volume>, <fpage>2781</fpage>&#x02013;<lpage>2790</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2020.3045087</pub-id><pub-id pub-id-type="pmid">33417569</pub-id></citation></ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cui</surname> <given-names>L.</given-names></name> <name><surname>Wang</surname> <given-names>S.</given-names></name> <name><surname>Zhang</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>D.</given-names></name> <name><surname>Lai</surname> <given-names>J.</given-names></name> <name><surname>Zheng</surname> <given-names>Y.</given-names></name> <etal/></person-group>. (<year>2021</year>). <article-title>Learning-based balance control of wheel-legged robots</article-title>. <source>IEEE Rob. Autom. Lett</source>. <volume>6</volume>, <fpage>7667</fpage>&#x02013;<lpage>7674</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2021.3100269</pub-id></citation></ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Gao</surname> <given-names>J.</given-names></name> <name><surname>Ozbay</surname> <given-names>K.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2019</year>). <article-title>Reinforcement-learning-based cooperative adaptive cruise control of buses in the lincoln tunnel corridor with time-varying topology</article-title>. <source>IEEE Trans. Intell. Transport. Syst</source>. <volume>20</volume>, <fpage>3796</fpage>&#x02013;<lpage>3805</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2019.2895285</pub-id></citation></ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2016</year>). <article-title>Adaptive dynamic programming and adaptive optimal output regulation of linear systems</article-title>. <source>IEEE Trans. Automat. Contr</source>. <volume>61</volume>, <fpage>4164</fpage>&#x02013;<lpage>4169</lpage>. <pub-id pub-id-type="doi">10.1109/TAC.2016.2548662</pub-id><pub-id pub-id-type="pmid">34185654</pub-id></citation></ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2017</year>). <article-title>Nonlinear and adaptive suboptimal control of connected vehicles: a global adaptive dynamic programming approach</article-title>. <source>J. Intell. Rob. Syst</source>. <volume>85</volume>, <fpage>597</fpage>&#x02013;<lpage>611</lpage>. <pub-id pub-id-type="doi">10.1007/s10846-016-0395-3</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2022</year>). <article-title>Learning-based adaptive optimal output regulation of linear and nonlinear systems: an overview</article-title>. <source>Control Theory Technol</source>. <volume>20</volume>, <fpage>1</fpage>&#x02013;<lpage>19</lpage>. <pub-id pub-id-type="doi">10.1007/s11768-022-00081-3</pub-id></citation></ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name> <name><surname>Ozbay</surname> <given-names>K.</given-names></name></person-group> (<year>2016</year>). <article-title>Data-driven adaptive optimal control of connected vehicles</article-title>. <source>IEEE Trans. Intell. Transport. Syst</source>. <volume>18</volume>, <fpage>1122</fpage>&#x02013;<lpage>1133</lpage>. <pub-id pub-id-type="doi">10.1109/TITS.2016.2597279</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Guo</surname> <given-names>L.</given-names></name> <name><surname>Rizvi</surname> <given-names>S. A. A.</given-names></name> <name><surname>Lin</surname> <given-names>Z.</given-names></name></person-group> (<year>2021</year>). <article-title>Optimal control of a two-wheeled self-balancing robot by reinforcement learning</article-title>. <source>Int. J. Robust Nonlinear Control</source> <volume>31</volume>, <fpage>1885</fpage>&#x02013;<lpage>1904</lpage>. <pub-id pub-id-type="doi">10.1002/rnc.5058</pub-id></citation></ref>
<ref id="B12">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Huang</surname> <given-names>J.</given-names></name></person-group> (<year>2004</year>). <source>Nonlinear Output Regulation.</source> <publisher-loc>Philadelphia, PA</publisher-loc>: <publisher-name>Society for Industrial and Applied Mathematics</publisher-name>.</citation></ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Huang</surname> <given-names>J.</given-names></name> <name><surname>Ding</surname> <given-names>F.</given-names></name> <name><surname>Fukuda</surname> <given-names>T.</given-names></name> <name><surname>Matsuno</surname> <given-names>T.</given-names></name></person-group> (<year>2012</year>). <article-title>Modeling and velocity control for a novel narrow vehicle based on mobile wheeled inverted pendulum</article-title>. <source>IEEE Trans. Control Syst. Technol</source>. <volume>21</volume>, <fpage>1607</fpage>&#x02013;<lpage>1617</lpage>. <pub-id pub-id-type="doi">10.1109/TCST.2012.2214439</pub-id></citation></ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Huang</surname> <given-names>M.</given-names></name> <name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Wang</surname> <given-names>Y.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2019</year>). <article-title>Data-driven shared steering control of semi-autonomous vehicles</article-title>. <source>IEEE Trans. Hum. Mach. Syst</source>. <volume>49</volume>, <fpage>350</fpage>&#x02013;<lpage>361</lpage>. <pub-id pub-id-type="doi">10.1109/THMS.2019.2900409</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Isidori</surname> <given-names>A.</given-names></name> <name><surname>Byrnes</surname> <given-names>C. I.</given-names></name></person-group> (<year>1990</year>). <article-title>Output regulation of nonlinear systems</article-title>. <source>IEEE Trans. Automat. Contr</source>. <volume>35</volume>, <fpage>131</fpage>&#x02013;<lpage>140</lpage>. <pub-id pub-id-type="doi">10.1109/9.45168</pub-id></citation></ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>Y.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2012a</year>). <article-title>Computational adaptive optimal control for continuous-time linear systems with completely unknown dynamics</article-title>. <source>Automatica</source> <volume>48</volume>, <fpage>2699</fpage>&#x02013;<lpage>2704</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2012.06.096</pub-id></citation></ref>
<ref id="B17">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>Y.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2012b</year>). <article-title>Robust adaptive dynamic programming for nonlinear control design,</article-title> in <source>Proceedings of 2012 IEEE 51st IEEE Conference on Decision and Control (CDC)</source> (<publisher-loc>Maui, HI</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1896</fpage>&#x02013;<lpage>1901</lpage>.</citation></ref>
<ref id="B18">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>Y.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2017</year>). <source>Robust Adaptive Dynamic Programming.</source> <publisher-loc>Hoboken, NJ</publisher-loc>: <publisher-name>John Wiley Sons</publisher-name>.</citation></ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name> <name><surname>Jiang</surname> <given-names>Y.</given-names></name></person-group> (<year>2013</year>). <article-title>Robust adaptive dynamic programming for linear and nonlinear systems: an overview</article-title>. <source>Eur. J. Control</source> <volume>19</volume>, <fpage>417</fpage>&#x02013;<lpage>425</lpage>. <pub-id pub-id-type="doi">10.1016/j.ejcon.2013.05.017</pub-id></citation></ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jianwang</surname> <given-names>H.</given-names></name> <name><surname>Ramirez-Mendoza</surname> <given-names>R. A.</given-names></name></person-group> (<year>2022</year>). <article-title>Synthesis analysis for data driven model predictive control</article-title>. <source>Syst. Sci. Control Eng</source>. <volume>10</volume>, <fpage>79</fpage>&#x02013;<lpage>89</lpage>. <pub-id pub-id-type="doi">10.1080/21642583.2022.2039321</pub-id></citation></ref>
<ref id="B21">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jung</surname> <given-names>S.</given-names></name> <name><surname>Kim</surname> <given-names>S. S.</given-names></name></person-group> (<year>2008</year>). <article-title>Control experiment of a wheel-driven mobile inverted pendulum using neural network</article-title>. <source>IEEE Trans. Control Syst. Technol</source>. <volume>16</volume>, <fpage>297</fpage>&#x02013;<lpage>303</lpage>. <pub-id pub-id-type="doi">10.1109/TCST.2007.903396</pub-id></citation></ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kleinman</surname> <given-names>D.</given-names></name></person-group> (<year>1968</year>). <article-title>On an iterative technique for Riccati equation computations</article-title>. <source>IEEE Trans. Automat. Contr</source>. <volume>13</volume>, <fpage>114</fpage>&#x02013;<lpage>115</lpage>. <pub-id pub-id-type="doi">10.1109/TAC.1968.1098829</pub-id></citation></ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Klemm</surname> <given-names>V.</given-names></name> <name><surname>Morra</surname> <given-names>A.</given-names></name> <name><surname>Gulich</surname> <given-names>L.</given-names></name> <name><surname>Mannhart</surname> <given-names>D.</given-names></name> <name><surname>Rohr</surname> <given-names>D.</given-names></name> <name><surname>Kamel</surname> <given-names>M.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>LQR-assisted whole-body control of a wheeled bipedal robot with kinematic loops</article-title>. <source>IEEE Rob. Automat. Lett</source>. <volume>5</volume>, <fpage>3745</fpage>&#x02013;<lpage>3752</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2020.2979625</pub-id></citation></ref>
<ref id="B24">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Lauwers</surname> <given-names>T. B.</given-names></name> <name><surname>Kantor</surname> <given-names>G. A.</given-names></name> <name><surname>Hollis</surname> <given-names>R. L.</given-names></name></person-group> (<year>2006</year>). <article-title>A dynamically stable single-wheeled mobile robot with inverse mouse-ball drive,</article-title> in <source>Proceedings of 2006 IEEE International Conference on Robotics and Automation, 2006. ICRA 2006</source> (<publisher-loc>Orlando, FL</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>2884</fpage>&#x02013;<lpage>2889</lpage>.</citation></ref>
<ref id="B25">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Lewis</surname> <given-names>F.</given-names></name> <name><surname>Syrmos</surname> <given-names>V.</given-names></name> <name><surname>Syrmos</surname> <given-names>V.</given-names></name></person-group> (<year>1995</year>). <source>Optimal Control. A Wiley-Interscience Publication.</source> <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Wiley</publisher-name>.</citation></ref>
<ref id="B26">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Murtaza</surname> <given-names>M. A.</given-names></name> <name><surname>Azimi</surname> <given-names>V.</given-names></name> <name><surname>Hutchinson</surname> <given-names>S.</given-names></name></person-group> (<year>2020</year>). <article-title>Feedback whole-body control of wheeled inverted pendulum humanoids using operational space,</article-title> in <source>Proceedings of 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</source> (<publisher-loc>Las Vegas, NV</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>7470</fpage>&#x02013;<lpage>7476</lpage>.</citation></ref>
<ref id="B27">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Nagarajan</surname> <given-names>U.</given-names></name> <name><surname>Kim</surname> <given-names>B.</given-names></name> <name><surname>Hollis</surname> <given-names>R.</given-names></name></person-group> (<year>2012</year>). <article-title>Planning in high-dimensional shape space for a single-wheeled balancing mobile robot with arms,</article-title> in <source>Proceedings of 2012 IEEE International Conference on Robotics and Automation</source> (<publisher-loc>Saint Paul, MN</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>130</fpage>&#x02013;<lpage>135</lpage>.</citation></ref>
<ref id="B28">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pang</surname> <given-names>B.</given-names></name> <name><surname>Bian</surname> <given-names>T.</given-names></name> <name><surname>Jiang</surname> <given-names>Z.-P.</given-names></name></person-group> (<year>2022</year>). <article-title>Robust policy iteration for continuous-time linear quadratic regulation</article-title>. <source>IEEE Trans. Automat. Contr</source>. <volume>67</volume>, <fpage>504</fpage>&#x02013;<lpage>511</lpage>. <pub-id pub-id-type="doi">10.1109/TAC.2021.3085510</pub-id></citation></ref>
<ref id="B29">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Qasem</surname> <given-names>O.</given-names></name> <name><surname>Gao</surname> <given-names>W.</given-names></name> <name><surname>Bian</surname> <given-names>T.</given-names></name></person-group> (<year>2021</year>). <article-title>Adaptive optimal control of continuous-time linear systems via hybrid iteration,</article-title> in <source>Proceedings of 2021 IEEE Symposium Series on Computational Intelligence (SSCI)</source> (<publisher-loc>Orlando, FL</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>01</fpage>&#x02013;<lpage>07</lpage>.</citation></ref>
<ref id="B30">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Raudys</surname> <given-names>A.</given-names></name> <name><surname>&#x00160;ubonien&#x00117;</surname> <given-names>A.</given-names></name></person-group> (<year>2020</year>). <article-title>A review of self-balancing robot reinforcement learning algorithms,</article-title> in <source>Proceedings of International Conference on Information and Software Technologies</source> (<publisher-loc>Kaunas</publisher-loc>), <fpage>159</fpage>&#x02013;<lpage>170</lpage>.</citation></ref>
<ref id="B31">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Raza</surname> <given-names>F.</given-names></name> <name><surname>Zhu</surname> <given-names>W.</given-names></name> <name><surname>Hayashibe</surname> <given-names>M.</given-names></name></person-group> (<year>2021</year>). <article-title>Balance stability augmentation for wheel-legged biped robot through arm acceleration control</article-title>. <source>IEEE Access</source> <volume>9</volume>, <fpage>54022</fpage>&#x02013;<lpage>54031</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2021.3071055</pub-id></citation></ref>
<ref id="B32">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>S.</given-names></name> <name><surname>Cui</surname> <given-names>L.</given-names></name> <name><surname>Zhang</surname> <given-names>J.</given-names></name> <name><surname>Lai</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>D.</given-names></name> <name><surname>Chen</surname> <given-names>K.</given-names></name> <etal/></person-group>. (<year>2021</year>). <article-title>Balance control of a novel wheel-legged robot: design and experiment,</article-title> in <source>Proceedings of 2021 International Conference on Robotics and Automation</source> (<publisher-loc>Xian</publisher-loc>), <fpage>6782</fpage>&#x02013;<lpage>6788</lpage>.</citation></ref>
<ref id="B33">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Willems</surname> <given-names>J. C.</given-names></name> <name><surname>Rapisarda</surname> <given-names>P.</given-names></name> <name><surname>Markovsky</surname> <given-names>I.</given-names></name> <name><surname>De Moor</surname> <given-names>B. L.</given-names></name></person-group> (<year>2005</year>). <article-title>A note on persistency of excitation</article-title>. <source>Syst. Control Lett</source>. <volume>54</volume>, <fpage>325</fpage>&#x02013;<lpage>329</lpage>. <pub-id pub-id-type="doi">10.1016/j.sysconle.2004.09.003</pub-id></citation></ref>
<ref id="B34">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zafar</surname> <given-names>M.</given-names></name> <name><surname>Hutchinson</surname> <given-names>S.</given-names></name> <name><surname>Theodorou</surname> <given-names>E. A.</given-names></name></person-group> (<year>2019</year>). <article-title>Hierarchical optimization for whole-body control of wheeled inverted pendulum humanoids,</article-title> in <source>Proceedings of 2019 International Conference on Robotics and Automation (ICRA)</source> (<publisher-loc>Montreal, QC</publisher-loc>), <fpage>7535</fpage>&#x02013;<lpage>7542</lpage>.</citation></ref>
<ref id="B35">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zambella</surname> <given-names>G.</given-names></name> <name><surname>Lentini</surname> <given-names>G.</given-names></name> <name><surname>Garabini</surname> <given-names>M.</given-names></name> <name><surname>Grioli</surname> <given-names>G.</given-names></name> <name><surname>Catalano</surname> <given-names>M. G.</given-names></name> <name><surname>Palleschi</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2019</year>). <article-title>Dynamic whole-body control of unstable wheeled humanoid robots</article-title>. <source>IEEE Rob. Automat. Lett</source>. <volume>4</volume>, <fpage>3489</fpage>&#x02013;<lpage>3496</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2019.2927961</pub-id></citation></ref>
<ref id="B36">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>C.</given-names></name> <name><surname>Liu</surname> <given-names>T.</given-names></name> <name><surname>Song</surname> <given-names>S.</given-names></name> <name><surname>Meng</surname> <given-names>M. Q.-H.</given-names></name></person-group> (<year>2019</year>). <article-title>System design and balance control of a bipedal leg-wheeled robot,</article-title> in <source>Proceedings of 2019 IEEE International Conference on Robotics and Biomimetics (ROBIO)</source> (<publisher-loc>Dali</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1869</fpage>&#x02013;<lpage>1874</lpage>.<pub-id pub-id-type="pmid">22256154</pub-id></citation></ref>
<ref id="B37">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>J.</given-names></name> <name><surname>Wang</surname> <given-names>S.</given-names></name> <name><surname>Wang</surname> <given-names>H.</given-names></name> <name><surname>Lai</surname> <given-names>J.</given-names></name> <name><surname>Bing</surname> <given-names>Z.</given-names></name> <name><surname>Jiang</surname> <given-names>Y.</given-names></name> <etal/></person-group>. (<year>2022</year>). <article-title>An adaptive approach to whole-body balance control of wheel-bipedal robot Ollie,</article-title> in <source>Proceedings of 2022 IEEE/RSJ International Conference on Intelligent Robots and Systems</source> (<publisher-loc>Kyoto</publisher-loc>: <publisher-name>IEEE</publisher-name>).</citation></ref>
<ref id="B38">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhao</surname> <given-names>Z.</given-names></name> <name><surname>Tang</surname> <given-names>J.</given-names></name> <name><surname>Yuan</surname> <given-names>J.</given-names></name> <name><surname>Li</surname> <given-names>Y.</given-names></name> <name><surname>Dai</surname> <given-names>Y.</given-names></name> <name><surname>Yao</surname> <given-names>J.</given-names></name> <etal/></person-group>. (<year>2022</year>). <article-title>Large-scale integrated flexible tactile sensor array for sensitive smart robotic touch</article-title>. <source>ACS Nano</source> <volume>16</volume>, <fpage>16784</fpage>&#x02013;<lpage>16795</lpage>. <pub-id pub-id-type="doi">10.1021/acsnano.2c06432</pub-id><pub-id pub-id-type="pmid">36166598</pub-id></citation></ref>
<ref id="B39">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhou</surname> <given-names>H.</given-names></name> <name><surname>Li</surname> <given-names>X.</given-names></name> <name><surname>Feng</surname> <given-names>H.</given-names></name> <name><surname>Li</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>S.</given-names></name> <name><surname>Fu</surname> <given-names>Y.</given-names></name></person-group> (<year>2019</year>). <article-title>Model decoupling and control of the wheeled humanoid robot moving in sagittal plane,</article-title> in <source>Proceedings of 2019 IEEE-RAS 19th International Conference on Humanoid Robots (Humanoids)</source> (<publisher-loc>Toronto, ON</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x02013;<lpage>6</lpage>.</citation></ref>
<ref id="B40">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhou</surname> <given-names>H.</given-names></name> <name><surname>Yu</surname> <given-names>H.</given-names></name> <name><surname>Li</surname> <given-names>X.</given-names></name> <name><surname>Feng</surname> <given-names>H.</given-names></name> <name><surname>Zhang</surname> <given-names>S.</given-names></name> <name><surname>Fu</surname> <given-names>Y.</given-names></name></person-group> (<year>2021</year>). <article-title>Configuration transformation of the wheel-legged robot using inverse dynamics control,</article-title> in <source>Proceedings of 2021 International Conference on Robotics and Automation</source>, <fpage>3091</fpage>&#x02013;<lpage>3096</lpage>.</citation></ref>
</ref-list> 
</back>
</article>