<?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. Phys.</journal-id>
<journal-title>Frontiers in Physics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Phys.</abbrev-journal-title>
<issn pub-type="epub">2296-424X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1220596</article-id>
<article-id pub-id-type="doi">10.3389/fphy.2023.1220596</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Physics</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Combined hydrodynamic and control analysis on optimal kinematic parameters for bio-inspired autonomous underwater vehicle manoeuvring</article-title>
<alt-title alt-title-type="left-running-head">Wright et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fphy.2023.1220596">10.3389/fphy.2023.1220596</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Wright</surname>
<given-names>Marvin</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2300305/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Xiao</surname>
<given-names>Qing</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhu</surname>
<given-names>Qiang</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Department of Naval Architecture, Ocean and Marine Engineering</institution>, <institution>University of Strathclyde</institution>, <addr-line>Glasgow</addr-line>, <country>United Kingdom</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Department of Structural Engineering</institution>, <institution>University of California, San Diego</institution>, <addr-line>San Diego</addr-line>, <addr-line>CA</addr-line>, <country>United States</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/1197611/overview">Fang-Bao Tian</ext-link>, University of New South Wales Canberra, Australia</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/1441829/overview">Cetin Canpolat</ext-link>, &#xc7;ukurova University, T&#xfc;rkiye</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1805010/overview">Mofeed Turky Rashid</ext-link>, University of Basrah, Iraq</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Qing Xiao, <email>qing.xiao@strath.ac.uk</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>28</day>
<month>07</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>11</volume>
<elocation-id>1220596</elocation-id>
<history>
<date date-type="received">
<day>10</day>
<month>05</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>03</day>
<month>07</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Wright, Xiao and Zhu.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Wright, Xiao and Zhu</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>To investigate the manoeuvring performance of a body-caudal fin robot fish, a numerical framework combining computational fluid dynamics and multi-body dynamics with a closed-loop control algorithm was established in this study. Within this framework, we modelled a body-caudal fin swimmer as a multi-body system with the shape of a NACA0012 hydrofoil. The manoeuvring performance was investigated by using different curvature magnitudes and distributions along the centre line (the curvature is defined by means of a curvature envelop function as part of the general body undulation equation). To characterize the turning performance, a new parameter named cost of manoeuvring (CoM) is proposed. This parameter provides a combined assessment of the turning radius, linear and angular velocity components, and power. It is found that when the body curvature is introduced, the swimmer switches from straight-line swimming to quasi-steady turning at a constant speed. Further investigations were conducted to study contributions of head and tail deformations on the turning performance by comparing predominantly head and tail curved envelopes. Results reveal that a tail-dominated envelope improves performance, whereas a head-dominated envelope has a negative effect.</p>
</abstract>
<kwd-group>
<kwd>bio-inspired</kwd>
<kwd>autonomous underwater vehicle</kwd>
<kwd>computational fluid dynamics</kwd>
<kwd>feedback control</kwd>
<kwd>body-caudal fin</kwd>
<kwd>manoeuvring</kwd>
</kwd-group>
<contract-sponsor id="cn001">University of Strathclyde<named-content content-type="fundref-id">10.13039/100008078</named-content>
</contract-sponsor>
<contract-sponsor id="cn002">SuperGen UK Centre for Marine Energy Research<named-content content-type="fundref-id">10.13039/501100011028</named-content>
</contract-sponsor>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Biophysics</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Through evolution, fish continuously adapt to their environment and develop local optimal combinations of physique and behaviour. Depending on their usage of paired fins or body undulation as the main thrust generating mechanism, fish are generally categorized as median-paired fin (MPF) and body-caudal fin (BCF) types [<xref ref-type="bibr" rid="B1">1</xref>]. However, some fish are observed to switch between MPF and BCF locomotor behaviours [<xref ref-type="bibr" rid="B2">2</xref>]. Species of fish that switch between these two locomotion behaviours, known as decoupled locomotors, usually live in complex environments in which agile acceleration, direction change and obstacle avoidance are necessary. On the contrary, coupled locomotors are observed to inhabit relatively simple environments [<xref ref-type="bibr" rid="B3">3</xref>]. These species (e.g., tuna) tend to specialise in steady rectilinear locomotion, such as cruising. In the past, most studies have focussed on steady fish locomotion [<xref ref-type="bibr" rid="B4">4</xref>, <xref ref-type="bibr" rid="B5">5</xref>]. However, fish spend the majority of their time performing unsteady locomotion [<xref ref-type="bibr" rid="B6">6</xref>].</p>
<p>The term <italic>manoeuvrability</italic> is used to describe the ability to perform a range of unsteady motions, such as C- and S-starts, and turning manoeuvres [<xref ref-type="bibr" rid="B6">6</xref>]. For example, the agile manoeuvrability of a fish is displayed during C-starts when the fish accelerates from a stationary state by means of a single large sweep of its tail fin to create two distinct vortices that define the momentum and impulse at which the fish turns and accelerates [<xref ref-type="bibr" rid="B7">7</xref>]. Streamlined BCF fish moving at an initial velocity can perform unpowered turns due to their high fitness, characterized by the body length to thickness ratio, while unstreamlined MPF fish have to continuously generate thrust during turning manoeuvres due to their low fitness [<xref ref-type="bibr" rid="B8">8</xref>]. Unpowered turns may lead to smaller turning radii [<xref ref-type="bibr" rid="B9">9</xref>], while large animals with large inertia may prefer unpowered turns [<xref ref-type="bibr" rid="B3">3</xref>]. A simple relationship between turning radius <italic>R</italic> and body mass <italic>m</italic>, <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x221d;</mml:mo>
<mml:msup>
<mml:mi>m</mml:mi>
<mml:mn>0.37</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, as well as a linear relationship <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>&#x221d;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> between R and the body length L has been reported [<xref ref-type="bibr" rid="B3">3</xref>].</p>
<p>Fish gain their high manoeuvrability from their inherently unstable motion. The quasi-steady state of straight swimming of a BCF swimmer relies on force symmetry over a full actuation cycle. Small perturbations of fluid flow or body motion lead to the loss of force equilibrium and a change in the heading direction [<xref ref-type="bibr" rid="B10">10</xref>]. During turning manoeuvres, fish may also use fins as control surfaces to generate a turning moment [<xref ref-type="bibr" rid="B6">6</xref>] or to balance forces [<xref ref-type="bibr" rid="B11">11</xref>]. Comprehensive knowledge of the manoeuvrability of fish and other aquatic animals may become useful to improve engineering designs.</p>
<p>Compared with a conventional rigid torpedo or open-frame ROVs and AUVs, bio-inspired underwater robots and vehicle platforms may feature significantly enhanced efficiency and manoeuvring capacity. Indeed, tests of a free swimming robot tuna demonstrated turning rates of up to 75&#xb0; per second [<xref ref-type="bibr" rid="B12">12</xref>], exceeding the turning rates of 25&#x2013;35&#xb0; per seconds of a modern enhanced rigid hull AUV [<xref ref-type="bibr" rid="B13">13</xref>]. Further work on robotic fish manoeuvring can be found in the literature, for example, on C-starts [<xref ref-type="bibr" rid="B14">14</xref>] and path following patterns [<xref ref-type="bibr" rid="B15">15</xref>]. Robotic fish may perform turns with variable deflection angles across multiple links [<xref ref-type="bibr" rid="B16">16</xref>]. This raises the question of what kinematic parameters are energetically optimal.</p>
<p>An analysis of the fluid&#x2013;structure interaction problem may provide further insights and opportunities to optimise the performance of bio-inspired robots. Computational fluid dynamics (CFD) is a powerful tool to compute time-dependent hydrodynamic forces and study the performance of aquatic systems. The latest CFD tools coupled with control algorithms enable dynamic simulations of unsteady phenomena and investigations into optimal control.</p>
<p>Simulations coupling CFD and control algorithms have been conducted, for example, on the optimal undulatory swimming of a single and a pair of fish [<xref ref-type="bibr" rid="B5">5</xref>], on the fluid&#x2013;structure interaction between a self-propelled flexible plate near a rigid body [<xref ref-type="bibr" rid="B17">17</xref>] and on the energy extraction of an independently controlled caudal fin [<xref ref-type="bibr" rid="B18">18</xref>].</p>
<p>In this work, a multi-body CFD tool [<xref ref-type="bibr" rid="B19">19</xref>, <xref ref-type="bibr" rid="B20">20</xref>] was extended by a linear feedback control algorithm to investigate the manoeuvrability of a BCF swimmer. Related CFD work on manoeuvring and control parameter tuning, turning performance and path following have been reported [<xref ref-type="bibr" rid="B21">21</xref>, <xref ref-type="bibr" rid="B22">22</xref>]. In these studies, only a single distribution of the body curvature was considered. Therefore, simulations were conducted to address a knowledge gap on the manoeuvring performance of undulatory swimmers, specifically analyses of the turning performances for different body curvature distributions.</p>
<p>BCF swimmers achieve an agile turning performance by controlling the curvature of their bodies&#x2019; central line. To enable a bio-inspired robot to duplicate this feature, optimal control inputs are crucial. The present work aims to identify control parameters that enable BCF swimmers to achieve smaller turning radii at lower power consumption. To quantitatively characterize the tuning performance, we proposed a novel parameter, i.e., the CoM. As part of the discussion, the general mechanisms relating to BCF manoeuvring by means of the body curvature are presented as well as the performance of different curvature distributions; more specifically, constant curvature and linear curvature envelopes are analysed.</p>
<p>The paper is structured as follows: 1. <italic>Introduction</italic>, 2. <italic>Problem description</italic>, 3. <italic>Problem modeling</italic>, 4. <italic>Setup</italic>, 5. <italic>Results and discussions</italic> 6. <italic>Conclusion</italic>. In <xref ref-type="sec" rid="s3">Section 3</xref>, the coupling of the simulation and its components are briefly described, including the multi-body algorithm, fluid solver and linear control algorithm. In <xref ref-type="sec" rid="s5">Section 5</xref>, simulation results are provided in two parts. First, results for a constant curvature envelope at different magnitudes of the curvature are presented. Second, an investigation into the contribution of the head and tail curvature via a comparison between two linear curvature envelopes and a constant envelope is discussed.</p>
</sec>
<sec id="s2">
<title>2 Problem description</title>
<p>A BCF swimmer accelerates against surrounding fluid in a periodic motion by means of lateral undulation. Straight swimming or cruising is achieved through lateral force symmetry over one undulation cycle. By curving the body asymmetrically, the force imbalance results in a moment on the swimmer. BCF swimmers move their anterior body (head) and posterior body (peduncle and caudal fin) independently during turning manoeuvres [<xref ref-type="bibr" rid="B11">11</xref>]. The turning moment may be a combination of a posterior reactive force on the tail fin, anterior lift force, and reduced drag force by aligning towards the new swimming direction.</p>
<p>The curving of the central body line is a key mechanism of moment change in BCF manoeuvring [<xref ref-type="bibr" rid="B23">23</xref>]. To understand BCF swimmer manoeuvring, the turning performance of BCF locomotion with different curvature envelopes was investigated. Herein, a curvature envelope describes the curvature distribution along the central line. To investigate the self-propelled turning performance at different Reynolds numbers and curvature envelopes, the scenario in <xref ref-type="fig" rid="F1">Figure 1</xref> was selected. Two linear feedback controllers were used to reach the required speed and maintain straight-line swimming until the prescribed curvature is applied. From a state of rest, the swimmer will accelerate by means of undulation motion to a predetermined swimming speed to achieve a desired Reynolds number. When this forward velocity is reached, the body curves according to a prescribed curvature envelope. The investigation does not consider any behavioural factors and assumes that all body motions are focused on benefiting turning performance.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Simulation setup.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g001.tif"/>
</fig>
</sec>
<sec id="s3">
<title>3 Problem modelling</title>
<p>In this work, a coupled CFD multi-body simulation environment was applied [<xref ref-type="bibr" rid="B19">19</xref>, <xref ref-type="bibr" rid="B20">20</xref>]. The commercial CFD software package Ansys Fluent 22.1 was coupled with a multi-body dynamics algorithm utilising an in-house developed user-defined function (UDF). This method solves the internal and external dynamics of a multi-body system in a CFD environment at each time step through three recursions and one numerical integration. A linear feedback control algorithm completes the simulation setup. A control signal flow graph is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>. A detailed description of the CFD tool and validation results are given in <xref ref-type="sec" rid="s12">Supplementary Appendix SA, SB</xref> and in the literature [<xref ref-type="bibr" rid="B19">19</xref>, <xref ref-type="bibr" rid="B20">20</xref>].</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Signal flow graph.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g002.tif"/>
</fig>
<sec id="s3-1">
<title>3.1 Computation of hydrodynamic forces&#x2014;computational fluid dynamics</title>
<p>The fluid domain, governed by the Naiver&#x2013;Stokes equations, was solved using the finite volume method. The incompressible flow governing equations for continuity and momentum are given in Eqs. <xref ref-type="disp-formula" rid="e1">1</xref>, <xref ref-type="disp-formula" rid="e2">2</xref>, with <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> the fluid velocity vector, <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> fluid pressure, <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> fluid kinematic viscosity, and <inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> fluid density.<disp-formula id="e1">
<mml:math id="m7">
<mml:mrow>
<mml:mo>&#x2207;</mml:mo>
<mml:mo>&#x2219;</mml:mo>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
<disp-formula id="e2">
<mml:math id="m8">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2202;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mo>&#x2219;</mml:mo>
<mml:mo>&#x2207;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2207;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mo>&#x2207;</mml:mo>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>The transient equations are computed by a pressure&#x2013;velocity coupling using a non-iteration time-advancement (NITA) scheme, which allows direct solutions with only one outer iteration and sub-iterations to support convergence. The momentum and continuity equations are decoupled in the selected NITA pressure-based solver fractional-step method (FSM). A relaxation factor was applied. For the transient terms, a first-order implicit time marching scheme was selected. Spatial discretisation and discretisation of the diffusive term were achieved by applying the least squares cell-based approach for the gradient and second-order upwind scheme. To improve accuracy, second-order pressure interpolation was selected.</p>
<p>The unstructured CFD mesh dynamically adjusts to the global motion of each surface node defined by the body motion of the swimmer. For a continuous flexible body, the lateral position of the surface points were linearly interpolated between the local coordinate system of the current and ascending body. To maintain a high mesh quality throughout the computational domain, the dynamic meshing function available in Ansys Fluent was selected. For small displacements, the mesh was adjusted by diffusion-based smoothing. For large displacements, remeshing of the unstructured mesh was applied. The unsteady time step and mesh sizing were selected based on the Courant convergence criteria.</p>
</sec>
<sec id="s3-2">
<title>3.2 Multi-body algorithm and swimmer kinematics</title>
<p>The multi-body algorithm describes the internal and external dynamics of a multi-body system by solving the generalised equation of motion in the Newton&#x2013;Euler form shown in Eq. <xref ref-type="disp-formula" rid="e3">3</xref> via three recursive loops through the elements of the multi-body system. The components of Eq. <xref ref-type="disp-formula" rid="e3">3</xref> are the generalised force vector <inline-formula id="inf7">
<mml:math id="m9">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>, including fluid forces and inertial forces, the generalised mass matrix <inline-formula id="inf8">
<mml:math id="m10">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="script">M</mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and the acceleration vector <italic>&#x03B7;</italic>
<sub>0</sub> of the reference body <italic>B</italic>
<sub>0</sub>. Thus<disp-formula id="e3">
<mml:math id="m13">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3b2;</mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msubsup>
<mml:mi mathvariant="script">M</mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>&#x2a;</mml:mo>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>A simplified fish geometry was considered a multi-body system in the shape of a 2D NACA0012 foil comprising body segments connected via actuated links along the central line that resemble muscle actuation. The NACA0012 geometry was separated into 10 equal cord length body segments with nine joints.</p>
<p>The local coordinate system <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> was the starting point of the recursive loop. The undulation of the body was achieved through rotational motions around the joints (including a sinusoidal motion for undulation and an offset to curve the body with respect to the central line) shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The length of the individual segments <inline-formula id="inf12">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is evenly distributed and fixed, resulting in a central line length of <inline-formula id="inf13">
<mml:math id="m16">
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>
<bold>(A)</bold> Simplified fish geometry modelled as NACA0012. <bold>(B)</bold> Relation between global, local and reference coordinate systems, and the relative rotation between joints according to Eq. <xref ref-type="disp-formula" rid="e4">4</xref>.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g003.tif"/>
</fig>
<p>The rotational motion of a segment around its front linkage at location <italic>s</italic> is given by<disp-formula id="e4">
<mml:math id="m17">
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>where <italic>f</italic> is the undulation frequency and <italic>t</italic> is the time. The amplitude envelope <inline-formula id="inf14">
<mml:math id="m18">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and phase <inline-formula id="inf15">
<mml:math id="m19">
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are defined by<disp-formula id="e5">
<mml:math id="m20">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac bevelled="true">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
<disp-formula id="e6">
<mml:math id="m21">
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>with <inline-formula id="inf16">
<mml:math id="m22">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> being kinematic coefficients. The offset term <inline-formula id="inf17">
<mml:math id="m23">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> was introduced to achieve the turning manoeuvre. The present study includes two curvature envelopes. First, a constant curvature envelope with a uniform offset at all joints and magnitude coefficient <inline-formula id="inf18">
<mml:math id="m24">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is described by<disp-formula id="e7">
<mml:math id="m25">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.15</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>Second, a linear curvature envelope from the leading to trailing edge is described by<disp-formula id="e8">
<mml:math id="m26">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.15</mml:mn>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>where coefficients <inline-formula id="inf19">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf20">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> define the slope and offset of the linear envelope respectively.</p>
<p>The total curvature of the swimmer is defined as the sum of the time-independent joint displacement over the swimmer length, which is as follows<disp-formula id="e9">
<mml:math id="m30">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mn>9</mml:mn>
</mml:munderover>
</mml:mstyle>
<mml:mover accent="true">
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>/</mml:mi>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>
<xref ref-type="table" rid="T1">Tables 1</xref>, <xref ref-type="table" rid="T2">2</xref> summarise the total curvature and coefficient values used in an investigation into the curvature magnitude in <xref ref-type="sec" rid="s5-1">Section 5.1</xref> and comparison of envelopes in <xref ref-type="sec" rid="s5-2">Section 5.2</xref> respectively. The coefficients <inline-formula id="inf22">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf23">
<mml:math id="m32">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> were chosen for linearly increasing and decreasing envelopes to observe performance differences of predominantly head or tail curvings.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Summary of coefficients used in a constant envelope.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Total curvature <inline-formula id="inf24">
<mml:math id="m33">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> [rad/m]</th>
<th align="left">
<inline-formula id="inf25">
<mml:math id="m34">
<mml:mrow>
<mml:mn mathvariant="bold">2.7</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf26">
<mml:math id="m35">
<mml:mrow>
<mml:mn mathvariant="bold">5.4</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf27">
<mml:math id="m36">
<mml:mrow>
<mml:mn mathvariant="bold">8.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf28">
<mml:math id="m37">
<mml:mrow>
<mml:mn mathvariant="bold">10.8</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">
<inline-formula id="inf29">
<mml:math id="m38">
<mml:mrow>
<mml:mn mathvariant="bold">13.5</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">
<inline-formula id="inf30">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf31">
<mml:math id="m40">
<mml:mrow>
<mml:mn>0.2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf32">
<mml:math id="m41">
<mml:mrow>
<mml:mn>0.4</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf33">
<mml:math id="m42">
<mml:mrow>
<mml:mn>0.6</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf34">
<mml:math id="m43">
<mml:mrow>
<mml:mn>0.8</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="left">
<inline-formula id="inf35">
<mml:math id="m44">
<mml:mrow>
<mml:mn>1.0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Summary of coefficients used in constant and linear curvature envelopes with the total curvature remaining unchanged.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Total curvature <inline-formula id="inf36">
<mml:math id="m45">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> [rad/m]</th>
<th align="center">Constant envelope [-]</th>
<th colspan="2" align="center">Head turning envelope (<inline-formula id="inf37">
<mml:math id="m46">
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) [-]</th>
<th colspan="2" align="center">Tail turning envelope (<inline-formula id="inf38">
<mml:math id="m47">
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) [-]</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">
<inline-formula id="inf39">
<mml:math id="m48">
<mml:mrow>
<mml:mn>8.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf40">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>4</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.6</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf41">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf42">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf43">
<mml:math id="m52">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>5</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf44">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>6</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3-3">
<title>3.3 PID control</title>
<p>To investigate the turning performance at different forward velocities while maintaining a horizontal heading of the swimmer before turning, two linear feedback controllers were employed. Linear and angular swimming velocities are determined by the swimmer&#x2019;s undulation amplitude and curvature. Therefore, to implement speed and heading control, control variables <inline-formula id="inf45">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf46">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are added to Eq. <xref ref-type="disp-formula" rid="e4">4</xref> so that the joint motion is described by<disp-formula id="e10">
<mml:math id="m56">
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:msub>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Abrupt changes to <inline-formula id="inf47">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf48">
<mml:math id="m58">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> will lead to unintended chaotic motion. Instead, a cosine-based transition function which enables smooth transitions between different states over one oscillation period <inline-formula id="inf49">
<mml:math id="m59">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> was employed. Let <inline-formula id="inf50">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represent either <inline-formula id="inf51">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> or <inline-formula id="inf52">
<mml:math id="m62">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, we have<disp-formula id="e11">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0,1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>where <inline-formula id="inf53">
<mml:math id="m64">
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf54">
<mml:math id="m65">
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are the current control variables sampled at the beginning of the previous transition period and the new control variable sampled at the beginning of the current transition period respectively. <inline-formula id="inf55">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0,1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> runs correspondingly to the general time step but resets to 0 when reaching 1.</p>
<p>Equation <xref ref-type="disp-formula" rid="e10">10</xref> does not require a global reference to produce a travelling wave function; hence, it can be considered an open loop with control inputs <inline-formula id="inf56">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf57">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. To enable setpoint tracking for speed control and steering towards waypoints, a closed-loop PID controller was applied to calculate <inline-formula id="inf58">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf59">
<mml:math id="m70">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as functions of the error defined as<disp-formula id="e12">
<mml:math id="m71">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>with <inline-formula id="inf60">
<mml:math id="m72">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> being the control error at sampling time. To remove periodicity, the signal was averaged over the oscillation cycle <italic>T</italic>. Based on the time discrete solution of a CFD simulation, the PID controller was implemented in a time discrete recursive form given by Eqs. <xref ref-type="disp-formula" rid="e13">13</xref>, <xref ref-type="disp-formula" rid="e14">14</xref>.<disp-formula id="e13">
<mml:math id="m73">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
<disp-formula id="e14">
<mml:math id="m74">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>There are three individual time steps. First, the numerical simulation time step denoted as <inline-formula id="inf61">
<mml:math id="m75">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; <inline-formula id="inf62">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Second, the controller sample time <inline-formula id="inf63">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Third, the controller update interval at <inline-formula id="inf64">
<mml:math id="m78">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>. The periods were defined so that <inline-formula id="inf65">
<mml:math id="m79">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">s</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-4">
<title>3.4 Setpoint tracking for speed and navigation control</title>
<p>Two separate controllers for speed and steering control were used. The first PID controller controlled the speed by varying the undulation amplitude. The control coefficient <inline-formula id="inf66">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is calculated based on the error between a speed setpoint and the swimmer&#x2019;s velocity. The swimmer&#x2019;s heading directed velocity is calculated as the root square of the cycle-averaged global velocities in <inline-formula id="inf67">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf68">
<mml:math id="m82">
<mml:mrow>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>e</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, as shown in Eq. <xref ref-type="disp-formula" rid="e15">15</xref>.<disp-formula id="e15">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:msqrt>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
</p>
<p>The control action is limited to <inline-formula id="inf69">
<mml:math id="m84">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>To achieve tracking of a set velocity <inline-formula id="inf70">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, we defined the control error at sampling time as follows<disp-formula id="e16">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>In this study, <italic>V<sub>set</sub>
</italic> is selected to achieve the desired Reynolds numbers Re &#x003D; 2,000, 1,500 and 1,000; thus, <italic>V<sub>set</sub>
</italic> &#x003D; 0.02, 0.015 and 0.01 m/s respectively.</p>
<p>The second PID controller adjusted the curvature magnitude by calculating the control coefficient <inline-formula id="inf74">
<mml:math id="m90">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>S</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> based on the error between the line of sight (LOS) angle and the heading angle. LOS navigation was used to provide a reference angle <inline-formula id="inf75">
<mml:math id="m91">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> between the swimmer&#x2019;s current position and a waypoint. Using the origins of the local coordinate systems <inline-formula id="inf76">
<mml:math id="m92">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf77">
<mml:math id="m93">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> together with the coordinates of the waypoint (<inline-formula id="inf78">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) (all measured in the global frame), <inline-formula id="inf79">
<mml:math id="m95">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated as follows<disp-formula id="e17">
<mml:math id="m96">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="italic">atan</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>and the heading of the fish <inline-formula id="inf80">
<mml:math id="m97">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> was calculated by<disp-formula id="e18">
<mml:math id="m98">
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="italic">atan</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>To achieve LOS waypoint tracking the control error is defined as follows<disp-formula id="e19">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mi>O</mml:mi>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
</p>
<p>The control action was limited to <inline-formula id="inf81">
<mml:math id="m99">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.2</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0.2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-5">
<title>3.5 Controller tuning and stability</title>
<p>Both speed and steering controllers were tuned to achieve a critically damped response, i.e., control gains <inline-formula id="inf83">
<mml:math id="m102">
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>D</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> according to Eq. <xref ref-type="disp-formula" rid="e14">14</xref> were chosen manually to achieve a fast-converging system response without significant overshoot. Initial control gains were found in [<xref ref-type="bibr" rid="B5">5</xref>]. The final used control gains for speed and steering were as follows: <inline-formula id="inf84">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>D</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>55</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf85">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.03</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>D</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. These tuning parameters further avoid unstable fluctuations; consequently, the controller can be considered stable according to the limit cycle behaviour [<xref ref-type="bibr" rid="B24">24</xref>]. It also demonstrates that reduced overshoot and faster convergence can be achieved by choosing proper control gains.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Setup</title>
<sec id="s4-1">
<title>4.1 CFD simulation setup</title>
<p>As shown in <xref ref-type="fig" rid="F4">Figure 4</xref>, the computational domain is 25&#xa0;L by 8&#xa0;L, in which the swimmer&#x2019;s leading edge is originally located at 5&#xa0;L by 4&#xa0;L from the bottom right corner. Herein, L is the fish body length. The unstructured CFD mesh sizing is <inline-formula id="inf86">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mo>&#x2206;</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3333</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> at the swimmer boundary and increases to <inline-formula id="inf87">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mo>&#x2206;</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>33</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> in the far field. The time step was set to <inline-formula id="inf88">
<mml:math id="m107">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>T</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>250</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, where <italic>T</italic> is the undulating period. Coefficients of the amplitude function of Eq. <xref ref-type="disp-formula" rid="e5">5</xref> were chosen to follow an anguilliform pattern described in the literature [<xref ref-type="bibr" rid="B25">25</xref>] with coefficients <inline-formula id="inf89">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.125</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.0315</mml:mn> <mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1.03125</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. Initial control coefficients were chosen as <inline-formula id="inf90">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf91">
<mml:math id="m110">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>a</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf92">
<mml:math id="m111">
<mml:mrow>
<mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> for <inline-formula id="inf93">
<mml:math id="m112">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. The velocity inlet condition is set to zero so that the swimmer starts in still water.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>CFD computational domain setup and boundary conditions.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g004.tif"/>
</fig>
</sec>
<sec id="s4-2">
<title>4.2 Kinematic parameters and cost of travel considerations</title>
<p>The Froude efficiency describes the useful output power over the input energy and is often used to assess engineering systems. With respect to the simplified BCF fish swimming scenario, it describes the relation between energy required to realise the body undulation and the swimming work. Herein, the swimming work is defined as the product of a longitudinal force on the body and swimming velocity. For a fish following a straight trajectory at constant speed, i.e., moving at a quasi-steady state, the cycle-averaged longitudinal force is zero due to the balance between the thrust and drag. The resulting Froude efficiency is zero and therefore not applicable. First mentioned as Self-Propelled Fitness [<xref ref-type="bibr" rid="B26">26</xref>] and later proposed as an efficiency measure [<xref ref-type="bibr" rid="B27">27</xref>], the quasi-propulsive efficiency is defined as <inline-formula id="inf95">
<mml:math id="m114">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b7;</mml:mi>
<mml:mrow>
<mml:mi>Q</mml:mi>
<mml:mi>P</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>/</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, where the output power of a swimming fish is approximated by the product of the swimming speed <inline-formula id="inf96">
<mml:math id="m115">
<mml:mrow>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and the resistance force <inline-formula id="inf97">
<mml:math id="m116">
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> on a rigid body towed at the same speed. Alternatively, the cost of travel (CoT), the ratio of the energy spent per unit distance travelled, is often used in life science as a quantitative measure of energetics in locomotion. The performance of turning fish was evaluated based on the minimum turning radius derived from the trajectory of the centre of mass [<xref ref-type="bibr" rid="B6">6</xref>]. Importantly, for an identical centre of mass trajectories the required turning space may differ depending on the swimmers&#x2019; body flexibility [<xref ref-type="bibr" rid="B28">28</xref>].</p>
<p>The linear manoeuvrability number (LMN), first mentioned to assess the manoeuvrability of an on-land hexapod [<xref ref-type="bibr" rid="B29">29</xref>], has also been used to quantify fish manoeuvrability [<xref ref-type="bibr" rid="B6">6</xref>]. The LMN is defined as the ratio of the time integral of the force impulse perpendicular to the forward momentum.</p>
<p>Ideally, a quantitative measure of manoeuvrability must provide a combined assessment of power consumption as well as linear and angular displacement. In that sense, CoT and LMN are not suitable. In this study, a modified cost of travel function for turning is applied. The cost of manoeuvring (CoM) is defined as the ratio of the cycle averaged input power to global angular velocity<disp-formula id="e20">
<mml:math id="m118">
<mml:mrow>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
<mml:mi mathvariant="normal">M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x3c9;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">g</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
<mml:mi mathvariant="normal">b</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">U</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mo>&#x22A5;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>The average input power was calculated as the sum of all joints&#x2019; cycle-averaged power (defined as the product of cycle-averaged torque and angular velocity), which is given as follows<disp-formula id="e21">
<mml:math id="m119">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mstyle displaystyle="true">
<mml:munderover>
<mml:mo>&#x2211;</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mi>n</mml:mi>
</mml:munderover>
</mml:mstyle>
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mover accent="true">
<mml:msub>
<mml:mover accent="true">
<mml:mi>r</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi>j</mml:mi>
</mml:msub>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<p>The global angular velocity was calculated using the radius <inline-formula id="inf99">
<mml:math id="m120">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mi>t</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the turning trajectory and perpendicular forward velocity <inline-formula id="inf100">
<mml:math id="m121">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">U</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mo>&#x22A5;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. The turning radius was calculated using the MATLAB function [<xref ref-type="bibr" rid="B30">30</xref>]. To filter out the curvature of the instantaneous undulation trajectory, the curvature was calculated using points of the cycle-averaged trajectory sampled at an interval of one undulation cycle period T.</p>
<p>Analogous to CoT, CoM relates the energy spent per unit distance travelled; therefore, a performance increase is indicated by a smaller CoM. With its current definition, CoM is not suitable to assess straight swimming.</p>
</sec>
</sec>
<sec sec-type="results|discussion" id="s5">
<title>5 Results and discussions</title>
<sec id="s5-1">
<title>5.1 Effect of added body curvature and quasi-steady turning state</title>
<p>Undulatory swimming shows a characteristic periodicity stemming from vortex shedding during the peak and trough of the body motion. Straight-line swimming at a constant cycle-averaged speed is described as the quasi-steady state at which body forces are in balance over one undulation cycle. To initiate turning, force symmetry is broken by the curving of the body&#x2019;s central line. Changes in the position of the centre of mass, moment of inertia, and resulting biased cycle-averaged loads lead to a net moment and subsequent angular acceleration. <xref ref-type="fig" rid="F5">Figure 5</xref> plots the yaw moment of an accelerating and turning swimmer, according to the setup of <xref ref-type="fig" rid="F1">Figure 1</xref> for Re &#x3d; 2,000 and constant curvature. Three distinct periods are visible, i.e., a transition period from a static state to a quasi-steady state (t &#x3d; 0&#x2013;25&#xa0;s), a transition period during which the central line curves into an equally distributed curvature of &#x3ba; &#x3d; 8.1&#xa0;rad/m (t &#x3d; 25&#x2013;27&#xa0;s) and, finally, a period of a quasi-steady turning state (t &#x3d; 27&#x2013;35&#xa0;s).</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Instantaneous moment and cycle-averaged moment showing the three transition states. Re &#x3d; 2000.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g005.tif"/>
</fig>
<p>The vorticity contour of each period is shown in <xref ref-type="fig" rid="F6">Figure 6</xref>. Beginning at the quasi-steady state, the reverse Karman vortex street remains horizontal and periodically symmetric. During the transition stage, the body curves and changes the heading direction. Meanwhile, vortices are shed at a non-zero angle. In the third stage, the re-oriented swimmer continues undulation around the curved central line and reaches the quasi-steady turning state. It is found that the time-averaged angular velocity appears to be zero during straight swimming (<inline-formula id="inf101">
<mml:math id="m122">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>25</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>&#xa0;s). After that, the swimmer maintains a time-averaged angular velocity of 0.2&#xa0;rad/s. Surprisingly, turning has only a negligible effect on the heading directed velocity.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Vorticity contour of the constant envelope: left-quasi-steady state at t &#x3d; 25&#xa0;s, middle-transition state at t &#x3d; 26.4&#xa0;s, and right-quasi-steady turning state at t &#x3d; 34.4&#xa0;s. Re &#x3d; 2,000.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g006.tif"/>
</fig>
<p>The input power to fulfil the undulation motion reflects the effort of the swimmer to accelerate against the surrounding fluid. As shown in <xref ref-type="fig" rid="F7">Figure 7</xref>, during the initial acceleration, the longitudinal force peak coincides with an input power peak at approximately t &#x3d; 7&#xa0;s. Herein, the longitudinal force and power peak also correspond to the acceleration peak. From there onwards, the swimmer continues to accelerate to the targeted velocity but at a decreasing rate. At the quasi-steady turning state from approximately t &#x3d; 27&#xa0;s, the cycle-averaged power converges to a stable value close to zero. The power consumptions during the quasi-steady state straight-line swimming and turning are close to each other, which suggest that the extra effort required for turning, once it is initiated, is insignificant.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Cycle-averaged drag force and power expenditure for a constant envelope. Re &#x3d; 2,000.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g007.tif"/>
</fig>
<p>Observations of the aforementioned three states are consistent across different curvature magnitudes and investigated Reynolds numbers (Re &#x3d; 1,000, 1,500 and 2,000). A linear increase in the magnitude of the constant curvature envelope results in a close to linear increase in power consumption. The resulting turning angle decreases with increased curvature yet flattens out at the end, as shown in <xref ref-type="fig" rid="F8">Figure 8</xref>. This results in a decreasing CoM for an increased curvature. For all Reynolds numbers, a similar pattern was observed, where the radius is the dominant variable in the CoM calculation due to its reduction with an increased curvature.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>
<bold>(A)</bold> Turning radius and power input for an increasing curvature at Re &#x3d; 2000. <bold>(B)</bold> cost of manoeuvring for increasing curvature. Re &#x3d; 1,000, 1,500, and 2,000.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g008.tif"/>
</fig>
</sec>
<sec id="s5-2">
<title>5.2 Comparison of curvature envelopes</title>
<p>Fish turn both their head and bend their tail in a turning manoeuvre [<xref ref-type="bibr" rid="B11">11</xref>]. In the following, the contribution of the head and tail movement towards turning was investigated by comparing three curvature envelopes with the same total curvature. The three selected envelopes are a constant envelope (equal offset across all joints), a linearly increasing envelope denoted as <inline-formula id="inf102">
<mml:math id="m123">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>u</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (predominantly tail curved) and a linearly decreasing envelope denoted as <inline-formula id="inf103">
<mml:math id="m124">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> (predominantly head curved). The kinematic parameters of these cases are shown in <xref ref-type="table" rid="T2">Table 2</xref>. The Reynolds number in this part is fixed at 2,000.</p>
<p>As shown in <xref ref-type="fig" rid="F8">Figure 8A</xref>, the cycle-averaged drag shows two distinguishable phases during the turning transition period. These are highlighted as phases <bold>I</bold> and <bold>II</bold>. Following general observations, negative drag forces correspond to swimming velocity acceleration and positive drag forces correspond to swimming velocity deceleration in the heading direction. Therefore, Phase <bold>I</bold> may be associated with the initial body curving against the longitudinal moving flow, leading to an increase in drag forces and subsequent deceleration. Likewise, Phase <bold>II</bold> may be associated with the first full sweep with a curved centre line, increasing the thrust and thus acceleration.</p>
<p>When comparing the constant envelope with the average of both linear envelopes, the curves show close agreement (see <xref ref-type="fig" rid="F9">Figure 9</xref>). It leads to the conclusion that the constant envelope can be segregated into head and tail contributions. According to <xref ref-type="fig" rid="F9">Figure 9B</xref>, the predominantly tail turning envelope achieves a sharper turn with a smaller turning radius. This, together with the close match between a constant envelope and averaged linear envelopes, suggests that head turning has a negative effect on the turning performance.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>
<bold>(A)</bold> Time histories of the drag force with different curvature envelopes. <bold>(B)</bold> Trajectory of a constant envelope, linear envelopes, and averaged linear envelopes.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g009.tif"/>
</fig>
<p>A comparison of the heading angle and passing fluid velocity angle may provide an explanation. As shown in <xref ref-type="fig" rid="F10">Figure 10</xref>, in the predominantly tail curving envelope, the heading angle leads the fluid angle (i.e., the relative angle of attack of the flow). In contrast, for the predominantly head curving envelope, after an initial peak, the heading angle is behind the fluid angle. For the constant envelope, the angles are closely aligned, with the heading angle slightly leading the velocity angle.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Instantaneous and cycle-averaged heading and incoming flow velocity angles for <bold>(A)</bold> tail turning, <bold>(B)</bold> head turning, and <bold>(C)</bold> constant envelope.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g010.tif"/>
</fig>
<p>A leading heading angle may positively influence the turning performance, where it provides additional moment for the rotation and reduces the counter rotation moment. <xref ref-type="fig" rid="F11">Figure 11</xref> shows a schematic representation to highlight the mechanism. A strong tail sweep may provide sufficient moment and energy to turn the swimmer in front of the passing fluid stream by providing additional pressure force to create a moment in the turning direction. Meanwhile, as the tail now sweeps in the opposite direction, the fluid force acting on the head may provide a dampening effect that reduces the counter turning moment. Evidence of this can be seen in the reduced counter turning moment amplitude shown in <xref ref-type="fig" rid="F12">Figure 12</xref>. On the other hand, a curved head may negatively influence the turning performance where it does not create sufficient moment to rotate the swimmer in front of the fluid stream. Additionally, the reactive force during curving of the head leads to a counter turning moment and, as a result, reduces the positive turning effect of the tail curvature. Furthermore, a curved head may provide less resistance during counter turning undulation.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Schematic representation showing the heading angle effect on moment during undulation amplitudes.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g011.tif"/>
</fig>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Time histories of the cycle-averaged moments with a constant envelope, linear envelopes, and averaged linear envelopes.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g012.tif"/>
</fig>
<p>The negative contribution of head turning on the turning performance is also visible in the cycle-averaged power curve in <xref ref-type="fig" rid="F13">Figure 13</xref>.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Time histories of the cycle-averaged power of a constant envelope, linear envelopes, and averaged linear envelopes.</p>
</caption>
<graphic xlink:href="fphy-11-1220596-g013.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="conclusion" id="s6">
<title>6 Conclusion</title>
<p>This work focussed on the unsteady swimming performance of a BCF swimmer during turning. A controllable self-propelled simulation of a BCF swimmer that performs a turning manoeuvre at an intended forward velocity and different body curvature envelopes was created by adding a linear feedback control algorithm to a CFD multi-body tool. By modelling the simplified fish geometry as a multi-body system, information is obtained of joint torque resembling a bio-inspired robotic system so that it is possible to find measures to improve the controllability and turning performance. Implementing a control function within a high-fidelity fluid solver allows for accurate force representation and detailed fluid flow analyses.</p>
<p>Results show the swimmer reaching a quasi-steady turning state similar to the quasi-steady state during rectilinear swimming. The swimmer switches from a rectilinear trajectory to a curved trajectory of a stable, periodically repeating state of turning through a transition stage, during which the body curvature is added. For a constant envelope, it is shown that the turning radius is related to the magnitude of the body curvature. With increased curvature, the power consumption increases linearly, while the turning radius decreases but eventually flattens out.</p>
<p>To identify the contributions of head and tail curvatures on the turning performance, we have compared predominantly head curved, predominantly tail curved and constantly distributed curvature envelopes. The investigation revealed symmetry between the head-dominated and tail-dominated envelopes so that the averaged results show a close agreement with the constant envelope in terms of force and trajectory. This leads to the conclusion of distinguishable contributions of the head and tail curvature on the performance. Furthermore, simulation results show the overall superior turning performance of the predominantly tail curved envelope, highlighting the negative effect of head turning. This leads to finding control parameters that enable smaller turning radii at lower power consumption. Unlike most of the existing research, the present study considers a more biologically realistic scenario by considering a variable body curvature. Therefore, the findings may be useful for the design of bio-inspired underwater robots with regards to manoeuvrability and stability.</p>
<p>This work proposes a new quantitative measure of turning performance, the cost of manoeuvring. CoM provides a combined assessment of power, turning radius and speed. Simulations show that the CoM is improved in a larger body curvature, with a reduced radius as the dominant factor. When the power linearly increases, the radius linearly decreases but flattens out. Among the three curvature envelopes that were examined, the predominantly tail curving envelope achieves the smallest turning radius and best power performance and, subsequently, the best CoM.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s7">
<title>Data availability statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s8">
<title>Author contributions</title>
<p>MW and QX contributed to the conception and design of the study. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>MW received support from the PhD Stipend University of Strathclyde John Anders Research Award with the support from Verlume Ltd. and EPSRC SuperGen Flexfund EP/S000747/1. This work was made possible by Strathclyde University&#x2019;s John Anderson Research Award and industry support by Verlume, formerly EC-OG, of Aberdeen Scotland, to the first author. Further financial support was provided by the EPSRC SuperGen Offshore Renewable Energy (ORE) Hub Flexible Fund Program Grant &#x201c;Autonomous Biomimetic Robot-fish for Offshore Wind Farm Inspection&#x201d; EPSRC (grant number EP/S000747/)</p>
</sec>
<ack>
<p>The authors would like to express special thanks to Edward Wright for proofreading the final manuscript.</p>
</ack>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of interest</title>
<p>The 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="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors, and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<sec id="s12">
<title>Supplementary material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fphy.2023.1220596/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fphy.2023.1220596/full&#x23;supplementary-material</ext-link>
</p>
<supplementary-material xlink:href="DataSheet1.pdf" id="SM1" mimetype="application/pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<label>1.</label>
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lindsey</surname>
<given-names>C</given-names>
</name>
</person-group>. <article-title>Form, function and locomotory habits in fish</article-title>. In: <source>Locomotion</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Academic Press</publisher-name> (<year>1978</year>).</citation>
</ref>
<ref id="B2">
<label>2.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gerstner</surname>
<given-names>CL</given-names>
</name>
</person-group>. <article-title>Maneuverability of four species of coral-reef fish that differ in body and pectoral-fin morphology</article-title>. <source>Can J Zoolog</source> (<year>1999</year>) <volume>77</volume>:<fpage>1102</fpage>&#x2013;<lpage>10</lpage>. <pub-id pub-id-type="doi">10.1139/z99-086</pub-id>
</citation>
</ref>
<ref id="B3">
<label>3.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Blake</surname>
<given-names>R</given-names>
</name>
<name>
<surname>Chan</surname>
<given-names>K</given-names>
</name>
</person-group>. <article-title>Models of the turning and fast-start swimming dynamics of aquatic vertebrates</article-title>. <source>J fish Biol</source> (<year>2006</year>) <volume>69</volume>:<fpage>1824</fpage>&#x2013;<lpage>36</lpage>. <pub-id pub-id-type="doi">10.1111/j.1095-8649.2006.01251.x</pub-id>
</citation>
</ref>
<ref id="B4">
<label>4.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lighthill</surname>
<given-names>MJ</given-names>
</name>
</person-group>. <article-title>Large-amplitude elongated-body theory of fish locomotion</article-title>. <source>Proc R Soc Lond Ser B. Biol Sci</source> (<year>1971</year>) <volume>179</volume>:<fpage>125</fpage>&#x2013;<lpage>38</lpage>. <pub-id pub-id-type="doi">10.1098/rspb.1971.0085</pub-id>
</citation>
</ref>
<ref id="B5">
<label>5.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Maertens</surname>
<given-names>AP</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Triantafyllou</surname>
<given-names>MS</given-names>
</name>
</person-group>. <article-title>Optimal undulatory swimming for a single fish-like body and for a pair of interacting swimmers</article-title>. <source>J Fluid Mech</source> (<year>2017</year>) <volume>813</volume>:<fpage>301</fpage>&#x2013;<lpage>45</lpage>. <pub-id pub-id-type="doi">10.1017/jfm.2016.845</pub-id>
</citation>
</ref>
<ref id="B6">
<label>6.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Drucker</surname>
<given-names>E</given-names>
</name>
<name>
<surname>Lauder</surname>
<given-names>G</given-names>
</name>
</person-group>. <article-title>Wake dynamics and fluid forces of turning maneuvers in sunfish</article-title>. <source>J Exp Biol</source> (<year>2001</year>) <volume>204</volume>:<fpage>431</fpage>&#x2013;<lpage>42</lpage>. <pub-id pub-id-type="doi">10.1242/jeb.204.3.431</pub-id>
</citation>
</ref>
<ref id="B7">
<label>7.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Epps</surname>
<given-names>BP</given-names>
</name>
<name>
<surname>Techet</surname>
<given-names>AH</given-names>
</name>
</person-group>. <article-title>Impulse generated during unsteady maneuvering of swimming fish</article-title>. <source>Experiments in Fluids</source> (<year>2007</year>) <volume>43</volume>:<fpage>691</fpage>&#x2013;<lpage>700</lpage>. <pub-id pub-id-type="doi">10.1007/s00348-007-0401-4</pub-id>
</citation>
</ref>
<ref id="B8">
<label>8.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Blake</surname>
<given-names>R</given-names>
</name>
</person-group>. <article-title>On ostraciiform locomotion</article-title>. <source>J Mar Biol Assoc United Kingdom</source> (<year>1977</year>) <volume>57</volume>:<fpage>1047</fpage>&#x2013;<lpage>55</lpage>. <pub-id pub-id-type="doi">10.1017/s0025315400026114</pub-id>
</citation>
</ref>
<ref id="B9">
<label>9.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fish</surname>
<given-names>FE</given-names>
</name>
</person-group>. <article-title>Balancing requirements for stability and maneuverability in cetaceans</article-title>. <source>Integr Comp Biol</source> (<year>2002</year>) <volume>42</volume>:<fpage>85</fpage>&#x2013;<lpage>93</lpage>. <pub-id pub-id-type="doi">10.1093/icb/42.1.85</pub-id>
</citation>
</ref>
<ref id="B10">
<label>10.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Webb</surname>
<given-names>PW</given-names>
</name>
<name>
<surname>Weihs</surname>
<given-names>D</given-names>
</name>
</person-group>. <article-title>Stability versus maneuvering: Challenges for stability during swimming by fishes</article-title>. <source>Integr Comp Biol</source> (<year>2015</year>) <volume>55</volume>:<fpage>753</fpage>&#x2013;<lpage>64</lpage>. <pub-id pub-id-type="doi">10.1093/icb/icv053</pub-id>
</citation>
</ref>
<ref id="B11">
<label>11.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Weihs</surname>
<given-names>D</given-names>
</name>
</person-group>. <article-title>A hydrodynamical analysis of fish turning manoeuvres</article-title>. <source>Proc R Soc Lond Ser B. Biol Sci</source> (<year>1972</year>) <volume>182</volume>:<fpage>59</fpage>&#x2013;<lpage>72</lpage>. <pub-id pub-id-type="doi">10.1098/rspb.1972.0066</pub-id>
</citation>
</ref>
<ref id="B12">
<label>12.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Anderson</surname>
<given-names>JM</given-names>
</name>
<name>
<surname>Chhabra</surname>
<given-names>NK</given-names>
</name>
</person-group>. <article-title>Maneuvering and stability performance of a robotic tuna</article-title>. <source>Integr Comp Biol</source> (<year>2002</year>) <volume>42</volume>:<fpage>118</fpage>&#x2013;<lpage>26</lpage>. <pub-id pub-id-type="doi">10.1093/icb/42.1.118</pub-id>
</citation>
</ref>
<ref id="B13">
<label>13.</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Randeni</surname>
<given-names>S</given-names>
</name>
<name>
<surname>Sacarny</surname>
<given-names>M</given-names>
</name>
<name>
<surname>Benjamin</surname>
<given-names>M</given-names>
</name>
<name>
<surname>Triantafyllou</surname>
<given-names>M</given-names>
</name>
</person-group>. <article-title>Morpheus: An A-sized AUV with morphing fins and algorithms for agile maneuvering</article-title> (<year>2022</year>). <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/2212.11692">https://arxiv.org/abs/2212.11692</ext-link> (Accessed December 22, 2022)</comment>.</citation>
</ref>
<ref id="B14">
<label>14.</label>
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>J</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>H</given-names>
</name>
</person-group>. <article-title>Mimicry of sharp turning behaviours in a robotic fish</article-title>. In: <conf-name>Proceedings of the 2005 IEEE International Conference on Robotics and Automation</conf-name>; <conf-date>April 18-22, 2005</conf-date>; <conf-loc>Barcelona, Spain</conf-loc>. <publisher-name>IEEE</publisher-name> (<year>2005</year>). p. <fpage>3318</fpage>&#x2013;<lpage>23</lpage>.</citation>
</ref>
<ref id="B15">
<label>15.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Struebig</surname>
<given-names>K</given-names>
</name>
<name>
<surname>Bayat</surname>
<given-names>B</given-names>
</name>
<name>
<surname>Eckert</surname>
<given-names>P</given-names>
</name>
<name>
<surname>Looijestijn</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Lueth</surname>
<given-names>TC</given-names>
</name>
<name>
<surname>Ijspeert</surname>
<given-names>AJ</given-names>
</name>
</person-group>. <article-title>Design and development of the efficient anguilliform swimming robot&#x2014;mar</article-title>. <source>Bioinspiration and Biomimetics</source> (<year>2020</year>) <volume>15</volume>:<fpage>035001</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/ab6be0</pub-id>
</citation>
</ref>
<ref id="B16">
<label>16.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yu</surname>
<given-names>J</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>L</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>L</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>M</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>D</given-names>
</name>
</person-group>. <article-title>Turning control of a multilink biomimetic robotic fish</article-title>. <source>IEEE Trans Robotics</source> (<year>2008</year>) <volume>24</volume>:<fpage>201</fpage>&#x2013;<lpage>6</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2007.914850</pub-id>
</citation>
</ref>
<ref id="B17">
<label>17.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Luo</surname>
<given-names>Y</given-names>
</name>
<name>
<surname>Wright</surname>
<given-names>M</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>Q</given-names>
</name>
<name>
<surname>Yue</surname>
<given-names>H</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>G</given-names>
</name>
</person-group>. <article-title>Fluid&#x2013;structure interaction analysis on motion control of a self-propelled flexible plate near a rigid body utilizing PD control</article-title>. <source>Bioinspiration and Biomimetics</source> (<year>2021</year>) <volume>16</volume>:<fpage>066002</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/ac1cee</pub-id>
</citation>
</ref>
<ref id="B18">
<label>18.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Triantafyllou</surname>
<given-names>MS</given-names>
</name>
</person-group>. <article-title>Independent caudal fin actuation enables high energy extraction and control in two-dimensional fish-like group swimming</article-title>. <source>J Fluid Mech</source> (<year>2018</year>) <volume>850</volume>:<fpage>304</fpage>&#x2013;<lpage>35</lpage>. <pub-id pub-id-type="doi">10.1017/jfm.2018.456</pub-id>
</citation>
</ref>
<ref id="B19">
<label>19.</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Hu</surname>
<given-names>J</given-names>
</name>
</person-group>. <article-title>Numerical study on hydrodynamic performance of bio-mimetic locomotion</article-title> (<year>2016</year>). <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://purl.org/coar/resource_type/c_db06">http://purl.org/coar/resource_type/c_db06</ext-link>
</comment> (Accessed May 9, 2023).</citation>
</ref>
<ref id="B20">
<label>20.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>R</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>Q</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>J</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>L</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>G</given-names>
</name>
<etal/>
</person-group> <article-title>A multi-body dynamics based numerical modelling tool for solving aquatic biomimetic problems</article-title>. <source>Bioinspiration and biomimetics</source> (<year>2018</year>) <volume>13</volume>:<fpage>056001</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/aacd60</pub-id>
</citation>
</ref>
<ref id="B21">
<label>21.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tian</surname>
<given-names>R</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>L</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>W</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>X</given-names>
</name>
<name>
<surname>Ravi</surname>
<given-names>S</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>G</given-names>
</name>
</person-group>. <article-title>CFD based parameter tuning for motion control of robotic fish</article-title>. <source>Bioinspiration and Biomimetics</source> (<year>2020</year>) <volume>15</volume>:<fpage>026008</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/ab6b6c</pub-id>
</citation>
</ref>
<ref id="B22">
<label>22.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hess</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>X</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>T</given-names>
</name>
</person-group>. <article-title>CFD-based multi-objective controller optimization for soft robotic fish with muscle-like actuation</article-title>. <source>Bioinspiration and biomimetics</source> (<year>2020</year>) <volume>15</volume>:<fpage>035004</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/ab6dbb</pub-id>
</citation>
</ref>
<ref id="B23">
<label>23.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gray</surname>
<given-names>J</given-names>
</name>
</person-group>. <article-title>Directional control of fish movement</article-title>. <source>Proc R Soc Lond Ser B, Containing Pap a Biol Character</source> (<year>1933</year>) <volume>113</volume>:<fpage>115</fpage>&#x2013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.1098/rspb.1933.0035</pub-id>
</citation>
</ref>
<ref id="B24">
<label>24.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ijspeert</surname>
<given-names>AJ</given-names>
</name>
</person-group>. <article-title>Central pattern generators for locomotion control in animals and robots: A review</article-title>. <source>Neural networks</source> (<year>2008</year>) <volume>21</volume>:<fpage>642</fpage>&#x2013;<lpage>53</lpage>. <pub-id pub-id-type="doi">10.1016/j.neunet.2008.03.014</pub-id>
</citation>
</ref>
<ref id="B25">
<label>25.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kern</surname>
<given-names>S</given-names>
</name>
<name>
<surname>Koumoutsakos</surname>
<given-names>P</given-names>
</name>
</person-group>. <article-title>Simulations of optimized anguilliform swimming</article-title>. <source>J Exp Biol</source> (<year>2006</year>) <volume>209</volume>:<fpage>4841</fpage>&#x2013;<lpage>57</lpage>. <pub-id pub-id-type="doi">10.1242/jeb.02526</pub-id>
</citation>
</ref>
<ref id="B26">
<label>26.</label>
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Barrett</surname>
<given-names>DS</given-names>
</name>
</person-group>. <source>Propulsive efficiency of a flexible hull underwater vehicle</source>. <publisher-loc>Cambridge, MA</publisher-loc>: <publisher-name>Massachusetts Institute of Technology</publisher-name> (<year>1996</year>).</citation>
</ref>
<ref id="B27">
<label>27.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Maertens</surname>
<given-names>A</given-names>
</name>
<name>
<surname>Triantafyllou</surname>
<given-names>MS</given-names>
</name>
<name>
<surname>Yue</surname>
<given-names>DK</given-names>
</name>
</person-group>. <article-title>Efficiency of fish propulsion</article-title>. <source>Bioinspiration and biomimetics</source> (<year>2015</year>) <volume>10</volume>:<fpage>046013</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/10/4/046013</pub-id>
</citation>
</ref>
<ref id="B28">
<label>28.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Walker</surname>
<given-names>JA</given-names>
</name>
</person-group>. <article-title>Does a rigid body limit maneuverability?</article-title> <source>J Exp Biol</source> (<year>2000</year>) <volume>203</volume>:<fpage>3391</fpage>&#x2013;<lpage>6</lpage>. <pub-id pub-id-type="doi">10.1242/jeb.203.22.3391</pub-id>
</citation>
</ref>
<ref id="B29">
<label>29.</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jindrich</surname>
<given-names>DL</given-names>
</name>
<name>
<surname>Full</surname>
<given-names>RJ</given-names>
</name>
</person-group>. <article-title>Many-legged maneuverability: Dynamics of turning in hexapods</article-title>. <source>J Exp Biol</source> (<year>1999</year>) <volume>202</volume>:<fpage>1603</fpage>&#x2013;<lpage>23</lpage>. <pub-id pub-id-type="doi">10.1242/jeb.202.12.1603</pub-id>
</citation>
</ref>
<ref id="B30">
<label>30.</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Mjaavatten</surname>
<given-names>A</given-names>
</name>
</person-group>. <article-title>Curvature of a 1D curve in a 2D or 3D space</article-title> (<year>2021</year>). <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://www.mathworks.com/matlabcentral/fileexchange/69452-curvature-of-a-1d-curve-in-a-2d-or-3d-space">https://www.mathworks.com/matlabcentral/fileexchange/69452-curvature-of-a-1d-curve-in-a-2d-or-3d-space</ext-link> (Accessed July 10, 2023)</comment>.</citation>
</ref>
</ref-list>
</back>
</article>