1 Introduction

When manipulators, which require precise positioning, operate in moving vehicles or ships, it becomes economical to utilize a Stewart platform [1], whose sole role is to stabilize the orientation and the translation of its top table onto which the manipulators are attached. In this way, the design and control of each tool for its precise positioning become simpler without coping with undesirable large rigid-body rotation and translation of the tool mount. In addition, such a platform is also useful for safe transportation of a sensitive equipment or a patient using a vehicle to mitigate the transmission of undesirable rotation and translation induced by the moving vehicle.

Fixed-base Stewart platforms have been popularly utilized in flight simulators, vehicle driving simulators, trajectory tracking apparatus, and immersed virtual-reality theaters in amusement parks. Kinematics and dynamics of fixed-base Stewart platforms have been investigated by many researchers to control the platforms to enable those applications, for example [2,3,4,5,6,7,8,9,10,11,12,13].

For base-moving Stewart platforms, only a few applications have been reported. As passive applications, Stewart platforms were utilized as vibration isolators utilizing bio-inspired X-shaped legs [14] and adjustable electromagnetic legs, which exhibit negative stiffness [15]. As actively controlled applications, previous researchers employed proportional-derivative (PD) controllers using inverse kinematics derived from geometrical relations [16, 17]. Due to the complexity of the problem, velocity computations and derivation of equations of motion for a base-moving Stewart platform have not been reported. For effective and fast position control of the top plate of a base-moving Stewart platform, it is desirable to derive equations of motion to explore nonlinear control schemes.

In response to the need described above, analytical equations of motion are derived in matrix form for a control application of inverse dynamics. In this part I-paper only kinematics is presented while the derivation of equations of motion and their control application are presented in the part II-paper.

Regarding the representation of configuration spaces of multi-body systems, Joseph-Louis Lagrange (1736–1813) defined configuration spaces using vectors consisting of generalized coordinates or displacements. Fortunately, in the early twentieth century, due to the advent of matrix Lie groups pioneered by Sophus Lie (1842–1899), in addition to vectors in \( {\mathbb{R}}^{n}\), the set of differentiable rotation matrices: the special orthogonal group SO(3) has been utilized to define the configuration space of multi-body systems [18]. Specifically, in the configuration space of a multi-body system each rigid body is mathematically expressed by the position vector of the origin of a body-attached coordinate system in \({\mathbb{R}}^{3}\), expressed with respect to an inertial coordinate system, and the rotation matrix in SO(3) of the body-attached coordinate axes from the inertial coordinate axes [19,20,21].

In this paper, first, the multi-body connection of a base-moving Stewart platform is expressed by using a directed graph to reveal closed loops [22]. Second, by attaching principal coordinate systems to constituent bodies at their centers of mass, moving coordinate frames are defined. Coordinate frames are also attached to joints. Third, to define the configuration space of the Stewart platform, the connections of body- and joint-attached coordinate frames are expressed mathematically employing the special Euclidian group, SE(3), which combines both SO(3) and \({\mathbb{R}}^{3}\). Fourth, loop closure constraints are obtained along a representative closed loop in the configuration space (as well as in velocities). They are solved analytically for inverse kinematics. Fifth, velocities of moving frames are computed incorporating the Lie algebra: so(3) of SO(3). The advantage of expressing the frame connections by using SE(3)-matrices is that the readers can compute frame velocities unambiguously since the coordinate vector bases are explicitly shown. Finally, experimental results of an inverse kinematics control are presented for a scale model of a base-moving Stewart platform. Furthermore, in Appendix A, workspace analysis is performed for the preliminary design of a Stewart platform. In the part II-paper, the velocities of body-attached coordinate frames computed here are utilized to derive analytical equations of motion for inverse dynamics control.

2 Description of a Stewart platform

Figure 1 illustrates a Stewart platform in its reference configuration. To identify bodies of the multi-rigid body system, body numbers are assigned to constituent bodies and shown in a pair of parentheses. Body-(0): base plate is attached to the floor of a moving ship or a vehicle. As a result, the base plate translates and rotates due to the motion of the vehicle. Body-(13) represents top plate or platform on which some sensitive equipment or a manipulator is mounted. Body-(0) and body-(13) are connected by six identical legs, referred to as leg-(k), k = 1,\(\cdots ,\) 6. Leg-(k) consists of lower leg, body-(2k-1), and upper leg, body-(2k), jointed by an actuated translational joint, ATJ-(k), between them. The objective of a controller is to maintain a desired attitude of the top plate to mitigate the motion of the base plate by changing their ATJ lengths at each time.

Fig. 1
figure 1

A Stewart platform

In leg-(k) shown in Fig. 1, the lower leg, body-(2k-1), is jointed to body-(0) by a universal joint (UJ), named UJ-(k), whereas the upper leg, body-(2k), is jointed to body-(13) by a spherical joint (SJ), called SJ-(k). The base yoke of UJ-(k) is fixed to body-(0), which journals one axis of the UJ cross. The cross of UJ-(k) is referred to as UJ-(k) cross. Its center is located at point \(B_{k}\). The attachment of the lower leg, body-(2k-1), to the other axis of UJ-(k) cross is facilitated by the yoke hub at the lower end of body-(2k-1) to pivot freely around this axis. The upper end of the upper leg, body-(2k), has a spherical ball, referred to as SJ-(k) ball with its center at point \(T_{k}\). The spherical ball fits into the SJ-(k) socket fixed to body-(13).

A directed graph of the Stewart platform is presented in Fig. 2a. In the graph vertices represent rigid bodies and lines show joint connections. The graph is “modified” by enlarging the vertices for the base plate, body-(0), and the top plate, body-(13), to show the leg attachment points \(B_{k}\) for universal joints, UJ-(k), and \(T_{k}\) for spherical joints, SJ-(k), for leg-(k), \(k = 1, \cdots , 6.\) In the graph body-(14), not shown in Fig. 1, represents a manipulator, which is rigidly attached to the top plate.

Fig. 2
figure 2

a A modified directed graph and b representative closed loop

The graph in Fig. 2a reveals that there are closed loops formed by 15 pairs of different legs. Instead of dealing with individual pairs, the loop closure constraints can be treated efficiently by considering a generic closed loop shown in Fig. 2b. The loop is formed by a free link between body-(0) and body-(13), shown by a broken line, and leg-(k). In the figure, C(α) represent the center of mass of body-(α). Along path (i) one starts from the center of mass of body-(0), C(0), moves along the free link to that of body-(13), C(13), and heads toward the center Tk of the semi-spherical cavity of SJ-(k) socket, which is rigidly attached to body-(13). Along path (ii) one starts from C(0) to the center Bk of UJ-(k) cross, moves along the axis of leg-(k) passing the centers of mass of body-(2k-1), C(2k−1), and body-(2k), C(2k), and reaches the center Tk, of SJ-(k) ball. Finally, one fits SJ-(k) ball of the upper leg into SJ-(k) socket on body-(13). This fitting of SJ-(k) ball into SJ-(k) socket is mathematically described by loop closure constraints.

Using the vector method, kinematic equations of Stewart platforms were previously presented in vector form [4,5,6,7,8,9,10,11,12,13]. From the resulting vector equations to obtain component equations, readers need to define appropriate coordinate systems and perform necessary computations. This extra burden on readers is eliminated in the following by explicitly defining body-attached coordinate frames for kinematics.

To commence kinematics using moving frames, the configuration space is defined along the generic closed loop in Fig. 2b by attaching orthonormal coordinate systems at the centers of mass of constituent bodies as well as at the joints. The completion of both paths yields configurational loop closure constraints at SJ-(k). Then velocities of the attached coordinate frames will be computed to obtain: (1) the loop-closure constrains on velocities and (2) the translational and angular velocities of each body at its center of mass, which will be utilized in the part II-paper to compute the equations of motion for the Stewart platform.

3 Configuration space defined by coordinate frames

The configuration space is defined along each path of the generic closed loop in Fig. 2b by attaching moving coordinate frames at joints and the centers of mass of rigid bodies and expressing their interconnections.

3.1 Moving coordinate frames along path (i)

Figure 3 depicts the free link between body-(0) and body-(13), shown in Fig. 2b. To begin, an inertial coordinate frame is defined to express position vectors of the origins of moving coordinate frames.

Fig. 3
figure 3

A relative representation of the top-plate frame from the base-plate frame

3.1.1 Inertial frame

A fixed Cartesian coordinate system {x1 x2 x3} is defined with its origin, expressed by zero vector 0. The unit vectors of the coordinate axes define a vector basis \( \left( {{\mathbf{e}}_{1}^{I} \quad {\mathbf{e}}_{2}^{I} \quad {\mathbf{e}}_{3}^{I} } \right) \), which is compactly written as \({\mathbf{e}}^{I}\) utilizing Frankel’s notation [23]. The vector basis \({\mathbf{e}}^{I}\) and its origin 0 define the inertial coordinate frame written as: (\({\mathbf{e}}^{I}\), 0), [20, 21].

Using the inertial vector basis \({\mathbf{e}}^{I}\), the position vector of the center of mass, for example C(0) of body-(0) is expressed as:

$$ {\bf r}_{C}^{\left( 0 \right)} \left( t \right) = {\bf e}^{I} x_{C}^{\left( 0 \right)} \left( t \right), $$
(1a)

where

$$ {\bf e}^{I} \equiv \left( {\begin{array}{*{20}c} {{\bf e}_{1}^{I} } & {{\bf e}_{2}^{I} } & {{\bf e}_{3}^{I} } \\ \end{array} } \right), $$
(1b)
$$ x_{C}^{\left( 0 \right)} \left( t \right) \equiv \left( {\begin{array}{*{20}c} {x_{1C}^{\left( 0 \right)} \left( t \right)} \\ {x_{2C}^{\left( 0 \right)} \left( t \right)} \\ {x_{3C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right). $$
(1c)

In Frankel’s notation all vector bases are stored in 1 × 3 row matrices and components in 3 × 1 column matrices. In this paper, {x1 x2 x3} is exclusively used for the inertial coordinate system, while {s1 s2 s3} is used for body-attached, orthonormal coordinate systems. Furthermore, only right-handed coordinate systems are considered.

3.1.2 Body-(0) frame: (\({{\varvec{e}}}^{(0)}({\varvec{t}})\) \({{\varvec{r}}}_{{\varvec{C}}}^{(0)}({\varvec{t}})\))

To define the body-(0) coordinate frame, a principal coordinate system {\(s_{1}^{\left( 0 \right)}\) \(s_{2}^{\left( 0 \right)}\) \(s_{3}^{\left( 0 \right)}\)} is attached to body-(0) at its center of mass, C(0), with the \(s_{3}^{\left( 0 \right)}\)-axis normal to the plane of the base plate, spanned by the \(s_{1}^{\left( 0 \right)}\), \(s_{2}^{\left( 0 \right)}\)-axes. The coordinate unit vectors define the vector basis \({\mathbf{e}}^{\left( 0 \right)} \left( t \right) \equiv\) (\({\mathbf{e}}_{1}^{\left( 0 \right)} \left( t \right)\) \({\mathbf{e}}_{2}^{\left( 0 \right)} \left( t \right)\) \({\mathbf{e}}_{3}^{\left( 0 \right)} \left( t \right)\)). Using the vector basis \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\) and the position vector of its origin \({\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)\), the body-(0) frame is defined as \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\). The configuration of body-(0) is defined by expressing its frame connection to (\({\mathbf{e}}^{I}\), 0). To this end, the attitude of \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\) relative to \({\mathbf{e}}^{I}\) is expressed using a 3 × 3 rotation matrix \( R^{\left( 0 \right)} \left( t \right)\) with determinant one:

$$ {\bf e}^{\left( 0 \right)} \left( t \right) = {\bf e}^{I} R^{\left( 0 \right)} \left( t \right), $$
(2a)
$$ {\mathbf{e}}^{\left( 0 \right)} \left( t \right) \equiv \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{1}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{e}}_{2}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{e}}_{3}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right). $$
(2b)

In expanded form, the rotation matrix is written as:

$$ R^{\left( 0 \right)} \left( t \right) \equiv \left[ {\begin{array}{*{20}c} {R_{11}^{\left( 0 \right)} \left( t \right)} & {R_{12}^{\left( 0 \right)} \left( t \right)} & {R_{13}^{\left( 0 \right)} \left( t \right)} \\ {R_{21}^{\left( 0 \right)} \left( t \right)} & {R_{22}^{\left( 0 \right)} \left( t \right)} & {R_{23}^{\left( 0 \right)} \left( t \right)} \\ {R_{31}^{\left( 0 \right)} \left( t \right)} & {R_{32}^{\left( 0 \right)} \left( t \right)} & {R_{33}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right]. $$
(2c)

Equation (2a) is read as “\({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\) is obtained by applying the rotation \(R^{\left( 0 \right)} \left( t \right)\) to \({\mathbf{e}}^{I}\)”.

The inverse relation of Eq. (2a) is

$$ {\mathbf{e}}^{I} = {\mathbf{e}}^{\left( 0 \right)} \left( t \right)\left( {R^{\left( 0 \right)} \left( t \right)} \right)^{T} $$
(2d)

where a superposed ‘T’ attached to a matrix symbol implies the transposition of the matrix.

Using Eq. (2a) and the components \(x_{C}^{\left( 0 \right)} \left( t \right)\) of \({\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)\) in Eq. (1c), the connection of \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\) to \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{I} } & 0 \\ \end{array} } \right)\) is compactly expressed by using a 4 × 4 frame-connection matrix \(E^{\left( 0 \right)} \left( t \right)\) as:

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{I} } & 0 \\ \end{array} } \right) E^{\left( 0 \right)} \left( t \right), $$
(3a)

where

