Keywords

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

1 Introduction

As shown in the other chapters of the book, inspired by fish and other aquatic animals, people have been building robot fish for two decades since MIT’s robot tuna [1]. Fish has superior efficiency and agility. It is shown that the propulsion efficiency of the fish can exceed 90 % [1]; the speed of a sailfish can reach 110 km/h [2], and the maximum acceleration of a pike is as high as 249 m/s2, which is over 25 g [3]. Also, the fish swims silently and can turn around sharply without much deceleration. The outstanding performance of the fish is attributed to multiple factors, such as the streamlined body, mucous skin, etc. Though, the most important one is the flapping tail. It is also what people have been mimicking in making their robot fish.

In fish swimming, there are mainly two types of propulsions, i.e., the Body and/or Caudal Fin (BCF) propulsion and the Medium and/or Paired Fin (MPF) propulsion [4]. BCF is adopted by most of the fast swimmers, such as sailfish, tuna, pike, etc. In fact, around 85 % of fish species swim in BCF form. Examples for MPF swimmers are manta ray and box fish. Compared to BCF swimmers, MPF swimmers are more agile. In robot fish development, high speed and high efficiency are the main pursuits. As a result, most of existing robot fish adopt BCF as the way to generate thrust.

Within BCF, the motion modes are further divided into four categories, i.e., Thunniform, Carangiform, Sub-carangiform, and Anguilliform. When the fish swims, its body curve is a wave traveling from the head to the tail. The wave length, measured in body length (BL), increases from Anguilliform to Thunniform. The BCF swimming can also be roughly categorized as oscillatory form swimming and undulatory form swimming. As a comparison, Thunniform is considered as oscillatory form and the other three are viewed as undulatory form.

Fundamental motion of BCF swimming is flapping from side to side. There are a number of ways to generate such a flapping motion. One method is to use direct drive or through traditional mechanisms, e.g., crank, four-bar mechanism, etc. In this method, the unidirectional rotation of the actuator (typically a motor) is transferred to the back-and-forth motion, and then to the flapping motion. A simple example is that the tail is connected to the motor directly. By controlling the motor rotating back and forth, the tail flaps from side to side. In this method, as only one actuator is used, and the tail can only rotate about a joint, they are referred to as the Single Joint (SJ) design. One example is the robot zebra fish in [5]. Robot fish with the SJ design is simple in both mechanical structure and control; also the tail can flap fast and forcefully. Its drawback is that the tail is rigid and the flapping motion is far unlike the fish. Hence, its propulsion efficiency is low. In addition, it can only mimic oscillatory form swimming. To better fit the fish swimming body curve, a passive deflectable fin can be added, such as the robot fish developed in Beihang University [6], and the Tai-robot-kun developed in University of Kitakyushu [7]. By using passive flexible fins, the flapping motion is closer to that of the fish flapping motion, but the improvement is limited.

The second method is to use a chain of serially connected links with revolute joints. Each joint is powered by an actuator. The actuators drive the joints rotating back and forth generating the flapping motion. This method is referred to as the Multi-Joint (MJ) design. In this design, the flapping curve is a polyline, which contains several (usually 3 or 4) straight line segments. Compared to the SJ design, its motion resembles the fish flapping motion better. However, the motor motion synchronization is crucial. Also, it becomes complicated with the increased number of motors and the energy consumption is high. Examples of MJ robot fish include the robot tuna developed in MIT [8], the robot fish developed in Essex University [9], the robot knife fish developed in Northwestern University [10], and the robot fish developed in Chinese Academic of Science Institute of Automation [11].

In addition to the motor-based designs, novel actuators are also used in robot fish designs. Examples include Ionic Polymer-Metal Composite (IPMC) actuated robot fish [12, 13], Shape Memory Alloy (SMA) actuated robot fish [1416], and Piezoelectric material actuated robot fish [1719]. For IPMC, when exposed to an electric field, the material deflects. The deflection is close to a circular arc. By controlling the strength and direction of the electric field, the bending amplitude and direction can be controlled. Though, IPMC is soft and the force generated is low. SMA can generate larger force, which is controlled by temperature. It can restore the previous shape when heated above its transit temperature. In other words, by heating and cooling SMA, a flapping motion can be obtained. However, due to the slow heating and cooling process, its flapping frequency is limited. Also, it is difficult to control the flapping amplitude and flapping pattern. Piezoelectric material, such as PZT, is also controlled by electric field. By controlling the voltage applied to the PZT, the mechanical strain can be controlled. However, the strain is usually very small and needs be amplified to generate sufficient flapping. Also, the required voltage is high. Moreover, it should be mentioned that, a common drawback of the smart materials-based flapping methods is that the material itself is highly energy inefficient. This results in the overall efficiency of the propulsion system being rather low.

The drawbacks of the existing flapping systems raise the desire of a new design method, in which the amplitude of the flapping needs to be large, the flapping pattern and flapping frequency need to be easy to control, and most importantly, the efficiency must be high. By reexamining the fish body structure, in this chapter, the Biomimetic Wire Driven Mechanism (BWDM) is first introduced and then used for robot fish design. Three BWDM robot fishes are presented, the first one is capable of oscillatory swim; the second one is capable of undulatory swim and oscillatory swim, and the third one can swim like a dolphin and a shark.

2 Biomimetic Wire-Driven Mechanism

Wires and cables have long been used to transmit motion and power. Examples include lift cranes and marionettes. In these traditional wire-driven systems, the motion and the power are transmitted through the rigid structures by the wires. In this chapter, the BWDM is introduced, in which the body structure is flexible and underactuated. It is shown that this mechanism is well suited for underwater propulsion.

2.1 Nature Inspiration

Most aquatic animals have a flexible body and the body motion is controlled by the attached muscles and tendons. From the structure point of view the flexible bodies are divided into two types. The first type of flexible body is similar to that of the bony fish, such as the carp. As shown in Fig. 1a [20], the carp body has a backbone which contains a chain of short rigid vertebrae. Two successive vertebrae form a joint and each joint can rotate a small angle. Due to the large number of joints the backbone can bend a large angle. A close examination reveals that the joints’ rotations are not arbitrary, instead they are constrained by the surrounded muscles. During the flapping motion, the backbone can be viewed as a number of bending sections and the bending follows the fish swimming pattern (i.e., the traveling wave equation). The second type of flexible body is similar to the body of mollusks, such as the octopus. It is soft and boneless. Figure 1b shows the octopus arm structure. It contains three types of muscles: the longitudinal muscle (L), the transversal muscle (T), and the oblique muscle (O). The arm can bend by the longitudinal muscle, elongate by the transversal muscle, and twist by the oblique muscle.

Fig. 1
figure 1

Examples of flexible body in nature: a carp anatomy [20]; b octopus arm anatomy [21]; c biomimetic wire-driven mechanism (BWDM)

The BWDM design follows these examples. As shown in Fig. 1c, it comprises of a flexible backbone, which mimics the fish backbone, and a number of controlling wires, which mimic the octopus arm muscles. In the following, the design is detailed from three aspects: the backbone, the backbone segmentation, and the wire configuration.

2.2 Backbone Type

Similar to the flexible bodies in nature, the BWDM has two types of backbone. The first one is the serpentine backbone, which is similar to the carp backbone and the second one is named the continuum backbone, which is similar to the octopus arm structure.

Serpentine Backbone

The serpentine backbone comprises of a number of rigid vertebrae and the elastic constraint component, which is usually in the form of an elastic tube or elastic beam. Figure 2 shows the serpentine backbone structure. The vertebrae are connected serially, and each pair of adjacent vertebrae forms a joint. The elastic constraint component fits tightly with the vertebrae. It also helps in the vertebrae articulation. The backbone bending is controlled by a pair of wires. By pulling one wire and releasing the other, the joints rotate and the backbone bends. The joints’ rotations follow the deflection of the elastic constraint component. Suppose all the vertebrae have identical length and the elastic constraint component has identical bending stiffness along the axis, all the joints’ rotations are the same. This is known as the piecewise constant curvature assumption [22].

Fig. 2
figure 2

Illustration of the BWDM with serpentine backbone

