The goal of this study was to develop a robot (Stewart platform) that mimics the motion of any point in or on the heart. This allows studying the effect of the heart’s myocardial contractions on cardiovascular devices in a repeatable manner under laboratory conditions. The robot features an actuated platform, where the devices to be analyzed can be mounted. As input, it requires three-dimensional motion trajectories and/or attitudes. Such datasets can originate from different modalities (e.g. magnetic resonance imaging, computer tomography, echocardiography or acceleration sensors). As illustrated in Fig. 1, each experiment will run through three distinctive steps: pre-processing, motion experiment and post-processing.
Pre-Processing
Heart contractions are complex 3-dimensional motion patterns that can be acquired with different methods such as acceleration sensors or magnetic resonance imaging (MRI) tagging. Typically, modality-dependent post-processing will be required, resulting in heart motion trajectories and attitudes of single points intramurally or on the endo- or epicardium (cf. Fig. 2). Based on heart motion data from previous MRI studies20 and inertial measurement devices,21 it was concluded that a robot should provide a workspace radius of 29 mm with maximal angular deflection of ± 19° to be able to mimic even extreme heart motions most realistically. In order to meet the requirements in terms of working space, degrees of freedom and dynamics, a parallel robotic structure was chosen, commonly referred to as Stewart platform. Its end effector platform is driven by six motors (cf. Fig. 3), each being linked to the platform by articulated legs. In order to move the platform along a predefined heart motion trajectory \(o\left( t \right)\) and attitude \(\phi \left( t \right)\), the motor angles use the following inverse kinematic process:
-
1.
Any motion trajectory o(t) and attitude ϕ(t) of a point in/on the heart can be used to define the target position and orientation of the end effector platform over time. Thus, the position of all six joints where the legs connect to the end effector can be computed.
-
2.
The joints at the end effector are ball joints, which allow the upper legs to rotate freely around this spherical joint. Therefore, the loose end of the upper leg can be found somewhere on a sphere with the radius of the upper leg length and its center at the spherical joint.
-
3.
On the other hand, the lower leg is rigidly fixed perpendicular to the motor axis and can rotate only around the axis of the motor. Consequently, the other end of the lower leg can be found on a circle with center on the motor axis.
-
4.
Since the ends of the upper and lower leg must coincide (position of the knee), the rotation angle around the motor axis can be determined by finding the intersection of the sphere with the circle (Fig. 3, S1 and S2), prescribed by the upper and lower leg, respectively.
Since this inverse kinematic process is a highly non-linear problem, it was addressed numerically. First, the position of the knee \(\mathop{p}\nolimits^{\rightharpoonup} _{k}\) is calculated:
$${\mathop{p}\limits^{\rightharpoonup}}_{k} = {\mathop{p}\limits^{\rightharpoonup}}_{o} + {\mathop{ll}\limits^{\rightharpoonup}} = p_{o} + \left( {R \cdot L_{ll} \cdot {\mathop{u}\limits^{\rightharpoonup}}_{ll} } \right), = p_{o} + \left( {axisangle2rotmat\left( {\mathop{u}\nolimits^{\rightharpoonup}_{m} ,\alpha } \right) \cdot L_{ll} \cdot {\mathop{u}\limits^{\rightharpoonup}}_{ll} } \right)$$
\({\mathop{p}\limits^{\rightharpoonup}}_{o}\) stands for the position of the motor axis origin and \(\mathop{ll}\limits^{\rightharpoonup}\) for the lower leg vector. The latter is defined by the lower leg’s length \(L_{ll}\) and unit vector \({\mathop{u}\limits^{\rightharpoonup}}_{ll}\). Furthermore, the motor axis rotation angle \(\alpha\) is included either as rotation matrix \(R\) or in the form of an axis-angle representation with \({\mathop{u}\limits^{\rightharpoonup}}_{m}\) and \(\alpha\) as axis and angle, respectively. In a second step, we define the cost function for the numerical solver to minimize:
$$dist\left( \alpha \right) = \Vert{\mathop{p}\limits^{\rightharpoonup}}_{eff} - {\mathop{p}\limits^{\rightharpoonup}}_{k}\Vert - \Vert{\mathop{ul}\limits^{\rightharpoonup}}\Vert = \Vert{\mathop{p}\limits^{\rightharpoonup}}_{eff} - p_{o} + ( {axisangle2rotmat( {{\mathop{u}\limits^{\rightharpoonup}}_{m} ,\alpha } ) \cdot L_{ll} \cdot {\mathop{u}\limits^{\rightharpoonup}}_{ll} } )\Vert - \Vert{\mathop{ul}\limits^{\rightharpoonup}}\Vert$$
Subtracting the position vector of the knee \({\mathop{p}\limits^{\rightharpoonup}}_{k}\) from the position of the end effector \({\mathop{p}\limits^{\rightharpoonup}}_{eff}\) will result in an approximation of the upper leg vector \(\mathop{ul}\limits^{\rightharpoonup}\) for an initial guess of the motor axis rotation angle \(\alpha\). In addition, the function subtracts the length of the upper leg such that the numerical solver can solve for \(\alpha\) that minimizes the function output (\(dist\left( \alpha \right) \to 0\)). Since the function has two solutions (S1 and S2 as indicated in Fig. 3) and only solution S1 is a valid option, it is crucial to approximate the initial value of \(\alpha\) for the minimizing function as close as possible.
The process is repeated for all six motor-leg assemblies and for all time points of a given heart motion trajectory o(t) and attitude ϕ(t). This will result in time-dependent rotation angles for each motor. These motor setpoints serve as input for the Stewart platform’s control loop.
The angular displacements of the motors were calculated based on the input trajectory by the inverse kinematic algorithm that was implemented in Matlab (Mathworks Inc., USA) (cf. Fig. 1). The kinematics of the Stewart platform was programmed in Simulink (Mathworks Inc., USA) to simulate the motion of the platform when actuated by the motors (cf. online resource 1, video of the simulated robot). This approach allows estimating whether the physical Stewart platform can reproduce the prescribed heart motion under the given practical restrictions on e.g. workspace or joint motion range.
Motion Experiment
For practical illustration, three different cardiovascular energy harvesting devices were tested with the Stewart platform using a specific heart motion (AT 1c from 21). The first two candidates were epicardial energy harvesting devices, which are optimized and non-optimized prototypes for extracting energy from heart motions 21, respectively. The third device is intended for endocardial implantation.5 Their respective voltage outputs were measured across a 1 kΩ load resistor by a NI USB-6002 data acquisition device (National Instruments Corporation, USA). The Stewart platform performed the identical heart motion trajectory on all energy harvesting devices for a duration of 60 s. In order to measure the three different energy harvesting devices, each of them was attached to the end effector platform by a positioning frame to adjust the correct initial orientation towards gravity (Fig. 4b).
Hardware
The Stewart platform is actuated by six motors with 10-bit encoders (3272G024CR and IE3-1024 L, Faulhaber GmbH, Germany). They are connected to Universal Motion Interfaces and a PXI controller (NI UMI-7774 and NI PXI-1031, National Instruments Corporation, USA). The motor encoders are sampled at a rate of 100 Hz. The Stewart platform was controlled by a classical closed-loop PID controller, which is a native functionality of the PXI system. A LabVIEW program serves as user interface and sends the motor setpoints (\(\alpha\), derived during the inverse kinematic process), starts and stops the Stewart platform and acquires real-time values from the motors’ encoders. Furthermore, it allows recording any other voltage signal that might be generated during testing.
The Stewart platform’s aluminum end effector is 86 mm in diameter and features 6 ruby ball joints (ø 3.5 mm) to connect to the upper legs (cf. Fig. 4). The joints’ ruby balls are clamped by a fork construction, which consists of a rigid side and a flexible spring leaf (cf. Figs. 4a and 4c). The fork is designed to hold up for end effector platform accelerations of up to 20 m/s2 and to safely dislocate in case of collision. The same joint principle was used to build the knee joints. The joints are connected by carbon fiber tubes that form the 105 and 66 mm long upper and lower legs, respectively. The lower legs are supported by T-shaped adapters that connect the legs to the six motor axes.
In its neutral position, the Stewart platform’s end effector is at center position (\(o_{x} = o_{y} = o_{z} = 0 \;{\text{mm}}\) and \(\phi_{roll} = \phi_{pitch} = \phi_{yaw} = 0^\circ\)) and the knee angles take a 90 degrees position. The robot reaches its lowest position when all knees are bent to 63 degrees and the knee joints are physically restricted to move further. Its highest position can be reached by stretching the legs to the upper limit of 140 degrees knee angle. The physical bending restriction of the knee joints was assessed using a 3D CAD assembly (Solidworks, USA). The stretching limit of the knee joints is not a physical restriction but rather a safety precaution to avoid positions of the end effector that would result in a non-valid kinematic solution (cf. section 0).
The Stewart platform was tested for the maximum vertical load capacity it can carry in static conditions. At the platform’s neutral position, the load was gradually increased until the motors’ overload protection would be triggered and the platform could no longer support the additional weight. This test was repeated 20 times. The Stewart platform was able to carry a mean maximum load of 442.0 g ± 16.1 g.
The hardware’s key dimensions are provided hereafter:
-
Size base plate: 400 by 400 mm
-
End effector outer diameter: 90 mm
-
End effector weight: 33.2 g
-
Lower leg length: 65 mm
-
Lower leg weight including T-adapter to motor axis: 25.0 g
-
Upper leg length: 104 mm
-
Upper leg weight: 4.2 g
Post-Processing
During a motion experiment, the Stewart platform encoders continuously record the motor axis position for controlling the platform in a closed-loop system in real time. After an experiment, the data can be used to verify how accurately the Stewart platform was able to reproduce a specific heart motion. In order to do that, encoder values are translated into an end-effector position in a forward kinematic process. First, the encoder values \(enc\left( t \right)\) are converted into a time-dependent motor axis rotation angle \(\alpha\) for each motor by
$$\alpha \left( t \right) = \frac{enc\left( t \right) \cdot 360^\circ }{{4096}},$$
where 4096 represents the encoder resolution per full revolution. Second, the motor axis rotation angles are used as input of the Simulink model that describes the kinematics of the Stewart platform. Since the end-effector is connected to the motors with a well-defined leg structure, the model calculates a unique end-effector position for any given set of motor axis rotation angles.
The actual end-effector trajectory \(o_{actual} \left( t \right)\) and attitude \(\phi_{actual} \left( t \right)\) acquired by forward kinematics can now be used to validate the Stewart platform with the set-point heart motion trajectory \(o\left( t \right)\) and attitude \(\phi \left( t \right)\). Therefore, the actual and set-point values are compared at each time step by calculating the positioning and attitude error, \(err_{o} \left( t \right)\) and \(err_{\phi } \left( t \right)\), respectively:
$$err_{o} \left( t \right) = \left\| {o_{{actual}} \left( t \right) - o\left( t \right)} \right\| = \left\| {\left[ {\begin{array}{*{20}c} {o_{{actual_{x} }} \left( t \right)} \\ {o_{{actual_{y} }} \left( t \right)} \\ {o_{{actual_{z} }} \left( t \right)} \\ \end{array} } \right] - \left[ {\begin{array}{*{20}c} {o_{x} \left( t \right)} \\ {o_{y} \left( t \right)} \\ {o_{z} \left( t \right)} \\ \end{array} } \right]} \right\|$$
$$err_{\phi } \left( t \right) = \left\| {\phi _{{actual}} \left( t \right) - o\left( t \right)} \right\| = \left\| {\left[ {\begin{array}{*{20}c} {\phi _{{actual_{{roll}} }} \left( t \right)} \\ {\phi _{{actual_{{pitch}} }} \left( t \right)} \\ {\phi _{{actual_{{yaw}} }} \left( t \right)} \\ \end{array} } \right] - \left[ {\begin{array}{*{20}c} {\phi _{{roll}} \left( t \right)} \\ {\phi _{{pitch}} \left( t \right)} \\ {\phi _{{yaw}} \left( t \right)} \\ \end{array} } \right]} \right\|$$
For the validation, 13 different heart motion datasets were considered, which were previously acquired21 by a custom-made 9-axis inertial measurement unit.