$$ E^{\left( 0 \right)} \left( t \right) = \left[ {\begin{array}{*{20}c} {R^{\left( 0 \right)} \left( t \right)} & {x_{C}^{\left( 0 \right)} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(3b)

and \(0_{1 \times 3} \equiv \left( {\begin{array}{*{20}c} 0 & 0 & 0 \\ \end{array} } \right)\).

Equation (3a) shows that \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\) is obtained by applying the rotation \(R^{\left( 0 \right)} \left( t \right)\) and the parallel translation \(x_{C}^{\left( 0 \right)} \left( t \right)\) to \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{I} } & 0 \\ \end{array} } \right)\).

In this paper, an inertial coordinate frame is selected to be the body-(0) frame at t = 0:

$$ \left( {\begin{array}{*{20}c} {{\bf e}^{I} } & 0 \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\bf e}^{\left( 0 \right)} \left( 0 \right)} & {{\bf r}_{C}^{\left( 0 \right)} \left( 0 \right)} \\ \end{array} } \right). $$
(3c)

Therefore, at t = 0 \(E^{\left( 0 \right)} \left( 0 \right)\) in Eq. (3b) is defined by the initial values \(x_{C}^{\left( 0 \right)} \left( 0 \right) = 0_{3x1}\) and \(R^{\left( 0 \right)} \left( 0 \right) = I_{3}\), which is the 3 × 3 identity matrix.

The set of differentiable rotation matrices forms the special orthogonal group: SO(3) [18, 23], and that of differentiable frame connection matrices forms the special Euclidean group [19,20,21]. (Here the adjective “special” means that all member matrices have determinant one.) Both SO(3) and SE(3) are matrix Lie groups with the basic group properties, expressed for SE(3): (i) their products belong to SE(3), (ii) their inverse matrices belong to SE(3), and (iii) associativity holds in matrix multiplications, see for example [18, 23]. The members of SO(3) also satisfy the same group properties. As Lie matrix groups, SO(3) and SE(3) come with their Lie algebras: so(3) and se(3), respectively, which describe the flow of matrix members with time near their identity matrix. In dynamics, the Lie algebras express angular velocities and translational velocities of each body [20, 21].

In robotics, frame connection matrices of SE(3) are called homogeneous transformations, see for example [24], where the time rate of transformations, comparable to the Lie algebra, are not mentioned. Also in robotics using the screw theory [25] and the product of exponentials formula [26], homogeneous coordinates of SE(3) were utilized to derive equations of motion by Murray et al. [27]. In this paper, the authors do not adopt the exponential matrix representation of rotation matrices, employed by the screw theory.

Returning to path (i) in Figs. 2b and 3 along the free link, a frame is defined for the top plate, body-(13).

3.1.3 Body-(13) Frame: (\({{\varvec{e}}}^{(13)}({\varvec{t}})\) \({{\varvec{r}}}_{{\varvec{C}}}^{(13)}({\varvec{t}})\))

A principal coordinate system {\({s}_{1}^{\left(13\right)}\) \({s}_{2}^{\left(13\right)}\,\,{s}_{3}^{\left(13\right)}\)} is attached to body-(13) at its center of mass, C(13), with the \({s}_{3}^{\left(13\right)}\)-axis normal to the plane of the plate. The coordinate vector basis \({\mathbf{e}}^{\left(13\right)}\left(t\right)\) is defined by the unit coordinate vectors as:\({\mathbf{e}}^{(13)}(t)\equiv \left(\begin{array}{ccc}{\mathbf{e}}_{1}^{(13)}(t)& {\mathbf{e}}_{2}^{(13)}(t)& {\mathbf{e}}_{3}^{(13)}(t)\end{array}\right)\). The position vector of C(13) is expressed by \({\mathbf{r}}_{C}^{(13)}(t)\). Now, body-(13) frame is defined as:\(\left(\begin{array}{cc}{\mathbf{e}}^{(13)}(t)& {\mathbf{r}}_{C}^{(13)}(t)\end{array}\right)\). As illustrated in Fig. 3, \({\mathbf{r}}_{C}^{(13)}(t)\) is expressed by adding the relative position vector of C(13) measured from C(0), written as \({\mathbf{s}}_{C}^{\left(13/0\right)}\left(t\right)={\mathbf{e}}^{\left(0\right)}\left(t\right){s}_{C}^{\left(13/0\right)}(t)\) to \({\mathbf{r}}_{C}^{\left(0\right)}\left(t\right)\). The rotation of \({\mathbf{e}}^{(13)}(t)\) relative to \({\mathbf{e}}^{(0)}(t)\) is expressed by \({R}^{\left(13/0\right)}(t)\). As a result, the connection of \(\left(\begin{array}{cc}{\mathbf{e}}^{\left(13\right)}\left(t\right)& {\mathbf{r}}_{C}^{\left(13\right)}\left(t\right)\end{array}\right)\) to \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( 0 \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( 0 \right)} \\ \end{array} } \right)\) is expressed by the frame connection matrix \(E^{{\left( {13/0} \right)}} \left( t \right)\) as:

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)E^{{\left( {13/0} \right)}} \left( t \right), $$
(4a)

where

$$ E^{{\left( {13/0} \right)}} \left( t \right) \equiv \left[ {\begin{array}{*{20}c} {R^{{\left( {13/0} \right)}} \left( t \right)} & {s_{C}^{{\left( {13/0} \right)}} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]. $$
(4b)

In this paper the matrices or vectors with superscript “(j/i)” imply those of frame-( j) relative to frame-(i). For example, in Eq.  (4a), \(E^{{\left( {13/0} \right)}} \left( t \right)\) expressed the connection of body-(13) frame relative to body-(0) frame.

In the reference configuration at t = 0, shown in Fig. 1, \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {13} \right)}} \left( 0 \right)} & {{\mathbf{r}}_{C}^{{\left( {13} \right)}} \left( 0 \right)} \\ \end{array} } \right)\) is obtained by parallel translating body-(0) frame \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( 0 \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( 0 \right)} \\ \end{array} } \right)\) vertically from C(0) to C(13) by distance \(\hat{h}^{\left( 0 \right)}\) without any rotation. Therefore, the initial values of the elements of \(E^{{\left( {13/0} \right)}} \left( 0 \right)\) are: \(R^{{\left( {13/0} \right)}} \left( 0 \right) = I_{3}\) and \(s_{C}^{{\left( {13/0} \right)}} \left( 0 \right) = \hat{h}^{\left( 0 \right)} e_{3}\), where \(e_{3}\) represents a 3 × 1 unit column matrix: \(e_{3} \equiv \left( {\begin{array}{*{20}c} 0 & 0 & 1 \\ \end{array} } \right)^{T}\).

Next along path (i) from C(13) one advances to SJ-(k) socket with its center at Tk.

3.1.4 SJ-(k) Socket Frame at \({{T}}_{{{k}}}\) on Body-(13): (\({{\mathbf e}}_{{{{T}}_{{{k}}} }}^{{\left( {{{SJ}} 13} \right)}} (t)\) \({{\mathbf r}}_{{{{T}}_{{{k}}} }} \left( {{t}}\right)\))

In Fig. 4a T1, T2, …, T6 on the circle of radius \(\hat{r}_{m}^{{\left( {13} \right)}}\) express the centers of semi-spherical cavity of sockets of six spherical joints (SJs). They form a hexagon, obtained by truncating an equilateral triangle by the radius \(\hat{r}_{m}^{{\left( {13} \right)}}\), which is slightly smaller than the radius of the circumscribing circle of the triangle. The relative coordinates \(\hat{s}_{{T_{k} }}^{{\left( {13} \right)}}\) of point Tk with respect to \( {\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)\) remain constant:

$$ {\bf s}_{{T_{k} }}^{{\left( {13} \right)}} \left( t \right) = {\bf e}^{{\left( {13} \right)}} \left( t \right)\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} , k = 1, 2, \ldots , 6 , $$
(5a)

where \(\hat{s}_{{3 T_{k} }}^{{\left( {13} \right)}} = - \hat{h}_{SJ}^{{\left( {13} \right)}}\) as shown in Fig. 4b:

$$ \hat{s}_{{T_{k} }}^{{\left( {13} \right)}} = \left( {\begin{array}{*{20}c} {\hat{r}_{m}^{{\left( {13} \right)}} {\text{cos}}\hat{\theta }_{k}^{{\left( {13} \right)}} } \\ {\hat{r}_{m}^{{\left( {13} \right)}} {\text{sin}}\hat{\theta }_{k}^{{\left( {13} \right)}} } \\ { - \hat{h}_{SJ}^{{\left( {13} \right)}} } \\ \end{array} } \right) $$
(5b)

and denoting the truncation angle by \(\Delta \hat{\theta }^{{\left( {13} \right)}}\), which is less than \(\pi\)/3, \(\hat{\theta }_{k}^{{\left( {13} \right)}}\) in Fig. 4a is expressed as:

$$ \begin{gathered} \hat{\theta }_{1}^{{\left( {13} \right)}} = \frac{\pi }{3} - \frac{1}{2}\Delta \hat{\theta }^{{\left( {13} \right)}} ,\;\hat{\theta }_{2}^{{\left( {13} \right)}} = \frac{\pi }{3} + \frac{1}{2}\Delta \hat{\theta }^{{\left( {13} \right)}} , \hfill \\ \hat{\theta }_{3}^{{\left( {13} \right)}} = \pi - \frac{1}{2}\Delta \hat{\theta }^{{\left( {13} \right)}} ,\;\hat{\theta }_{4}^{{\left( {13} \right)}} = \pi + \frac{1}{2}\Delta \hat{\theta }^{{\left( {13} \right)}} , \hfill \\ \hat{\theta }_{5}^{{\left( {13} \right)}} = \frac{5\pi }{3} - \frac{1}{2}\Delta \hat{\theta }^{{\left( {13} \right)}} ,\hat{\theta }_{6}^{{\left( {13} \right)}} = \frac{5\pi }{3} + \frac{1}{2}\Delta \hat{\theta }^{{\left( {13} \right)}} . \hfill \\ \end{gathered} $$
(5c)
Fig. 4
figure 4

a A plan view of the top plate, body-(13) and b an elevation for the socket of a spherical joint at Tk

In this paper, time-independent quantities are shown with superposed hat: ‘^’.

Along path (i) SJ-(k) socket frame at Tk on body-(13):\( \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{T_{k} }}^{{\left( {{\text{SJ }}13} \right)}} \left( t \right)} & {{\mathbf{r}}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right)\) is defined by parallel translating \({\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)\) to Tk by \(\hat{s}_{{T_{k} }}^{{\left( {13} \right)}}\) and rotating the translated vector basis until \({\mathbf{e}}_{{1 T_{k} }}^{{\left( {{\text{SJ }}13} \right)}}\) points in the radial direction. Thus, the frame connection of \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{T_{k} }}^{{\left( {{\text{SJ }}13} \right)}} \left( t \right)} & {{\mathbf{r}}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right)\) to body-(13) frame is written as:

$$ \left( {\begin{array}{*{20}c} {{\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} & {{\bf r}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\bf e}^{{\left( {13} \right)}} \left( t \right)} & {{\bf r}_{C}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right) \hat{E}_{{T_{k} }}^{{\left( {SJ 13/13} \right)}} , $$
(6a)

where

$$ \hat{E}_{{T_{k} }}^{{\left( {{\text{SJ }}13/13} \right)}} = \left[ {\begin{array}{*{20}c} {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} & {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(6b)

and \(R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)\) represents the elementary rotation about \({\mathbf{e}}_{3}^{{\left( {13} \right)}} \left( t \right)\) by \(\hat{\theta }_{k}^{{\left( {13} \right)}}\) to point \({\mathbf{e}}_{{1 T_{k} }}^{{\left( {{\text{SJ }}13} \right)}}\) in the radial direction:

$$ R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right) \equiv \left[ {\begin{array}{*{20}c} {{\text{cos}}\hat{\theta }_{k}^{{\left( {13} \right)}} } & { - {\text{sin}}\hat{\theta }_{k}^{{\left( {13} \right)}} } & 0 \\ {{\text{sin}}\hat{\theta }_{k}^{{\left( {13} \right)}} } & {{\text{cos}}\hat{\theta }_{k}^{{\left( {13} \right)}} } & 0 \\ 0 & 0 & 1 \\ \end{array} } \right]. $$
(6c)

3.1.5 Summary of path (i) frame connections

Along path (i) SJ-(k) socket frame at Tk on body-(13) is also expressed with respect to body-(0) frame by combining Eqs. (6a) and (4a):

$$ \left( {\begin{array}{*{20}c} {{\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} & {{\bf r}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right)_{path \left( i \right)} = \left( {\begin{array}{*{20}c} {{\bf e}^{\left( 0 \right)} \left( t \right)} & {{\bf r}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\left( {E_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} \right)_{path \left( i \right)} , $$
(7a)

where the components of the frame connection matrix are defined as:

$$ \left( {E_{{T_{k} }}^{{({\text{SJ}} 13/0)}} \left( t \right)} \right)_{path \left( i \right)} \equiv \left[ {\begin{array}{*{20}c} {R_{{T_{k} }}^{{({\text{SJ }}13/0)}} \left( t \right)} & {s_{{T_{k} }}^{{\left( {{\text{SJ }}13/0)} \right)}} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]_{path \left( i \right)} , $$
(7b)

and from Eqs. (6a) and (4a):

$$ \left( {E_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} \right)_{path \left( i \right)} = E^{{\left( {13/0} \right)}} \left( t \right) \hat{E}_{{T_{k} }}^{{\left( {SJ 13/13} \right)}} . $$
(7c)

The computation of their components yields

$$ \left( {R_{{T_{k} }}^{{({\text{SJ }}13/0)}} \left( t \right)} \right)_{path \left( i \right)} = R^{(13/0)} \left( t \right) R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right), $$
(7d)
$$ \left( {s_{{T_{k} }}^{{\left( {{\text{SJ }}13/0} \right)}} \left( t \right)} \right)_{path \left( i \right)} = R^{{\left( {13/0} \right)}} \left( t \right)\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} + s_{C}^{{\left( {13/0} \right)}} \left( t \right). $$
(7e)

This completes the definition of frame connections along path (i). However, at this point, for the computation of kinetic energy in the part II-paper, the configuration of a manipulator, mounted on the top plate, is defined.

3.1.6 Body-(14) Frame: (e (14)(t) r C (14)(t))

As shown in Figs. 2a and 3, a manipulator, body-(14), is mounted on the top plate. In this paper, the manipulator is approximated as a rigid body with its center of mass located on the \(s_{3}^{{\left( {13} \right)}}\)-axis at the elevation \(\hat{h}^{{\left( {14/13} \right)}}\). Body-(14) frame \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {14} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {14} \right)}} \left( t \right)} \\ \end{array} } \right)\) is therefore established by parallel translating \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right)\) along the \(s_{3}^{{\left( {13} \right)}}\)-axis by \(\hat{h}^{{\left( {14/13} \right)}}\) without any rotation:

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {14} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {14} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right)\hat{E}^{{\left( {14/13} \right)}} , $$
(8a)