In the serpentine backbone, the vertebra design is very important as it determines the joint type and therefore the backbone bending. Figure 3 gives two designs. In Fig. 3a, the vertebra has two cylindrical connectors at the two ends. Two successive vertebrae form a revolute joint by the connectors. In the middle of the vertebra there is a through hole, which houses the elastic constraint component. Another two holes are placed at the two sides of the vertebra. They allow the controlling wires to pass through. This design can only bend in a plane. Figure 3b shows another vertebra design. In this design, one end of the vertebra has a concave spherical surface and the other end has a matching convex spherical surface. In the articulation, the convex spherical surface of the vertebra fits the concave spherical surface of the successive vertebra. With this design, each joint can rotate in 3D. However, the rolling DOF is confined by the constraint component. Hence, it can bend in all directions with limited twisting.

Fig. 3
figure 3

Two types of vertebra designs: a vertebra with revolute joint (for 1D bending); b vertebra with spherical joint (for 2D bending)

Continuum Backbone

As in nature, some flexible bodies are entirely made of soft tissues. Inspired by this, a continuum backbone is designed which replaces the aforementioned rigid vertebrae by a continuous elastic beam. The wires are guided by the wire spacing disks attached to the elastic beam. There is no joint in the continuum backbone, however, one can treat the beam segment between two wire spacing disks as a pseudo-joint as shown in Fig. 4. Similarly, the backbone bending is controlled by pulling one wire and releasing the other in the wire pair. Ideally, without considering the gravity and other external loads, the deformation of the continuum backbone is a circular arc, i.e., the piecewise constant curvature assumption applies as well.

Fig. 4
figure 4

Illustration of the BWDM with continuum backbone

2.3 Backbone Segmentation

The bending of the BWDM backbone is controlled by the wire pairs. When there is only one pair of wires as shown in Fig. 5a, all the vertebrae are in the same bending section. The backbone bends to a C-shape as shown in Fig. 7a. The backbone can also be segmented into multiple sections. The vertebrae within a segment form a bending section. Figure 5b shows a two-section serpentine backbone. In the figure, the first bending section is between the base and the junctions of the first wire pair; the second bending section contains the vertebrae between the junctions of wire pair 1 and wire pair 2. Each bending section can bend independently. When the two bending sections bend to the same direction the shape of the backbone is C-shape; when they bend in the opposite direction the backbone is in S-shape, which is shown in Fig. 7b. There could be more bending sections, and the backbone segmentation is similar. For the continuum backbone, the segmentation is the same. Figure 6 shows the continuum backbone with two bending sections.

Fig. 5
figure 5

Backbone segmentation: a serpentine backbone with one bending section; b serpentine backbone with two bending sections

Fig. 6
figure 6

Continuum backbone with two bending sections

Fig. 7
figure 7

Bending motion of the BWDM backbone: a C-shape bending; b S-shape bending

2.4 Wire Configuration

The backbone bending motion is controlled by the wire pairs. Therefore, the bending is affected by the wire configuration. In this section, three wire configurations are considered, i.e., the parallel wire configuration, the tapered wire configuration, and the twisted wire configuration.

Parallel wire configuration is straightforward. In this configuration, the wires with the same length as the elastic constraint component are placed along the neutral axis. Figure 5a, b shows the parallel wire configuration of the serpentine BWDM with one bending section and two bending sections, respectively. Figure 6 shows the parallel wire configuration of the continuum BWDM with two bending sections. It is noted that when there are multiple bending sections, the motions of the two wire pairs are coupled, i.e., the motion of the wire pair 2 is affected by the motion of the wire pair 1. Figure 8 shows another parallel wire configuration, in which the motions of the wire pairs are decoupled. In this configuration, the wire pair 2 converges at the end of the first bending section, goes through the neutral axis, and diverges at the beginning of the first bending section. When the backbone is deflected, the length of the neutral axis does not change. Therefore, the motion of the second wire pair is not affected by the bending of the first section. In the parallel wire configuration, the wires in the pair are coplanar. Hence, the bending of the backbone is in the same plane. Three-dimensional bending can be achieved by the control of multiple wire pairs, such as two orthogonally placed wire pairs.

Fig. 8
figure 8

Parallel wire configuration with decoupled wire motions

Figure 9 shows the tapered wire configuration, which is similar to the parallel wire configuration. In this configuration, the wires in a pair are coplanar as well. The only difference is that there is a taper angle between the wires and the backbone neutral axis. With this wire configuration, the vertebrae are wider when close to the base and are narrower when close to the distal end. In this configuration, the moment exerted on the backbone is related to the wire spacing and the wire tension, but is not affected by the taper angle [23, 24]. Therefore, to generate the same amount of bending angle with the tapered wire configuration the mass at the distal end is smaller, which is helpful in reducing the energy consumption in flapping. It should be noted that, the backbone bending with the tapered wire configuration is still planar.

Fig. 9
figure 9

Tapered wire configuration

In the previous two configurations the wires and the backbone are coplanar. The wires control the backbone bending in the plane. In the twisted wire configuration as shown in Fig. 10, the wires spiral around the backbone, which is similar to the octopus arm muscle arrangement. The backbone bending with the twisted wire configuration is shown in Fig. 10b. When one of the wires contracts, the force exerted to the backbone has an axial component as well as a tangential component. The axial force makes the backbone bend, while the tangential component makes the backbone twist. In this configuration, the backbone deformation is much more complex and can be used to accomplish complex tasks in addition to bending.

Fig. 10
figure 10

Twisted wire configuration: a the wire configuration in resting position; b bending and twisting

By properly choosing the backbone type, the backbone segmentation, and the wire configuration, one can design the BWDM for a variety of applications, such as underwater propulsion.

3 Wire-Driven Robot Fish

The BWDM is well suited for designing flapping-based underwater propulsion [25]. Figure 11 shows a family of wire-driven robot fish [2428]. The BWDM is also applicable for other propulsions, such as the double hull boat [29] and the LTAV [23], or work in confined space [3034]. In this chapter, three BWDM robot fish and experimental results are presented. The first BWDM robot fish has an oscillatory tail and a pair of pectoral fins, the second one has an undulatory tail, and the third one can mimic both shark swim and dolphin swim.

Fig. 11
figure 11

A family of BWDM robot fish: a serpentine oscillatory wire-driven robot fish; b continuum oscillatory wire-driven robot fish; c serpentine undulatory wire-driven robot fish; d wire-driven robot fish with vector propulsion; e serpentine oscillatory wire-driven robot fish with pectoral fins; f twisting wire-driven robot fish

3.1 Design Example 1: Serpentine Oscillatory Wire-Driven Robot Fish with Pectoral Fins

This section introduces the serpentine oscillatory wire-driven robot fish. It uses one-section, planar joint, and tapered wire configuration. It is capable of making oscillatory swims. To improve the stability, it also has a pair of pectoral fins.

The Design

The oscillatory wire-driven robot fish comprises of three parts [35]: the wire-driven oscillatory flapping tail, the pectoral fins, and the fish body.

(A) The Wire-Driven Oscillatory Flapping Tail

In this design, the single segment serpentine BWDM is used. The design is shown in Fig. 12a. It is composed of seven vertebrae, two pairs of wires, and an elastic tube. The tube and the vertebrae make up the backbone of the tail. All the vertebrae, except the last one, have a similar structure. Two successive vertebrae form a joint, as shown in Fig. 12b. The vertebrae parameters are shown in Table 1. Each vertebra has four through holes for the two pairs of wires. The first pair uses the lower holes, and the second pair uses the upper holes. The elastic tube goes through all the vertebrae to confine the joints’ rotations. A lunate fin plate is mounted onto the last vertebra. Its chord length is 68 mm and the width is 158 mm. The oscillatory flapping tail is driven by two servomotors through the two pairs of wires. Each motor controls a reel, which in turn drives the wire pairs as shown in Fig. 13.

Fig. 12
figure 12

The design of flapping tail: a the overall structure; b the joint

Table 1 Vertebrae parameters
Fig. 13
figure 13

The wire connection of the oscillatory wire-driven flapping tail

When the motor rotates, one wire is shortened while the other wire is released; as a result, a torque is applied to the backbone. The backbone will bend to a circular arc. As an approximation, the rotation angles of the joints are considered the same [25, 27, 28, 30, 31]. Note that the two parallel wire pairs are used to control the bending motion of the tail. When the rotations of the two reels are the same the tail bends to a circular arc in a plane as shown in Fig. 14a. When the rotations of the two reels are different, the tail will not only bend but also twist as shown in Fig. 14b. This makes the wire-driven tail flaps in a 3D manner, which resembles the fish flapping in some special occasions, such as slow cruising.

