<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Bioeng. Biotechnol.</journal-id>
<journal-title>Frontiers in Bioengineering and Biotechnology</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Bioeng. Biotechnol.</abbrev-journal-title>
<issn pub-type="epub">2296-4185</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">771415</article-id>
<article-id pub-id-type="doi">10.3389/fbioe.2021.771415</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Bioengineering and Biotechnology</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Online Learning for Foot Contact Detection of Legged Robot Based on Data Stream Clustering</article-title>
<alt-title alt-title-type="left-running-head">Liu et&#x20;al.</alt-title>
<alt-title alt-title-type="right-running-head">Online Learning Foot Contact Detection</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Liu</surname>
<given-names>Qingyu</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1468044/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Yuan</surname>
<given-names>Bing</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Yang</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1513890/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Key Laboratory of Metallurgical Equipment and Control Technology</institution>, <institution>Ministry of Education</institution>, <institution>Wuhan University of Science and Technology</institution>, <addr-line>Wuhan</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Hubei Key Laboratory of Mechanical Transmission and Manufacturing Engineering</institution>, <institution>Wuhan University of Science and Technology</institution>, <addr-line>Wuhan</addr-line>, <country>China</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>Golden Leaf Production and Manufacturing Center of China Tobacco Henan Industrial Co., Ltd.</institution>, <addr-line>Zhengzhou</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1254880/overview">Tinggui Chen</ext-link>, Zhejiang Gongshang University, China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1513144/overview">Caidong Wang</ext-link>, Zhengzhou University of Light Industry, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1554970/overview">Shinkichi Inagaki</ext-link>, Nanzan University, Japan</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Qingyu Liu, <email>liuqingyu@wust.edu.cn</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Bionics and Biomimetics, a section of the journal Frontiers in Bioengineering and Biotechnology</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>01</day>
<month>02</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>9</volume>
<elocation-id>771415</elocation-id>
<history>
<date date-type="received">
<day>06</day>
<month>09</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>14</day>
<month>12</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 Liu, Yuan and Wang.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Liu, Yuan and Wang</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&#x20;terms.</p>
</license>
</permissions>
<abstract>
<p>Foot contact detection is critical for legged robot running control using state machine, in which the controller uses different control modules in the leg flight phase and landing phase. This paper presents an online learning framework to improve the rapidity of foot contact detection in legged robot running. In this framework, the Gaussian mixture model with three sub-components is adopted to learn the contact data vectors corresponding to running on flat ground, running upstairs, and running downstairs. An online data stream learning algorithm is used to update the model. To deal with the difficulty in obtaining contact data at landing moment online, a &#x201c;trace back&#x201d; module is designed to trace back the contact data in the memory stack until the data meet with the probability contact criterion. To test if the foot is in contact with the ground, a projection method is proposed. The acquiring data vector during the leg flight phase is projected onto an independent random vector space, and the contact event is triggered if all projected random variables fall within 1.5<italic>&#x3c3;</italic> of the corresponding Gaussian distribution. Experiments on a legged robot show that the presented algorithm can predict the foot contact 16&#xa0;ms in advance compared with the prediction using only leg force, which will ease the controller design and enhance the stability of legged robot control.</p>
</abstract>
<kwd-group>
<kwd>legged robot</kwd>
<kwd>contact detection</kwd>
<kwd>online learning</kwd>
<kwd>data stream clustering</kwd>
<kwd>Gaussian mixture model</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>Introduction</title>
<p>The ability to negotiate unstructured terrain is the most significant advantages of the legged robot compared with wheeled and tracked vehicles. Due to the discrete foot point characteristic in legged locomotion, like the human and other legged animals, the robot goes through a series of foot contact in locomotion. Based on different foot contact states, a finite state machine is usually adopted to identify the gait phases, and then different control modules will plan the leg motion trajectory to balance the robot. Thus, robust perception of the foot contact arises as a crucial ability in legged robot control. Though a force sensor mounted on the foot could be a straightforward solution (<xref ref-type="bibr" rid="B27">Wagner et&#x20;al., 2017</xref>), it is easily damaged due to the foot&#x2013;ground impact and the unknown rough terrain. Furthermore, the foot force sensor would increase the inertia of the&#x20;leg.</p>
<p>Rather than using an indirect perception method like visual sense (<xref ref-type="bibr" rid="B12">Jiang et at., 2021</xref>), the endpoint force estimator is a classical approach to detect the endpoint contact state (<xref ref-type="bibr" rid="B20">Morinaga and Kosuge, 2003</xref>; <xref ref-type="bibr" rid="B21">Ortenzi et&#x20;al., 2016</xref>; <xref ref-type="bibr" rid="B3">Camurri et&#x20;al., 2017</xref>). To avoid calculating the acceleration of the joint angle, a more feasible approach based on the generalized momentum is adopted (<xref ref-type="bibr" rid="B5">De Luca et&#x20;al., 2006</xref>; <xref ref-type="bibr" rid="B18">Manuelli and Tedrake, 2016</xref>). Considering the floating nature of the mobile robot trunk, <xref ref-type="bibr" rid="B7">Flacco et&#x20;al. (2016</xref>) developed a formulation of the residual based on the floating-base dynamics of the humanoid to estimate the external force. A further extension to the multi-contact situation was done by <xref ref-type="bibr" rid="B18">Manuelli and Tedrake (2016</xref>) on an atlas robot. Some other works can be used as reference (<xref ref-type="bibr" rid="B8">Haddadin et&#x20;al., 2008</xref>; <xref ref-type="bibr" rid="B15">Li et&#x20;al., 2019</xref>; <xref ref-type="bibr" rid="B6">Dong et&#x20;al., 2020</xref>; <xref ref-type="bibr" rid="B28">Wang et&#x20;al<italic>.</italic>, 2020</xref>; <xref ref-type="bibr" rid="B30">Yousefizadeh and Bak, 2020</xref>). The main drawback of these contact detection methods is that they only use the robot dynamic information, such as joint angle and angular velocity. These data are always noisy, and the kinetic parameters of the robot may change as the robot runs for a long time, which would degrade the detection performance.</p>
<p>To make a more robust contact prediction, data fusion in the probability framework was introduced by <xref ref-type="bibr" rid="B11">Hwangbo et&#x20;al. (2016</xref>). This approach fused dynamics, differential kinematics, and kinematics using a hidden Markov model (HMM) to infer the contact state. <xref ref-type="bibr" rid="B13">Kim and Lee (2017</xref>) used the IMU data of the human body, leg, and foot to predict the foot contact. The Kalman filter is another framework to fuse the acquired information (<xref ref-type="bibr" rid="B19">Miezal et&#x20;al., 2017</xref>; <xref ref-type="bibr" rid="B29">Yang et&#x20;al., 2019</xref>). <xref ref-type="bibr" rid="B3">Camurri et&#x20;al. (2017</xref>) used approximate ground reaction forces as input to a contact probability prior to determining if the foot is fully in contact with the ground. A most impressive work in this direction was presented by <xref ref-type="bibr" rid="B2">Bledt et&#x20;al.</xref> (<xref ref-type="bibr" rid="B2">2018b</xref>), and the contact detection algorithm had been applied to the MIT Cheetah 3 robot (<xref ref-type="bibr" rid="B1">Bledt et&#x20;al., 2018a</xref>). They used the extended Kalman filter to fuse the estimated leg force, gait phase, and leg height and achieved very high detection accuracy.</p>
<p>Though the current data fusion methods work well in foot contact detection, some model parameters need to be selected very carefully, and the robustness to robot kinetic parameters change is unknown. The learning approach provides a promising solution to this challenge. <xref ref-type="bibr" rid="B24">Rotella et&#x20;al. (2018</xref>) employed fuzzy C-means (FCM) clustering to differentiate contact from leaving states using the contact wrench and IMU data. <xref ref-type="bibr" rid="B23">Piperakis et&#x20;al. (2019</xref>) directly learned the gait phase by clustering, in which foot contact detection is an implied process. But both of the approaches need the measuring forces, and the clustering process is completely off-line. <xref ref-type="bibr" rid="B17">Ma et&#x20;al. (2019</xref>) and <xref ref-type="bibr" rid="B16">Lin et&#x20;al. (2021</xref>) trained a Gaussian mixture model (GMM) to cluster the contact data set. However, they both assumed the availability of a very sophisticated force and visual perception system. Neural networks are also used to learn robot contact (<xref ref-type="bibr" rid="B25">Sharkawy et&#x20;al., 2020</xref>). However, all of these learning algorithms were done off-line. In real legged robot application, the robot should deal with impact and unknown rough terrains, so a contact detection method which can adapt to changing robot parameters and environments is desirable.</p>
<p>The main contribution of this paper is to present an online learning framework for foot contact detection of a legged robot. The detection algorithm adapts the model parameters to different terrains for a fast and accurate detection. For online learning, a &#x201c;trace back&#x201d; scheme for an online contact data acquisition method is proposed. A projection technique is adopted for a fast prediction of the contact states based on the&#x20;GMM.</p>
</sec>
<sec sec-type="materials|methods" id="s2">
<title>Materials and Methods</title>
<sec id="s2-1">
<title>Robot</title>
<p>The proposed foot contact prediction framework is verified on an electric motor actuated hopping robot DynJump, as shown in <xref ref-type="fig" rid="F1">Figure&#x20;1</xref>. The hip joint is actuated directly by the motor while the knee joint is actuated through train driving. The parameters of the robot are listed in <xref ref-type="table" rid="T1">Table&#x20;1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Experimental platform.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g001.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Parameters of the&#x20;robot.</p>
</caption>
<table>
<thead>
<tr>
<td align="left">Item</td>
<td align="center">Type/Value</td>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Total mass</td>
<td align="center">5&#xa0;kg</td>
</tr>
<tr>
<td align="left">Structural material</td>
<td align="center">Aluminum alloy</td>
</tr>
<tr>
<td align="left">Upper leg length</td>
<td align="center">0.25&#xa0;m</td>
</tr>
<tr>
<td align="left">Lower leg length</td>
<td align="center">0.24&#xa0;m</td>
</tr>
<tr>
<td align="left">Foot material</td>
<td align="center">Rubber</td>
</tr>
<tr>
<td align="left">Knee train gear ratio</td>
<td align="center">2.1</td>
</tr>
<tr>
<td align="left">Power supply</td>
<td align="center">48&#xa0;V</td>
</tr>
<tr>
<td align="left">Motor mass</td>
<td align="center">1.5&#xa0;kg</td>
</tr>
<tr>
<td align="left">Max motor stall torque</td>
<td align="center">48.8&#xa0;Nm at 48&#xa0;V</td>
</tr>
<tr>
<td align="left">Continuous motor stall torque</td>
<td align="center">20.5&#xa0;Nm at 8.4&#xa0;V</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>To focus on the study of foot contact prediction, the robot hopping motion is constrained in a vertical direction through a guide rail. The control board communicates to the motor driver through the CAN protocol at 250&#xa0;Hz.</p>
</sec>
<sec id="s2-2">
<title>Robot Control</title>
<p>As we only focus on verifying the foot contact detection, a classical finite state machine is adopted as a high-level control scheme. The robot states are divided into the flight phase and contact phase based on the foot contact states as shown in <xref ref-type="fig" rid="F2">Figure&#x20;2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Robot states in hopping.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g002.tif"/>
</fig>
<p>In the flight phase, a pre-calculated foot point trajectory is tracked through a position control scheme. The controller would bring the leg length to a predefined nominal leg length and leg angle for the next landing. After the leg landing, the leg motion is planned based on a virtual spring&#x2013;mass model (<xref ref-type="bibr" rid="B22">Piovan and Byl, 2015</xref>). The detection algorithm for the state switching control will be discussed in the following section. The robot trunk vertical velocity is estimated at the landing moment to initialize the calculation of the robot trajectory after landing. As the robot is only subjected to the force of gravity in the flight phase, the initial velocity can be derived as<disp-formula id="e1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mtext>c</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo>&#x22c5;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mtext>c</mml:mtext>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <italic>v</italic>
<sub>c</sub> and <italic>t</italic>
<sub>c</sub> are the velocity and time at the moment the foot contacts the ground and <italic>g</italic> is the gravity constant. For determining the exact moment when the foot leaves the ground, we actively shorten the leg at the later stage of the contact phase, and the corresponding time and robot vertical velocity are recorded as <italic>t</italic>
<sub>0</sub> and&#x20;<italic>v</italic>
<sub>0</sub>.</p>
</sec>
<sec id="s2-3">
<title>Probability Contact Prediction Model</title>
<p>As the contact is an impact between the robot and the environment, variables associated with the interaction can be used to indicate the contact state of the foot. Though foot force can reflect the physical interaction between the foot and the ground, we can only estimate it based on the dynamics of the leg due to the absence of the foot force sensor. In robot dynamics, sensor noise and transmission clearance may introduce errors in foot force estimation. Furthermore, the kinetic parameters are always changing and unknown, so it is not very reliable if we only used the foot force to predict the contact. Although we can adopt a higher threshold to increase the reliability, a larger time delay in contact detection will degenerate the robot control performance.</p>
<p>The foot height and the gait cycle represent the kinematic interaction between the robot and the environment. For a running gait of the robot, like trotting gait, the robot will completely leave the ground during running, and the accurate foot height is difficult to obtain based on proprioceptive perception. Similarly, the gait cycle is highly dependent on the terrain and gait. So limited prediction performance would be obtained if we used kinematics information&#x20;only.</p>
<p>Based on the analysis above, an indicator vector <bold>
<italic>s</italic>
</bold>&#xa0;&#x3d;&#xa0;[f<sub>y</sub>h<sub>foot</sub>t<sub>g</sub>]<sup>T</sup> is defined to estimate the contact probability of the foot contact. Here f<sub>y</sub> is the vertical foot force, h<sub>foot</sub> is the foot height relative to the leaving ground level, and t<sub>g</sub> is the gait cycle. Though Kalman filter is suitable for fusing the measuring data, a method which can learn from real data online would have advantages in environment adaption and be more robust to robot kinetic parameter uncertainty.</p>
<sec id="s2-3-1">
<title>The GMM</title>
<p>To deal with different types of terrain, a GMM is adopted. Based on the insight into the legged locomotion in different terrains, we divide the terrains into three categories, and each is modeled using a basic Gaussian model, which is a sub-component of the&#x20;GMM.</p>
<p>One basic Gaussian model accounts for the flat ground that has different roughness, and the others correspond to the robot going upstairs and downstairs as shown in <xref ref-type="fig" rid="F3">Figure&#x20;3</xref>. We can easily obtain the foot contact probability of incoming data as<disp-formula id="e2">
<mml:math id="m2">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:mi>&#x398;</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>K</mml:mi>
</mml:munderover>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>where the <inline-formula id="inf1">
<mml:math id="m3">
<mml:mi>&#x398;</mml:mi>
</mml:math>
</inline-formula> is the model parameters, <italic>&#x3c0;</italic> is the weight of the particular Gaussian model, <bold>
<italic>&#x3bc;</italic>
</bold> is the mean value, <bold>
<italic>&#x3a3;</italic>
</bold> is the covariance matrix, <italic>K</italic> is the number of the sub-component of the GMM. And the posterior probability of the data <italic>x</italic> belonging to component <italic>k</italic>, which is also known as responsibilities <italic>p</italic>(<italic>k</italic>&#x7c;<bold>
<italic>x</italic>
</bold>), is given by Bayes&#x2019; theorem as<disp-formula id="e3">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Three categories of terrain in hopping.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g003.tif"/>
</fig>
</sec>
<sec id="s2-3-2">
<title>Indicator Vector Calculation</title>
<p>
<italic>Foot point force</italic>: The foot force is a primary indicator of the contact. A generalized momentum method as in <xref ref-type="bibr" rid="B5">De Luca et&#x20;al. (2006</xref>) is used to estimate the joint torque <inline-formula id="inf2">
<mml:math id="m5">
<mml:mrow>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3c4;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mo>&#xa0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> corresponding to the external force on the foot point; it follows that<disp-formula id="e4">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3bb;</mml:mi>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x222b;</mml:mo>
</mml:mstyle>
<mml:mn>0</mml:mn>
<mml:mi>t</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>where <inline-formula id="inf3">
<mml:math id="m7">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the joint angles, <italic>n</italic> is the number of degrees of freedom, <bold>
<italic>p</italic>
</bold>&#xa0;&#x3d;&#xa0;<bold>
<italic>Mq</italic>
</bold> is the generalized momentum, and <inline-formula id="inf4">
<mml:math id="m8">
<mml:mrow>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xa0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is a factorization of the Coriolis terms, which makes <inline-formula id="inf5">
<mml:math id="m9">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mo>&#xa0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> a skew-symmetric matrix. Then the estimated foot point force <inline-formula id="inf6">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo>&#xa0;</mml:mo>
<mml:msub>
<mml:mi>f</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mo>&#xa0;</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated using the Jacobian matrix <italic>J</italic> as<disp-formula id="e5">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">J</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>We hypothesize that there is no singular position during the flight phase, as the leg is always in a bent position during hopping.</p>
<p>
<italic>Foot height</italic>: As the terrains are unknown, we estimate the foot height relative to the leaving ground level. If the ground is flat, the foot is expected to land when the height is back to zero, and if there is a step, the height at landing would be significantly higher or lower than zero. The foot height can be expressed as<disp-formula id="e6">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>where <italic>v</italic>
<sub>0</sub> is the initial vertical speed of the robot trunk, <italic>g</italic> is the gravity acceleration, <italic>t</italic> is the time relative to the leaving ground moment, <italic>l</italic>
<sub>
<italic>t</italic>
</sub> is the leg length function depending on the joint angle, and <italic>l</italic>
<sub>0</sub> is the initial leg length. We should note that as we assume that the robot runs in a sagittal plane and the pitch angle is constrained, <italic>v</italic>
<sub>0</sub> can be derived by taking the derivative of the function&#x20;<italic>l</italic>
<sub>
<italic>t</italic>
</sub>.</p>
<p>
<italic>Gait cycle</italic>: In a stable gait, the robot movement is always periodic, and therefore, the foot contact event is triggered periodically. In the viewpoint of probability, a cyclic movement means that a contact event most likely happens after a specific period of time from the previous foot contact. Thus, a gait time is adopted as one of the indicators for foot contact prediction. The gait cycle is calculated as in (7).<disp-formula id="e7">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>g</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mtext>c</mml:mtext>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>where <italic>t</italic> is the robot running time and <italic>t</italic>
<sub>c</sub> is the time of the previous foot contact.</p>
</sec>
<sec id="s2-3-3">
<title>Foot Contact Prediction</title>
<p>When the robot is in the flight phase, the robot should estimate the contact state based on the sampling indicator vector calculated in previous section. With the GMM, the probability density of the newly coming data vector can be obtained. However, it is tedious to integrate the GMM density function to gain the distribution function, which means that it is computationally inefficient to infer the contact state by the probability density of the random vector. In this paper, we project the indicator vector along the direction which decouples the random vector into three independent random variables.</p>
<p>The projection matrix is determined using the covariance matrix in GMM (<xref ref-type="bibr" rid="B9">Horn and Johnson, 2012</xref>). As the covariance matrix is a semi-definite symmetric matrix, there exists a matrix <bold>
<italic>C</italic>
</bold> that satisfied <bold>
<italic>D</italic>
</bold>&#xa0;&#x3d;&#xa0;<bold>
<italic>C&#x3a3;C</italic>
</bold>
<sup>T</sup>, where <bold>
<italic>D</italic>
</bold> is a diagonal matrix with diagonal entries <inline-formula id="inf7">
<mml:math id="m14">
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf8">
<mml:math id="m15">
<mml:mrow>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf9">
<mml:math id="m16">
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>3</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> and <bold>
<italic>&#x3a3;</italic>
</bold> is the covariance matrix. The matrix <inline-formula id="inf10">
<mml:math id="m17">
<mml:mi mathvariant="bold-italic">C</mml:mi>
</mml:math>
</inline-formula> can be determined using the elementary transformation. Then the random vector can be projected as<disp-formula id="e8">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">Cs</mml:mi>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>And the mean of the random variable vector of <bold>
<italic>s</italic>
</bold>
<sub>p</sub> is <bold>
<italic>C&#x3bc;</italic>
</bold>, and <italic>&#x3bc;</italic> is the mean before projection. The three elements in vector <bold>
<italic>s</italic>
</bold>
<sub>p</sub> are three independent random variables, and the variances are <inline-formula id="inf11">
<mml:math id="m19">
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf12">
<mml:math id="m20">
<mml:mrow>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf13">
<mml:math id="m21">
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c3;</mml:mi>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#xa0;</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>. So we define the contact vector set S<sub>c</sub> as<disp-formula id="e9">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mtext>c</mml:mtext>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mo>&#x7c;</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">Cs</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1.5</mml:mn>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1.5</mml:mn>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#xa0;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mo>&#x7c;</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1.5</mml:mn>
<mml:msub>
<mml:mi>&#x3c3;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>where <inline-formula id="inf14">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf15">
<mml:math id="m24">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mtext>&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>&#x3bc;</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>. The definition means that if the three projected random variables are all located in 1.5<italic>&#x3c3;</italic> of the Gaussian probability density function, we assume that the leg contact event is triggered.</p>
</sec>
</sec>
<sec id="s2-4">
<title>Initial Model Parameter Training</title>
<p>Though we expect that the robot can adapt to different terrains online, an off-line learning to obtain a group of initial parameters can speed up the online learning process. We used the classic two-step expectation maximization (EM) method for training. The two steps can be summarized as follows.</p>
<p>
<italic>E-step</italic>: The responsibilities can be computed as<disp-formula id="e10">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b3;</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:msup>
<mml:mi>k</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mrow>
<mml:msup>
<mml:mi>k</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:msup>
<mml:mi>k</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>
<italic>M-step</italic>: The parameters in the Gaussian component can be calculated as<disp-formula id="e11">
<mml:math id="m26">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
<disp-formula id="e12">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>And for the next iteration,<disp-formula id="e13">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>N</mml:mi>
</mml:mfrac>
<mml:munder>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mi>i</mml:mi>
</mml:munder>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mi>N</mml:mi>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>In the data training procedure, a series of hopping experiments were conducted for data collection. The robot hopped on flat ground, upstairs, and downstairs. A high landing force threshold was adopted for reliable contact detection as the GMM had not yet been established. The threshold was determined based on the estimated foot force in a robot free-fall experiment, as shown in <xref ref-type="fig" rid="F4">Figure&#x20;4</xref>. The corresponding fly phase time, estimated leg force, and foot height were simultaneously recorded at 200&#xa0;Hz by the control board. We found that there was a non-negligible time delay in landing detection due to the high landing force threshold. We manually selected the contact data on the force cure after we collected all the experimental data. For each terrain, 30 contact data points were collected, and the learning process was done in the MATLAB 2018b environment.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Vertical foot force in free-fall experiment.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g004.tif"/>
</fig>
</sec>
<sec id="s2-5">
<title>Online Model Adaption for Different Terrains</title>
<p>As the terrain is unknown and the robot parameters may change over time, an online GMM adaption is desirable for robot control. As there are many online data stream clustering methods (<xref ref-type="bibr" rid="B14">Kokate et&#x20;al., 2018</xref>), we would focus on dealing with the outlier point caused by the chatter effect, which balances the response time and model stability. Another problem in online clustering for leg contact detection is how to identify the sensory data corresponding to the foot&#x2013;ground contact moment without the foot force sensor or external force sensors mounted on the ground. We cannot use the predicted contact results of GMM as the data are used for training the prediction model. A likelihood criterion of the foot contact event is used to find the exact contact data. This method would lead to a large time delay that cannot be used for contact prediction, but the data can then be used for online training of the&#x20;GMM.</p>
<p>Here we use a modified version of SWEM (<xref ref-type="bibr" rid="B4">Dang et&#x20;al., 2009</xref>). Three independent data sets are established corresponding to three GMM components. When the contact data were acquired, the probability density of the data in each of the three GMM components is calculated. The contact data would be put into the data set corresponding to the GMM component, which has the maximum probability density. When the number of newly arriving data in any of the three data sets reaches 5, the GMM will be updated as in the algorithm presented in this section.</p>
<p>We define that <italic>g</italic>(<italic>10</italic>) is the GMM of the data from the beginning 1 to <italic>N</italic>, and the newly arriving data are x<sub>N&#x2b;1</sub>, &#x22c5;&#x22c5;&#x22c5;, x<sub>N&#x2b;M</sub> as in <xref ref-type="bibr" rid="B26">Song and Wang (2005</xref>). Different from many other applications, only one contact datum is available in one gait cycle, so we define a time window with five data points, and only one basic Gaussian model is used to model the five data points. The maximum likelihood method is used to estimate the parameters.<disp-formula id="e14">
<mml:math id="m29">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>where <italic>j</italic> is the number of the parameters and L(<italic>&#x3b8;</italic>) is the likelihood function, <inline-formula id="inf16">
<mml:math id="m30">
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x220f;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. This calculation is conducted for every five newly arriving data. When we obtain the mean and variance matrix of the Gaussian model, a T<sup>2</sup> statistic testing for the equality of the mean to the existing mean value in GMM is conducted (<xref ref-type="bibr" rid="B26">Song and Wang, 2005</xref>). Once the mean value is tested to be equal to any existing basic model, the Gaussian model will be merged to the corresponding basic Gaussian sub-model in GMM with the rule<disp-formula id="e15">
<mml:math id="m31">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
<disp-formula id="e16">
<mml:math id="m32">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>j</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
<disp-formula id="e17">
<mml:math id="m33">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:msub>
<mml:mi>&#x3c0;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>where <bold>
<italic>&#x3bc;</italic>
</bold>
<sub>j</sub> and <bold>
<italic>&#x3a3;</italic>
</bold>
<sub>j</sub> are the mean and covariance of the <italic>j</italic>th sub-component of GMM; <italic>&#x3c0;</italic>
<sub>j</sub> is the weight of the <italic>j</italic>th sub-component in GMM; <bold>
<italic>&#x3bc;</italic>
</bold>, <bold>
<italic>&#x3a3;</italic>
</bold>, and <italic>&#x3c0;</italic> are the new mean, covariance, and weight, respectively; <italic>N</italic> is the total number of data that have been used for update; and <italic>M</italic>
<sub>
<italic>k</italic>
</sub> is the data number in the time window.</p>
<p>If the mean value is tested to be different from any basic Gaussian model in the GMM, the new Gaussian model will be labeled as a temporary outlier Gaussian model. For the outlier Gaussian model, it will also be merged to the nearest basic Gaussian sub-model in GMM, but a fading rule will be applied to it until it is determined as an outlier model or a shift of the existing basic Gaussian model. The merging procedure will be carried out in two&#x20;steps.</p>
<p>Firstly, the temporary outlier Gaussian model will be merged to the existing outlier Gaussian model with the fading rule as<disp-formula id="e18">
<mml:math id="m34">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
<disp-formula id="e19">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>where <bold>
<italic>&#x3bc;</italic>
</bold>
<sub>0</sub> and <bold>
<italic>&#x3a3;</italic>
</bold>
<sub>0</sub> are the mean and covariance of the existing outlier Gaussian model, respectively; <bold>
<italic>&#x3bc;</italic>
</bold>
<sub>k</sub> and <bold>
<italic>&#x3a3;</italic>
</bold>
<sub>k</sub> are the mean and covariance of the temporary outlier Gaussian model, respectively; <bold>
<italic>&#x3bc;</italic>
</bold> and <bold>
<italic>&#x3a3;</italic>
</bold> are the new mean and covariance, respectively; <italic>M</italic>
<sub>0</sub> is the total number of data in the outlier set; and <italic>&#x3bb;</italic> is the fading factor.</p>
<p>We should note that this procedure will be carried out in every model update no matter if the data are outliers or not. When the mean of the newly coming data is tested equal to the existing mean in GMM, the <bold>
<italic>&#x3bc;</italic>
</bold>
<sub>k</sub> and <bold>
<italic>&#x3a3;</italic>
</bold>
<sub>k</sub> in (18) and (19) are set to zero; thus, the existing <bold>
<italic>&#x3bc;</italic>
</bold>
<sub>0</sub> and <bold>
<italic>&#x3a3;</italic>
</bold>
<sub>0</sub> are faded down by factor <italic>&#x3bb;</italic>.</p>
<p>Secondly, the resulting new outlier model will be merged with the nearest basic Gaussian component. But the parameters <bold>
<italic>&#x3bc;</italic>
</bold>, <bold>
<italic>&#x3a3;</italic>,</bold> and <italic>&#x3c0;</italic> of the present basic Gaussian component are reserved in the memory. When the next time window data come, if it is tested equal to any basic Gaussian component, the model will be merged as formulas (15)&#x2013;(17), or if it is tested as an outlier model, the model will be moved to the outlier set and merged to the existing outlier model as formulas (18) and (19). Then the merged model will be merged with the nearest basic&#x20;model.</p>
<p>When the outlier data situation emerges three times in succession, we assume that a concept shift happens, which means that the terrain or gait changes. Then the corresponding outlier data will be moved out of the outlier set and merged to the nearest basic component. The resulting GMM is considered as a new initial model for the newly arriving data. On the other hand, if the outlier data situation does not emerge in three consecutive time windows, the mean and the covariance will soon decrease to zeros due to the fading factor.</p>
</sec>
<sec id="s2-6">
<title>Online Contact Data Acquisition</title>
<p>As we learn the contact model online without the force sensor mounted on the ground or foot, identifying which data are the contact data becomes a difficult task. Though the contact prediction module presented above will give an indication, we need to get the data in another way in order to update the prediction model and improve the prediction performance.</p>
<p>To collect the contact data, a &#x201c;trace back&#x201d; module is proposed. The algorithm includes two steps: firstly, we would detect the contact event using the GMM or leg force threshold, and then we would trace back from the contact event time to find the exact contact&#x20;data.</p>
<p>Two situations are considered in the contact event detection: one is when the contact is triggered by the GMM, and the other is when the contact is triggered by the estimated foot force. It is obvious when the contact event happens in the first situation as the GMM will give an indication. However, when the robot encounters a new terrain or if the robot is unstable, the estimated foot force will firstly trigger the contact event. A typical estimated foot force trajectory during hopping is shown in <xref ref-type="fig" rid="F5">Figure&#x20;5A</xref>. A fact we should note is that the estimated foot force changes to positive when the foot just leaves the ground, which is inconsistent with the physical truth as the foot force should either be negative or zero under the definition of foot force direction in this paper. This estimation bias occurs when the leg shortens rapidly to force the robot to enter the flight phase, which will converge to zero in about 20 sampling cycles before the next foot landing. A time criterion is added to filter this abnormal condition. A likelihood technique is used to determine if the contact event is triggered. The distribution function of the contact force is used to verify the contact probability at each time stamp. We test five consecutive foot force data to ensure that the contact event detection is reliable. The adopted distribution function is shown in <xref ref-type="fig" rid="F5">Figure&#x20;5B</xref>, and the contact event criterion is defined in (20).<disp-formula id="e20">
<mml:math id="m36">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x22c5;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0.01</mml:mn>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>where x<sub>p</sub> is the coming data corresponding to the present sampling time and x<sub>p&#x2212;n</sub> is the data at n previous sampling time. The criterion means that if the misjudgment probability is below the threshold in a five-sample time window, we assume that the foot is in contact with the ground in the present sampling time. During robot running, a sliding window containing five data points is built, and the data in the sliding window will be tested if they satisfy the criterion in (20) in every control cycle. As the contact test is a conservative estimation, the resulting contact moment is several time steps after the leg contact, which is the reason why we cannot use this method to indicate the leg contact event for robot control.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>
<bold>(A)</bold> Foot force during hopping. <bold>(B)</bold> Contact force distribution function.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g005.tif"/>
</fig>
<p>As shown in <xref ref-type="fig" rid="F6">Figure&#x20;6</xref>, as the lower point on the curve satisfies the contact criterion, a contact event happens. Once a contact event is confirmed, a &#x201c;trace back&#x201d; method is invoked to find the exact contact time moment. The contact probability is calculated in reverse order along the curve from the present data until the contact probability of the data is less than 0.5. The last data point in this procedure, with a probability of more than 0.5, will be adopted as the contact data. The &#x201c;trace back&#x201d; algorithm is shown in <xref ref-type="table" rid="T2">Table&#x20;2</xref>. In the algorithm, if the contact event is triggered, i.e.,&#x20;the trigger flag variable <italic>trigger</italic>&#xa0;&#x3d;&#xa0;1, a &#x201c;trace back&#x201d; procedure is employed to calculate the contact probability of <italic>F</italic>
<sub>p&#x2212;k</sub> until the corresponding probability is less than&#x20;0.5.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Trace-back scheme.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g006.tif"/>
</fig>
<table-wrap id="T2" position="float">
<label>Algorithm 1</label>
<caption>
<p>Table 2 Trace-back Algorithm</p>
</caption>
<table>
<tbody valign="top">
<tr>
<td>
<inline-graphic xlink:href="fbioe-09-771415-fx1.tif"/>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Once five contact data are collected, a local Gaussian model is built using (14). To determine which sub-component of the GMM is to be updated, a testing procedure is adopted to determine if the mean value of the new arriving data is equal to any of the existing sub-models. Here, we use Hotelling&#x2019;s T<sup>2</sup> test, which is applicable for multivariate normal data. The H0 hypothesis is the mean value of the contact data <italic>&#xb5;</italic>&#xa0;&#x3d;&#xa0;<italic>&#xb5;</italic>
<sub>j</sub>, where <italic>&#xb5;</italic>
<sub>j</sub> the is one of the mean values of the sub-component of the GMM. When the sampling size is small, the T<sup>2</sup> statistics can be expressed as<disp-formula id="e21">
<mml:math id="m37">
<mml:mrow>
<mml:msup>
<mml:mi>T</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x223C;</mml:mo>
<mml:mi>n</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3a3;</mml:mi>
<mml:mn>0</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3bc;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>where <italic>n</italic> is the number of the samples, <bold>
<italic>&#x3a3;</italic>
</bold>
<sub>0</sub> is the covariance matrix of the sub-model in GMM, and <inline-formula id="inf17">
<mml:math id="m38">
<mml:mrow>
<mml:mo>&#xa0;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the mean of the samples. If the H0 hypothesis is satisfied, we can derive that<disp-formula id="e22">
<mml:math id="m39">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mi>T</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x223c;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>where F<sub>d,n&#x2212;d</sub> refers to an <italic>F</italic> distribution with <italic>d</italic> numerator degrees of freedom and <italic>n</italic>&#xa0;&#x2212;&#xa0;<italic>d</italic> denominator degrees of freedom, <italic>n</italic> is number of the samples, and <italic>d</italic> is the dimension of the data vector. We can refer to the <italic>F</italic> distribution table to find out if the derived random variable in (22) obeys the <italic>F</italic> distribution, thus determining whether the H0 hypothesis is true. If the H0 hypothesis is true, the data will be used to update the GMM; otherwise, the data would be considered as outlier points if the mean is not equal to any means of the sub-components of the&#x20;GMM.</p>
</sec>
</sec>
<sec sec-type="results" id="s3">
<title>Results</title>
<sec id="s3-1">
<title>Hopping With Foot Force Contact Detection</title>
<p>For comparison, the robot hopping data of contact detection with only foot force were collected. The foot force threshold was 40&#xa0;N in the hopping experiment, which means that the landing control program would be triggered when the estimated foot force exceeded 40&#xa0;N. The threshold was selected based on experimental data, which could prevent an incorrect estimation of the contact state due to the evaluated error of the foot force and the noise in data measurement. A time criterion was added to the contact detection in this experiment, in which the contact event was triggered only 50&#xa0;ms after the leg left the ground. Hopping data on flat ground are shown in <xref ref-type="fig" rid="F7">Figure&#x20;7</xref>. Data of hopping upstairs and downstairs are shown in <xref ref-type="fig" rid="F8">Figure&#x20;8</xref>; the <italic>t</italic>
<sub>delay</sub> is the time delay between the leg in contact with the ground and the leg force exceeding 40&#xa0;N; <italic>t</italic>
<sub>u</sub> and <italic>t</italic>
<sub>d</sub> are the flight times of hopping upstairs and downstairs, respectively. The time delay is unavoidable because we have to ensure that the contact is not triggered by the noise or evaluated error. In hopping experiments, the time delay is about 16&#xa0;ms.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Contact detection with foot force on flat ground.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g007.tif"/>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Contact detection with foot force in hopping upstairs and downstairs.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g008.tif"/>
</fig>
</sec>
<sec id="s3-2">
<title>Initial GMM Training Through Hopping Data</title>
<p>To establish the initial GMM, we collected three groups of contact data, corresponding to hopping on flat ground, hopping upstairs, and hopping downstairs. In hopping-upstairs and hopping-downstairs experiments, we placed a wood plank under the foot when the robot was in the flight phase to mimic hopping upstairs and took away the plank after the robot took off to mimic hopping downstairs. The thickness of the wood plank was 1.5&#xa0;cm, which was limited to the ability of the motor and transmission system. Though the height is relatively small compared with the size of the leg, it does verify the effectiveness of the prediction method as the higher the stair is, the farther different contact data in the phase space are away from each other, which will ease contact detection.</p>
<p>The contact data were processed in MATLAB 2018b and were selected manually in this stage. Then, the contact data were clustered using the <italic>fitgmdist</italic> function in MATLAB with a component parameter of 3. The classification result is shown in <xref ref-type="fig" rid="F9">Figure&#x20;9</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>
<bold>(A)</bold> Initial Gaussian model visualized by contact cycle and foot height. <bold>(B)</bold> Initial Gaussian model visualized by contact cycle and foot&#x20;force.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g009.tif"/>
</fig>
</sec>
<sec id="s3-3">
<title>Contact Prediction Using GMM</title>
<p>After the learning process, the GMM could predict the contact time more accurately, as shown in <xref ref-type="fig" rid="F10">Figure&#x20;10</xref>. In each control cycle, the maximum probability of coming data in the three components is calculated first. Then, the mean value of the coming data vector will be projected into a space where the three projected variables are independent as in (8). If all of the values are within 1.5<italic>&#x3c3;</italic>, we believe that the contact happens. By using the actual contact data to renew the GMM, the model detects the contact event as soon as the leg&#x20;lands.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Hopping on flat ground with GMM contact prediction.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g010.tif"/>
</fig>
<p>The GMM predicted the contact in stepping upstairs and downstairs, which was also more precise than the prediction using contact force, as shown in <xref ref-type="fig" rid="F11">Figure&#x20;11</xref>.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Hopping upstairs and downstairs with GMM contact prediction.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g011.tif"/>
</fig>
<p>The main advantage of the learning method is that it can adapt to the change in terrains. In a terrain-changing experiment, the robot firstly hopped on flat ground, and then some wood strips were placed on the ground to mimic the changing of terrain roughness. The estimated vertical foot forces and estimated contact time are shown in <xref ref-type="fig" rid="F12">Figure&#x20;12</xref>. Three gait cycles on flat ground are shown in the figure, and the GMM predicted the contact time precisely.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Hopping on roughness-changing ground.</p>
</caption>
<graphic xlink:href="fbioe-09-771415-g012.tif"/>
</fig>
<p>As the GMM model was updated only when five new gait data had arrived, the GMM prediction performance degenerated when the terrain just changed. The leg force prediction module was evoked to detect the foot landing, leading to a detection time delay of about six control cycles. In the first updating phase of the GMM model, including the last gait cycle on flat ground and the first four gait cycles on rough terrain, there was only one gait cycle where the GMM predicted the foot contact. In the second GMM updating phase, the GMM successfully predicted the foot contact in two gait cycles. After two updating phases, the GMM could always predict the foot contact with a higher time delay of about two control cycles as the variance of the GMM gets higher, as shown in <xref ref-type="table" rid="T3">Table&#x20;3</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Covariance matrices on flat ground and rough terrain.</p>
</caption>
<table>
<thead>
<tr>
<td align="left">Covariance matrix on flat ground</td>
<td align="center">Covariance matrix on rough terrain</td>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<inline-formula id="inf18">
<mml:math id="m40">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>2.00</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.49</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>0.46</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.49</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>1.83</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>1.04</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0.46</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>1.04</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>2.33</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf19">
<mml:math id="m41">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>6.23</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2.86</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.12</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2.86</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>3.07</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>0.05</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.12</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>0.05</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>3.96</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec sec-type="discussion" id="s4">
<title>Discussion</title>
<sec id="s4-1">
<title>Learning <italic>Vs</italic>. Data Fusion</title>
<p>Another effective contact detection approach is the data fusion technique, which combines different data to enhance accuracy. In the robot hopping experiments, the robot could detect the contact in one cycle delay, while the data fusion method applied to MIT cheetah 3 introduces a delay of four to five control cycles (<xref ref-type="bibr" rid="B1">Bledt et&#x20;al., 2018a</xref>). This result shows that the proposed learning method can perform better if the robot runs on the same terrain with cyclic gait, which is true in most cases. Every animal or human would have preferred walking and running speeds, and the terrain types are limited in daily life. The gait contact parameters of hopping are distributed over a small area if the robot moves in the same terrain with the same&#x20;gait.</p>
</sec>
<sec id="s4-2">
<title>How Does the Learning Algorithm Adjust to Different Terrains to Achieve Fast Detection?</title>
<p>On flat ground, the elements in the covariance matrix would be small, and the prediction would be very accurate, while in rough terrain, the absolute values of the matrix elements increase, and the prediction becomes a little rough. The most important point is that the elements in the covariance matrix will go back to being small if the terrain is a flat ground again, which means that the learning prediction method can predict the contact as accurately as possible. Owing to the online learning method, the prediction algorithm can adapt to different terrains that the robot has never encountered before.</p>
</sec>
<sec id="s4-3">
<title>Acquiring Data Online</title>
<p>A difficulty in learning the leg contact detection online is that the contact data for updating the GMM cannot be collected directly, as there is no force sensor to indicate the moment when the foot is just in contact with the ground. A &#x201c;trace back&#x201d; strategy is presented in this article. When the contact event is triggered by the GMM prediction module or leg force criterion, the update module will trace back the contact data in the memory stack until the data meet with the probability criterion.</p>
</sec>
<sec id="s4-4">
<title>How Does Accurate Contact Prediction Affect Running Gait?</title>
<p>A state machine control strategy is usually adopted to control a legged robot&#x2019;s running gait. A contact event will trigger a shift in state, and the control module will change as well. So an accurate detection of the contact event is critical, which is even more important in high-speed running. In our experiment, the control cycle is 4&#xa0;ms, and the learning detection module can predict the contact event four control cycles in advance. In the fast running gait of a quadruped, the total gait cycle could be less than 300&#xa0;ms, and the contact period for each leg can be less than 40&#xa0;ms (<xref ref-type="bibr" rid="B10">Hudson et&#x20;al., 2012</xref>). And the contact period includes the leg compressing phase and leg extending phase, with each period being 20&#xa0;ms. So the proposed prediction method would ease the control strategy design and enhance the control performance.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s5">
<title>Conclusion</title>
<p>This paper presents a learning contact detection framework for legged robot running control. The algorithm continuously learns the characteristics of the contact data during robot running, including the period between two consecutive landing events, foot height, and contact force. A GMM is adopted to describe the three situations in running gait: running on flat ground, running upstairs, and running down stairs. Experimental results show that the mean value and covariance matrix of the contact data vector differ discernibly among different terrains, which enables learning detection.</p>
<p>To deal with the change in terrain and gait, an online learning scheme is presented. A main difficulty in online learning is acquiring contact data online without the help of force sensors. A &#x201c;trace back&#x201d; technique is proposed in this paper: when the contact event is triggered by the GMM or foot force threshold, the algorithm will trace back the contact data in the memory stack until the data meet with the probability criterion. And the GMM will be updated online after every five contact data points are collected, so the GMM can change with the terrain and gait. The learning contact detection algorithm was verified on a hopping robot. The detection model changed with the terrain by adapting the GMM parameters or, more specifically, by updating the mean value and covariance matrix of the sub-model in the GMM. Experimental results show that the learning algorithm can predict the foot contact to the ground four control cycles in advance compared with the detection method with only leg force. In the future, the algorithm will be applied to different robots and terrains to further verify its effectiveness, and more gait parameters can be added to the GMM to enhance prediction performance.</p>
</sec>
</body>
<back>
<sec id="s6">
<title>Data Availability Statement</title>
<p>The datasets presented in this study can be found in online repositories. The names of the repository/repositories and accession number(s) can be found below: <ext-link ext-link-type="uri" xlink:href="https://github.com/Mr-Yuan0/Paper-code">https://github.com/Mr-Yuan0/Paper-code</ext-link>.</p>
</sec>
<sec id="s7">
<title>Author Contributions</title>
<p>QL was responsible for manuscript preparation and worked as a supervisor for all procedures. BY was responsible for programing and data processing. YW participated in discussions and revisions. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>This work is partially supported by the National Natural Science Foundation of China (NSFC) under grant number 51805381 and the Open Fund of Hubei Key Laboratory of Mechanical Transmission and Manufacturing Engineering at Wuhan University of Science and Technology under grant number 2018A05.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of Interest</title>
<p>YW was employed by the company Golden Leaf Production and Manufacturing Center of China Tobacco Henan Industrial Co.,&#x20;Ltd.</p>
<p>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="s10">
<title>Publisher&#x2019;s Note</title>
<p>All claims expressed in this article are solely those of the&#x20;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&#x20;made&#x20;by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ack>
<p>We would like to thank Shuai Liu and Hengli Liu, master&#x2019;s degree students at Wuhan University of Science and Technology, for their help in robot design and code debugging and Hedong Intelligent Technology Co., Ltd., for the motor driver development.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bledt</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Powell</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Katz</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Di Carlo</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wensing</surname>
<given-names>P. M.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018a</year>). &#x201c;<article-title>MIT Cheetah 3: Design and Control of a Robust, Dynamic Quadruped Robot</article-title>,&#x201d; in <source>IEEE International Conference on Intelligent Robots and Systems (IROS)</source> (<publisher-loc>Madrid, Spain</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>2245</fpage>&#x2013;<lpage>2252</lpage>. <pub-id pub-id-type="doi">10.1109/IROS.2018.8593885</pub-id> </citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bledt</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Wensing</surname>
<given-names>P. M.</given-names>
</name>
<name>
<surname>Ingersoll</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018b</year>). &#x201c;<article-title>Contact Model Fusion for Event-Based Locomotion in Unstructured Terrains</article-title>,&#x201d; in <source>IEEE International Conference on Robotics and Automation (ICRA)</source> (<publisher-loc>Brisbane, Australia</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>4399</fpage>&#x2013;<lpage>4406</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA.2018.8460904</pub-id> </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Camurri</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fallon</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bazeille</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Radulescu</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Barasuol</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Caldwell</surname>
<given-names>D. G.</given-names>
</name>
<etal/>
</person-group> (<year>2017</year>). <article-title>Probabilistic Contact Estimation and Impact Detection for State Estimation of Quadruped Robots</article-title>. <source>IEEE Robot. Autom. Lett.</source> <volume>2</volume>, <fpage>1023</fpage>&#x2013;<lpage>1030</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2017.2652491</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Dang</surname>
<given-names>X. H.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>V. C. S.</given-names>
</name>
<name>
<surname>Ng</surname>
<given-names>W. K.</given-names>
</name>
<name>
<surname>Ong</surname>
<given-names>K. L.</given-names>
</name>
</person-group> (<year>2009</year>). &#x201c;<article-title>Incremental and Adaptive Clustering Stream Data over Sliding Window</article-title>,&#x201d; in <source>International Conference on Database and Expert Systems Applications</source> (<publisher-loc>Berlin, Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>660</fpage>&#x2013;<lpage>674</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-642-03573-9_55</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>De Luca</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Albu-Schaffer</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Haddadin</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hirzinger</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2006</year>). &#x201c;<article-title>Collision Detection and Safe Reaction with the DLR-III Lightweight Manipulator Arm</article-title>,&#x201d; in <source>IEEE/RSJ&#x20;International Conference on Intelligent Robots and Systems</source> (<publisher-loc>Beijing, China</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1623</fpage>&#x2013;<lpage>1630</lpage>. <pub-id pub-id-type="doi">10.1109/IROS.2006.282053</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dong</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Contact Force Detection and Control for Robotic Polishing Based on Joint Torque Sensors</article-title>. <source>Int. J.&#x20;Adv. Manuf Technol.</source> <volume>107</volume>, <fpage>2745</fpage>&#x2013;<lpage>2756</lpage>. <pub-id pub-id-type="doi">10.1007/s00170-020-05162-8</pub-id> </citation>
</ref>
<ref id="B7">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Flacco</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Paolillo</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kheddar</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>2016&#x20;IEEE-RAS 16th International Conference on Humanoid Robots (Humanoids)</article-title>,&#x201d; in <source>IEEE-RAS 16th International Conference on Humanoid Robots (Humanoids)</source> (<publisher-loc>Mexico</publisher-loc>: <publisher-name>Cancun</publisher-name>), <fpage>409</fpage>&#x2013;<lpage>415</lpage>. <pub-id pub-id-type="doi">10.1109/Humanoids38133.2016</pub-id> </citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Haddadin</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Albu-Schaffer</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>De Luca</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Hirzinger</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2008</year>). &#x201c;<article-title>Collision Detection and Reaction: A Contribution to Safe Physical Human-Robot Interaction</article-title>,&#x201d; in <source>IEEE/RSJ&#x20;International Conference on Intelligent Robots and Systems</source> (<publisher-loc>Nice, France</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>3356</fpage>&#x2013;<lpage>3363</lpage>. <pub-id pub-id-type="doi">10.1109/IROS.2008.4650764</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Horn</surname>
<given-names>R. A.</given-names>
</name>
<name>
<surname>Johnson</surname>
<given-names>C. R.</given-names>
</name>
</person-group> (<year>2012</year>). <source>Matrix Analysis</source>. <publisher-loc>Cambridge, U.K.</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>. </citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hudson</surname>
<given-names>P. E.</given-names>
</name>
<name>
<surname>Corr</surname>
<given-names>S. A.</given-names>
</name>
<name>
<surname>Wilson</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>High Speed Galloping in the Cheetah (Acinonyx jubatus) and the Racing Greyhound (Canis familiaris): Spatio-Temporal and Kinetic Characteristics</article-title>. <source>J.&#x20;Exp. Biol.</source> <volume>215</volume>, <fpage>2425</fpage>&#x2013;<lpage>2434</lpage>. <pub-id pub-id-type="doi">10.1242/jeb.066720</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Hwangbo</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bellicoso</surname>
<given-names>C. D.</given-names>
</name>
<name>
<surname>Fankhauser</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Hutter</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Probabilistic Foot Contact Estimation by Fusing Information from Dynamics and Differential/forward Kinematics</article-title>,&#x201d; in <source>IEEE/RSJ&#x20;International Conference on Intelligent Robots and Systems (IROS)</source> (<publisher-loc>Daejeon, Korea</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>3872</fpage>&#x2013;<lpage>3878</lpage>. <pub-id pub-id-type="doi">10.1109/IROS.2016.7759570</pub-id> </citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiang</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Manipulator Grabbing Position Detection with Information Fusion of Color Image and Depth Image Using Deep Learning</article-title>. <source>J.&#x20;Ambient Intell. Hum. Comput</source> <volume>12</volume>, <fpage>10809</fpage>&#x2013;<lpage>10822</lpage>. <pub-id pub-id-type="doi">10.1007/s12652-020-02843-w</pub-id> </citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kim</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Development of an IMU-Based Foot-Ground Contact Detection (FGCD) Algorithm</article-title>. <source>Ergonomics</source> <volume>60</volume>, <fpage>384</fpage>&#x2013;<lpage>403</lpage>. <pub-id pub-id-type="doi">10.1080/00140139.2016.1174314</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kokate</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Deshpande</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Mahalle</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Patil</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Data Stream Clustering Techniques, Applications, and Models: Comparative Analysis and Discussion</article-title>. <source>Bdcc</source> <volume>2</volume>, <fpage>32</fpage>. <pub-id pub-id-type="doi">10.3390/bdcc2040032</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Ye</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Robot Collision Detection and Distinction Based on Convolution Filtering Dynamic Model</article-title>. <source>Sensors Mater.</source> <volume>31</volume>, <fpage>4113</fpage>&#x2013;<lpage>4133</lpage>. <pub-id pub-id-type="doi">10.18494/SAM.2019.2402</pub-id> </citation>
</ref>
<ref id="B16">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lin</surname>
<given-names>T. Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ghaffari</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Deep Multi-Modal Contact Estimation for Invariant Observer Design on Quadruped Robots</article-title>," in <conf-name>5th Annual Conference on Robot Learning</conf-name> (<publisher-loc>London, UK</publisher-loc>: <publisher-name>JMLR</publisher-name>), <comment>arXiv preprint. arXiv:2106.15713</comment>. </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ma</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Yan</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Real-Time Foot-Ground Contact Detection for Inertial Motion Capture Based on an Adaptive Weighted Naive Bayes Model</article-title>. <source>IEEE Access</source> <volume>7</volume>, <fpage>130312</fpage>&#x2013;<lpage>130326</lpage>. <pub-id pub-id-type="doi">10.1109/ACCESS.2019.2939839</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Manuelli</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Tedrake</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Localizing External Contact Using Proprioceptive Sensors: The Contact Particle Filter</article-title>,&#x201d; in <source>IEEE/RSJ&#x20;International Conference on Intelligent Robots and Systems (IROS)</source> (<publisher-loc>Daejeon, Korea</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>5062</fpage>&#x2013;<lpage>5069</lpage>. <pub-id pub-id-type="doi">10.1109/IROS.2016.7759743</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Miezal</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Taetz</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Bleser</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Real-time Inertial Lower Body Kinematics and Ground Contact Estimation at Anatomical Foot&#x20;Points for Agile Human Locomotion</article-title>,&#x201d; in <source>IEEE International Conference&#x20;on&#x20;Robotics and Automation</source> (<publisher-loc>Singapore</publisher-loc>: <publisher-name>ICRA</publisher-name>), <fpage>3256</fpage>&#x2013;<lpage>3263</lpage>.&#x20;<pub-id pub-id-type="doi">10.1109/ACCESS.2019.293983910.1109/icra.2017.7989371</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Morinaga</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Kosuge</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2003</year>). &#x201c;<article-title>Collision Detection System for Manipulator Based on Adaptive Impedance Control Law</article-title>,&#x201d; in <source>IEEE International Conference on Robotics and Automation (ICRA)</source> (<publisher-loc>Taipei, China</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1080</fpage>&#x2013;<lpage>1085</lpage>. <pub-id pub-id-type="doi">10.1109/ROBOT.2003.1241736</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Ortenzi</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>H.-C.</given-names>
</name>
<name>
<surname>Azad</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Stolkin</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Kuo</surname>
<given-names>J.&#x20;A.</given-names>
</name>
<name>
<surname>Mistry</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Kinematics-based Estimation of Contact Constraints Using Only Proprioception</article-title>,&#x201d; in <source>IEEE-RAS 16th International Conference on Humanoid Robots (Humanoids)</source> (<publisher-loc>Mexico</publisher-loc>: <publisher-name>Cancun</publisher-name>), <fpage>1304</fpage>&#x2013;<lpage>1311</lpage>. <pub-id pub-id-type="doi">10.1109/HUMANOIDS.2016.7803438</pub-id> </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Piovan</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Byl</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Reachability-based Control for the Active SLIP Model</article-title>. <source>Int. J.&#x20;Robotics Res.</source> <volume>34</volume>, <fpage>270</fpage>&#x2013;<lpage>287</lpage>. <pub-id pub-id-type="doi">10.1177/0278364914552112</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Piperakis</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Timotheatos</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Trahanias</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Unsupervised Gait Phase Estimation for Humanoid Robot Walking&#x2a;</article-title>,&#x201d; in <source>International Conference on Robotics and Automation (ICRA)</source> (<publisher-loc>Montreal, Canada</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>270</fpage>&#x2013;<lpage>276</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA.2019.8793598</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Rotella</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Schaal</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Righetti</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Unsupervised Contact Learning for Humanoid Estimation and Control</article-title>,&#x201d; in <source>IEEE International Conference on Robotics and Automation (ICRA)</source> (<publisher-loc>Brisbane, Australia</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>411</fpage>&#x2013;<lpage>417</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA.2018.8462864</pub-id> </citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sharkawy</surname>
<given-names>A.-N.</given-names>
</name>
<name>
<surname>Koustoumpardis</surname>
<given-names>P. N.</given-names>
</name>
<name>
<surname>Aspragathos</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Neural Network Design for Manipulator Collision Detection Based Only on the Joint Position Sensors</article-title>. <source>Robotica</source> <volume>38</volume>, <fpage>1737</fpage>&#x2013;<lpage>1755</lpage>. <pub-id pub-id-type="doi">10.1017/S0263574719000985</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Song</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2005</year>). <source>Highly Efficient Incremental Estimation of Gaussian Mixture Models for Online Data Stream Clustering</source>. <publisher-loc>Orlando, USA</publisher-loc>: <publisher-name>International Society for Optics and Photonics</publisher-name>. <pub-id pub-id-type="doi">10.1117/12.601724</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Wagner</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Fankhauser</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Bloesch</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hutter</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Foot Contact Estimation for Legged Robots in Rough Terrain</article-title>,&#x201d; in <source>19th International Conference on CLAWAR</source> (<publisher-loc>London, UK</publisher-loc>: <publisher-name>World Scientific</publisher-name>), <fpage>395</fpage>&#x2013;<lpage>403</lpage>. <pub-id pub-id-type="doi">10.1142/9789813149137_0047</pub-id> </citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Collision Detection and Force Control Based on the Impedance Approach and Dynamic Modelling</article-title>. <source>Ir</source> <volume>47</volume>, <fpage>813</fpage>&#x2013;<lpage>824</lpage>. <pub-id pub-id-type="doi">10.1108/IR-08-2019-0163</pub-id> </citation>
</ref>
<ref id="B29">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Slip Model-Based Foot-To-Ground Contact Sensation via Kalman Filter for Miniaturized Quadruped Robots</article-title>,&#x201d; in <source>International Conference on Intelligent Robotics and Applications</source> (<publisher-loc>China</publisher-loc>: <publisher-name>Shenyang</publisher-name>), <fpage>3</fpage>&#x2013;<lpage>14</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-030-27541-9_1</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yousefizadeh</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bak</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Unknown External Force Estimation and Collision Detection for a Cooperative Robot</article-title>. <source>Robotica</source> <volume>38</volume>, <fpage>1665</fpage>&#x2013;<lpage>1681</lpage>. <pub-id pub-id-type="doi">10.1017/S0263574719001681</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>