where using \(e_{3} \equiv\) ( 0 0 1)T,

$$ \hat{E}^{{\left( {14/13} \right)}} = \left[ {\begin{array}{*{20}c} {I_{3} } & {\hat{h}^{{\left( {14/13} \right)}} e_{3} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]. $$
(8b)

3.2 Moving coordinate frames along path (ii)

Moving coordinate frames necessary to define the frame connections of path (ii) are briefly discussed. On leg-(k), first, two frames are employed at the center Bk of UJ-(k) cross: UJ-(k) cross frame and UJ-(k) leg frame to describe the rotation of the lower leg, body-(2k-1). One axis of the cross is journaled by the base yoke fixed to body-(0) and the other axis is journaled by the yoke of body-(2k-1). Second, to describe the length change induced by the actuated translational joint, ATJ-(k), principal coordinate systems are attached to both body-(2k-1) and the upper leg, body-(2k), at their centers of mass of body-(2k-1) frame and body-(2k) frame. Third, advancing along the axis of the upper leg to the center \(T_{k}\) of the spherical ball, SJ-(k) ball frame at \( T_{k}\) on body-(2k) is defined. Finally, SJ-(k) ball frame at \(T_{k}\) on body-(2k) is connected to SJ-(k) socket frame at \( T_{k}\) on body-(13) to mathematically fit the spherical ball into the SJ socket on body-(13). This summarizes the frames to be defined along path (ii).

3.2.1 UJ-(k) Cross frame at Bk on body-(0): (e B k (UJcross)(t) r B k(t))

Figure 5a illustrates a plan view of the base plate, body-(0). In the figure the centers of cross of universal joints (UJs) are shown by points B1, B2, …, B6 on the circle of radius \(\hat{r}_{m}^{\left( 0 \right)}\), which are numbered in the counterclockwise direction. They form a hexagon, obtained by truncating an equilateral triangle by the radius \(\hat{r}_{m}^{\left( 0 \right)}\) which is slightly smaller than the circumscribing circle of the triangle. Figure 5b shows for leg-(k) an elevation of the base yoke of UJ-(k) with the center of cross at Bk. The base yoke on body-(0) journals one axis of the cross pointing in the radial direction. (The other axis of the cross is journaled by the yoke of the lower leg: body-(2k-1).)

Fig. 5
figure 5

a A plan view of the base plate and b the elevation of center of UJ cross, Bk, k = 1,…,6

The relative position vector \({\mathbf{s}}_{{B_{k} }}^{\left( 0 \right)} \left( t \right)\) of point Bk is expressed with respect to \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\):

$$ {\mathbf{s}}_{{B_{k} }}^{\left( 0 \right)} \left( t \right) = {\mathbf{e}}^{\left( 0 \right)} \left( t \right)\hat{s}_{{B_{k} }}^{\left( 0 \right)} , { }k = { }1,{ }2,{ } \ldots { },{ }6{ ,} $$
(9a)

where the coordinates \(\hat{s}_{{B_{k} }}^{\left( 0 \right)}\) are obtained from Fig. 5a and b with the elevation \(\hat{h}_{{{\text{UJ}}}}^{\left( 0 \right)}\) as:

$$ \hat{s}_{{B_{k} }}^{\left( 0 \right)} = \left( {\begin{array}{*{20}c} {\hat{r}_{m}^{\left( 0 \right)} {\text{cos}}\hat{\theta }_{k}^{\left( 0 \right)} } \\ {\hat{r}_{m}^{\left( 0 \right)} {\text{sin}}\hat{\theta }_{k}^{\left( 0 \right)} } \\ { \hat{h}_{{{\text{UJ}}}}^{\left( 0 \right)} } \\ \end{array} } \right), $$
(9b)

and denoting the truncated angle by \(\Delta \hat{\theta }^{\left( 0 \right)}\), which is less than \(\pi\)/3, \(\hat{\theta }_{k}^{\left( 0 \right)}\)’s are defined as:

$$ \begin{gathered} \hat{\theta }_{1}^{\left( 0 \right)} = \frac{1}{2}\Delta \hat{\theta }^{\left( 0 \right)} ,\hat{\theta }_{2}^{\left( 0 \right)} = \frac{2\pi }{3} - \frac{1}{2}\Delta \hat{\theta }^{\left( 0 \right)} , \hfill \\ \hat{\theta }_{3}^{\left( 0 \right)} = \frac{2\pi }{3} + \frac{1}{2}\Delta \hat{\theta }^{\left( 0 \right)} ,{ }\hat{\theta }_{4}^{\left( 0 \right)} = \frac{4\pi }{3} - \frac{1}{2}\Delta \hat{\theta }^{\left( 0 \right)} , \hfill \\ \hat{\theta }_{5}^{\left( 0 \right)} = \frac{4\pi }{3} + \frac{1}{2}\Delta \hat{\theta }^{\left( 0 \right)} ,\hat{\theta }_{6}^{\left( 0 \right)} = 2\pi - \frac{1}{2}\Delta \hat{\theta }^{\left( 0 \right)} . \hfill \\ \end{gathered} $$
(9c)

UJ-(k) cross rotates freely around the cross axis pivoted by the base yoke on body-(0). To describe the rotation of the cross, UJ-(k) cross frame \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{{\left( {\text{UJ cross}} \right)}} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)\) at Bk on body-(0): is defined. The unit coordinate vector \({\mathbf{e}}_{{1 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\) represents the axis of rotation of the cross, \({\mathbf{e}}_{{2 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\) is the other axis of cross journaled by the yoke of the lower leg, body (2k-1), and \({\mathbf{e}}_{{3 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\) is the normal of the plane of the cross. To define UJ-(k) cross frame, an intermediate frame \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)\) is defined first by parallel translating \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\) to Bk by \(\hat{s}_{{B_{k} }}^{\left( 0 \right)}\), as shown in Fig. 5a, and rotating the translated \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\) about \({\mathbf{e}}_{3}^{\left( 0 \right)} \left( t \right)\) by the angle \(\hat{\theta }_{k}^{\left( 0 \right)}\):

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\left[ {\begin{array}{*{20}c} {R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)} & {\hat{s}_{{B_{k} }}^{\left( 0 \right)} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(10a)

where the elementary rotation \(R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)\) about \({\mathbf{e}}_{3}^{\left( 0 \right)} \left( t \right)\) by the angle \(\hat{\theta }_{k}^{\left( 0 \right)}\) is

$$ R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right) \equiv \left[ {\begin{array}{*{20}c} {{\text{cos}}\hat{\theta }_{k}^{\left( 0 \right)} } & { - {\text{sin}}\hat{\theta }_{k}^{\left( 0 \right)} } & 0 \\ {{\text{sin}}\hat{\theta }_{k}^{\left( 0 \right)} } & {{\text{cos}}\hat{\theta }_{k}^{\left( 0 \right)} } & 0 \\ 0 & 0 & 1 \\ \end{array} } \right]. $$
(10b)

In Eq. (10a) the unit vector \({\mathbf{e}}_{{1 B_{k} }}^{ \left( 0 \right)}\) now points in the radial direction as illustrated in Fig. 5a.

UJ-(k) cross frame at \(B_{k}\) on body-(0) is now obtained by rotating \({\mathbf{e}}_{{B_{k} }}^{\left( 0 \right)} \left( t \right)\) about \({\mathbf{e}}_{{1 B_{k} }}^{ \left( 0 \right)}\) by angle \(\phi_{1}^{\left( k \right)} \left( t \right)\), as illustrated in Fig. 6b:

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{{\left( {\text{UJ cross}} \right)}} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)\left[ {\begin{array}{*{20}c} {R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)} & {0_{3 \times 1} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(10c)

where \(R_{{1B_{k} UJ}}\) represents the elementary rotation about \({\mathbf{e}}_{{1 B_{k} }}^{ \left( 0 \right)}\) by \(\phi_{1}^{\left( k \right)} \left( t \right)\):

$$ R_{{1B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right) \equiv \left[ {\begin{array}{*{20}c} 1 & 0 & 0 \\ 0 & {{\text{cos}}\phi_{1}^{\left( k \right)} \left( t \right)} & { - {\text{sin}}\phi_{1}^{\left( k \right)} \left( t \right)} \\ 0 & {{\text{sin}}\phi_{1}^{\left( k \right)} \left( t \right)} & {{\text{cos}}\phi_{1}^{\left( k \right)} \left( t \right)} \\ \end{array} } \right]. $$
(10d)
Fig. 6
figure 6

The rotations of UJ cross and the lower leg body-(2k-1) at Bk: (a) \(\phi_{1}^{\left( k \right)} = \phi_{2}^{\left( k \right)} = 0\); (b) \(\phi_{1}^{\left( k \right)} \ne 0\), \(\phi_{2}^{\left( k \right)} = 0\); (c)\( \phi_{1}^{\left( k \right)} \ne 0\), \(\phi_{2}^{\left( k \right)} \ne 0\).

Finally, the connection of UJ-(k) cross frame at \(B_{k}\) on body-(0) to body-(0) frame is obtained by substituting Eq. (10a) into Eq. (10c):

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{{\left( {\text{UJ cross}} \right)}} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\left[ {\begin{array}{*{20}c} {R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)} & {\hat{s}_{{B_{k} }}^{\left( 0 \right)} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]. $$
(10e)

The first column of Eq. (10e): \({\mathbf{e}}_{{B_{k} }}^{{\left( {\text{UJ cross}} \right)}} \left( t \right) = {\mathbf{e}}^{\left( 0 \right)} \left( t \right) R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)\) compactly expresses two sequence of rotations applied to the translated \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\) to Bk: the first rotation \(R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)\) to orient \({\mathbf{e}}_{{1 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}} = {\mathbf{e}}_{{1 B_{k} }}^{ \left( 0 \right)}\) in the radial direction, and the second rotation \(R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)\) about \({\mathbf{e}}_{{1 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\) by angle \(\phi_{1}^{\left( k \right)} \left( t \right)\) to describe the cross rotation.

Next, to describe the rotation of the lower leg, body-(2k-1), at \(B_{k}\) the second frame is defined.

3.2.2 UJ-(k) Leg frame at \({\varvec{B}}_{{\varvec{k}}}\) on body-(2k-1): (\({\varvec{e}}_{{{\varvec{B}}_{{\varvec{k}}} }}^{{\left( {\user2{UJ }2{\varvec{k}} - 1} \right)}} \left( {\varvec{t}} \right)\) \({\varvec{r}}_{{{\varvec{B}}_{{\varvec{k}}} }}^{{}} \left( {\varvec{t}} \right)\))

To describe the rotation of the lower leg at Bk, UJ-(k) leg frame at Bk on body-(2k-1): \(\left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)\) is defined in Fig. 6b and c. The coordinate vector basis \({\mathbf{e}}_{{B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\) is defined so that \({\mathbf{e}}_{{2 B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right) = {\mathbf{e}}_{{2 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}} \left( t \right)\) expresses the cross axis journaled by the yoke of body-(2k-1) and \({\mathbf{e}}_{{3 B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\) shows the leg axis. The associated coordinate system with the origin at Bk is defined as \(\left\{ {\begin{array}{*{20}c} {s_{{1B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} } & {s_{{2B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} } & {s_{{3 B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} } \\ \end{array} } \right\}\). UJ-(k) leg frame on body-(2k-1) occupies the same origin \({\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)\) as that of UJ-(k) cross frame. However, \({\mathbf{e}}_{{B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\) is relatively rotated by angle \(\phi_{2}^{\left( k \right)} \left( t \right)\) with respect to \({\mathbf{e}}_{{2B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\), which shows the axis of the cross-link journaled by the yoke of body-(2k-1), as illustrated in Fig. 6c.

The lower leg, body-(2k-1), takes vertical position where the cross plane remains parallel to the plane of the base plate, i.e., no rotation about \({\mathbf{e}}_{{1 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\), \(\phi_{1}^{\left( k \right)} = 0\), and no rotation about \({\mathbf{e}}_{{2B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\), \(\phi_{2}^{\left( k \right)} = 0\). The posture of the leg becomes that shown in Fig. 6b when only the cross rotates about \({\mathbf{e}}_{{1 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\) by \(\phi_{1}^{\left( k \right)} \ne 0\) without any rotation about \({\mathbf{e}}_{{2B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\), \(\phi_{2}^{\left( k \right)} = 0\). When both rotations take place about \({\mathbf{e}}_{{1 B_{k} }}^{{ \left( {\text{UJ cross}} \right)}}\) by \(\phi_{1}^{\left( k \right)} \ne 0\) and about \({\mathbf{e}}_{{2B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\) by \(\phi_{2}^{\left( k \right)} \ne 0\), the posture of the lower leg becomes that shown in Fig. 6c. Observing that in the reference configuration, shown in Fig. 1, the legs are not vertical to the plane of the base plate, both \(\phi_{1}^{\left( k \right)} \left( 0 \right)\) and \(\phi_{2}^{\left( k \right)} \left( 0 \right)\) take nonzero initial values (which are computed in Appendix A).

The connection of UJ-(k) leg frame at Bk on body-(2k-1) to UJ-(k) cross frame on body-(0) is expressed as:

$$ \left( {\begin{array}{*{20}c} {{\bf e}_{{B_{k} }}^{{\left( {UJ 2k - 1} \right)}} \left( t \right)} & {{\bf r}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\bf e}_{{B_{k} }}^{{\left( {UJ Cross} \right)}} \left( t \right)} & {{\bf r}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)\left[ {\begin{array}{*{20}c} {R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} & {0_{3 \times 1} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(11a)

where \(R_{{2B_{k} {\text{UJ}}}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)\) represents the elementary rotation about \({\mathbf{e}}_{{2B_{k} }}^{{\left( {{\text{UJ }}2{\text{k}} - 1} \right)}} \left( t \right)\) by \(\phi_{2}^{\left( k \right)} \left( t \right)\):

$$ R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right) \equiv \left[ {\begin{array}{*{20}c} {\cos \phi_{2}^{\left( k \right)} \left( t \right)} & 0 & {\sin \phi_{2}^{\left( k \right)} \left( t \right)} \\ 0 & 1 & 0 \\ { - \sin \phi_{2}^{\left( k \right)} \left( t \right)} & 0 & {\cos \phi_{2}^{\left( k \right)} \left( t \right)} \\ \end{array} } \right]. $$
(11b)

To advance further along leg-(k) of path (ii), Fig. 7 illustrates the coordinate frames at joints and centers of mass which must be defined.

Fig. 7
figure 7

Coordinate frames on the kth leg

3.2.3 Body-(2k-1) frame: (\({\varvec{e}}^{{\left( {2{\varvec{k}} - 1} \right)}} \left( {\varvec{t}} \right)\) \({\varvec{r}}_{{\varvec{C}}}^{{\left( {2{\varvec{k}} - 1} \right)}} \left( {\varvec{t}} \right)\))

For the lower-leg, body-(2k-1) frame is defined at C(2k−1) by parallel translating the \(\left\{ {\begin{array}{*{20}c} {s_{{1B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} } & {s_{{2B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} } & {s_{{3 B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} } \\ \end{array} } \right\}\) coordinate system of UJ-(k) leg frame at Bk on body-(2k-1) to C(2k−1). Since body-(2k-1) holds a motor for actuating the translational joint, the center of mass C(2k−1) may be slightly deviated from the axis of leg-(k). Including this deviation, the relative position vector of C(2k−1), \({\mathbf{s}}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} \left( t \right)\), measured by UJ-(k) leg frame at Bk is expressed as:

$$ {\mathbf{s}}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} \left( t \right) = {\mathbf{e}}_{{B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)\hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} , $$
(12a)
$$ \hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} = \left( {\begin{array}{*{20}c} {\Delta \hat{s}_{{1C/B_{k} }}^{{\left( {2k - 1} \right)}} } \\ {\Delta \hat{s}_{{2C/B_{k} }}^{{\left( {2k - 1} \right)}} } \\ { \hat{l}_{UJ}^{{\left( { 2k - 1} \right)}} } \\ \end{array} } \right), $$
(12b)

where \(\Delta \hat{s}_{{1C/B_{k} }}^{{\left( {2k - 1} \right)}}\) and \(\Delta \hat{s}_{{2C/B_{k} }}^{{\left( {2k - 1} \right)}}\) express the deviation of C(2k−1) from the axis of leg-(k), and \( \hat{l}_{{{\text{UJ}}}}^{{\left( {2k - 1} \right)}}\) denotes the \(s_{{3B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}}\)-coordinate of C(2k−1) measured from Bk, as illustrated in Fig. 7.

The connection of body-(2k-1) frame at C(2k−1) to the UJ-(k) leg frame at Bk on body-(2k-1) is expressed by the frame connection matrix \(E^{{(2k - 1/{\text{UJ }}2k - 1)}} \left( t \right)\):

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {2k - 1} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {2k - 1} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{{B_{k} }}^{{\left( {{\text{UJ }}2k - 1} \right)}} \left( t \right)} & {{\mathbf{r}}_{{B_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)\left[ {\begin{array}{*{20}c} {I_{3} } & {\hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(13)

To prepare for the computation of kinetic energy, body-(2k-1) frame is expressed with respect to body-(0) frame by substituting Eqs. (10a) and (11a) into Eq. (13):

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {2k - 1} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {2k - 1} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right) E^{(2k - 1/0)} \left( t \right), $$
(14a)

where

$$ E^{(2k - 1/0)} \left( t \right) \equiv \left[ {\begin{array}{*{20}c} {R^{(2k - 1/0)} \left( t \right)} & {s_{C}^{(2k - 1/0)} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(14b)

and performing the multiplications using Eqs. (10b) and (11b), one finds

$$ R^{(2k - 1/0)} \left( t \right) = R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right), $$
(14c)
$$ s_{C}^{(2k - 1/0)} \left( t \right) = R^{(2k - 1/0)} \left( t \right) \hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} + \hat{s}_{{B_{k} }}^{\left( 0 \right)} , $$
(14d)

and where \(\hat{s}_{{B_{k} }}^{\left( 0 \right)}\) was defined in Eq. (9b).

3.2.4 Body-(2k) frame: (\({\varvec{e}}^{{\left( {2{\varvec{k}}} \right)}} \left( {\varvec{t}} \right)\) \({\varvec{r}}_{{\varvec{C}}}^{{\left( {2{\varvec{k}}} \right)}} \left( {\varvec{t}} \right)\))

The top end of the lower leg, body-(2k-1), has a mechanism to actively slide and passively rotate the cylindrical upper leg, body-(2k), to facilitate a translational joint. The \(s_{3}^{{\left( {2k - 1} \right)}}\)-distance between the center of mass of body-(2k-1), C(2k−1), and that of body-(2k), C(2k), is expressed by d(k)(t), as illustrated in Fig. 7. The passive rotation with \({\mathbf{e}}_{3}^{{\left( {2k - 1} \right)}} \left( t \right)\) by the angle \(\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)\) is expressed by the elementary rotation matrix: \(R_{{3 {\text{ATJ}}}} \left( {\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} \right)\). Body-(2k) frame is now defined with respect to body-(2k-1) frame as:

$$ \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {2k} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {2k} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {2k - 1} \right)}} \left( t \right)} & {{\mathbf{r}}_{C}^{{\left( {2k - 1} \right)}} \left( t \right)} \\ \end{array} } \right) E^{(2k/2k - 1)} \left( t \right), $$
(15a)

where

$$ E^{(2k/2k - 1)} \left( t \right) = \left[ {\begin{array}{*{20}c} {R_{3 ATJ} \left( {\phi_{3}^{(2k/2k - 1)} \left( t \right)} \right)} & {s_{C}^{(2k/2k - 1)} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right], $$
(15b)

and their component matrices defined as:

$$ R_{{3{\text{ ATJ}}}} \left( {\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} \right) \equiv \left[ {\begin{array}{*{20}c} {{\text{cos}}\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} & { - {\text{sin}}\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} & 0 \\ {{\text{sin}}\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} & {{\text{cos}}\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} & 0 \\ 0 & 0 & 1 \\ \end{array} } \right], $$
(15c)
$$ s_{C}^{{\left( {2k/2k - 1)} \right)}} \left( t \right) = \left( {\begin{array}{*{20}c} { - \Delta \hat{s}_{{1C/B_{k} }}^{{\left( {2k - 1} \right)}} } \\ { - \Delta \hat{s}_{{2C/B _{k} }}^{{\left( {2k - 1} \right)}} } \\ { d^{\left( k \right)} \left( t \right)} \\ \end{array} } \right). $$
(15d)

In Eq. (15d), the terms: \(- \Delta \hat{s}_{{1C/B_{k} }}^{{\left( {2k - 1} \right)}}\) and \(- \Delta \hat{s}_{{2C/B_{k} }}^{{\left( {2k - 1} \right)}}\) place C(2k) back on the axis of leg-(k).

3.2.5 SJ-(k) Ball frame at Tk on body-(2k): (\({\varvec{e}}_{{{\varvec{T}}_{{\varvec{k}}} }}^{{\left( {\user2{SJ }2{\varvec{k}}} \right)}} \left( {\varvec{t}} \right)\) \({\varvec{r}}_{{{\varvec{T}}_{{\varvec{k}}} }} \left( {\varvec{t}} \right)\))

The top end of body-(2k) is the spherical ball of SJ-(k), shown in Figs. 1 and 7. SJ-(k) ball frame is defined at the center Tk of the spherical ball. The axial distance of the center Tk from C(2k) is \(\hat{l}_{{T_{k} }}^{{\left( {2k} \right)}}\), as shown in Fig. 7. Therefore, SJ-(k) ball frame at Tk on body-(2k) is obtained by parallel translating body-(2k) frame to Tk by \(e_{3} \hat{l}_{{{\text{SJ}}}}^{{\left( {2k} \right)}}\) without any rotation:

$$\left( {\begin{array}{*{20}{c}} {{\bf{e}}_{{T_k}}^{\left( {{\rm{SJ~}}2k} \right)}\left( t \right)}&{{{\bf{r}}_{{T_k}}}\left( t \right)} \end{array}} \right) = \left( {\begin{array}{*{20}{c}} {{{\bf{e}}^{\left( {2k} \right)}}\left( t \right)}&{{\bf{r}}_C^{\left( {2k} \right)}\left( t \right)} \end{array}} \right)\left[ {\begin{array}{*{20}{c}} {{I_3}}&{{e_3}\hat l_{{\rm{SJ}}}^{\left( {2k} \right)}}\\ {{0_{1 \times 3}}}&1 \end{array}} \right]$$
(16)

3.2.6 SJ-(k) Socket frame at Tk on body-(13) along path (ii)

To conclude path (ii) the spherical ball must be fit into SJ-(k) socket at Tk on body-(13). This fitting is accomplished at Tk by rotating SJ-(k) ball frame to SJ-(k) socket frame at Tk on body-(13). The rotation is expressed by \(R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ }}13/2k} \right)}} \left( t \right)\).

$${\left( {\begin{array}{*{20}{c}} {{\bf{e}}_{{T_k}}^{\left( {{\rm{SJ~}}13} \right)}\left( t \right)}&{{{\bf{r}}_{{T_k}}}\left( t \right)} \end{array}} \right)_{{\rm{path}}\left( {ii} \right)}} = \left( {\begin{array}{*{20}{c}} {{\bf{e}}_{{T_k}}^{\left( {{\rm{SJ~}}2k} \right)}\left( t \right)}&{{{\bf{r}}_{{T_k}}}\left( t \right)} \end{array}} \right)\left[ {\begin{array}{*{20}{c}} {R_{{T_k}{\rm{SJ}}}^{\left( {{\rm{SJ~}}13/{\rm{SJ~}}2k} \right)}\left( t \right)}&{{0_{3 \times 1}}}\\ {{0_{1 \times 3}}}&1 \end{array}} \right]$$
(17)

Combining Eqs. (6a) and (6b), SJ-(k) socket frame at Tk on body-(13) is expressed relatively with respect to body-(2k) frame as:

$${\left( {\begin{array}{*{20}{c}} {{\bf{e}}_{{T_k}}^{\left( {{\rm{SJ~}}13} \right)}\left( t \right)}&{{{\bf{r}}_{{T_k}}}\left( t \right)} \end{array}} \right)_{path\left( {ii} \right)}} = \left( {\begin{array}{*{20}{c}} {{{\bf{e}}^{\left( {2k} \right)}}\left( t \right)}&{{\bf{r}}_C^{\left( {2k} \right)}\left( t \right)} \end{array}} \right)E_{{T_k}}^{({\rm{SJ~}}13/2k)}\left( t \right)$$
(18a)

where the frame connection matrix \(E_{{T_{k} }}^{{({\text{SJ }}13/2k)}} \left( t \right)\) is computed as:

$$ E_{{T_{k} }}^{(SJ 13/2k)} \left( t \right) = \left[ {\begin{array}{*{20}c} {R_{{T_{k} SJ}}^{{\left( {SJ 13/SJ 2k} \right)}} \left( t \right)} & {e_{3} \hat{l}_{SJ}^{{\left( {2k} \right)}} } \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]. $$
(18b)

Finally, SJ-(k) socket frame is expressed with respect to body-(0) frame using the frame connection matrix \(\left( {E_{{T_{k} }}^{{({\text{SJ}} 13/0)}} \left( t \right)} \right)_{{path \left( {ii} \right)}}\) as:

$$ \left( {\begin{array}{*{20}c} {{\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} & {{\bf r}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right)_{{path \left( {ii} \right)}} = \left( {\begin{array}{*{20}c} {{\bf e}^{\left( 0 \right)} \left( t \right)} & {{\bf r}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right) \left( {E_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} \right)_{{path \left( {ii} \right)}} , $$
(19a)

where the components of the frame connection matrix are defined as Eq. (7b) for path (i):

$$ \left( {E_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} \right)_{{path \left( {ii} \right)}} \equiv \left[ {\begin{array}{*{20}c} {R_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} & {s_{{T_{k} }}^{{\left( {SJ 13/0} \right)}} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]_{{path \left( {ii} \right)}} , $$
(19b)

and the components are obtained from Eqs. (14a), (15a) and (18a) as:

$$ \left( {E_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} \right)_{{path \left( {ii} \right)}} = E^{(2k - 1/0)} \left( t \right)E^{(2k/2k - 1)} \left( t \right)E_{{T_{k} }}^{(SJ 13/2k)} \left( t \right). $$
(19c)

The above multiplications with Eqs. (14c) and (14d) yield:

$$ \begin{aligned} \left( {R_{{T_{k} }}^{(SJ 13/0)} \left( t \right)} \right)_{{path \left( {ii} \right)}} & = R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right) \\ & \times R_{3 ATJ} \left( {\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} \right)R_{{T_{k} SJ}}^{{\left( {SJ 13/SJ 2k} \right)}} \left( t \right) \\ \end{aligned} $$
(19d)
$$ \left( {s_{{T_{k} }}^{{\left( {SJ 13/0} \right)}} \left( t \right)} \right)_{{path \left( {ii} \right)}} = R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)e_{3} l^{\left( k \right)} \left( t \right) + \hat{s}_{{B_{k} }}^{\left( 0 \right)} , $$
(19e)

where \(l^{\left( k \right)} \left( t \right)\) denotes the total length of leg-(k):

$$ l^{\left( k \right)} \left( t \right) \equiv \hat{l}_{{{\text{UJ}}}}^{{\left( {{\text{UJ }}2k - 1} \right)}} + d^{\left( k \right)} \left( t \right) + \hat{l}_{{{\text{SJ}}}}^{{\left( {2k} \right)}} . $$
(19f)

This completes the definition of frame connections along path (ii).

3.3 Loop closure constraints

The loop closure constraints are now expressed with respect to body-(0) frame by equating Eqs. (8a) and (8b) to Eqs. (9a) and (9b):

$$ \left[ {\begin{array}{*{20}c} {R_{{T_{k} }}^{{({\text{SJ }}13/0)}} \left( t \right)} & {s_{{T_{k} }}^{{\left( {{\text{SJ }}13/0} \right)}} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]_{path \left( i \right)} = \left[ {\begin{array}{*{20}c} {R_{{T_{k} }}^{{({\text{SJ }}13/0)}} \left( t \right)} & {s_{{T_{k} }}^{{\left( {{\text{SJ }}13/0} \right)}} \left( t \right)} \\ {0_{1 \times 3} } & 1 \\ \end{array} } \right]_{{path \left( {ii} \right)}} , $$
(20a)

in components

$$ \left( {R_{{T_{k} }}^{{({\text{SJ }}13/0)}} \left( t \right)} \right)_{path \left( i \right)} = \left( {R_{{T_{k} }}^{{({\text{SJ }}13/0)}} \left( t \right)} \right)_{{path \left( {ii} \right)}} , $$
(20b)
$$ \left( {s_{{T_{k} }}^{{\left( {{\text{SJ }}13/0} \right)}} \left( t \right)} \right)_{path \left( i \right)} = \left( {s_{{T_{k} }}^{{\left( {{\text{SJ }}13/0} \right)}} \left( t \right)} \right)_{{path \left( {ii} \right)}} . $$
(20c)

Their components with respect to \({\varvec{e}}^{\left( 0 \right)} \left( t \right)\) are expressed using Eqs. (7d), (7e), (19d) and (19e) as:

$$ \begin{aligned} R^{(13/0)} \left( t \right) R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right) & = R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right) \\ & \times R_{3 ATJ} \left( {\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} \right)R_{{T_{k} SJ}}^{{\left( {SJ 13/SJ 2k} \right)}} \left( t \right), \\ \end{aligned} $$
(20d)
$$ R^{{\left( {13/0} \right)}} \left( t \right)\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} + s_{C}^{{\left( {13/0} \right)}} \left( t \right) = R_{{3 B_{k} }} \left( {\hat{\theta }_{k}^{\left( 0 \right)} } \right)R_{{1 B_{k} UJ}} \left( {\phi_{1}^{\left( k \right)} \left( t \right)} \right)R_{{2B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)e_{3} l^{\left( k \right)} \left( t \right) + \hat{s}_{{B_{k} }}^{\left( 0 \right)} . $$
(20e)

The above constraints, expressed in configuration space, are classified as holonomic constraints [23]. As a result, the configuration is updated at each time by integrating the constraints on velocities starting from an initial configuration. The corresponding constraints on velocities will be computed in the next section.

In Appendix A, to facilitate design tools for determining dimensions of the platform both inverse and forward kinematics problems are solved analytically utilizing the loop closure equations. In the inverse kinematics problem, for a specified top-plate configuration: \({R}^{\left(13/0\right)}\) and \({s}_{C}^{\left(13/0\right)}\) one finds each leg configuration, \({\phi }_{1}^{\left(k\right)}\), \({\phi }_{2}^{\left(k\right)}\), \({l}^{\left(k\right)}\) and \({R}_{{T}_{k}\mathrm{SJ}}^{(\mathrm{SJ }13/\mathrm{SJ }2k)}\). The analytical equations for the inverse kinematics problem are utilized to find: (i) necessary stroke of the actuated translational joints (ATJs) and (ii) workspace, which shows the accessible top-plate configuration relative to the base plate.

4 Velocities of the moving frames

In this section velocities of the moving coordinate frames are computed. The input velocities of the base plate of the platform are measured at each time. Therefore, it is useful to express the loop closure constraints in velocities. In addition, for the computation of kinetic energy in the part II-paper, translational and angular velocities will be computed at each center of mass of constituent bodies. The kinematically admissible velocities are used to update the configuration at each time by integration since the loop closure constrains are holonomic as shown in Eqs. (20b) and (20c).

4.1 Velocities of the moving frames along path (i)

4.1.1 Body-(0) frame velocity: ( \(\dot{\user2{e}}^{\left( 0 \right)} \left( {\varvec{t}} \right)\) \(\dot{\user2{r}}_{{\varvec{C}}}^{\left( 0 \right)} \left( {\varvec{t}} \right)\) )

The velocity of the origin of body-(0) frame, \({\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right)\), is obtained by taking the time derivative of Eq. (1a) expressing time differentiation with superposed dots:

$$ {\dot{\mathbf{r}}}_{C}^{\left( 0 \right)} \left( t \right) = {\mathbf{e}}^{I} \dot{x}_{C}^{\left( 0 \right)} \left( t \right), $$
(21)

in which \({\mathbf{e}}^{I}\) is independent of time.

The attitude of body-(0) frame changes with time. Its velocity is obtained by taking the time derivative of Eq. (2a) and expressing the result by its own basis, \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\), using Eq. (2d):

$$ {\dot{\mathbf{e}}}^{\left( 0 \right)} \left( t \right) = {\mathbf{e}}^{I} \dot{R}^{\left( 0 \right)} \left( t \right) = {\mathbf{e}}^{\left( 0 \right)} \left( t \right){\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}}, $$
(22a)

where \({\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}}\) is referred to as the skew symmetric angular velocity matrix [7b, 7c]:

$${\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}} \equiv \left( {R^{\left( 0 \right)} \left( t \right)} \right)^{T} \dot{R}^{\left( 0 \right)} \left( t \right) = \left[ {\begin{array}{*{20}c} 0 & { - \omega_{3}^{\left( 0 \right)} \left( t \right)} & {\omega_{2}^{\left( 0 \right)} \left( t \right)} \\ {\omega_{3}^{\left( 0 \right)} \left( t \right)} & 0 & { - \omega_{1}^{\left( 0 \right)} \left( t \right)} \\ { - \omega_{2}^{\left( 0 \right)} \left( t \right)} & {\omega_{1}^{\left( 0 \right)} \left( t \right)} & 0 \\ \end{array} } \right], $$
(22b)

which is a member the Lie algebra so(3) of SO(3).

The skew-symmetry of \({\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}}\) is easily proven by taking the time derivative of \(\left( {R^{\left( 0 \right)} \left( t \right)} \right)^{T} R^{\left( 0 \right)} \left( t \right)\) = I3. In Eq. (22a), expressing \({\dot{\mathbf{e}}}^{\left( 0 \right)} \left( t \right)\) with respect to its own basis, \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\), is consistent with the definition of Lie algebra so(3): the velocity \(\dot{R}^{\left( 0 \right)} \left( t \right)\) at \(R^{\left( 0 \right)} \left( t \right)\) is left translated by \(\left( {R^{\left( 0 \right)} \left( t \right)} \right)^{ - 1} = \left( {R^{\left( 0 \right)} \left( t \right)} \right)^{T}\) to the identity I3 where the Lie algebra is defined, see for example [23].

From the elements of \({\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}}\) the angular velocity vector \({{\varvec{\upomega}}}^{\left( 0 \right)} \left( t \right)\) is defined as:

$$ {{\varvec{\upomega}}}^{\left( 0 \right)} \left( t \right) = {\mathbf{e}}^{\left( 0 \right)} \left( t \right)\omega^{\left( 0 \right)} \left( t \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}_{1}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{e}}_{2}^{\left( 0 \right)} \left( t \right)} & {{\mathbf{e}}_{3}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)\left( {\begin{array}{*{20}c} {\omega_{1}^{\left( 0 \right)} \left( t \right)} \\ {\omega_{2}^{\left( 0 \right)} \left( t \right)} \\ {\omega_{3}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right). $$
(23)

For the computation of kinetic energy in the part II-paper, it is convenient to express the velocity of body-(0) frame as:

$$ \left( {\begin{array}{*{20}c} {{\dot{\mathbf{e}}}^{\left( 0 \right)} \left( t \right)} & {{\dot{\mathbf{r}}}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{\left( 0 \right)} \left( t \right){\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}}} & {{\mathbf{e}}^{I} \dot{x}_{C}^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right) $$
(24)

since the rotational kinetic energy is expressed by \(\omega^{\left( 0 \right)} \left( t \right)\) and mass moment of inertia with respect to \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\), while the translational kinetic energy is expressed by \(\dot{x}_{C}^{\left( 0 \right)} \left( t \right)\) with \({\mathbf{e}}^{I}\) [20, 21].

The translational velocity \(\dot{x}_{C}^{\left( 0 \right)} \left( t \right)\) is used to update \(x_{C}^{\left( 0 \right)} \left( t \right)\) using available integration schemes for vectors. However, the updating of rotation matrix \(R^{\left( 0 \right)} \left( t \right)\), using given \({\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}}\) in Eq. (22b) at each time increment, requires an appropriate integration algorithm, such as Rodrigues’ rotation formula [22], which assures that the updated rotation matrix remains in SO(3) [20, 28].

4.1.2 Body-(13) frame velocity: ( \({\dot{\mathbf{e}}}^{{\left( {13} \right)}} \left( {\mathbf{t}} \right)\) \({\dot{\mathbf{r}}}_{{\mathbf{C}}}^{{\left( {13} \right)}} \left( {\mathbf{t}} \right)\) )

The time derivative of Eq. (4a) expanded using Eq. (4b) yields the skew-symmetric angular-velocity matrix and the translational velocity at the center of mass of body-(13):

$$ \left( {\begin{array}{*{20}c} {{\dot{\mathbf{e}}}^{{\left( {13} \right)}} \left( t \right)} & {{\dot{\mathbf{r}}}_{C}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {13} \right)}} \left( t \right) {\mathop {\omega^{{\left( {13} \right)}} \left( t \right)}\limits^{\longleftrightarrow}}} & {{\mathbf{e}}^{I} \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right) $$
(25)

To familiarize readers with the computations, the steps for taking time derivative of the first column of Eq. (7a): \({\mathbf{e}}^{{\left( {13} \right)}} \left( t \right) = {\mathbf{e}}^{\left( 0 \right)} \left( t \right)R^{{\left( {13/0} \right)}} \left( t \right)\) are shown:

$$ \begin{aligned} {\dot{\mathbf{e}}}^{{\left( {13} \right)}} \left( t \right) & = {\dot{\mathbf{e}}}^{\left( 0 \right)} \left( t \right)R^{{\left( {13/0} \right)}} \left( t \right) + {\mathbf{e}}^{\left( 0 \right)} \left( t \right) \dot{R}^{{\left( {13/0} \right)}} \left( t \right) \\ & = {\mathbf{e}}^{\left( 0 \right)} \left( t \right)\left( {\mathop{\omega^{\left( 0 \right)} \left( t \right)}^{\longleftrightarrow}}{R^{(13/0)} \left( t \right)}+\dot{R}^{{\left( {13/0} \right)\left(t\right)}} \left( t \right) \right) \\ & = {\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)\left( {R^{(13/0)} \left( t \right)} \right)^{T} \left({\mathop{\omega^{\left( 0 \right)} \left( t \right)}^{\longleftrightarrow}}{R^{(13/0)} \left( t \right)}+\dot{R}^{{\left( {13/0} \right)\left(t\right)}} \left( t \right) \right) \\ &= {\mathbf{e}}^{{\left( {13} \right)}} \left( t \right)\left\{ {{\mathop{\left( {R^{(13/0)} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}} + {\mathop{\omega^{(13/0)} \left( t \right)}^{\longleftrightarrow}}} \right\}. \\ \end{aligned} $$
(26a)

In the last right-hand side of Eq. (26a) in a pair of braces, the following formula is used to obtain the first term:

$$ \left( {R\left( t \right)} \right)^{T} {\mathop {\omega \left( t \right)}^{\longleftrightarrow}}R\left( t \right) = {\mathop {\left( {R\left( t \right)} \right)^{T} \omega \left( t \right)}\limits^{\longleftrightarrow}}, $$
(26b)

for \(R\left( t \right) = R^{(13/0)} \left( t \right)\) and \(\omega \left( t \right) = \omega^{\left( 0 \right)} \left( t \right)\), whose proof, presented in [20], is reproduced in Appendix B.

In the pair of braces the second term defines the relative skew-symmetric angular-velocity matrix:

$$ {\mathop {\omega^{{\left( {13/0} \right)}} \left( t \right)}\limits^{\longleftrightarrow}} = \left( {R^{{\left( {13/0} \right)}} \left( t \right)} \right)^{T} \dot{R}^{{\left( {13/0} \right)}} \left( t \right). $$
(26c)

In vector form the first column of Eqs. (25) and (26a) are written as:

$$ \omega^{{\left( {13} \right)}} \left( t \right) = \left( {R^{{\left( {13/0} \right)}} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \omega^{{\left( {13/0} \right)}} \left( t \right). $$
(27)

The time derivative of the second column of Eq. (4a): \({\mathbf{r}}_{C}^{{\left( {13} \right)}} \left( t \right) = {\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right) + {\mathbf{e}}^{\left( 0 \right)} \left( t \right)R^{{\left( {13/0} \right)}} \left( t \right)\) is computed as:

$$ \begin{aligned} \dot{r}_{C}^{{\left( {13} \right)}} \left( t \right) & = \dot{r}_{C}^{\left( 0 \right)} \left( t \right) + \dot{e}^{\left( 0 \right)} \left( t \right)s_{C}^{{\left( {13/0} \right)}} \left( t \right) + e^{\left( 0 \right)} \left( t \right)\dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right) \\ & = e^{I} \left\{ {\dot{x}_{C}^{\left( 0 \right)} \left( t \right) + R^{\left( 0 \right)} \left( t \right)\left( {\overleftrightarrow {\omega^{\left( 0 \right)} \left( t \right)} s_{C}^{{\left( {13/0} \right)}} \left( t \right) + \dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right)} \right)} \right\} \\ & = e^{I} \left\{ {\dot{x}_{C}^{\left( 0 \right)} \left( t \right) + R^{\left( 0 \right)} \left( t \right)\left( { - \overleftrightarrow {s_{C}^{{\left( {13/0} \right)}} \left( t \right)}\omega^{\left( 0 \right)} \left( t \right) + \dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right)} \right)} \right\}, \\ \end{aligned} $$
(28a)

where on the right-hand side in a pair of braces, the first term is obtained by using the formula:

$$ {\mathop{\omega^{\left( 0 \right)} \left( t \right)}\limits^{\longleftrightarrow}} s_{C}^{{\left( {13/0} \right)}} \left( t \right) = - \overleftrightarrow {s_{C}^{{\left( {13/0} \right)}} \left( t \right)}\omega^{\left( 0 \right)} \left( t \right), $$
(28b)

which corresponds to the vector cross product: \({\varvec{\omega}}^{\left( 0 \right)} \left( t \right) \times {\mathbf{s}}_{C}^{(13/0)} \left( t \right) = - {\mathbf{s}}_{C}^{(13/0)} \left( t \right) \times {\varvec{\omega}}^{\left( 0 \right)} \left( t \right)\) (observing that both vectors are defined with respect to the body-(0) vector basis, \({\mathbf{e}}^{\left( 0 \right)} \left( t \right)\)).

Equation (28a) yields the translational velocity of C(13) with respect to \({\mathbf{e}}^{I}\):

$$ \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right) = \dot{x}_{C}^{\left( 0 \right)} \left( t \right) + R^{\left( 0 \right)} \left( t \right)\left( { - \overleftrightarrow {s_{C}^{{\left( {13/0} \right)}} \left( t \right)}\omega^{\left( 0 \right)} \left( t \right) + \dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right)} \right). $$
(29)

In Eqs. (27) and (29), the velocities of the top-plate frame are expressed in terms of the excitation velocities, \(\omega^{\left( 0 \right)} \left( t \right)\) and \(\dot{x}_{C}^{\left( 0 \right)} \left( t \right)\), of the base plate and the relative velocities, \(\omega^{{\left( {13/0} \right)}} \left( t \right)\) and \(\dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right)\) of the top plate.

Next frame is the terminal frame of path (i).

4.1.3 SJ-(k) Socket frame velocities at Tk on body-(13): (\(\dot{\user2{e}}_{{{\varvec{T}}_{{\varvec{k}}} }}^{{\left( {\user2{SJ }13} \right)}} \left( {\varvec{t}} \right)\) \(\dot{\user2{r}}_{{{\varvec{T}}_{{\varvec{k}}} }} \left( {\varvec{t}} \right)\))path(i)

To compute the velocity of SJ-(k) socket frame at Tk on body-(13):

$$ \left( {\begin{array}{*{20}c} {\dot{e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} & {\dot{\mathbf{r}}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right)_{{{\text{path}}\left( {\text{i}} \right)}} = \left( {\begin{array}{*{20}c} {{\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right) \overleftrightarrow {\omega_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)}} & {{\bf e}^{I} \dot{x}_{{T_{k} }}^{{}} \left( t \right)} \\ \end{array} } \right)_{{{\text{path}}\left( i \right)}} , $$
(30)

the time derivative of Eq. (6a) is computed to utilize the body-(13) frame velocities just computed in Eqs. (9b) and (10a). The time derivative of the first column of Eq. (6a) is:

$$ \begin{aligned} \dot{\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right) & = {\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)\left( {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} \overleftrightarrow {\omega^{{\left( {13} \right)}} \left( t \right)} R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right) \\ & = {\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)\overleftrightarrow {\left( {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} \omega^{{\left( {13} \right)}} \left( t \right)}, \\ \end{aligned} $$
(31a)

using the formula in Eq. (69).

In vector form, the first column of Eqs. (75) and (76) gives

$$ \omega_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right) = \left( {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} \omega^{{\left( {13} \right)}} \left( t \right). $$
(31b)

Substituting Eq. (27) into Eq. (31b), one obtains

$$ \left( {\omega_{{T_{k} }}^{{\left( {{\text{SJ }}13} \right)}} \left( t \right)} \right)_{path\left( i \right)} = \left( {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} \left\{ {\left( {R^{{\left( {13/0} \right)}} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \omega^{{\left( {13/0} \right)}} \left( t \right)} \right\}. $$
(32)

The time derivative of the second column of Eq. (6a) is computed as:

$$ \begin{aligned} \dot{r}_{{T_{k} }} \left( t \right) & = {\bf e}^{I} \dot{x}_{{T_{k} }}^{{}} \left( t \right) = {\bf e}^{{\left( {13} \right)}} \left( t \right)\overleftrightarrow {\omega^{{\left( {13} \right)}} \left( t \right)} \hat{s}_{{T_{k} }}^{{\left( {13} \right)}} + {\bf e}^{I} \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right) \\ & = - {\bf e}^{{\left( {13} \right)}} \left( t \right)\overleftrightarrow {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} } \omega^{{\left( {13} \right)}} \left( t \right) + {\bf e}^{I} \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right) \\ & = {\bf e}^{I} \left( { - R^{{\left( {13} \right)}} \left( t \right)\overleftrightarrow {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} } \omega^{{\left( {13} \right)}} \left( t \right) + \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right)} \right). \\ \end{aligned} $$
(33a)

Using \(R^{{\left( {13} \right)}} \left( t \right) = R^{\left( 0 \right)} \left( t \right)R^{(13/0)}\), Eq. (33a) yields in components:

$$ \dot{x}_{{T_{k} }}^{{}} \left( t \right) = \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right) - R^{\left( 0 \right)} \left( t \right)R^{(13/0)} \left( t \right)\overleftrightarrow {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} } \omega^{{\left( {13} \right)}} \left( t \right). $$
(33b)

The substitution of Eqs. (27) and (29) into Eq. (33b) gives the velocity at \(T_{k}\) of SJ-(k) along path (i)

$$ \begin{aligned} \left( {\dot{x}_{{T_{k} }}^{{}} \left( t \right)} \right)_{{{\text{path}}\left( i \right)}} & = \dot{x}_{C}^{\left( 0 \right)} \left( t \right) - R^{\left( 0 \right)} \left( t \right)\overleftrightarrow {\left( {s_{C}^{{\left( {13/0} \right)}} \left( t \right) + R^{{\left( {13/0} \right)}} \left( t \right)\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} } \right)}\omega^{\left( 0 \right)} \left( t \right) \\ & + R^{\left( 0 \right)} \left( t \right)\left( { - R^{{\left( {13/0} \right)}} \left( t \right)\overleftrightarrow {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} }\omega^{{\left( {13/0} \right)}} \left( t \right) + \dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right)} \right) \\ \end{aligned} $$
(34)

The velocity of SJ-(k) socket frame at \(T_{k}\) on body-(13) is now expressed by Eqs. (30), (33b) and (34).

4.1.4 Body-(14) frame velocity: (\(\dot{\user2{e}}^{{\left( {14} \right)}} \left( {\varvec{t}} \right)\) \(\dot{\user2{r}}_{{\varvec{C}}}^{{\left( {14} \right)}} \left( {\varvec{t}} \right)\))

The velocities of body-(14) frame is computed by taking the time derivative of Eq. (8a):

$$ \left( {\begin{array}{*{20}c} {{\dot{\mathbf{e}}}^{{\left( {14} \right)}} \left( t \right)} & {{\dot{\mathbf{r}}}_{C}^{{\left( {14} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\mathbf{e}}^{{\left( {14} \right)}} \left( t \right)\overleftrightarrow {\omega^{{\left( {14} \right)}} \left( t \right)}} & {{\mathbf{e}}^{I} \dot{x}_{C}^{{\left( {14} \right)}} \left( t \right)} \\ \end{array} } \right) $$
(35a)

The angular velocities and the translational velocities are easily obtained as:

$$ \omega^{{\left( {14} \right)}} \left( t \right) = \omega^{{\left( {13} \right)}} \left( t \right), $$
(35b)
$$ \dot{x}_{C}^{{\left( {14} \right)}} \left( t \right) = \dot{x}_{C}^{{\left( {13} \right)}} \left( t \right) - R^{{\left( {13} \right)}} \left( t \right)\overleftrightarrow {e_{3} \hat{h}^{{\left( {14/13} \right)}} }\omega^{{\left( {13} \right)}} \left( t \right). $$
(35c)

Equations (35b) and (35c) are typical recursive equations along the graph tree and further expressed using Eqs. (27) and (29) as:

$$ \omega^{{\left( {14} \right)}} \left( t \right) = \left( {R^{{\left( {13/0} \right)}} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \omega^{{\left( {13/0} \right)}} \left( t \right), $$
(36a)
$$\begin{array}{l} \dot x_C^{\left( {14} \right)}\left( t \right) = \dot x_C^{\left( 0 \right)}\left( t \right) - {R^{\left( 0 \right)}}\left( t \right) {\overleftrightarrow {\left( {s_C^{\left( {13/0} \right)}\left( t \right) + {R^{\left( {13/0} \right)}}\left( t \right){e_3}{{\hat h}^{\left( {14/13} \right)}}} \right)}}{\omega ^{\left( 0 \right)}}\left( t \right)\\ + {R^{\left( 0 \right)}}\left( t \right)\left( { - {R^{\left( {13/0} \right)}}\left( t \right) {\overleftrightarrow {{e_3}{{\hat h}^{\left( {14/13} \right)}}}}{\omega ^{\left( {13/0} \right)}}\left( t \right) + \dot s_C^{\left( {13/0} \right)}\left( t \right)} \right) \end{array}$$
(36b)

4.2 Velocities of the moving frames along path (ii)

Along path (ii) shown in Fig. 2b the velocities of body-(2k-1) frame of the lower leg and body-(2k) frame of the upper leg at their origins as well as those of SJ-(k) socket frame at \(T_{k}\) on body-(13) are computed.

4.2.1 Body-(2k-1) frame velocity: (\(\dot{\user2{e}}^{{\left( {2{\varvec{k}} - 1} \right)}} \left( {\varvec{t}} \right)\) \(\dot{\user2{r}}_{{\varvec{C}}}^{{\left( {2{\varvec{k}} - 1} \right)}} \left( {\varvec{t}} \right)\))

The frame velocities of the lower leg, body-(2k-1):

$$ \left( {\begin{array}{*{20}c} {\dot{e}^{{\left( {2k - 1} \right)}} \left( t \right)} & {\dot{r}_{C}^{{\left( {2k - 1} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\bf e}^{{\left( {2k - 1} \right)}} \left( t \right)\overleftrightarrow {\omega^{{\left( {2k - 1} \right)}} \left( t \right)}} & {{\bf e}^{I} \dot{x}_{C}^{{\left( {2k - 1} \right)}} \left( t \right)} \\ \end{array} } \right), $$
(37)

are computed by taking the time derivatives of each column of Eq. (14a) using Eqs. (14b) and (14c).

The first column of Eq. (14a) is

$$ {\mathbf{e}}^{{\left( {2k - 1} \right)}} \left( t \right) = {\mathbf{e}}^{\left( 0 \right)} \left( t \right)R^{(2k - 1/0)} \left( t \right), $$
(38a)

and the second column:

$$ {\bf r}_{C}^{{\left( {2k - 1} \right)}} \left( t \right) = {\bf r}_{C}^{\left( 0 \right)} \left( t \right) + {\bf e}^{\left( 0 \right)} \left( t \right)\left( {R^{(2k - 1/0)} \left( t \right)\hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} + \hat{s}_{{B_{k} }}^{\left( 0 \right)} } \right). $$
(38b)

where \(R^{(2k - 1/0)} \left( t \right)\) was defined in Eq. (14c).

The time derivative of Eq. (38a) yields using Eqs. (26a) and (26b):

$$ \overleftrightarrow {\omega^{{\left( {2k - 1} \right)}} \left( t \right)} = \overleftrightarrow {\left( {R^{(2k - 1/0)} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right)} + \overleftrightarrow {\omega^{(2k - 1/0)} \left( t \right)}, $$
(39a)

where the relative skew-symmetric angular velocity matrix is defined as:

$$ \overleftrightarrow {\omega^{(2k - 1/0)} \left( t \right)} = \left( {R^{(2k - 1/0)} \left( t \right)} \right)^{T} \dot{R}^{(2k - 1/0)} \left( t \right). $$
(39b)

Its actual computation using Eq. (14c) gives

$$ \overleftrightarrow {\omega^{(2k - 1/0)} \left( t \right)} = \overleftrightarrow {\left( {R_{{2 B_{k} {\text{UJ}}}} (\phi_{2}^{\left( k \right)} \left( t \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right)} + \overleftrightarrow {e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)}, $$
(39c)

incorporating

$$ \left( {R_{{1 B_{k} UJ}} (\dot{\phi }_{1}^{\left( k \right)} \left( t \right)} \right)^{T} \dot{R}_{{1 B_{k} UJ}} \left( {\dot{\phi }_{1}^{\left( k \right)} \left( t \right)} \right) = \overleftrightarrow {e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right)}, $$
(39d)
$$ \left( {R_{{2 B_{k} UJ}} (\dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right)^{T} \dot{R}_{{2 B_{k} UJ}} \left( {\dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right) = \overleftrightarrow {e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)}, $$
(39e)

in which \(e_{1} \equiv \left( {\begin{array}{*{20}c} 1 & 0 & 0 \\ \end{array} } \right)^{T}\) and \(e_{2} \equiv \left( {\begin{array}{*{20}c} 0 & 1 & 0 \\ \end{array} } \right)^{T}\).

In vector form, Eqs. (39a) and (39c) become, respectively,

$$ \omega^{{\left( {2k - 1} \right)}} \left( t \right) = \left( {R^{(2k - 1/0)} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \omega^{{\left( {2k - 1/0} \right)}} \left( t \right), $$
(40a)
$$ \omega^{{\left( {2k - 1/0} \right)}} \left( t \right) = \left( {R_{{2 B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right). $$
(40b)

The substitution of Eq. (40b) into Eq. (40a) gives in vector form:

$$ \omega^{{\left( {2k - 1} \right)}} \left( t \right) = \left( {R^{(2k - 1/0)} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \left( {R_{{2 B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right). $$
(40c)

Using Eq. (39b), the time derivative of Eq. (38b) yields

$$ \begin{aligned} \dot{\mathbf{r}}_{C}^{{\left( {2k - 1} \right)}} \left( t \right) & = \dot{\mathbf{r}}_{C}^{\left( 0 \right)} \left( t \right) + {\bf e}^{\left( 0 \right)} \left( t \right)\overleftrightarrow {\omega^{\left( 0 \right)} \left( t \right)}\left( {R^{(2k - 1/0)} \left( t \right)\hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} + \hat{s}_{{B_{k} }}^{\left( 0 \right)} } \right) \\ & + {\bf e}^{\left( 0 \right)} \left( t \right)R^{(2k - 1/0)} \left( t \right)\overleftrightarrow {\omega^{(2k - 1/0)} \left( t \right)}\hat{s}_{{C/B_{k} }}^{{\left( {{\text{UJ}} 2k - 1} \right)}} \\ \end{aligned} $$
(41a)

The velocity of C(2k−1) with \({\mathbf{e}}^{I}\) is obtained using Eqs. (2a), (22a) and (28b) as:

$$ \begin{aligned} \dot{x}_{C}^{{\left( {2k - 1} \right)}} \left( t \right) & = \dot{x}_{C}^{\left( 0 \right)} \left( t \right) - R^{\left( 0 \right)} \left( t \right) {\mathop{{ R^{(2k - 1/0)} \left( t \right)\hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} + \hat{s}_{{B_{k} }}^{\left( 0 \right)} }}\limits^{\longleftrightarrow}} \omega^{\left( 0 \right)} \left( t \right) \\ & - R^{{\left( {2k - 1} \right)}} \left( t \right){\mathop{ {\hat{s}_{{C/B_{k} }}^{{\left( {2k - 1} \right)}} }}^{\longleftrightarrow}}\omega^{(2k - 1/0)} \left( t \right) \\ \end{aligned} $$
(41b)

where

$$ R^{{\left( {2k - 1} \right)}} \left( t \right) = R^{\left( 0 \right)} \left( t \right)R^{(2k - 1/0)} \left( t \right). $$
(41c)

Equations (40c) and (41b) with Eq. (40b) express the velocity components of body-(2k-1) frame in Eq. (37).

4.2.2 Body-(2k) frame velocity: (\(\dot{\user2{e}}^{{\left( {2{\varvec{k}}} \right)}} \left( {\varvec{t}} \right)\) \(\dot{\user2{r}}_{{\varvec{C}}}^{{\left( {2{\varvec{k}}} \right)}} \left( {\varvec{t}} \right)\))

The velocities of body-(2k) frame at C(2k) are computed from Eq. (15a) as:

$$ \left( {\begin{array}{*{20}c} {\dot{e}^{{\left( {2k} \right)}} \left( t \right)} & {\dot{\mathbf{r}}_{C}^{{\left( {2k} \right)}} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} {{\bf e}^{{\left( {2k} \right)}} \left( t \right)\overleftrightarrow {\omega^{{\left( {2k} \right)}} \left( t \right)}} & {{\bf e}^{I} \dot{x}_{C}^{{\left( {2k} \right)}} \left( t \right)} \\ \end{array} } \right). $$
(42a)

The time derivative of the first column of Eq. (15a) yields in vector form:

$$ \omega^{{\left( {2k} \right)}} \left( t \right) = \left( {R_{{3 {\text{ATJ}}}} \left( {\phi_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right)} \right)} \right)^{T} \omega^{{\left( {2k - 1} \right)}} \left( t \right) + e_{3} \dot{\phi }_{3}^{{\left( {2k/2k - 1} \right)}} \left( t \right), $$
(42b)

while that of the second column yields, observing that in Eq. (15d) only \(d^{\left( k \right)} \left( t \right)\) is time dependent:

$$ \dot{x}_{C}^{{\left( {2k} \right)}} \left( t \right) = \dot{x}_{C}^{{\left( {2k - 1} \right)}} \left( t \right) + R^{{\left( {2k - 1} \right)}} \left( t \right)\left( { - \overleftrightarrow {s_{C}^{{\left( {2k/2k - 1} \right)}} \left( t \right)}\omega^{{\left( {2k - 1} \right)}} \left( t \right) + e_{3} \dot{d}^{\left( k \right)} \left( t \right)} \right). $$
(42c)

4.2.3 SJ-(k) Socket frame velocities at Tk on body-(13): (\(\dot{\user2{e}}_{{{\varvec{T}}_{{\varvec{k}}} }}^{{\left( {\user2{SJ }13} \right)}} \left( {\varvec{t}} \right)\) \(\dot{\user2{r}}_{{{\varvec{T}}_{{\varvec{k}}} }} \left( {\varvec{t}} \right)\))path(ii)

To compute the velocity of SJ-(k) socket frame at Tk on body-(13):

$$ \left( {\begin{array}{*{20}c} {\dot{e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} & {\dot{\mathbf{r}}_{{T_{k} }} \left( t \right)} \\ \end{array} } \right)_{{{\text{path}}\left( {ii} \right)}} = \left( {\begin{array}{*{20}c} {{\bf e}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right) \overleftrightarrow {\omega_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)}} & {{\bf e}^{I} \dot{x}_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} \\ \end{array} } \right)_{{{\text{path}}\left( {ii} \right)}} , $$
(43a)

the time derivatives of the columns of Eq. (18a) are computed.

The time derivative of the first column gives in vector form:

$$ \left( {\omega_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} \right)_{{{\text{path}}\left( {{\text{ii}}} \right)}} = \left( {R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} \omega_{{}}^{{\left( {2k} \right)}} \left( t \right) + \omega_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right), $$
(43b)

where

$$ \omega_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right) = \left( {R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/{\text{SJ }}2k} \right)}} \left( t \right)} \right)^{T} \dot{R}_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/{\text{SJ}} 2k} \right)}} \left( t \right). $$
(43c)

The time derivative of the second column gives

$$ \left( {\dot{x}_{{T_{k} }} \left( t \right)} \right)_{{{\text{path}} \left( {{\text{ii}}} \right)}} = \dot{x}_{C}^{{\left( {2k} \right)}} \left( t \right) - R^{{\left( {2k - 1} \right)}} \left( t \right)R_{{3 {\text{ATJ}}}} \left( {\phi_{3}^{(2k/2k - 1)} \left( t \right)} \right)\overleftrightarrow {e_{3} \hat{l}_{{{\text{SJ}}}}^{{\left( {2k} \right)}} } \omega^{{\left( {2k} \right)}} \left( t \right). $$
(43d)

To write closure equations, it is necessary to express the velocities of path (ii) in terms of \(\omega^{\left( 0 \right)} \left( t \right)\), \(\dot{\phi }_{1}^{\left( k \right)} \left( t \right)\), \(\dot{\phi }_{2}^{\left( k \right)} \left( t \right)\), and \(\omega_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ }}13/{\text{SJ }}2k} \right)}} \left( t \right)\). Thus Eq. (43b) is rewritten using Eqs. (42b) and (40c) as:

$$ \begin{aligned} \left( {\omega_{{T_{k} }}^{{\left( {SJ 13} \right)}} \left( t \right)} \right)_{{{\text{path}}\left( {{\text{ii}}} \right)}} & = \left( {R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} \left( {R_{{3 {\text{ATJ}}}} \left( {\phi_{3}^{(2k/2k - 1)} \left( t \right)} \right)} \right)^{T} \\ & \times \left\{ {\left( {R^{(2k - 1/0)} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \left( {R_{{2 B_{k} {\text{UJ}}}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right\} \\ & + \left( {R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} e_{3} \dot{\phi }_{3}^{(2k/2k - 1)} \left( t \right) + \omega_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right). \\ \end{aligned} $$
(44a)

Similarly, Eq. (43d) is rewritten using Eqs. (42b), (42c), (41c), and (40c) as:

$$ \begin{gathered} \left( {\dot{x}_{{T_{k} }} \left( t \right)} \right)_{{path \left( {ii} \right)}} = \dot{x}_{C}^{\left( 0 \right)} \left( t \right) - R^{\left( 0 \right)} \left( t \right){\mathop{{R^{(2k - 1/0)} \left( t \right)e_{3} l^{\left( k \right)} \left( t \right) + \hat{s}_{{B_{k} }}^{\left( 0 \right)} }}\limits^{\longleftrightarrow}} \omega^{\left( 0 \right)} \left( t \right) \hfill \\ - R^{{\left( {2k - 1} \right)}} \left( t \right){\mathop{ {e_{3} l^{\left( k \right)} \left( t \right)}}\limits^{\longleftrightarrow}} \left\{ {\left( {R_{{2 B_{k} {\text{UJ}}}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right\} \hfill \\ + R^{{\left( {2k - 1} \right)}} \left( t \right)e_{3} \dot{d}^{\left( k \right)} \left( t \right). \hfill \\ \end{gathered} $$
(44b)

4.3 Loop closure constrains on velocities

The loop closure constraints on velocities in Fig. 2b are:

$$ \left( {\omega_{{T_{k} }}^{{\left( {{\text{SJ}} 13} \right)}} \left( t \right)} \right)_{{{\text{path}}\left( i \right)}} = \left( {\omega_{{T_{k} }}^{{\left( {{\text{SJ}} 13} \right)}} \left( t \right)} \right)_{{{\text{path}}\left( {ii} \right)}} , $$
(45a)
$$ \left( {\dot{x}_{{T_{k} }}^{{}} \left( t \right)} \right)_{{{\text{path}}\left( i \right)}} = \left( {\dot{x}_{{T_{k} }}^{{}} \left( t \right)} \right)_{{{\text{path}}\left( {ii} \right)}} . $$
(45b)

Equation (45a) is explicitly written using Eqs. (32) and (43b) as:

$$ \begin{aligned} \left( {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} \left\{ {\left( {R^{{\left( {13/0} \right)}} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \omega^{{\left( {13/0} \right)}} \left( t \right)} \right\} \\ & = \left( {R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} \left( {R_{{3 {\text{TJ}}}} \left( {\phi_{3}^{(2k/2k - 1)} \left( t \right)} \right)} \right)^{T} \\ & \times \left\{ {\left( {R^{(2k - 1/0)} \left( t \right)} \right)^{T} \omega^{\left( 0 \right)} \left( t \right) + \left( {R_{{2 B_{k} {\text{UJ}}}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right\} \\ & + \left( {R_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} e_{3} \dot{\phi }_{3}^{(2k/2k - 1)} \left( t \right) + \omega_{{T_{k} {\text{SJ}}}}^{{\left( {{\text{SJ}} 13/SJ 2k} \right)}} \left( t \right). \\ \end{aligned} $$
(46a)

Similarly, Eq. (45b) is written explicitly using Eqs. (34) and (43d). After a slight simplification, it becomes

$$ \begin{gathered} - \overleftrightarrow {\Delta s_{{{\text{CL}}}}^{\left( k \right)} \left( t \right)} \omega^{\left( 0 \right)} \left( t \right) - R^{{\left( {13/0} \right)}} \left( t \right)\overleftrightarrow {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} }\omega^{{\left( {13/0} \right)}} \left( t \right) + \dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right) \hfill \\ = R^{{\left( {2k - 1/0} \right)}} \left( t \right)\left[ { - \overleftrightarrow {e_{3} l^{\left( k \right)} \left( t \right)} \left\{ {\left( {R_{{2 B_{k} {\text{UJ}}}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right\} + e_{3} \dot{d}^{\left( k \right)} \left( t \right)} \right]. \hfill \\ \end{gathered} $$
(46b)

where

$$ \Delta s_{{{\text{CL}}}}^{\left( k \right)} \left( t \right) \equiv \left( {s_{C}^{(13/0)} \left( t \right) + R^{{\left( {13/0} \right)}} \left( t \right)\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} } \right) - \left( {\hat{s}_{{B_{k} }}^{\left( 0 \right)} + R^{(2k - 1/0)} \left( t \right)e_{3} l^{\left( k \right)} \left( t \right)} \right). $$
(46c)

To simplify the subsequent presentation, the approximation \(\phi_{3}^{(2k/2k - 1)} \left( 0 \right) = 0\) is incorporated. \(\phi_{3}^{(2k/2k - 1)} \left( t \right)\), defined in Eqs. (15b) and (15c), expresses the axial rotation of the upper leg, body-(2k), relative to the lower leg, body-(2k-1) with initial value of: \(\phi_{3}^{(2k/2k - 1)} \left( t \right) = 0\). In the part II-paper, it will be shown that \(\phi_{3}^{(2k/2k - 1)} \left( t \right)\) remains zero since its axial moment of inertia is negligible and there is no external torque but some viscous damping. (For an example of the modeling of rotation of a rigid body subjected to perturbation and restoring torques, see [29].) With this hindsight \(\dot{\phi }_{3}^{(2k/2k - 1)} \left( t \right)\) is neglected in Eq. (46a). The resulting equation gives the angular velocity at the spherical joint, SJ-(k), as:

$$ \begin{gathered} \omega_{{T_{k} SJ}}^{{\left( {SJ 13/SJ 2k} \right)}} \left( t \right) = \left\{ {\left( {R^{{\left( {13/0} \right)}} \left( t \right) R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} - \left( {R^{(2k - 1/0)} \left( t \right) R_{{T_{k} SJ}}^{{\left( {SJ 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} } \right\}\omega^{\left( 0 \right)} \left( t \right) \hfill \\ + \left( {R_{{3 T_{k} }} \left( {\hat{\theta }_{k}^{{\left( {13} \right)}} } \right)} \right)^{T} \omega^{{\left( {13/0} \right)}} \left( t \right) - \left( {R_{{T_{k} SJ}}^{{\left( {SJ 13/SJ 2k} \right)}} \left( t \right)} \right)^{T} \left\{ {\left( {R_{{2 B_{k} UJ}} \left( {\phi_{2}^{\left( k \right)} \left( t \right)} \right)} \right)^{T} e_{1} \dot{\phi }_{1}^{\left( k \right)} \left( t \right) + e_{2} \dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \right\}. \hfill \\ \end{gathered} $$
(47)

4.4 Equations for inverse instantaneous kinematics

For kinematics-based control, Eq. (46a) deserves careful interpretations. At each time step for measured input disturbance: \(\omega^{\left( 0 \right)} \left( t \right)\) and \(\dot{x}^{\left( 0 \right)} \left( t \right)\) of the base plate, to counter-measure the motion of the base plate, the desired values of the top-plate velocities: \(\omega^{{\left( {13/0} \right)}} \left( t \right)\) and \(\dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right)\) are computed. This task is accomplished by controlling the actuated translational joint velocities:\( \dot{d}^{\left( k \right)} \left( t \right)\) for inverse kinematics control (IKC) for \(k = 1, 2, \cdots , 6\). The actuation of the leg also induces the universal joint motion: \(\dot{\phi }_{1}^{\left( k \right)} \left( t \right)\), and \(\dot{\phi }_{2}^{\left( k \right)} \left( t \right)\).

For the instantaneous inverse kinematics control [24], Eq. (46b) is solved analytically for those velocities, stored in a 3 × 1 column matrix, \(\dot{q}_{L}^{\left( k \right)} \left( t \right)\):

$$ \dot{q}_{L}^{\left( k \right)} \left( t \right) \equiv \left( {\begin{array}{*{20}c} {\dot{\phi }_{1}^{\left( k \right)} \left( t \right)} \\ {\dot{\phi }_{2}^{\left( k \right)} \left( t \right)} \\ {\dot{d}^{\left( k \right)} \left( t \right)} \\ \end{array} } \right) = \left( {\begin{array}{*{20}c} { - w_{2}^{vel} \left( t \right)/(l^{\left( k \right)} \left( t \right)\cos \phi_{2}^{\left( k \right)} \left( t \right))} \\ {w_{1}^{vel} \left( t \right)/l^{\left( k \right)} \left( t \right)} \\ {w_{3}^{vel} \left( t \right)} \\ \end{array} } \right), $$
(48a)

where the left-hand side of Eq. (46b) is expressed by \(w^{vel} \left( t \right)\) as:

$$ w^{vel} \left( t \right) \equiv \left( {R^{{\left( {2k - 1/0} \right)}} \left( t \right)} \right)^{T} \left( { - R^{{\left( {13/0} \right)}} \left( t \right)\overleftrightarrow {\hat{s}_{{T_{k} }}^{{\left( {13} \right)}} }\omega^{{\left( {13/0} \right)}} \left( t \right) + \dot{s}_{C}^{{\left( {13/0} \right)}} \left( t \right) - \overleftrightarrow {\Delta s_{CL}^{\left( k \right)} \left( t \right)} \omega^{\left( 0 \right)} \left( t \right)} \right), $$
(48b)

and

$$ w^{vel} \left( t \right) \equiv \left( {\begin{array}{*{20}c} {w_{1}^{vel} \left( t \right)} \\ {w_{2}^{vel} \left( t \right)} \\ {w_{3}^{vel} \left( t \right)} \\ \end{array} } \right). $$
(48c)

In Eq. (38a), one notes that \(l^{\left( k \right)} \left( t \right) \ne 0\) and \(\phi_{2}^{\left( k \right)} \left( t \right) \ne \pm \pi /2\) due to the leg constraints, discussed in Appendix A.

5 Experimental results

Experiments were performed on a scale model Stewart platform mounted on a motion generator to assess an inverse kinematics controller (IKC). The details of the apparatus are explained in Fig. 4 of the part II-paper, in which the performance of IKC is compared with that of an inverse-dynamics controller (IDC). Figure 8 illustrates a flowchart of IKC utilizing the inverse kinematics to feedforward the desired actuator displacements and proportional-integral-derivative (PID) for feedback control.

Fig. 8
figure 8

Flowchart of inverse kinematics control of a base-moving Stewart platform with PID feedback

In Fig. 8, the desired relative top-plate translational vector \(s_{C*d*}^{{\left( {13/0} \right)}} \left( t \right)\) and rotation matrix \(R_{*d*}^{{\left( {13/0} \right)}} \left( t \right)\), and the corresponding velocities \(\left( {\dot{q}_{TP*d*} \left( t \right)} \right) \equiv \left( {\begin{array}{*{20}c} {\dot{s}_{C*d*}^{{\left( {13/0} \right)}} \left( t \right)} \quad \, {\omega_{*d*}^{{\left( {13/0} \right)}} \left( t \right)} \\ \end{array} } \right)^{T}\) with respect to the base-plate frame are computed from the desired top-plate translational vector \(x_{C*d*}^{{\left( {13} \right)}} \left( t \right)\) and rotation matrix \(R_{*d*}^{{\left( {13} \right)}} \left( t \right)\), and the corresponding velocities \(\left( {\dot{X}_{*d*}^{{\left( {13} \right)}} \left( t \right)} \right) \equiv \left( {\begin{array}{*{20}c} {\dot{x}_{C*d*}^{{\left( {13} \right)}} \left( t \right)} \quad \, {\omega_{*d*}^{{\left( {13} \right)}} \left( t \right)} \\ \end{array} } \right)^{T}\) for measured input base-plate velocities \(\left( {\dot{X}^{\left( 0 \right)} \left( t \right)} \right) \equiv \left( {\begin{array}{*{20}c} {\dot{x}_{C}^{\left( 0 \right)} \left( t \right)} \quad \, {\omega^{\left( 0 \right)} \left( t \right)} \\ \end{array} } \right)^{T}\) and the corresponding translational vector \(x_{C}^{\left( 0 \right)} \left( t \right)\) and rotation matrix \(R^{\left( 0 \right)} \left( t \right)\). From the inverse kinematics computation, desired velocities \(\dot{d}_{*d*}^{\left( k \right)} \left( t \right)\) and displacements \(d_{*d*}^{\left( k \right)} \left( t \right)\) of actuated translational joint are derived. Then, by employing a PID controller for each actuator, a control input: \(u_{ATJ}^{\left( k \right)} \left( t \right)\) is obtained from the errors, defined as the difference between the measured and the desired linear actuator velocities and extensions as:

$$ u_{ATJ}^{\left( k \right)} \left( t \right) = K_{p}^{\left( k \right)} e^{\left( k \right)} \left( t \right) + K_{i}^{\left( k \right)} \smallint e^{\left( k \right)} \left( t \right)dt + K_{d}^{\left( k \right)} \dot{e}^{\left( k \right)} \left( t \right), $$
(49a)

where

$$ e^{\left( k \right)} \left( t \right) \equiv d^{\left( k \right)} \left( t \right) - d_{*d*}^{\left( k \right)} \left( t \right) $$
(49b)
$$ \dot{e}^{\left( k \right)} \left( t \right) \equiv \dot{d}^{\left( k \right)} \left( t \right) - \dot{d}_{*d*}^{\left( k \right)} \left( t \right) $$
(49c)

and where \(K_{p}^{\left( k \right)}\), \(K_{i}^{\left( k \right)}\), and \(K_{d}^{\left( k \right)}\) are proportional, integral and derivative gains.

As a test case, a motion generator was used to move the bottom plate at a relatively low frequency to simulate the movement of a ship due to sea waves. Since the peak of the sea wave spectrum is around 0.1 Hz [30], three linear actuators changed their lengths at 0.02sin(2\(\pi f_{1} t\)) m, 0.02sin(\(2\pi f_{2} t\)) m, and 0.02sin(\(2{\pi} f_{3} t\)) m, respectively. These frequencies were \(f_{1}\) = 0.15 Hz, \(f_{2}\) = 0.1 Hz, and \(f_{3}\) = 0.05 Hz.

The control objective is to keep the top plate horizontal and stationary, against the motion of the base plate. The desired top-plate states are therefore set as: \(\dot{X}_{*d*}^{{\left( {13} \right)}} \left( t \right) = 0_{6 \times 1}\), \(x_{C*d*}^{{\left( {13} \right)}} \left( t \right) = e_{3} \hat{h}^{\left( 0 \right)}\), and \(R_{*d*}^{{\left( {13} \right)}} \left( t \right) = I_{3}\). For the PID controller, the gains are chosen by trial-and-error method. A time step of 0.01 s was selected as the minimum time-increment for the experimental system. The sequence of computations and signal transmission/reception was coded using MATLAB with Arduino microcontrollers.

The measured top-plate translational displacements \(x_{C}^{{\left( {13} \right)}} \left( t \right)\) and its rotation matrix are shown in Fig. 9a–f, where the rotation matrix is expressed by using Tait–Bryan angles \(\psi_{i}^{TB} \left( t \right), i = 1, 2, 3\) as: \(R^{{\left( {13} \right)}} \left( t \right) = R_{1}^{{\left( {13} \right)}} \left( {\psi_{1}^{TB} \left( t \right)} \right)R_{2}^{{\left( {13} \right)}} \left( {\psi_{2}^{TB} \left( t \right)} \right)R_{3}^{{\left( {13} \right)}} \left( {\psi_{3}^{TB} \left( t \right)} \right)\). The desired top-plate attitude: \(R_{*d*}^{{\left( {13} \right)}} = I_{3}\) is expressed by zero Tait–Bryan angles: \(\psi_{1*d*}^{TB} \left( t \right) = \psi_{2*d*}^{TB} \left( t \right) = \psi_{3*d*}^{TB} \left( t \right) = 0\). This angular representation of a rotation matrix was explained in Appendix A to plot admissible workspace. For \(R^{{\left( {13} \right)}} \left( t \right)\) the corresponding Tait–Bryan angles \(\psi_{i}^{TB} \left( t \right), i = 1, 2, 3\) are computed by using Eq. (A14) applied to \(R^{{\left( {13} \right)}} \left( t \right)\) instead of \(R^{{\left( {13/0} \right)}}\)(t). (These angles are not used in the inverse kinematics computations for control but merely adopted to show \(R_{{}}^{{\left( {13} \right)}} \left( t \right)\) using three angular coordinates.)

Fig. 9
figure 9

Experimental results of a displacement in the \(x_{1}\)-direction, b displacement in the \(x_{2}\)-direction, c displacement in the \(x_{3}\)-direction, d Tait–Bryan angle \(\psi_{1}^{TB} \left( t \right)\), e Tait–Bryan angle \(\psi_{2}^{TB} \left( t \right)\), and f Tait–Bryan angle \(\psi_{3}^{TB} \left( t \right)\) of the base plate and controlled top plate

To quantitatively assess the controller performance, in Table 1, root mean square error (RMSE) and mean absolute error (MAE) of the translational displacements and Tait–Bryan angles of the top plate are shown as well as the rates of compensation against the motion of the base plate. It is observed from Figs. 9 and Table 1 that the base plate motion is successfully compensated in each component. In the part II-paper the results of IKC is compared with those of inverse dynamics control (IDC).

Table 1 Errors and compensation rates of the top plate

6 Concluding remarks

In this paper for a base-moving Stewart platform, utilizing body- and joint-attached, orthonormal coordinate frames, the configuration space is mathematically defined employing 4 × 4 frame connection matrices of the special Euclidian group, SE(3), which combines both SO(3) and \({\mathbb{R}}^{3}\). Configurational loop closure constraints are presented for a representative closed loop and solved analytically for both inverse and forward kinematics (see Appendix A). Next, velocities of each moving coordinate frames are computed. In the computations, to be consistent with the Lie algebra so(3) of SO(3), skew-symmetric angular velocity matrices are defined first from the flow of rotation matrices with time, from which angular velocity vectors in \({\mathbb{R}}^{3}\) are defined. Using body-attached moving frames whose connections are rigorously expressed by frame connection matrices, readers can systematically and unambiguously compute frame velocities (since vector bases of moving frames are explicitly shown).

Finally, to evaluate the performance of an inverse kinematic controller, experimental tests are presented on a scale model of the system. Further, in Appendix A, workspace analysis is presented for preliminary design of a Stewart platform. In the part II-paper, utilizing the velocities of body-attached coordinate frames, analytical equations of motion are derived, and their control applications are presented.