Fig. 14
figure 14

Illustration of the tail movement: a pure bending in plane; b bending as well as twisting

(B) Pectoral Fins

Pectoral fins are used mainly for maneuvering. Some fish also use pectoral fins to cruise. In this robot fish, the pectoral fins can be used for both propulsion and maneuvering. It can also be used in coordination with the caudal fin.

The shape of the pectoral fin is shown in Fig. 15. Based on Blake’s theory, such a wedge-shaped blunt fin is hydrodynamically more efficient for drag-based propulsion than that of a rectangular shape due to the reduced interference drag near the body [36].

Fig. 15
figure 15

The design of the pectoral fin

The movement of the pectoral fin is similar to that of the bird’s wing. From Azuma’s theory, the movement of the bird’s wing can be decomposed to four basic motions: rowing, feathering, flapping, and spanning as shown in Fig. 16 [37]. From the figure, it is seen that the feathering motion is a 3D motion. The range of the feathering motion is from 0° (parallel to the horizontal plane) to 90° (perpendicular to the horizontal plane). The former is the flapping motion while the latter is the rowing motion. The main difference among the rowing, flapping, and feathering is the feathering angle.

Fig. 16
figure 16

Illustration of the pectoral fin motions: a rowing; b feathering; c flapping

To realize the feathering motions, the designed pectoral fin is shown in Fig. 17. It is driven by two motors. One motor controls the flapping of the pectoral fin through a gear rack, while the other controls the feathering angle through a circle gear drum. By controlling the two motors, it can achieve rowing, feathering, and flapping motions. Specifically, the feathering angle ranges from −15° to 105° relative to the horizontal plane and hence, it can do rowing, flapping, and feathering.

Fig. 17
figure 17

The design of the pectoral fin

(C) The Body

The body is the base of the wire-driven flapping tail and pectoral fins. It also holds the servomotors, the control system, the power supply (batteries), etc. It is known the fish body is the main source of water drag. Mimicking the shape of the fish, the cross section of the designed robot fish body is ellipsoid. The size changes gradually along the body length direction. This streamlined design helps to reduce the water resistance. Figure 18 shows the design and the photo of the robot fish. The overall body length is 555 mm and the pectoral fins span 290 mm.

Fig. 18
figure 18

The oscillatory wire-driven robot fish: a the simplified CAD model; b the photo of the prototype

Modeling and Analysis

(A) The Flapping Tail Propulsion Model

The wire-driven flapping tail has seven joints, whose rotations are assumed to be identical as indicated previously. The rotation of a joint is illustrated in Fig. 19. In the figure, H i is the height of vertebra i, h 0 is the initial joint gap, h β is the initial wire length through the joint gap, L i is the diameter of collision edge, d i is the top wire eyelet distance, D i is the bottom eyelet distance, β is the taper angle, and θ is the joint rotation angle. Assuming the joint rotations are small (i.e., sin(θ) ≈ θ), the relationship between the wire length variation and joint rotation angle can be found by simple geometric manipulations:

$$\left\{ {\begin{array}{*{20}c} {h_{\beta 1} = h_{0} -\Delta h_{\beta 1} = \sqrt {\left( {h_{0} \cdot { \tan }\,\beta } \right)^{2} + \left( {h_{0} - \frac{{D_{i} \theta }}{2}} \right)\left( {h_{0} - \frac{{d_{i} \theta }}{2}} \right)} } \\ {h_{\beta 2} = h_{0} -\Delta h_{\beta 2} = \sqrt {\left( {h_{0} \cdot { \tan }\,\beta } \right)^{2} + \left( {h_{0} + \frac{{D_{i} \theta }}{2}} \right)\left( {h_{0} + \frac{{d_{i} \theta }}{2}} \right)} } \\ \end{array} } \right.$$
(1)

where \(d_{i} = D_{i} - 2H_{i} \cdot \tan \beta\). When the taper angle is small, it can be further simplified as follows:

Fig. 19
figure 19

Illustration of the wire displacement with respect to joint rotation. a Joint at rest, b joint rotated, c wire displacement in joint rotation

$$h_{\beta 1} \approx - h_{\beta 2} \approx \frac{{D_{i} }}{2} \cdot \theta \cdot \cos \beta$$
(2)

The rotation angle of the driving motor is calculated by dividing the wire motion by the wheel radius. The overall bending angle, Θ, of the tail and the maximum joint rotation, θ max, can be computed as in Eqs. (3) and (4) below:

$$\Theta = N\theta$$
(3)
$$\theta_{\hbox{max} } = 2\arctan \left( {\frac{{h_{0} }}{{L_{i} }}} \right)$$
(4)

where N is the number of joints. Note that the vertebra parameters and θ max are shown in Table 1. Moreover, the positions of the joints can be found by Eq. (5), where x is the position along the fish body, and y is the lateral displacement of the joint.

$$\left\{ {\begin{array}{*{20}c} {y_{i} \left( t \right) = \mathop \sum \limits_{j = 1}^{i} \left( {\left( {H_{j} + h_{0} } \right) \cdot \sin \left( {j \cdot \theta } \right)} \right)} \\ {x_{i} \left( t \right) = \mathop \sum \limits_{j = 1}^{i} \left( {\left( {H_{j} + h_{0} } \right) \cdot \cos \left( {j \cdot \theta } \right)} \right)} \\ \end{array} } \right.$$
(5)

Based on the elongated body theory (EBT) [38, 39], the cruising speed is dependent on the tail tip lateral velocity and slope. From Eq. (5), the lateral displacement of tail tip with respect to the tail curve length q is:

$$\left. {y\left( {q,t} \right)} \right|_{x = L} \, = \mathop \sum \limits_{i = 1}^{N} \left( {\left( {H_{i} + h_{0} } \right) \cdot \sin \left( {i \cdot \theta } \right)} \right)$$
(6)

Accordingly, the tail tip slope and lateral velocity are as follows:

$$\left. {\frac{{\partial y\left( {q,t} \right)}}{\partial q}} \right|_{x = L} = \sin \left( {\mathop \sum \limits_{i = 1}^{N} \theta } \right)$$
(7)
$$\left. {\frac{{\partial y\left( {q,t} \right)}}{\partial t}} \right|_{x = L} = - \mathop \sum \limits_{i = 1}^{N} \left( {H_{i} + h_{0} } \right)\cos \left( {i \cdot \theta } \right) \cdot \left( {i \cdot \dot{\theta }} \right)$$
(8)

We can also compute the cruising speed, the thrust, as well as the Froude efficiency and the results are shown in the experiment section.

Note that in this case, it is assumed that the pectoral fins are kept still and are parallel to the horizontal plane so that its influence is ignored.

(B) Pectoral Fins Propulsion Model

The two pectoral fins of the robot fish have the same synchronous motions. Thus, only one pectoral fin is analyzed herein. The coordinate system is shown in Fig. 20. The distance between the distal end of the fin and the center of flapping motion is L = 122.5 mm, the area of each fin is S p  = 4683.4 mm2, the flapping angle is ϕ fl, and the feathering angle is ϕ fe. The two angles are independently controlled by two servomotors.

Fig. 20
figure 20

Coordinate system of the pectoral fin

Assuming that P G  = (x′, y′, z′) is an arbitrary point on the fin plane ignoring its thickness, then the position of the point is:

$${}^{o}P_{G} = {}_{o'}^{o} T{}^{{o^{{\prime }} }}P_{G}$$
(9)

where \(\left\{ O \right\}\) represents the coordinate system attached to the fish body and \(\left\{ {O^{{\prime }} } \right\}\) is the coordinate system attached to the distal end of the pectoral fin, and \(OO^{{\prime }} = L\). The homogeneous transformation matrix \({}_{{o^{{\prime }} }}^{o} T\) is defined in Eq. (10).

$${}_{{o^{{\prime }} }}^{o} T = \left[ {\begin{array}{*{20}c} {{}_{{o^{{\prime }} }}^{o} R} & {^{o} P_{{o^{{\prime }} }} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]$$
(10)

where \({}_{{o^{{\prime }} }}^{o} R\) is the rotation matrix and \(^{o} P_{{o^{{\prime }} }}\) is the position vector.

$${}_{{o^{{\prime }} }}^{o} R = R\left( {y,\phi_{\text{fe}} } \right) \cdot R\left( {x,\phi_{\text{fl}} } \right) = \left[ {\begin{array}{*{20}c} {\cos \phi_{\text{fe}} } & 0 & {\sin \phi_{\text{fe}} } \\ 0 & 1 & 0 \\ { - \sin \phi_{\text{fe}} } & 0 & {\cos \phi_{\text{fe}} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} 1 & 0 & 0 \\ 0 & {\cos \phi_{\text{fl}} } & { - \sin \phi_{\text{fl}} } \\ 0 & {\sin \phi_{\text{fl}} } & {\cos \phi_{\text{fl}} } \\ \end{array} } \right]$$
(11)
$$^{o} P_{{o^{\prime } }} = \left[ { - \begin{array}{*{20}c} {L\sin \phi_{\text{fl}} \sin \phi_{\text{fe}} } & {L\cos \phi_{\text{fl}} } & {L\sin \phi_{\text{fl}} \cos \phi_{\text{fe}} } \\ \end{array} } \right]^{T}$$
(12)

Combining Eqs. (10)–(12), it follows that:

$${}_{{o^{\prime } }}^{o} T = \left[ {\begin{array}{*{20}c} {\cos \phi_{\text{fe}} } & {\sin \phi_{\text{fe}} \sin \phi_{\text{fl}} } & {\sin \phi_{\text{fe}} \cos \phi_{\text{fl}} } & { - L\sin \phi_{\text{fl}} \sin \phi_{\text{fe}} } \\ 0 & {\cos \phi_{\text{fl}} } & { - \sin \phi_{\text{fl}} } & {L\cos \phi_{\text{fl}} } \\ { - \sin \phi_{\text{fe}} } & {\cos \phi_{\text{fe}} \sin \phi_{\text{fl}} } & {\cos \phi_{\text{fe}} \cos \phi_{\text{fl}} } & {L\sin \phi_{\text{fl}} \cos \phi_{\text{fe}} } \\ 0 & 0 & 0 & 1 \\ \end{array} } \right]$$
(13)

When the pectoral fins move, the displacement of point P G is determined by Eq. (9). Furthermore, its velocity, acceleration, and force or torque can also be calculated. Specifically, from Eq. (9), taking the first time derivative, the velocity is:

$${}^{o}V_{G} = {}^{o}\dot{P}_{G}$$
(14)

The thrust force of the fin is:

$$P_{t} = \mathop \int _{0}^{{t_{0} }} \int {{\text{d}}F_{t} {\text{d}}t} = \int_{0}^{{t_{0} }} {\iint\limits_{S} {\frac{1}{2}\rho ((^{o} V_{\text{G}} )_{x} - U)^{2} C_{D2} {\text{d}}S^{\prime}_{P} {\text{d}}t}}$$
(15)

where \(({}_{{}}^{o} V_{G} )_{x}\) is the component along the forward direction, C D2 is the drag coefficient of the fin. For a plate, C D2 is 1.18. Sp is the projection of \(S_{p}\) on the YOZ plane.

$$S^{\prime}_{p} = S_{p} \cos \phi_{fl} \cos \phi_{fe}$$
(16)

When the fish is cruising, the thrust force is equal to the overall drag force, namely, \(2F_{t} = F_{D} + 2F_{Dp}\), where \(F_{D}\) is the drag from the body, and \(F_{Dp}\) is the drag force of the pectoral fins. The equilibrium equation is as Eq. (17):

$$\int\limits_{0}^{T} {\iint\limits_{S} {\rho (({}_{{}}^{\text{o}} V_{G} )_{x} - U)^{2} C_{D2} {\text{d}}S_{P}^{ '} {\text{d}}t = \frac{1}{2}\rho U^{2} C_{D1} ST + \rho U^{2} \xi C_{D2} S_{P} T}}$$
(17)

where ξD 2 is the average drag coefficient of the pectoral fins during one flapping cycle. The cruising speed U can then be resolved from Eq. (17).

Motion Control

The robot fish is controlled by the operator through Bluetooth. The control scheme is shown in Fig. 21. The command is sent to the micro control unit (MCU) by the operator via a remote controller. Upon receiving the command, the MCU generates a pulse width modulation (PWM) sequence which controls the velocity and position of the servomotor. The rotation of the motor is transmitted to the oscillatory flapping motion of the tail through the BWDM. The flapping motion controls the direction and magnitude of the robot fish. This is a human in-loop control system in which visual-based feedback is needed.

Fig. 21
figure 21

The swimming control scheme of the robot fish

Each flapping cycle is divided into four stages as shown in Fig. 22. Stage I: Flap from resting position to the right limit; Stage II: Flap from right limit back to the resting position; Stage III: Flap from resting position to the left limit; Stage IV: Flap from left limit back to the resting position. The forward speed and turning performance (i.e., turning speed and turning radius) are controlled by the flapping velocity in the four stages and the amplitudes of the two limits.

Fig. 22
figure 22

Illustration of an oscillatory flapping cycle

For the pectoral fins, the control is carried out in a similar manner.

For the oscillatory flapping robot fish, there are three basic motion modes, i.e., swimming by the tail only, swimming by the pectoral fins only, and swimming by the tail and the pectoral fins. In each mode, the robot fish can swim forward, turn leftward, and turn rightward. In the first motion mode, the robot swims forward by flapping the tail symmetrically, and turns around by flapping the tail asymmetrically. In the second motion mode, the robot swims forward by rowing and feathering the pectoral fins, and turns around with the tail serving as the rudder. In the third motion mode, the two fins work together to enhance the performances. The experiment results are shown in the next section.

Experiment Results

The prototype of our robot fish is shown in Fig. 11. Its tail and shell are fabricated by 3D printing. The material used is ABS plastic. The caudal fin and pectoral fins are made of 1 mm thick ABS plastic plate. The wires are steel wires with 0.5 mm diameter. Four AAA batteries are used to drive the motors and the controller (AVR ATmega 128 [20]). Motion commands are sent to the controller via Bluetooth. Waterproof of the fish is done by covering the body with a latex skin. The total weight is about 1.5 kg. Tests are carried out in a water tank of 1.9 × 0.9 × 0.8 m. As mentioned in the previous section, three sets of tests are conducted: (A) swimming using the wire-driven caudal fin alone; (B) swimming using the pectoral fins alone; and (C) swimming using a combination of all the fins.

(A) Swim by the Wire-Driven Caudal Fin

In this experiment, the pectoral fins are kept still in horizontal plane and the robot fish is propelled by the tail only. During the test, the robot fish is controlled to swim with different flapping frequencies and amplitudes. The cruising speed and turning performance were estimated from the videos as shown in Fig. 23.

Fig. 23
figure 23

Swimming with the wire-driven tail alone: a swimming forward; b turning

Figure 24 shows the cruising speed of the robot fish. The red dashed lines are predicted results and the blue solid lines are the experimental results. Figure 24a shows the cruising speed as the function of the flapping amplitude when the flapping frequency is constant of 1 Hz. Note that the amplitude is the total bending angle of the tail. From the figure, it is seen that the cruising speed increases as the flapping amplitude increases. Though, the rate of the increase is decreasing as the flapping amplitude increases. Moreover, the experiment results match the theoretical results well. Figure 24b shows the cruising speed as the function of the flapping frequency when the flapping amplitude is 60°. From the figure, it is seen that the cruising speed increases as the flapping frequency increases. Though, unlike the theoretical prediction, the cruising speed actually decreases when the flapping frequency is higher than 1 Hz. This may be attributed to several reasons. First, the tank is small. When the flapping is fast, the water becomes turbulent, which influences the cruising performance. Second, the dynamic response of the motor and the tail is slow. As a result, the actual flapping amplitude does not reach 60°. In fact, it is found that when the flapping frequency is 1.25 Hz, the actual amplitude is about 40°; when the lapping frequency is 1.5 Hz, the actual amplitude is only 30°. This impairs the performance of the robot fish. In general, the theoretical model (EBT) predicts the cruising speed reasonably well except in the high flapping frequency. The average error is 13.7 %.

Fig. 24
figure 24

Swimming speeds of the robot fish against a the flapping amplitude; b the flapping frequency

In addition, among all the tests, the maximum cruising speed was 365 mm/s (0.66 BL/s) and the maximum turning speed was about 65°/s; the mean turning speed was about 38°/s and the turning radius was about 0.60 BL. This performance can be further improved when using a larger motor and more stiff tail.

(B) Swim by the Pectoral Fins

In this test, the caudal fin is kept still. The pectoral fins are controlled by the two angles, the flapping angle, \(\phi_{{\text{fl}}}\), and the feathering angle, \(\phi_{{\text{fe}}}\). In each flapping circle, the pectoral fins start in the rest positions, that is \(\phi_{{\text{fl}}} = 0^{\text{o}}\) and \(\phi_{{\text{fe}}} = 0^{\text{o}}\). First, the feathering angle moves to \(\phi_{{\text{fe}}} = 90^\circ\), then the flapping angle \(\phi_{{\text{fl}}}\) increases to \(\phi_{{\text{fl}}} = 60^{\text{o}}\). In this way, the water is pushed back generating thrust and driving the fish forward. The recovery stroke starts with changing the feathering angle from 90° to 0° to reduce the water resistance. Finally, the flapping angle is controlled from 60° to 0° completing the flapping circle. Note that using the pectoral fins, the robot fish can swim backward by reversing the aforementioned flapping circle. Also, this flapping pattern is fixed and the swimming speed is controlled by the flapping frequency.

The test results are shown in Fig. 25. The blue dashed line shows the speed of forward swimming, and the green dashed line shows the speed of backward swimming. The drag model prediction is shown by the red solid line. From the figure, it is seen that the cruising speed increases with the increase of the flapping frequency. The forward swimming speed is faster than the backward swimming speed. This is because of the difference between the head and tail of the robot fish. In general, the drag model predicts the performance reasonably well.

Fig. 25
figure 25

Experiment results when swimming with pectoral fin alone

Among the tests, the maximum forward speed of the robot fish is 145 mm/s and the maximum backward speed is 115 mm/s. As expected, this is significantly slower than that of using the caudal fin (365 mm/s).

(C) Swim by Both Wire-Driven Flapping Tail and Pectoral Fins

In nature, when a fish is swimming, especially maneuvering, all the fins cooperate. In this test, the fin cooperation is studied, especially for turning. Three motion modes are tested. The first two are using the tail as a rudder, and the pectoral fin driving the fish body, one forward and the other backward; the third is the tail flapping in turning mode and the pectoral fins in backward mode.

Figure 26 shows the video frames in the three turning cases. In Fig. 26a, the pectoral fins are used to propel the body swimming forward while the tail is used as a rudder; in Fig. 26b, the pectoral fins are used to propel the body swimming backward while the tail is used as a rudder; in Fig. 26c, the tail is used to conduct turning motion while the pectoral fins are moving backward. The robot fish turns effectively in all three modes. In the first turning mode, the turning radius is about 0.25 BL, and the mean turning speed is about 31°/s. In the second turning mode, the turning radius is about 0.70 BL, and the mean turning speed is about 13°/s. In the third turning mode, the turning radius is about 0.45 BL, and the mean turning speed is about 23°/s. For comparison, as shown in the previous test, when turning by the tail only, the turning radius is about 0.6 BL, and the turning speed is about 38°/s. Therefore, it can be concluded that with the help of the pectoral fins, the robot fish can turn around with a smaller radius, but makes no improvement in turning speed. This is because while the pectoral fins help the turning, it also incites water resistance.

Fig. 26
figure 26

Performance of fin coordination: a turning by the pectoral fin and the tail serves as a rudder; b backward turning by the pectoral fins and the tail serves as a rudder; c turning by the two types of fins together

3.2 Design Example 2: Undulatory Wire-Driven Robot Fish

In this section, an undulatory wire-driven robot fish is presented. It is made of a two-segment serpentine BWDM and hence, is capable of undulatory swimming.

The Design

The undulatory wire-driven robot fish is composed of the wire-driven flapping tail and the fish body [28, 40].

(A) The Flapping Tail

The undulatory wire-driven flapping tail is composed of 13 vertebrae divided into two segments. All the vertebrae are serially linked as shown in Fig. 27a. The first segment has six vertebrae (numbered from 1 to 6); the second segment has seven vertebrae (numbered from 7 to 13). The profile of the tail is shaped by the fin plate. There are three plates in total. The upper plate and the lower plate define the tail shape as well as articulating the joints and constrain the joints rotations. The end plate defines the caudal fin shape. The overall profile of the tail is similar to that of a slender fish tail. The wire route in the tail is shown in Fig. 27b. The two pairs of wires are coplanar. The first wire pair goes through the first six vertebrae via the pilot holes and is connected to the end of the 6th vertebra. The second wire pair passes by the first six vertebrae via the central cavity and then goes through the left seven vertebrae via the pilot holes. Its end is connected to the end of the 13th vertebra. Each pair of wire is driven by a wire coiler, which is driven by a servomotor (not shown in the figure).

Fig. 27
figure 27

The design of the two segment wire-driven tail

The design of the vertebra and joint connection is shown in Fig. 28. Specifically, the first three figures in Fig. 28 show the details of the 6th vertebra. The other vertebrae are similar. For vertebrae 1–6, there are two pilot holes used to guide the wires; two cylindrical surfaces at the end are used to form a revolute joint; one guide hole is used to pass the wires of the second group; two slots (upper slot and lower slot) connect the plastic plate; and one central cavity to hold the elastic tube, which is optional. For vertebrae 7–13, the structure is similar except that there is no guide hole. As shown in the figure, two successive vertebrae form a revolute joint. The wire routing in the 6th and the 7th vertebrae is also shown in the figure. Detailed vertebra parameters are shown in Table 2. In the table H is the height of vertebra, d is the wire spacing distance within the pair, h 0 is the initial joint gap distance between adjacent vertebrae, and D is the diameter of the collision circle. The maximum joint rotation angle and the flapping amplitude are determined in similar as that of the oscillatory wire-driven tail.

Fig. 28
figure 28

The design of the vertebra

Table 2 Vertebra structure parameters

When the motor rotates, the wheel winds one wire and unwinds the other wire applying a torque onto the backbone. It is known that the deformation of a uniform elastic beam under pure moment is a circular arc. In this design, the plastic plates act as the elastic beam. Since the friction between the joints is small and evenly distributed, the rotation of each joint within a segment is the same. The vertebrae are rigid and the axial deformation can be neglected. The length of the neutral axis remains unchanged. Therefore, for each segment, the bending is close to a circular arc. For the two segments, their motions are independently controlled. Thus, the resultant motion is a combination of the two motions. In particular, two motions are most common: One is that the two segments bend in the same direction; and hence, the tail forms a C-Shape. The other is that the two segments bend in the opposite direction and hence, the tail forms an S-shape. Figure 29 shows these two basic motions. Consequently, the robot fish can swim in both oscillatory form and undulatory form. Moreover, there are other motions, such as keeping the first segment relaxed and flapping the second segment only. This is called the Small-C-Motion, resulting in another form of oscillatory swimming.

Fig. 29
figure 29

Illustration of the bending in a S-shape; b C-shape

The rotation of each joint is as similar to Fig. 19. At the resting position, the vertebrae are parallel and the wire lengths on both sides are the same, as shown in Fig. 19a. When the joint rotates, for instance, the joint rotates leftward, the lengths of the two wires will then change, as shown in Fig. 19b. Maximum rotation happens when the adjacent vertebrae collide with each other. Assume that there are N joints in the segment. The wire length change \(\Delta L\) with respect to the rotation angle \(\theta\) can be calculated by Eq. (18). The maximum rotation angle of each joint \(\theta_{max}\) and the segment \( \Theta _{ \hbox{max} } \) is shown in Eq. (19).

$$\Delta L = 2N \cdot d \cdot \sin \left( {\frac{\theta }{2}} \right)$$
(18)
$$\Theta _{\hbox{max} } = N \cdot \theta_{\hbox{max} } = 2N \cdot \arctan \left( {\frac{{h_{0} }}{D}} \right)$$
(19)

In this design, the vertebra parameters are given in Table 2. For the first segment, the collision circle diameter is 31 mm, and the joint gap distance is 4 mm. By Eq. (19), for the first segment, the maximum joint rotation is 14.7°. The maximum bending angle is 88.20°. For the second segment, the collision circle diameter is 23.5 mm and the joint gap distance is 3 mm. The maximum joint rotation is 14.55°. The maximum bending angle is 101.85°. The overall maximum bending angle is 190.05°.

The motion of the undulatory wire-driven tail is compared to the fish undulatory swimming body curve, as shown in Fig. 30. The red dashed curves are the fish body curves at four time instances in a flapping cycle according to the traveling wave model. In the model, parameters are chosen as c 1 = 0.2, c 2 = 0.4175, k = 2.4, and ω = 2π. The blue solid curves are the curves of the undulatory wire-driven tail at the same time instances. The rotation of each angle is controlled as per Eq. (20). The phase lag of the second segment is −0.3π. From the figure, the two set of curves match reasonably well, especially at the tail tip, which, according to Lighthill’s EBT, is the major factor that affects the fish’s swimming performance.

Fig. 30
figure 30

A comparison between the travel wave equation (red dash line) and the flapping of the undulatory wire-driven tail (blue solid line)

$$\theta_{i} = \left\{ {\begin{array}{*{20}l} {8\sin (2\pi t) = \theta_{a} } \hfill & {i = 1,2, \ldots 6} \hfill \\ { - 12\sin (2\pi t - 0.3\pi ) = \theta_{b} } \hfill & {i = 7,8, \ldots 13} \hfill \\ \end{array} } \right.$$
(20)

(B) Fish Body Design

Figure 31 shows the design of the fish body with the tail assembled. It comprises an airtight hull, a central supporting board, a controller, two motors, and the DC power supply (battery). The motors, the controller, and the battery are mounted on the central board. The hull is axisymmetric. The shape of the hull front is parabolic, which helps to reduce water resistance. At the end of the hull, pinholes are opened to let the wires pass through. Each pair of wires is connected to a drum wheel, which rotates with the motor shaft. The undulatory wire-driven tail is connected to the central board by screws. Waterproofing is achieved by a silicone covering. The tail is purely mechanical and hence, no waterproof is needed. Though, waterproof at the connecting holes is crucial. The pinhole is coated with Teflon and has the same diameter as the wire. The wire is passed through the pinhole.

Fig. 31
figure 31

The design of the undulatory wire-driven robot fish

The vertebrae were fabricated using 3D printing. The material used was ABS plastic. Steel wires with ϕ 0.475 mm diameter were used as the controlling wires. Two MG995 servomotors are mounted in the fish body, and their maximum torque is 13 kg cm. The motors are driven by 4 AAA batteries and controlled by a MCU. Control commands are sent to the MCU via Bluetooth. The overall length of the robot fish is 495 mm. The tail length is 280 mm. The weight of the robot fish is 1256 g including the balance weight. The overall density of the robot is smaller than water and hence, the robot fish floats on water surface with about 85 % submerged.

Figure 32 shows the robot fish with the inner structures. In Fig. 32a the robot fish tail is at the resting position. In Fig. 32b, the two segments of the tail bend to the same direction and the tail bends to a C-Shape. The maximum bending angle is 190.05°. In Fig. 32c, the two segments bend in opposite direction, and the tail is in S-shape. The form of S-shape can be controlled by the bending amplitude of the two segments and the phase angle as in Eq. (20). It shall be pointed out that when the first segment is at rest, a C-Shape can be generated by controlling the bending of the second segment. To distinguish the two C-Shapes, we call the former as the Big-C and the later as the Small-C.

Fig. 32
figure 32

The prototype of the undulatory wire-driven robot fish: a tail at resting position; b tail bends to C-shape; c tail bends to S-shape

Modeling and Analysis

The propulsion model of the undulatory wire-driven tail is developed in a similar way: substituting the tail tip lateral displacement, lateral velocity, and tail tip slope into EBT. The undulatory wire-driven tail is a two-segment WDM. Here, the piecewise constant curvature assumption is still adopted. Let θ a be the joint rotation in the first segment, θ b be the joint rotation in the second segment, and \(l_{i}\) be the length of each vertebra central line. From the kinematics model, the lateral displacement of the tail tip is:

$$\left. {y(q,t)} \right|_{q = L} \, = \sum\limits_{i = 1}^{6} {l_{i} \cdot \sin (i \cdot \theta_{a} )} { + }\sum\limits_{i = 7}^{13} {l_{i} \cdot \sin \left[ {6\theta_{a} + \left( {i - 6} \right) \cdot \theta_{b} } \right]}$$
(21)

It is a function of both time and x displacement. By partial differentiation, the slope and lateral velocity of the tail tip are as follows:

$$\left. {\frac{\partial y(q,t)}{\partial q}} \right|_{q = L} = \sin (6\theta_{a} { + 7}\theta_{b} )$$
(22)
$$\begin{aligned} \left. {\frac{\partial y(q,t)}{\partial t}} \right|_{q = L} = & \sum\limits_{i = 1}^{6} {l_{i} \cdot \left[ {\cos (i \cdot \theta_{a} ) \cdot \left( {i \cdot \dot{\theta }_{a} } \right)} \right]} \\ & + \sum\limits_{i = 7}^{13} {l_{i} \cdot \left( {\cos (6\theta_{a} + \left( {i - 6} \right) \cdot \theta_{b} ) \cdot \left( {6\dot{\theta }_{a} + \left( {i - 6} \right) \cdot \dot{\theta }_{b} } \right)} \right)} \\ \end{aligned}$$
(23)

Substituting Eqs. (22) and (23) into the EBT, the cruise speed, thrust, and Froude efficiency of the robot fish can be predicted.

Experiment Results

The experiments were performed in a small inflated water tank. The length of the tank is 1.4 m and the width is 0.9 m. The robot fish swims in the water tank under the control of the operator. Figure 33 shows the two basic swimming motions of the robot fish: oscillatory swimming (C-Motion) and undulatory swimming (S-Motion).

Fig. 33
figure 33

Undulatory robot fish swimming in a oscillatory form; b undulatory form

Four experiments were performed, i.e., “Big-C-Motion” forward, “Small-C-Motion” forward, “S-Motion” forward, and turning. The first three groups of experiments were designed to test robot’s cruising speeds and efficiencies in various motions. The last experiment was designed to test the maneuverability of robot fish.

Experiment 1—“Big-C-Motion” forward

In this swimming mode, the two segments flap in synchronization and there is no phase lag between the two segments. In the experiment, the cruising velocity of the robot fish was recorded under various bending amplitudes and flapping frequencies. The average speed is estimated by the traveling distance and time from the video frames. The traveling distance is estimated using a ruler set in the tank, as shown in Fig. 33. The results are shown in Table 3, where A 1 is the amplitude of the first segment, A 2 is the amplitude of the second segment, f is the flapping frequency, V m is the average cruising velocity, and V p is the predicted velocity. From the table, it is seen that the cruising speed increases with the increase of the bending amplitude. When the flapping frequency is low, the cruising speed also increases in proportion to the frequency. However, it is not applicable when the frequency is increased further. In this test, the maximum velocity was 300.75 mm/s, which is 0.608 BL/s, when the bending amplitudes of the first segment and the second segment are 40° and 60°, respectively, and the flapping frequency is 1 Hz. The velocities predicted by the propulsion model are generally larger than the measured one. This may be due to the size limitation of the pool, the measured velocity is the average speed, including the acceleration stage. When the flapping frequency is 1.5 Hz, the error is significant. This may again attribute to the small size of the water tank, by which the water resistance reduces the flapping frequency. In the test, the measured Froude efficiency of the robot fish swimming in oscillatory form is between 55.56 and 65.62 %.

Table 3 Big-C-motion results

Experiment 2—“Small-C-Motion” forward

In the experiment, only the second segment flaps in oscillatory form while the first segment remains still. Table 4 shows the experiment results. The relationship between the cruising speed and the bending amplitude is similar to that in the “Big-C-Motion”, and so is the speed–frequency relationship. The maximum speed is 162.76 mm/s (0.329 BL/s), when the bending angle of the second segment is 60° and the flapping frequency is 1 Hz. This is lower than that of the “Big-C-Motion” as expected. The propulsion model predicts the swimming velocity reasonably well. The prediction is generally larger than the measurement. The measured Froude efficiency is between 57.52 and 68.07 %. This is a little bit higher than that of “Big-C-Motion”. In other words, it seems that the efficiency is lower when the flapping tail is more flexible.

Table 4 Small-C-motion results

Experiment 3—“S-Motion” forward

In this case, because the motion is the superposition of the two segments motions, the modes of “S-Motion” is dependent on the phase difference between the two segments. Table 5 shows the experiment results, where t p is the number of periods that the second segment precedes the first segment. According to the experiment results, when t p is 5/8 the performance of “S-Motion” is optimal. For this reason, in the test, \(t_{p}\) is chosen as 5/8. The maximum speed in this experiment was 333.33 mm/s (0.673 BL/s), when the bending angles of the two segments are 40° and 60°, respectively, the flapping frequency is 1 Hz. This is higher than the “Big-C-Motion.” The velocity prediction is reasonably good. The measured Froude efficiency is much higher than the “Big-C-Motion” and “Small-C-Motion” as well. The maximum efficiency is 92.85 % and the averaged efficiency is 75.56 %. In the tests, it is noted that the head of the robot fish is more stable. This reduces the drag force and hence, improves the efficiency.

Table 5 S Motion results

Experiment 4—“Turning”

In the fourth experiment, the turning of the robot fish is tested. In the test, the robot fish turned using the “Big-C-Motion” mode, but flapping only in one side. Figure 34 shows the rightward turning cycle of the robot. The turning radius of the robot fish is around 0.7 BL and the turning speed is 51.4°/s.

Fig. 34
figure 34

Undulatory wire-driven robot fish turning

In summary, the undulatory wire-driven robot fish swims efficiently in both oscillatory form and undulatory form. In the undulatory form of swimming, the swaying of the fish body is reduced. As a result, the drag force is reduced and the efficiency is improved. This helps to increase the swimming speed. However, compared to the oscillatory swim, the undulatory swim is inferior in turning.

3.3 Design Example 3: Wire-Driven Robot Fish with Vector Propulsion

A close examination reveals that many fish can flap in a 3D manner so that it can swim forward, downward and upward. This is because the water world is 3D. The wire-driven robot fish can mimic the 3D flapping as well. In the section, such a design is presented.

The Design

This robot fish comprises of the vector propulsor and the fish body. The propulsor provides the controllable thrust (in both amplitude and direction), and the fish body houses the actuator, the controller, and the power unit (battery).

(A) The Vector Propulsor

Figure 35a shows the design of the propulsor. It comprises of the tail base, seven vertebrae, a tail fin, an elastic rod, and two pairs of controlling wires. Four fin pieces are inserted to the last vertebra making the tail fin as shown in the figure. Two opposite fin pieces form a crescent caudal fin. The vertebra structure is shown in Fig. 35b. It has four orthogonally distributed ribs, where the wire eyelets are located. Two successive vertebrae form a spherical joint by the convex and concave spherical surfaces at the ends of the vertebrae. A center through hole is used to hold the elastic rod, whose function is twofold: help articulating the joints and confining the joints’ rotations. Each joint can rotate freely about X- and Y-axes as shown in Fig. 35b, but the rotation about Z-axis is constrained. Therefore, the propulsor can bend horizontally and vertically, with limited twisting. The bending of the propulsor is controlled by two pairs of wires, which are guided by the eyelets on the rib of the vertebra as shown in Fig. 35b. Since the two wire pairs are orthogonally arranged the bending in horizontal and vertical planes are independent. The elastic rod has uniform cross section, thus when the wire is pulled, the propulsor will bend to a circular arc.

Fig. 35
figure 35

The design of the vector propulsor in a isometric view; b a section view

Figure 36 shows the details of the joint. The wire eyelet is tilted with respect to the propulsor axis, which is helpful in reducing the wire tension [23, 24]. In the figure, H is the rib height; h 0 is the joint gap distance; r 1 is the top wire eyelet central distance; R 1 is the vertebra top width; r 2 is the bottom eyelet central distance; R 2 is the vertebra bottom width; R is the radius of the stopper. The joint can independently rotate about the X-axis and the Y-axis, and the two rotations are identical. The maximum joint rotation angle is determined by the joint gap distance h 0 and the stopper radius R as shown in Fig. 36b. The relationship is shown in Eq. (24).

$$\theta_{\hbox{max} } = 2\arctan \left( {\frac{{h_{0} }}{2R}} \right)$$
(24)
Fig. 36
figure 36

Illustration of the joint a at rest; b rotating rightward

The design parameters of the vertebrae are shown in Table 6. In this design, each joint can rotate up to 13.5° in both X and Y directions. The maximum bending angle of the propulsor is 94.5°.

Table 6 The key parameters of the vertebrae (in mm)

(B) Fish Body

The fish body design is shown in Fig. 37. It comprises of a shell, a main board, an auxiliary board, two servomotors, two wheels, a controller, a battery, two pulleys, etc. The shell has three pieces: hull-1, hull-2, and hull-3. Hull-1 serves as the base of the robot fish. The main board and tail base are fastened to Hull-1. Hull-2 is positioned to Hull-1 by four pegs. It is used to facilitate the robot fish assembly. Hull-3 has a parabolic front surface, which is helpful in reducing the water resistance. The assembly procedure is also shown in the figure: Step I, connect Hull-2 to Hull-1; step II, cover the fish body by Hull-3. The three pieces form the shell of the robot fish, which has a similar shape as that of the design example 2.

Fig. 37
figure 37

The design of the fish body

Two servomotors are used to drive the two wire pairs. The one in front controls the vertical wire pair, while the other one controls the horizontal wire pair. The wires are guided by the pulleys. One end of the wire is fixed at the last vertebra, and the other end is connected to the wire coiler, which rotates with the servomotor. The rotation of the servomotor is controlled by the MCU controller, same as in the design example 2. The control scheme is also the same. The command is sent out using a remote controller or using comport via Bluetooth. Upon receiving the signal, the MCU generates a 50 Hz PWM sequence. The rotation of the servomotor is controlled by the duty cycle of the PWM, while the velocity is controlled by setting the time delays between rotary positions.

(C) Robot Fish Prototype

The robot fish prototype is built as shown in Fig. 38. The key design parameters of the vertebrae are listed in Table 6. The vertebrae are connected by a silicon rubber rod with a diameter of ϕ5 mm. To improve the elasticity, four carbon sticks with ϕ0.5 mm diameter are connected to the tail. To reduce the friction, lubricating grease is added to all the joints. Four plastic fins are orthogonally mounted onto the last vertebra. Two opposite fins make a lunate shape, which is similar to the caudal fin of the dolphin. Two Tower Pro servomotors are used to drive the propulsor bending. The length of the robot fish is 425 mm, and the overall mass is 1.65 kg. Figure 38b shows the fish tail bending in horizontal plane. In this mode, the bending is controlled by the horizontal wire pair, and the vertical wire pair remains still. Figure 38c shows the fish tail bending in the vertical plane. In this mode, the tail motion is controlled by the vertical wire pair only. Figure 38d shows the robot fish tail bending to an arbitrary direction. The bending magnitude and direction are controlled by the components in horizontal and vertical plane.

Fig. 38
figure 38

The robot fish capable of vector propulsion: a in the rest position; b bending horizontally; c bending vertically; d bending to an arbitrary direction

Modeling and Analysis

As shown in Fig. 39, the displacement of the propulsor is determined by the flapping angle Θ and flapping direction Φ. The former is defined as the angle between the bended tail and the Z-axis (it is zero when the tail is at resting position). The latter is defined as the angle between X-axis (horizontal direction) and the flapping plane. The wire configuration is shown in Fig. 39b, where P 1, P 2, P 3, P 4 denote the wire location. P 1 and P 3 are the horizontal wire pairs, which control the bending about Y-axis (flap in horizontal plane). P 2 and P 4 are the vertical wire pairs, which control the bending about X-axis (flap in vertical plane). When the flapping direction is Φ, it is conceived that the bending is about a virtual axis Y′ as shown in the figure. The distance from the wires in vertical group to the virtual axis is a, while the distance from the wires in horizontal group to the virtual axis is b.

Fig. 39
figure 39

Kinematics illustration. a Tail bending illustration, b wire configuration

The joint rotations are confined by the elastic rod. As the vertebrae are rigid, the backbone length is constant. Also, the load acted on the propulsor is decoupled during wire pulling. Theoretically, the deformed shape of the rod under pure moment is a circular arc. Hence, we assume that the rotations of all the joints are the same during the flapping process. The relationships between the wire lengths and the propulsor displacement are as follows [31]:

$$P_{1} {:}\quad \quad L_{1} = L_{0} + 2N\left[ {b \cdot \sin \left( {\frac{\theta }{2}} \right) - h_{0} \cdot \sin^{2} \left( {\frac{\theta }{4}} \right)} \right]$$
(25)
$$P_{2} {:}\quad \quad L_{2} = L_{0} + 2N\left[ {a \cdot \sin \left( {\frac{\theta }{2}} \right) - h_{0} \cdot \sin^{2} \left( {\frac{\theta }{4}} \right)} \right]$$
(26)
$$P_{3} {:}\quad \quad L_{3} = L_{0} - 2N\left[ {b \cdot \sin \left( {\frac{\theta }{2}} \right) + h_{0} \cdot \sin^{2} \left( {\frac{\theta }{4}} \right)} \right]$$
(27)
$$P_{4} {:}\quad \quad L_{4} = L_{0} - 2N\left[ {a \cdot \sin \left( {\frac{\theta }{2}} \right) + h_{0} \cdot \sin^{2} \left( {\frac{\theta }{4}} \right)} \right]$$
(28)

where, \(a = r \cdot \sin (\Phi )\) and \(b = r \cdot \cos (\Phi )\); r is the average distance between the wire and Z-axis; L 0 is the wire initial length; N is the number of vertebrae; and  θ = Θ/N is the rotation of the joint. From Eqs. (25)–(28), the flapping angle and direction can be represented as:

$$\Phi = \arctan \left( {\frac{{L_{2} - L_{4} }}{{L_{1} - L_{3} }}} \right)$$
(29)
$$\Theta = N \cdot \theta = 2N \cdot \arcsin \left[ {\frac{{\sqrt {\left( {L_{1} - L_{3} } \right)^{2} + \left( {L_{2} - L_{4} } \right)^{2} } }}{4N \cdot r}} \right]$$
(30)

The propulsor tip position with respect to the first joint rotate center is as in Eq. (31). In the equation, H is the rib height, h 0 is the joint initial gap distance, and H T is the fin length. The positions along the propulsor can be obtained accordingly. It is noted that the excursion of the propulsor tip from the Z-axis is \(\sqrt {x^{2} \,{ + }\,y^{2} }\). When all the joints rotate from one limit \(\theta_{min}\) to the other limit \(\theta_{max}\), the propulsor flaps from side to side. The flapping motion is in the plane defined by the flapping angle Φ, which is independent on the flapping angle Θ. The displacement of the propulsor tip is determined as follows:

$$\left\{ {\begin{array}{*{20}l} {x = \left\{ {\left( {H_{T} { - }h_{0} /2} \right) \cdot {\text{sin(}}N \cdot \theta )\,{ + }\,(H{ + }h_{0} )\sum\limits_{i = 1}^{N} {\sin \left[ {i \cdot \theta } \right]} } \right\}\cos (\Phi )} \hfill \\ {y = \left\{ {\left( {H_{T} { - }h_{0} /2} \right) \cdot {\text{sin(}}N \cdot \theta )\,{ + }\,(H{ + }h_{0} )\sum\limits_{i = 1}^{N} {\sin \left[ {i \cdot \theta } \right]} } \right\}\sin (\Phi )} \hfill \\ {z = \left( {H_{T} { - }h_{0} /2} \right) \cdot \cos (N \cdot \theta )\, + \,(H{ + }h_{0} )\sum\limits_{i = 1}^{N} {\cos \left[ {i \cdot \theta } \right]} } \hfill \\ \end{array} } \right.$$
(31)

Equation (31) is the kinematics model, from which the excursion, the slope and the traversing speed of the propulsor can be derived as per Eqs. (3233), where q is the curve length.

$$\left. {y(q,t)} \right|_{q = L} \, = \, (H_{T} - h_{0} /2) \cdot \sin (N\,\theta ) + (H + h_{0} )\sum\limits_{i = 1}^{N} {\sin (i \cdot \theta )}$$
(32)
$$\left. {\frac{\partial y(q,t)}{\partial q}} \right|_{{q{ = }L}} = {\text{sin(}}\Theta )$$
(33)
$$\left. {\frac{\partial y(q,t)}{\partial t}} \right|_{q = L} = \, \left\{ {(H_{T} - h_{0} /2) \cdot N \cdot \cos \left[ {N \cdot \theta } \right] + (H + h_{0} )\sum\limits_{i = 1}^{N} {i \cdot \cos \left[ {i \cdot \theta } \right]} } \right\} \cdot \dot{\theta }$$
(34)

By substituting these into Lighthill’s EBT, the propulsion model is therefore obtained.

Experiment Results

Two basic swimming modes are tested: one mimics the shark swimming and the other mimics the dolphin swimming. The experiment results are presented as follows:

(A) Shark Swimming

In this experiment, the vector propulsor flaps horizontally like a shark. In this mode, the back motor controls the horizontal wire pair and the front motor keeps still. Fin 1 and fin 3 provide thrust, while fin 2 and fin 4 are held still. In the test, the flapping frequency is f = 1 Hz, and the flapping amplitude is 45°. At first, the robot fish is placed in the swimming pool and the water is still. The robot fish is controlled via Bluetooth to flap horizontally. One flapping cycle is shown in Fig. 40a–e. Figure 40a shows the robot fish at rest position. Then, it flaps to the left as shown in Fig. 40b. When it reaches to the left most position, it flaps back to the rest position as shown in Fig. 40c. The other half cycle is done in a similar way. The propulsor flaps rightward at first, as shown in Fig. 40d, and then flaps back to the resting position. In this experiment, the left flapping amplitude and right flapping amplitude are both 45°. Also, the flapping frequencies in the four stages are the same. From the results, it is shown that after one flapping cycle, the robot fish moves forward by 148 mm, i.e., 0.35 BL. From the previous propulsion model, when the propulsor flapping frequency is 1 Hz, and the amplitude is 45°, i.e., the tail end excursion is 65 mm or 0.153 BL, the cruise speed of the robot fish is 170.4 mm/s. The prediction error is about 13 %. In the simulation, the drag coefficient is selected as 0.5.

Fig. 40
figure 40

Experiment results: ae is the flapping cycle of shark form swimming; fj is the flapping cycle of dolphin form swimming

(B) Dolphin Swimming

In this experiment, the vector propulsor flaps vertically like a dolphin. Fin 2 and fin 4 provide thrust in this mode, while fin 1 and fin 3 are kept still. Similar to the previous case, the flapping frequency of the propulsor is f = 1 Hz and the flapping amplitude is 45°. Same as in the previous test, the robot fish is placed in still water. When the fish received the command, it starts flapping vertically. In this mode, the front motor controls the vertical wire pair and the back motor keeps still. Figure 40f–j shows one flapping cycle. As shown in Fig. 40f, the robot fish is at rest position. Once receiving the command, the tail flaps downward at first, as shown in Fig. 40g. After reaching the down-most position, the tail flaps back as shown in Fig. 40h. The tail continues to flap passing the rest position and reaching the upmost position as shown in Fig. 40i. Finally, the tail flaps back the rest position finishing a cycle. From the experiment, the distance the robot fish travels in one flapping cycle is around 0.28 BL, slightly slower than that of the shark swimming. The prediction error for the dolphin form swimming is 30 %. The large error is mainly attributed to the fact that the robot fish is not fully under water, i.e., part of the flapping cycle is out of water.

It should be pointed out that many existing robot fish flap either in horizontal plane or in vertical plane. Therefore, they are confined in a single flapping direction. In comparison, the presented robot fish can turn (using horizontal flapping) and dive (using vertical flapping) by the tail only.

4 Conclusions

In this chapter, the BWDM is introduced and used to build three different robot fishes. The BWDM follows both the backbone structure and the muscle arrangement of the aquatics. Moreover, it is underactuated and thus, requires only one or two motors to generate various flapping motions. Therefore, the BWDM robot fish is simple in structure, easy to control, and most importantly highly energy efficient. Three robot fish examples are presented. The first robot fish has an oscillatory wire-driven propulsor and a pair of pectoral fins. The second robot fish is controlled by two motors capable of undulatory swimming and ocillatory swimming. The third robot fish can generate thrust in all directions mimicking both shark swimming and dolphin swimming. The experiments demonstrate that the BWDM robot fishes are well suited for underwater propulsion. They can reach a speed of 330 mm/sec with an efficiency of 80 %. It is expected that they will find many applications in the near future.