Optimized Kalman Filter based State Estimation and Height Control in Hopping Robots

Samuel Burns1 and Matthew Woodward1 Manuscript received: August, 21, 2024; Revised June, 4, 2025.1The authors are with the Robot Locomotion and Biomechanics Laboratory, Mechanical Engineering Department, Tufts University, Medford, MA, 01890 matthew.woodward@tufts.edu
Abstract

Rotor-based hopping locomotion significantly improves efficiency and operation time as compared to purely flying systems; where most hopping robots use the liftoff states and an assumed ballistic trajectory to determine the hopping height. However, significant aerial phase force (e.g., thrust and drag) can invalidate this assumption and lead to poor estimation performance. To combat this issue, a group has implemented multiple sensors (active and passive optical, inertial, and contact) and significant computational power to achieve full state estimation. This, however, poses a significant challenge to the development of light-weight, high-performance, low observable, jamming and electronic interference resistant hopping systems; especially in perceptually degraded environments (e.g., dust, smoke). Here we show a training procedure for a coupled hopping phase and Kalman filter-based vertical state estimator, requiring only inertial measurements, which is able to learn the characteristics of the target system, sensors, locomotion behaviors, environment, and acceleration measurement aliasing conditions. The resulting estimator, given hop heights up to 4 m and velocities up to ±7plus-or-minus7\pm 7± 7 m/s, achieves a mean absolute percent error in the hop apex height of 12.5% with an aerial trajectory average normalized mean absolute error in position and velocity of 19% and 16.5%, respectively; while operating at 840 Hz, on a dual-core 240 MHz processor, with a total robot mass of 672 g. Due to the low mass and computational power, the presented estimator could also be used as a degraded operational mode in cases of sensor damage, malfunction, or occlusion in more complex robots.

Index Terms:
Hopping, Jumping, Robot, Control, State Estimation, Kalman Filter

I Introduction

Hopping robots combine the agility of aerial systems with the efficiency of terrestrial systems [1, 2, 3]; where the focus has been placed on predicting the vertical states for control, from the liftoff characteristics [4, 5]. However, this method is not applicable to the recent generation of rotor-based hopping robots that may not follow strictly ballistic trajectories in the aerial phase [1, 6, 3, 7, 2]. Therefore, a new method for continuous state estimation is necessary. This is particularly challenging in light-weight hopping robots, without the payload for significant increases in sensors, processing, and power; furthermore high-performance hopping robots, where aliasing of sensors measurements can be significant, especially during the impacts associated with hopping. The challenge is further compounded in perceptually degraded environments (e.g., dust, smoke, darkness), in contested environments in which active jamming may be present, and where sensing modalities that radiate energy into the environment may lead to detection and destruction. Currently, robot rotational state estimation can be achieved through inertial measurement units (IMUs), and translational state estimation can be achieved through GPS and combined optical flow and range finder senors; however, range finder sensors radiate energy into the environment for sensing, and can have difficultly operating in perceptually degraded environments. As IMUs are ubiquitous in robots and small in size, this work seeks to develop an IMU-based vertical state estimation methodology for hopping height control that could be extended to horizontal states in the future; fully replacing the optical flow sensor for operation in highly perceptually degraded environments.

To date numerous non-continuous jumping and hopping robots have been developed including miniature jumping robots [8, 9, 10, 11, 12, 13, 14], high specific energy robots [15, 16], soft jumping robots [17, 18], multimodal robots [19], with wings for gliding [20, 21, 22, 23, 24, 25, 26, 27, 28], and inertial tails or reaction wheels for orientation control [29, 30, 31, 32, 33]. These robots have also used a wide variety of hopping leg designs including: linkage [34, 35, 36, 37], and linear [38, 39, 40, 41] legs. These robots represent a highly diverse range of characteristics and constraints. However, given the minimal impact of an IMU integration, the addition of the proposed method is highly feasible for any system.

Currently, five untethered continuous hopping robots exist: MultiMo-MHR (our system) [1], PogoDrone [6], Hopcopter [2], Salto/Salto-1P [42, 43, 36, 44, 30, 31, 32, 33], and PogoX [3, 7] and one tethered continuous insect-scale hopping robot [45]. While PogoDrone and the insect-scale hopping robot shows no form of state estimation, both the Hopcopter and Salto robots use the estimated or measured liftoff states and an assumed ballistic aerial trajectory to estimate the hopping height. However, the ballistic trajectory assumption invalids this technique for robots with applied aerial phase forces. PogoX (robot mass = 3.65 kg) displays the most thorough state estimation to date, using an extended Kalman filter, moving horizon estimation, and visual inertial odometry, requiring multiple sensors, advanced computational hardware, large weight budget, and direct measurement of both vertical position and acceleration to estimate vertical velocity; thus posing a challenge to broad applicability. This work seeks to estimate both position and velocity using only direct acceleration measurements allowing for a broader integration across platforms while also being used in a degraded operational mode when primary sensors are damaged or malfunction in more complex systems; such as PogoX.

This paper is organized as follows. Section 1 introduces the topic, and Section 2 briefly covers the robot design with focus on the changes from previous work [1]. Section 3 discusses the hopping phase estimator, and Section 4 presents the hopping state estimator with associated training procedure and results. Section 5 explores the effects of the sensing frequency on measurement aliasing and ultimately state estimation. Section 6 presents the experiential procedure and results of the deployed state estimation technique on the MultiMo-MHR, and Section 7 summarizes the work.

Refer to caption

Figure 1: Hopping robot. a) Operational phases (drop, stance down, stance up, rebound) and transitions (touchdown (TD), max squat (MS), liftoff (LO), hop apex (HA)) a.1) Photo of the MultiMo-MHR platform with components labeled. a.2) CAD model with overall dimensions labeled. a.3) CAD model section view with spring extension (stance phases) showing the combined body and leg structures. b) Dynamic simulation showing the locally, highly non-linear, behavior of the body at TD and LO for a 3 m hop.

II Robot Design

The MultiMo-MHR, developed in previous work [1], is a monopedal hopping robot that utilizes rotors for orientation control and energy input (Fig. 1a, Appendix Robot Parameters). The robot consists of two bodies where a single unactuated prismatic joint, with the motion-axis aligned to the leg-axis, connects the body to the leg. At touchdown the body’s momentum causes it to move down the leg, extending the main power springs. The springs consist of multiple rubber bands that are able to store a maximum usable locomotion energy of approximately 34 J resulting in a maximum hopping height of over 5 meters; where additional bands can increase the height.

The MultiMo-MHR uses an on-board microcontroller (ESP32-WROOM-32, two Tensilica Xtensa LX6 cores at 240MHz) for real-time control (Fig. 1a). Given the significant difference in the accelerations experienced during ground contact and the aerial phases, the platform has two inertial measurement units (IMUs), including a low-g (MPU-6050: ±16plus-or-minus16\pm 16± 16g, ±plus-or-minus\pm±2000 deg/s, 1000 Hz) and high-g (H3LIS331DL: ±100plus-or-minus100\pm 100± 100g, 1000Hz), ensuring accurate measurements tailored to the varying magnitudes of forces encountered; where the static measurement noises are ±0.013gplus-or-minus0.013𝑔\pm 0.013g± 0.013 italic_g (MPU-6050) and ±0.32gplus-or-minus0.32𝑔\pm 0.32g± 0.32 italic_g (H3LIS331DL). A data logger (Sparkfun OpenLog) is used to store both the sensor data and calculated values during operation. The robot is powered by a 14.7v battery pack (two 7.4v, 2s, 2200 mAh, 35C batteries in series) to provide sufficient power to the four electronic speed controllers (ESC, 20 Amp) and motors (SpeedyBee 1404 4500 kv). Finally, a radio frequency transceiver (nRF24L01) receives data from an external PC which is used to simulate additional sensors, via a motion capture system (Vicon vantage V5), while focusing on hopping height control (e.g. PMW3901 Optical Flow Sensor [horizontal positions] and WT901 [orientation]).

The previously developed controller, composed of the horizontal [X,Y], orientation [roll,pitch,yaw], and locomotion energy (LE) input [Z or height] control, is augmented with a vertical state estimator and a new LE input controller for hopping height control (Fig. 2). Due to the highly damped nature of the vertical states, a proportional controller is used for the LE input control. The P-controller output is mapped to a thrust-to-weight ratio (TWR) of between 0% and 83.7% (i.e., 100% equates to the same thrust required for hover); where the minimum motor command is set to 5% duty-cycle to increase the motor’s responsiveness while producing almost no thrust. The controller operates as a sliding mode control at ranges greater than 0.33 m from the desired height.

Refer to caption

Figure 2: Hopping robot control block diagram.

Refer to caption

Figure 3: State machine diagram of the Hopping Phase Estimator (HPE), Hopping Vertical State Estimator (HVSE), and controllers showing both the prediction updates and Inferred Measurement Updates (IMUPTs) of the HVSE. Shown are phases (green), phase transition criteria (red), and transitions (blue)

III Hopping Phase Estimator (HPE)

A hopping phase estimator (HPE) is developed (Fig. 3) where the operational phases (green), phase transition criteria (red), and transitions (blue) are shown. The HPE determines the drop, stance down, stance up, and rebound phases through identification of the four transitions; touchdown (TD), maximum squat (MS), liftoff (LO), and hop apex (HA). Previous work in hopping robots has indicated the TD and LO transitions can be determined from the states [4], with two specific methods including leg motion through the use of a leg encoder [42, 30, 31, 32, 33] and ground contact through a force sensor on the foot [3, 7]. However, both methods require an additional sensor with complex mounting requirements beyond the typical 9-axis inertial measurement unit (IMU) required for aerial phase control. Instead, inspired by work in inertial pedestrian navigation or pedestrian dead-reckoning [46, 47, 48, 49], multiple acceleration measurements (IMU) are used to calculate the slope (jerk) and a set positive threshold determines TD. This same measurement is then used to determine MS as the point at which the jerk becomes negative. LO is determined by a single filtered acceleration measurement that is less than zero; indicating gravity is the dominant acceleration. Finally, previous works have predicted the HA from measured liftoff states and an assumed ballistic trajectory. However, as hopping height increases so to will drag, resulting in increased deviation from gravity-based ballistic motion. Furthermore, rotor-based hopping robots can significantly alter their aerial trajectory from that of ballistic motion; due to thrust produced in the aerial phase. While range finding sensors can directly measure the height and thus the HA, they significantly increase the observability of the system, provide and opening for external interference, and increased height can degrade the measurement. As proprioceptive sensors are unable to directly or indirectly detect it, the transition criteria for the HA requires an accurate estimation of the vertical velocity.

TABLE I: Kalman Filters
Filter Filter Equations Filter Parameters IMUPTs Errors
Type (Phase/Transition) (998 hops)
KF - Prediction zk=Hx^k+na,uk=[0,0,1]akwformulae-sequencesubscript𝑧𝑘𝐻subscript^𝑥𝑘subscript𝑛𝑎subscript𝑢𝑘001superscriptsubscript𝑎𝑘𝑤z_{k}=H\hat{x}_{k}+n_{a},\,u_{k}=[0,0,1]\,a_{k}^{w}italic_z start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_H over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ 0 , 0 , 1 ] italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT
KF1 xk=Fxk1+Guksuperscriptsubscript𝑥𝑘𝐹subscript𝑥𝑘1𝐺subscript𝑢𝑘x_{k}^{-}=Fx_{k-1}+Gu_{k}italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT = italic_F italic_x start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT + italic_G italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT Pk=FPk1FT+Qsuperscriptsubscript𝑃𝑘𝐹subscript𝑃𝑘1superscript𝐹𝑇𝑄P_{k}^{-}=FP_{k-1}F^{T}+Qitalic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT = italic_F italic_P start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT italic_F start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT + italic_Q F=[1Δt01],G=[0.5Δt2Δt],xk=[zz˙]formulae-sequence𝐹matrix1Δ𝑡01formulae-sequence𝐺matrix0.5Δsuperscript𝑡2Δ𝑡subscript𝑥𝑘matrix𝑧˙𝑧F=\begin{bmatrix}1&\Delta t\\ 0&1\end{bmatrix},\,G=\begin{bmatrix}0.5\Delta t^{2}\\ \Delta t\end{bmatrix},\,x_{k}=\begin{bmatrix}z\\ \dot{z}\end{bmatrix}italic_F = [ start_ARG start_ROW start_CELL 1 end_CELL start_CELL roman_Δ italic_t end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL 1 end_CELL end_ROW end_ARG ] , italic_G = [ start_ARG start_ROW start_CELL 0.5 roman_Δ italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL roman_Δ italic_t end_CELL end_ROW end_ARG ] , italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ start_ARG start_ROW start_CELL italic_z end_CELL end_ROW start_ROW start_CELL over˙ start_ARG italic_z end_ARG end_CELL end_ROW end_ARG ] Position (TD, LO) Velocity (MS, LO) γ1=0.108subscript𝛾10.108\gamma_{1}=0.108italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 0.108 γ2=0.329subscript𝛾20.329\gamma_{2}=0.329italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = 0.329 γ3=0.594subscript𝛾30.594\gamma_{3}=0.594italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 0.594
KF - Meas. Update zk=Hx^k+na,uk=[0,0,1]akwformulae-sequencesubscript𝑧𝑘𝐻subscript^𝑥𝑘subscript𝑛𝑎subscript𝑢𝑘001superscriptsubscript𝑎𝑘𝑤z_{k}=H\hat{x}_{k}+n_{a},\,u_{k}=[0,0,1]\,a_{k}^{w}italic_z start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_H over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT , italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ 0 , 0 , 1 ] italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT
KF2 K=PkHT(HPkHT+R)1𝐾superscriptsubscript𝑃𝑘superscript𝐻𝑇superscript𝐻superscriptsubscript𝑃𝑘superscript𝐻𝑇𝑅1K=P_{k}^{-}H^{T}(HP_{k}^{-}H^{T}+R)^{-1}italic_K = italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_H start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT ( italic_H italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_H start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT + italic_R ) start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT xk=xk+K(zkHxk)subscript𝑥𝑘superscriptsubscript𝑥𝑘𝐾subscript𝑧𝑘𝐻superscriptsubscript𝑥𝑘x_{k}=x_{k}^{-}+K(z_{k}-Hx_{k}^{-})italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT + italic_K ( italic_z start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_H italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) Pk=(IKH)Pksubscript𝑃𝑘𝐼𝐾𝐻superscriptsubscript𝑃𝑘P_{k}=(I-KH)P_{k}^{-}italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = ( italic_I - italic_K italic_H ) italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT F=[1Δt0.5Δt201Δ001],G=[0.5Δt2Δt0]formulae-sequence𝐹matrix1Δ𝑡0.5Δsuperscript𝑡201Δ001𝐺matrix0.5Δsuperscript𝑡2Δ𝑡0F=\begin{bmatrix}1&\Delta t&-0.5\Delta t^{2}\\ 0&1&-\Delta\\ 0&0&1\end{bmatrix},\,G=\begin{bmatrix}0.5\Delta t^{2}\\ \Delta t\\ 0\end{bmatrix}italic_F = [ start_ARG start_ROW start_CELL 1 end_CELL start_CELL roman_Δ italic_t end_CELL start_CELL - 0.5 roman_Δ italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL 1 end_CELL start_CELL - roman_Δ end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL 0 end_CELL start_CELL 1 end_CELL end_ROW end_ARG ] , italic_G = [ start_ARG start_ROW start_CELL 0.5 roman_Δ italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL roman_Δ italic_t end_CELL end_ROW start_ROW start_CELL 0 end_CELL end_ROW end_ARG ] Position (TD, LO) Velocity (MS, LO) Accel. Bias (Aerial Phases) γ1=0.111subscript𝛾10.111\gamma_{1}=0.111italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 0.111 γ2=0.497subscript𝛾20.497\gamma_{2}=0.497italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = 0.497 γ3=0.903subscript𝛾30.903\gamma_{3}=0.903italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 0.903
xk=[zz˙z¨bias]Tsubscript𝑥𝑘superscriptdelimited-[]𝑧˙𝑧subscript¨𝑧𝑏𝑖𝑎𝑠𝑇x_{k}=[z\,\dot{z}\,\ddot{z}_{bias}]^{T}italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ italic_z over˙ start_ARG italic_z end_ARG over¨ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_b italic_i italic_a italic_s end_POSTSUBSCRIPT ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT
ESKF - Nominal State Prediction zk=Hx^k+naHxk,uk=[0,0,1]akwformulae-sequencesubscript𝑧𝑘𝐻subscript^𝑥𝑘subscript𝑛𝑎𝐻superscriptsubscript𝑥𝑘subscript𝑢𝑘001superscriptsubscript𝑎𝑘𝑤z_{k}=H\hat{x}_{k}+n_{a}-Hx_{k}^{-},\,u_{k}=[0,0,1]\,a_{k}^{w}italic_z start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_H over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT - italic_H italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ 0 , 0 , 1 ] italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT
ESKF1 xk=f(xk1)+g(xk1)uksuperscriptsubscript𝑥𝑘𝑓subscript𝑥𝑘1𝑔subscript𝑥𝑘1subscript𝑢𝑘x_{k}^{-}=f(x_{k-1})+g(x_{k-1})u_{k}italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT = italic_f ( italic_x start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT ) + italic_g ( italic_x start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT ) italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT ESKF - Prediction Pk=FPk1FT+Qsuperscriptsubscript𝑃𝑘𝐹subscript𝑃𝑘1superscript𝐹𝑇𝑄P_{k}^{-}=FP_{k-1}F^{T}+Qitalic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT = italic_F italic_P start_POSTSUBSCRIPT italic_k - 1 end_POSTSUBSCRIPT italic_F start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT + italic_Q F=[1Δt0.5Δt201Δt001],G=[0.5Δt2Δt0]formulae-sequence𝐹matrix1Δ𝑡0.5Δsuperscript𝑡201Δ𝑡001𝐺matrix0.5Δsuperscript𝑡2Δ𝑡0F=\begin{bmatrix}1&\Delta t&-0.5\Delta t^{2}\\ 0&1&-\Delta t\\ 0&0&1\end{bmatrix},\,G=\begin{bmatrix}0.5\Delta t^{2}\\ \Delta t\\ 0\end{bmatrix}italic_F = [ start_ARG start_ROW start_CELL 1 end_CELL start_CELL roman_Δ italic_t end_CELL start_CELL - 0.5 roman_Δ italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL 1 end_CELL start_CELL - roman_Δ italic_t end_CELL end_ROW start_ROW start_CELL 0 end_CELL start_CELL 0 end_CELL start_CELL 1 end_CELL end_ROW end_ARG ] , italic_G = [ start_ARG start_ROW start_CELL 0.5 roman_Δ italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL roman_Δ italic_t end_CELL end_ROW start_ROW start_CELL 0 end_CELL end_ROW end_ARG ] Position (TD, LO) Velocity (MS) γ1=0.127subscript𝛾10.127\gamma_{1}=0.127italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 0.127 γ2=0.417subscript𝛾20.417\gamma_{2}=0.417italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = 0.417 γ3=0.724subscript𝛾30.724\gamma_{3}=0.724italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 0.724
ESKF - Meas. Update
ESKF2 K=PkHT(HPkHT+R)1𝐾superscriptsubscript𝑃𝑘superscript𝐻𝑇superscript𝐻superscriptsubscript𝑃𝑘superscript𝐻𝑇𝑅1K=P_{k}^{-}H^{T}(HP_{k}^{-}H^{T}+R)^{-1}italic_K = italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_H start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT ( italic_H italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_H start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT + italic_R ) start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT δxk=δxk+K(zkHδxk)𝛿subscript𝑥𝑘𝛿superscriptsubscript𝑥𝑘𝐾subscript𝑧𝑘𝐻𝛿superscriptsubscript𝑥𝑘\delta x_{k}=\delta x_{k}^{-}+K(z_{k}-H\delta x_{k}^{-})italic_δ italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_δ italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT + italic_K ( italic_z start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_H italic_δ italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) Pk=(IKH)Pksubscript𝑃𝑘𝐼𝐾𝐻superscriptsubscript𝑃𝑘P_{k}=(I-KH)P_{k}^{-}italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = ( italic_I - italic_K italic_H ) italic_P start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT xk=xk+δxksubscript𝑥𝑘superscriptsubscript𝑥𝑘𝛿subscript𝑥𝑘x_{k}=x_{k}^{-}+\delta x_{k}italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT + italic_δ italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT xk=[zz˙z¨bias]Tsubscript𝑥𝑘superscriptdelimited-[]𝑧˙𝑧subscript¨𝑧𝑏𝑖𝑎𝑠𝑇x_{k}=[z\,\dot{z}\,\ddot{z}_{bias}]^{T}italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ italic_z over˙ start_ARG italic_z end_ARG over¨ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_b italic_i italic_a italic_s end_POSTSUBSCRIPT ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT δxk=[δzδz˙δz¨bias]T𝛿subscript𝑥𝑘superscriptdelimited-[]𝛿𝑧𝛿˙𝑧𝛿subscript¨𝑧𝑏𝑖𝑎𝑠𝑇\delta x_{k}=[\delta z\,\delta\dot{z}\,\delta\ddot{z}_{bias}]^{T}italic_δ italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ italic_δ italic_z italic_δ over˙ start_ARG italic_z end_ARG italic_δ over¨ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_b italic_i italic_a italic_s end_POSTSUBSCRIPT ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT Position (TD, LO) Velocity (MS) Accel. Bias (Aerial Phases) γ1=0.134subscript𝛾10.134\gamma_{1}=0.134italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 0.134 γ2=0.423subscript𝛾20.423\gamma_{2}=0.423italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = 0.423 γ3=0.725subscript𝛾30.725\gamma_{3}=0.725italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 0.725
  • Parameters: state transition matrix, F𝐹Fitalic_F, control matrix, G𝐺Gitalic_G, estimated covariance, P𝑃Pitalic_P, process noise covariance, Q𝑄Qitalic_Q, observation matrix, H𝐻Hitalic_H, measurement noise covariance, R𝑅Ritalic_R, Kalman gain, K𝐾Kitalic_K, input, uksubscript𝑢𝑘u_{k}italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT, and measurements, zksubscript𝑧𝑘z_{k}italic_z start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT. Abbreviations and descriptions: Measurement (Meas.), Acceleration (Accel.), Kalman Filter (KF), Error State Kalman Filter (ESKF), true state (x^ksubscript^𝑥𝑘\hat{x}_{k}over^ start_ARG italic_x end_ARG start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT).

IV State Estimation Methodology

Two common approaches involve a Kalman filter (KF) with states (xk=[pk,vk,θk,bak,bgk]subscript𝑥𝑘subscript𝑝𝑘subscript𝑣𝑘subscript𝜃𝑘subscript𝑏𝑎𝑘subscript𝑏𝑔𝑘x_{k}=[p_{k},v_{k},\theta_{k},b_{ak},b_{gk}]italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_v start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_θ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT , italic_b start_POSTSUBSCRIPT italic_g italic_k end_POSTSUBSCRIPT ]) or an error state Kalman filter (ESKF) with error states (δxk=[δpk,δvk,δθk,δbak,δbgk]𝛿subscript𝑥𝑘𝛿subscript𝑝𝑘𝛿subscript𝑣𝑘𝛿subscript𝜃𝑘𝛿subscript𝑏𝑎𝑘𝛿subscript𝑏𝑔𝑘\delta x_{k}=[\delta p_{k},\delta v_{k},\delta\theta_{k},\delta b_{ak},\delta b% _{gk}]italic_δ italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ italic_δ italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_δ italic_v start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_δ italic_θ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT , italic_δ italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT , italic_δ italic_b start_POSTSUBSCRIPT italic_g italic_k end_POSTSUBSCRIPT ]) and nominal states (xksubscript𝑥𝑘x_{k}italic_x start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT); where, the subscript k𝑘kitalic_k is the time step, pksubscript𝑝𝑘p_{k}italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT is the position, vksubscript𝑣𝑘v_{k}italic_v start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT is the velocity, θksubscript𝜃𝑘\theta_{k}italic_θ start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT is attitude, baksubscript𝑏𝑎𝑘b_{ak}italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT is the accelerometer bias, bgksubscript𝑏𝑔𝑘b_{gk}italic_b start_POSTSUBSCRIPT italic_g italic_k end_POSTSUBSCRIPT is the gyroscope bias, and δ𝛿\deltaitalic_δ indicates the error between the true and estimated states. The inertial measurement unit (IMU) and accelerometer provide both the linear acceleration and rotational velocity as,

aIMUsuperscript𝑎𝐼𝑀𝑈\displaystyle a^{IMU}italic_a start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT =a^+ba+na+αaabsent^𝑎subscript𝑏𝑎subscript𝑛𝑎subscript𝛼𝑎\displaystyle=\hat{a}+b_{a}+n_{a}+\alpha_{a}= over^ start_ARG italic_a end_ARG + italic_b start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT + italic_α start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT (1)
ωIMUsuperscript𝜔𝐼𝑀𝑈\displaystyle\omega^{IMU}italic_ω start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT =ω^+bg+ngabsent^𝜔subscript𝑏𝑔subscript𝑛𝑔\displaystyle=\hat{\omega}+b_{g}+n_{g}= over^ start_ARG italic_ω end_ARG + italic_b start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT (2)

where, a^^𝑎\hat{a}over^ start_ARG italic_a end_ARG is the true acceleration, nasubscript𝑛𝑎n_{a}italic_n start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT is the accelerometer noise, αasubscript𝛼𝑎\alpha_{a}italic_α start_POSTSUBSCRIPT italic_a end_POSTSUBSCRIPT is the accelerometer aliasing, ω^^𝜔\hat{\omega}over^ start_ARG italic_ω end_ARG is the true rotational rate, and ngsubscript𝑛𝑔n_{g}italic_n start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT is the gyroscope noise. As with [50], neglecting the Coriolis forces and curvature of the earth, the state transition equations are as follows,

pk+1w=pkw+vkwΔt+12((Rkbw(akIMUbak)+gw)Δt2\displaystyle p_{k+1}^{w}=p_{k}^{w}+v_{k}^{w}\Delta t+\frac{1}{2}((R_{k}^{bw}(% a_{k}^{IMU}-b_{ak})+g^{w})\Delta t^{2}italic_p start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT = italic_p start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT + italic_v start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT roman_Δ italic_t + divide start_ARG 1 end_ARG start_ARG 2 end_ARG ( ( italic_R start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT ( italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT - italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT ) + italic_g start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT ) roman_Δ italic_t start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (3)
vk+1=vk+(Rkbw(akIMUbak)+gw)Δtsubscript𝑣𝑘1subscript𝑣𝑘superscriptsubscript𝑅𝑘𝑏𝑤superscriptsubscript𝑎𝑘𝐼𝑀𝑈subscript𝑏𝑎𝑘superscript𝑔𝑤Δ𝑡\displaystyle v_{k+1}=v_{k}+(R_{k}^{bw}(a_{k}^{IMU}-b_{ak})+g^{w})\Delta titalic_v start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT = italic_v start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT + ( italic_R start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT ( italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT - italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT ) + italic_g start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT ) roman_Δ italic_t (4)
Rk+1bw=Rkbw(I+[ωkIMUbgk]×Δt)superscriptsubscript𝑅𝑘1𝑏𝑤superscriptsubscript𝑅𝑘𝑏𝑤𝐼subscriptdelimited-[]subscriptsuperscript𝜔𝐼𝑀𝑈𝑘subscript𝑏𝑔𝑘Δ𝑡\displaystyle R_{k+1}^{bw}=R_{k}^{bw}(I+[\omega^{IMU}_{k}-b_{gk}]_{\times}% \Delta t)italic_R start_POSTSUBSCRIPT italic_k + 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT = italic_R start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT ( italic_I + [ italic_ω start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_b start_POSTSUBSCRIPT italic_g italic_k end_POSTSUBSCRIPT ] start_POSTSUBSCRIPT × end_POSTSUBSCRIPT roman_Δ italic_t ) (5)
bak+1=bak+nbasubscript𝑏𝑎𝑘1subscript𝑏𝑎𝑘subscript𝑛𝑏𝑎\displaystyle b_{ak+1}=b_{ak}+n_{ba}italic_b start_POSTSUBSCRIPT italic_a italic_k + 1 end_POSTSUBSCRIPT = italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_b italic_a end_POSTSUBSCRIPT (6)
bgk+1=bgk+nbgsubscript𝑏𝑔𝑘1subscript𝑏𝑔𝑘subscript𝑛𝑏𝑔\displaystyle b_{gk+1}=b_{gk}+n_{bg}italic_b start_POSTSUBSCRIPT italic_g italic_k + 1 end_POSTSUBSCRIPT = italic_b start_POSTSUBSCRIPT italic_g italic_k end_POSTSUBSCRIPT + italic_n start_POSTSUBSCRIPT italic_b italic_g end_POSTSUBSCRIPT (7)

where, the superscript w𝑤witalic_w indicates the world frame, Rbwsuperscript𝑅𝑏𝑤R^{bw}italic_R start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT is the rotation matrix from the body to the world frame, I+[ωkIMUbgk]×Δt𝐼subscriptdelimited-[]subscriptsuperscript𝜔𝐼𝑀𝑈𝑘subscript𝑏𝑔𝑘Δ𝑡I+[\omega^{IMU}_{k}-b_{gk}]_{\times}\Delta titalic_I + [ italic_ω start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT - italic_b start_POSTSUBSCRIPT italic_g italic_k end_POSTSUBSCRIPT ] start_POSTSUBSCRIPT × end_POSTSUBSCRIPT roman_Δ italic_t is the first-order Taylor expansion of Rodrigues’ rotation formula, aIMUsuperscript𝑎𝐼𝑀𝑈a^{IMU}italic_a start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT is the measured acceleration in the IMU frame, ωIMUsuperscript𝜔𝐼𝑀𝑈\omega^{IMU}italic_ω start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT is the measured rotation rate in the IMU frame, the subscript ×\times× indicates the cross-product operator matrix for the bias compensated angular rate measurement, and gwsuperscript𝑔𝑤g^{w}italic_g start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT is the gravity vector.

Developing a KF from the state transition equations 3-7, shows that measurement updates impact only the measured state and its time integrals and derivatives; thereby allowing for extraction and independent development of the KF for the vertical states. Extending this to an ESKF, it does show a small amount of coupling between non-integral and non-derivative states, due to the attitude error impacting the velocity error [47]. However, assuming small attitude errors and therefore limited coupling, this isolation and development can be applied to both KFs and ESKFs. This allows for a focused study on managing significant and variable aliasing in acceleration measurements (MultiMo-MHR: Nyquist frequency similar-to\sim420 Hz). The challenge is further compounded by the fact that the most significant aliasing occurs at the regions of maximum energy transfer during TD and LO; as seen in the previously developed model (Fig. 1b) and experimental testing [1].

IV-A Hopping Vertical State Estimator (HVSE)

Differing from [6, 2], with thrust-to-weight ratios (TWRs) \geq 1, the MultiMo-MHR operates with a maximum TWR limited to 83.7%. Operating at TWR <<< 1 poses an additional challenge as the true drop phase transition is determined by the dynamic behavior and not the controller; where an early estimated drop phase transition reduces the maximum performance while a late drop phase transition reduces hopping efficiency. Vertical state estimation at a TWR of similar-to\sim90% has been shown, however, the work required both position and acceleration to estimate vertical velocity [3, 7].

Previous studies in pedestrian tracking employing Kalman Filters (KF) to estimate both position and velocity, have shown that assuming zero velocity of the foot during ground contact can allow for inferred velocity measurements, termed zero-velocity updates (ZUPTs), which can significantly reduce drift in the state estimation [49, 46]. Further studies have added zero-altitude updates [47] to reduce the drift in the vertical axis as well. Expanding on the concept for vertical state estimation in high-performance hopping robots, three of the four phase transitions including touchdown (TD), max squat (MS), and liftoff (LO) as well as the motor drive commands allow for inferred-measurements updates (IMUPTs) including:

IMUPT-position (TD,LO)

=[0,0,1]Rbw[0,0,Lf]Tabsent001superscript𝑅𝑏𝑤superscript00subscript𝐿𝑓𝑇=[0,0,1]\,R^{bw}[0,0,-L_{f}]^{T}= [ 0 , 0 , 1 ] italic_R start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT [ 0 , 0 , - italic_L start_POSTSUBSCRIPT italic_f end_POSTSUBSCRIPT ] start_POSTSUPERSCRIPT italic_T end_POSTSUPERSCRIPT at TD and LO where the vertical position is inferred from the known distance between the robot’s center-of-mass and the foot (Lf=(mBL3+mLL1)/(mB+mL)(L1+L2)subscript𝐿𝑓subscript𝑚𝐵subscript𝐿3subscript𝑚𝐿subscript𝐿1subscript𝑚𝐵subscript𝑚𝐿subscript𝐿1subscript𝐿2L_{f}=(m_{B}L_{3}+m_{L}L_{1})/(m_{B}+m_{L})-(L_{1}+L_{2})italic_L start_POSTSUBSCRIPT italic_f end_POSTSUBSCRIPT = ( italic_m start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT italic_L start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT + italic_m start_POSTSUBSCRIPT italic_L end_POSTSUBSCRIPT italic_L start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) / ( italic_m start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT + italic_m start_POSTSUBSCRIPT italic_L end_POSTSUBSCRIPT ) - ( italic_L start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_L start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT )) without spring extension.

IMUPT-velocity (MS)

=0absent0=0= 0 at MS where the vertical velocity is inferred from the body’s change in direction.

IMUPT-velocity (LO)

=vLOδvLOabsentsubscript𝑣𝐿𝑂subscript𝛿𝑣𝐿𝑂=v_{LO}\delta_{vLO}= italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT italic_δ start_POSTSUBSCRIPT italic_v italic_L italic_O end_POSTSUBSCRIPT at LO where the vertical velocity is inferred from an understanding of the system losses, momentum transfer, and inherent acceleration aliasing at liftoff. The scaling factor δvLO=(cvel2vLO2+cvel1vLO+cvel0)(cch1hch+cch0)subscript𝛿𝑣𝐿𝑂subscript𝑐𝑣𝑒𝑙2superscriptsubscript𝑣𝐿𝑂2subscript𝑐𝑣𝑒𝑙1subscript𝑣𝐿𝑂subscript𝑐𝑣𝑒𝑙0subscript𝑐𝑐1subscript𝑐subscript𝑐𝑐0\delta_{vLO}=(c_{vel2}v_{LO}^{2}+c_{vel1}v_{LO}+c_{vel0})(c_{ch1}h_{ch}+c_{ch0})italic_δ start_POSTSUBSCRIPT italic_v italic_L italic_O end_POSTSUBSCRIPT = ( italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 2 end_POSTSUBSCRIPT italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT + italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 1 end_POSTSUBSCRIPT italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT + italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 0 end_POSTSUBSCRIPT ) ( italic_c start_POSTSUBSCRIPT italic_c italic_h 1 end_POSTSUBSCRIPT italic_h start_POSTSUBSCRIPT italic_c italic_h end_POSTSUBSCRIPT + italic_c start_POSTSUBSCRIPT italic_c italic_h 0 end_POSTSUBSCRIPT ); where, liftoff velocity estimate, vLOsubscript𝑣𝐿𝑂v_{LO}italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT, and preset commanded height for the subsequent hop, hchsubscript𝑐h_{ch}italic_h start_POSTSUBSCRIPT italic_c italic_h end_POSTSUBSCRIPT, determine the velocity adjustment (Fig. 7b.1 similar-to\sim2.06% mark). The cvel2,vel1,vel0subscript𝑐𝑣𝑒𝑙2𝑣𝑒𝑙1𝑣𝑒𝑙0c_{vel2,vel1,vel0}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 2 , italic_v italic_e italic_l 1 , italic_v italic_e italic_l 0 end_POSTSUBSCRIPT, and cch1,ch0subscript𝑐𝑐1𝑐0c_{ch1,ch0}italic_c start_POSTSUBSCRIPT italic_c italic_h 1 , italic_c italic_h 0 end_POSTSUBSCRIPT are the vLOsubscript𝑣𝐿𝑂v_{LO}italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT and hchsubscript𝑐h_{ch}italic_h start_POSTSUBSCRIPT italic_c italic_h end_POSTSUBSCRIPT fit coefficients respectively, and account for estimation errors during the stance and subsequent rebound phases.

IMUPT-acceleration (Aerial Phases)

=[0,0,1](RbwFU1/mgw)absent001superscript𝑅𝑏𝑤subscript𝐹𝑈1𝑚superscript𝑔𝑤=[0,0,1](R^{bw}F_{U1}/m-g^{w})= [ 0 , 0 , 1 ] ( italic_R start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT italic_F start_POSTSUBSCRIPT italic_U 1 end_POSTSUBSCRIPT / italic_m - italic_g start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT ) during the aerial phase where the acceleration is inferred from the total commanded motor thrust, FU1=cm1(i=14dmi)+cm0subscript𝐹𝑈1subscript𝑐𝑚1superscriptsubscript𝑖14subscript𝑑𝑚𝑖subscript𝑐𝑚0F_{U1}=c_{m1}(\sum_{i=1}^{4}d_{mi})+c_{m0}italic_F start_POSTSUBSCRIPT italic_U 1 end_POSTSUBSCRIPT = italic_c start_POSTSUBSCRIPT italic_m 1 end_POSTSUBSCRIPT ( ∑ start_POSTSUBSCRIPT italic_i = 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 4 end_POSTSUPERSCRIPT italic_d start_POSTSUBSCRIPT italic_m italic_i end_POSTSUBSCRIPT ) + italic_c start_POSTSUBSCRIPT italic_m 0 end_POSTSUBSCRIPT; where cm1,m0subscript𝑐𝑚1𝑚0c_{m1,m0}italic_c start_POSTSUBSCRIPT italic_m 1 , italic_m 0 end_POSTSUBSCRIPT are the fit coefficients to convert from duty-cycle to thrust, dmisubscript𝑑𝑚𝑖d_{mi}italic_d start_POSTSUBSCRIPT italic_m italic_i end_POSTSUBSCRIPT are the commanded motor duty-cycles, m𝑚mitalic_m is the overall robot mass.

where, Appendix Robot Parameters shows the variables.

Based on the identified IMUPTs, two Kalman filters (KF1, KF2) and two error state Kalman filters (ESKF1, ESKF2) are developed (Table I). The vertical acceleration input uk=[0,0,1]akwsubscript𝑢𝑘001superscriptsubscript𝑎𝑘𝑤u_{k}=[0,0,1]\,a_{k}^{w}italic_u start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT = [ 0 , 0 , 1 ] italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT is composed of the world frame acceleration measurement akw=Rkbw(akIMUbak)+gwsuperscriptsubscript𝑎𝑘𝑤superscriptsubscript𝑅𝑘𝑏𝑤superscriptsubscript𝑎𝑘𝐼𝑀𝑈subscript𝑏𝑎𝑘superscript𝑔𝑤a_{k}^{w}=R_{k}^{bw}(a_{k}^{IMU}-b_{ak})+g^{w}italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT = italic_R start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_b italic_w end_POSTSUPERSCRIPT ( italic_a start_POSTSUBSCRIPT italic_k end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_I italic_M italic_U end_POSTSUPERSCRIPT - italic_b start_POSTSUBSCRIPT italic_a italic_k end_POSTSUBSCRIPT ) + italic_g start_POSTSUPERSCRIPT italic_w end_POSTSUPERSCRIPT. These filters required both a process and measure noise covariance matrix containing up to four additional parameters including the standard deviation of the acceleration (σazsubscript𝜎𝑎𝑧\sigma_{az}italic_σ start_POSTSUBSCRIPT italic_a italic_z end_POSTSUBSCRIPT), position (σpzsubscript𝜎𝑝𝑧\sigma_{pz}italic_σ start_POSTSUBSCRIPT italic_p italic_z end_POSTSUBSCRIPT), velocity (σvzsubscript𝜎𝑣𝑧\sigma_{vz}italic_σ start_POSTSUBSCRIPT italic_v italic_z end_POSTSUBSCRIPT), and bias (σbzsubscript𝜎𝑏𝑧\sigma_{bz}italic_σ start_POSTSUBSCRIPT italic_b italic_z end_POSTSUBSCRIPT) measurements. Additional adaptability is included in the state estimation, by first low pass filtering the accelerometer measurements resulting in two cutoff frequency parameters, fHVSEsubscript𝑓𝐻𝑉𝑆𝐸f_{HVSE}italic_f start_POSTSUBSCRIPT italic_H italic_V italic_S italic_E end_POSTSUBSCRIPT and fHPEsubscript𝑓𝐻𝑃𝐸f_{HPE}italic_f start_POSTSUBSCRIPT italic_H italic_P italic_E end_POSTSUBSCRIPT, for the HVSE and HPE, respectively. Finally, as two accelerometers are used, the switching g-force parameter, gssubscript𝑔𝑠g_{s}italic_g start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT, is included to determine at which point to switch from the low-g to high-g accelerometer measurements. The total Kalman filter parameters are presented in Table II; highlighting the challenge to hand tuning these filters.

IV-B HPE and HVSE Training

Initial experimental trials (n=998 hops using the true state for control) were conducted at hopping heights between 1 and 4 meters; where the acceleration readings from both the low-g and high-g accelerometers were captured (robot approx. 840 Hz) along with the true state data from a motion capture system (Vicon Vantage, 600 Hz). Implementing in simulation (MATLAB) a particular HPE and HVSE on the captured experimental data, allows for an exact recreation of what the robot would experience and the associated state estimation, without the risks and time associated with testing on the real robot. Therefore, assuming the initial experiments span the complete range of desired robot operational characteristics, this allows for a complete understanding of the HVSE error including all environmental (e.g. wind, substrate properties), locomotion (e.g., hopping heights, traveling speeds), control (e.g., controller driven behaviors), and sensor (e.g., noise, positioning) characteristics.

The ability to capture large amounts of experimental data and exactly simulate the HVSE errors, suggests that the Kalman filter parameters can be learned from the data. Therefore, due to the challenging parameter space with significant local minima, a genetic algorithm was developed to optimize the HPE and HVSE parameters listed in Table II. To control the hopping height of the robot, the most important parameter is the hop apex height, zHAsubscript𝑧𝐻𝐴z_{HA}italic_z start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT. Therefore, the cost function (csubscript𝑐\mathcal{L}_{c}caligraphic_L start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT) is set as the mean-absolute-percentage-error (MAPE, γ1subscript𝛾1\gamma_{1}italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT) in the apex height as,

minc={w1γ1if nHA=n^HAw2γ2+w3γ3otherwiseminsubscript𝑐casessubscript𝑤1subscript𝛾1if subscript𝑛𝐻𝐴subscript^𝑛𝐻𝐴subscript𝑤2subscript𝛾2subscript𝑤3subscript𝛾3otherwise\displaystyle\text{min}\,\mathcal{L}_{c}=\begin{cases}w_{1}\gamma_{1}&\text{if% }n_{HA}=\hat{n}_{HA}\\ w_{2}\gamma_{2}+w_{3}\gamma_{3}&\text{otherwise}\end{cases}min caligraphic_L start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT = { start_ROW start_CELL italic_w start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_CELL start_CELL if italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT = over^ start_ARG italic_n end_ARG start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_CELL end_ROW start_ROW start_CELL italic_w start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT + italic_w start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT end_CELL start_CELL otherwise end_CELL end_ROW (8)
γ1=1nHAinHA|zHAiz^HAiz^HAi|subscript𝛾11subscript𝑛𝐻𝐴superscriptsubscript𝑖subscript𝑛𝐻𝐴subscript𝑧𝐻subscript𝐴𝑖subscript^𝑧𝐻subscript𝐴𝑖subscript^𝑧𝐻subscript𝐴𝑖\displaystyle\gamma_{1}=\frac{1}{n_{HA}}\sum_{i}^{n_{HA}}\bigg{|}\frac{z_{HA_{% i}}-\hat{z}_{HA_{i}}}{\hat{z}_{HA_{i}}}\bigg{|}italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | divide start_ARG italic_z start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT - over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_ARG start_ARG over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_ARG | (9)
γ2=1npinp(ziz^i)2,γ3=1nvinv(z˙iz˙^i)2formulae-sequencesubscript𝛾21subscript𝑛𝑝superscriptsubscript𝑖subscript𝑛𝑝superscriptsubscript𝑧𝑖subscript^𝑧𝑖2subscript𝛾31subscript𝑛𝑣superscriptsubscript𝑖subscript𝑛𝑣superscriptsubscript˙𝑧𝑖subscript^˙𝑧𝑖2\displaystyle\gamma_{2}=\sqrt{\frac{1}{n_{p}}\sum_{i}^{n_{p}}(z_{i}-\hat{z}_{i% })^{2}},\,\gamma_{3}=\sqrt{\frac{1}{n_{v}}\sum_{i}^{n_{v}}(\dot{z}_{i}-\hat{% \dot{z}}_{i})^{2}}italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = square-root start_ARG divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( italic_z start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG , italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = square-root start_ARG divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( over˙ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - over^ start_ARG over˙ start_ARG italic_z end_ARG end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT end_ARG (10)

where, the ground true values [z^HA,z^,z˙^subscript^𝑧𝐻𝐴^𝑧^˙𝑧\hat{z}_{HA},\hat{z},\hat{\dot{z}}over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT , over^ start_ARG italic_z end_ARG , over^ start_ARG over˙ start_ARG italic_z end_ARG end_ARG] of the hop apex height, zHAsubscript𝑧𝐻𝐴z_{HA}italic_z start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT, vertical position, z𝑧zitalic_z, and vertical velocity, z˙˙𝑧\dot{z}over˙ start_ARG italic_z end_ARG, are as shown respectively. The RMSE in both vertical position, γ2subscript𝛾2\gamma_{2}italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT, and velocity, γ3subscript𝛾3\gamma_{3}italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT, are used to maintain a gradient in the event that the estimation does not capture the correct number of hops. The number of estimated hop apexes, nHAsubscript𝑛𝐻𝐴n_{HA}italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT, the true hop apexes, n^HAsubscript^𝑛𝐻𝐴\hat{n}_{HA}over^ start_ARG italic_n end_ARG start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT, vertical heights, npsubscript𝑛𝑝n_{p}italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT, and vertical velocities, nvsubscript𝑛𝑣n_{v}italic_n start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT, are represented accordingly. Finally, the weights are as follows, [w1=100,w2=w3=10]delimited-[]formulae-sequencesubscript𝑤1100subscript𝑤2subscript𝑤310[w_{1}=100,\,w_{2}=w_{3}=10][ italic_w start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = 100 , italic_w start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT = italic_w start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT = 10 ].

The genetic algorithm is initialized as follows: individuals = 15 parameters (Table II), initial population = 1000 randomly generated individuals, maximum generations ngasubscript𝑛𝑔𝑎n_{ga}italic_n start_POSTSUBSCRIPT italic_g italic_a end_POSTSUBSCRIPT = 20, elites carried over to the subsequent generation = 5%, crossover fraction = 80%, and the mutation fraction = 15%. Stochastic universal sampling is used to select two parents and the children are created through a uniform scattering crossover; where each optimization parameter is given a random one (parent-1) or zero (parent-2), determining which parent provides the parameter for the child. Finally, a constraint-aware adaptive mutation algorithm is used that creates the child as follows, xga=xga+α0exp(ngai/nga)d/dsuperscriptsubscript𝑥𝑔𝑎subscript𝑥𝑔𝑎subscript𝛼0subscript𝑛𝑔subscript𝑎𝑖subscript𝑛𝑔𝑎𝑑norm𝑑x_{ga}^{\prime}=x_{ga}+\alpha_{0}\,\exp(n_{ga_{i}}/n_{ga})\,d/||d||italic_x start_POSTSUBSCRIPT italic_g italic_a end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT = italic_x start_POSTSUBSCRIPT italic_g italic_a end_POSTSUBSCRIPT + italic_α start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT roman_exp ( italic_n start_POSTSUBSCRIPT italic_g italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT / italic_n start_POSTSUBSCRIPT italic_g italic_a end_POSTSUBSCRIPT ) italic_d / | | italic_d | |; where the direction vector, d(15×1)subscript𝑑151d_{(15\times 1)}italic_d start_POSTSUBSCRIPT ( 15 × 1 ) end_POSTSUBSCRIPT, is a random vector in which each component is drawn from a normal distribution 𝒩(0,1)similar-toabsent𝒩01\sim\mathcal{N}(0,1)∼ caligraphic_N ( 0 , 1 ). The ngaisubscript𝑛𝑔subscript𝑎𝑖n_{ga_{i}}italic_n start_POSTSUBSCRIPT italic_g italic_a start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT is the current generation number, and α0subscript𝛼0\alpha_{0}italic_α start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT is the initial step size that can be reduced if the constrains are violated. Finally, as stated previously, learning the parameters requires that the training data covers all desired robot operational characteristics. However, initial testing has shown that a much more limited set of data than that collected sufficiently well cover the operating range allowing for more efficient optimization on a reduced set containing 111 hops spread across the [1,2,3,4] m hop trials. This results in a reduction from multiple days per optimization cycle, to approximately 5 hours of parallel processing across eight cores; where code optimization could improve this further.

TABLE II: Optimization Parameters
Parm. Description Opt. Value Bounds Units
fHVSEsubscript𝑓𝐻𝑉𝑆𝐸f_{HVSE}italic_f start_POSTSUBSCRIPT italic_H italic_V italic_S italic_E end_POSTSUBSCRIPT Cutoff Freq. (HVSE) 7 [400,5] Hz
fHPEsubscript𝑓𝐻𝑃𝐸f_{HPE}italic_f start_POSTSUBSCRIPT italic_H italic_P italic_E end_POSTSUBSCRIPT Cutoff Freq. (HPE) 8 [400,5] Hz
gssubscript𝑔𝑠g_{s}italic_g start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT Accel. Switching g-force 14.24 [14.5,12] g-force
σazsubscript𝜎𝑎𝑧\sigma_{az}italic_σ start_POSTSUBSCRIPT italic_a italic_z end_POSTSUBSCRIPT Accel. Meas. STD 9.9857 [10,0.0001] m/s2
σbzsubscript𝜎𝑏𝑧\sigma_{bz}italic_σ start_POSTSUBSCRIPT italic_b italic_z end_POSTSUBSCRIPT Accel. Bias Meas. STD NA [10,0.0001] m/s2
σvzsubscript𝜎𝑣𝑧\sigma_{vz}italic_σ start_POSTSUBSCRIPT italic_v italic_z end_POSTSUBSCRIPT Velocity Meas. STD 9.5722 [10,0.0001] m/s
σpzsubscript𝜎𝑝𝑧\sigma_{pz}italic_σ start_POSTSUBSCRIPT italic_p italic_z end_POSTSUBSCRIPT Position Meas. STD 0.0091 [10,0.0001] m
cvel2subscript𝑐𝑣𝑒𝑙2c_{vel2}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 2 end_POSTSUBSCRIPT Fit Constant Coef. vel2 -1.1246 [10,-10]
cvel1subscript𝑐𝑣𝑒𝑙1c_{vel1}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 1 end_POSTSUBSCRIPT Fit Constant Coef. vel1 5.9203 [10,-10]
cvel0subscript𝑐𝑣𝑒𝑙0c_{vel0}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 0 end_POSTSUBSCRIPT Fit Constant Coef. vel0 6.7054 [10,-10]
cch1subscript𝑐𝑐1c_{ch1}italic_c start_POSTSUBSCRIPT italic_c italic_h 1 end_POSTSUBSCRIPT Fit Constant Coef. ch1 6.2138 [10,-10]
cch0subscript𝑐𝑐0c_{ch0}italic_c start_POSTSUBSCRIPT italic_c italic_h 0 end_POSTSUBSCRIPT Fit Constant Coef. ch0 8.4355 [10,-10]
cm0subscript𝑐𝑚0c_{m0}italic_c start_POSTSUBSCRIPT italic_m 0 end_POSTSUBSCRIPT Fit Constant Coef. dmi1superscriptsubscript𝑑𝑚𝑖1d_{mi}^{1}italic_d start_POSTSUBSCRIPT italic_m italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT NA [10,-10]
cm1subscript𝑐𝑚1c_{m1}italic_c start_POSTSUBSCRIPT italic_m 1 end_POSTSUBSCRIPT Fit Constant Coef. dmi0superscriptsubscript𝑑𝑚𝑖0d_{mi}^{0}italic_d start_POSTSUBSCRIPT italic_m italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT NA [10,-10]
  • Abbreviations: Measurement (Meas.), Acceleration (Accel.), standard deviation (STD), coefficient (Coef.).

IV-C Training Results

Optimizing across the four filters (KF1, KF2, ESKF1, ESKF2) for the MAPE in the apex height (γ1subscript𝛾1\gamma_{1}italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT) results in KF1 with the lowest error parameters (Table I Error column). The addition of the accelerometer bias measurement (IMUPT-Accel. Bias (Aerial Phase)) to KF2 results in increased errors. This suggests that the measurement adds more uncertainty than useful information; likely due to the delay between motor command and thrust production. Shifting to ESKF1 and ESKF2, IMUPT-Velocity(LO) was removed because of an observed instability suggesting that the short-term significant change in the error, cause by the aliasing at TD and LO, is not well managed by the ESKF.

Selecting KF1, the optimized parameter values can be seen in Table II, which result in a MAPE in the apex height of 10.77% (n=998 hops) over the complete set of training data. Analyzing the optimized values in more detail, we can further understand the system’s characteristics. First, the cutoff frequencies for both the HVSE and HPE show a trend towards low values, causing significant phase lag and smoothing of the acceleration measurements. This suggests a preference towards removing the inherently arbitrary aliasing of the acceleration measurements over phase accuracy for both the HVSE and HPE; where the colored dots in Fig. 8 show the HPE’s transitions during the subsequent experimental trials. Second, the liftoff velocity and commanded height show a correlation with the HVSE error as the exponential coefficients (cvel2subscript𝑐𝑣𝑒𝑙2c_{vel2}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 2 end_POSTSUBSCRIPT, cvel1subscript𝑐𝑣𝑒𝑙1c_{vel1}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 1 end_POSTSUBSCRIPT, cch1subscript𝑐𝑐1c_{ch1}italic_c start_POSTSUBSCRIPT italic_c italic_h 1 end_POSTSUBSCRIPT) are not equal to zero. Third, as expected, the smoothing does show an increase in the average error as evident by the non-unity constant coefficient values (cvel0subscript𝑐𝑣𝑒𝑙0c_{vel0}italic_c start_POSTSUBSCRIPT italic_v italic_e italic_l 0 end_POSTSUBSCRIPT, cch0subscript𝑐𝑐0c_{ch0}italic_c start_POSTSUBSCRIPT italic_c italic_h 0 end_POSTSUBSCRIPT). Finally, arbitrary initialization of the estimated covariance matrix, P𝑃Pitalic_P, yielded poor initial state estimations at the first TD. Therefore, to improve the initial state estimation and accelerate convergence of the KF, the P𝑃Pitalic_P is initialized to an average P𝑃Pitalic_P after convergence; yielding a much closer estimation of the real value for the first TD (MultiMo-MHR: initial P=[0.0582,0.0774;0.0774,0.1441].104P=[0.0582,0.0774;0.0774,0.1441].*10^{-4}italic_P = [ 0.0582 , 0.0774 ; 0.0774 , 0.1441 ] . ∗ 10 start_POSTSUPERSCRIPT - 4 end_POSTSUPERSCRIPT).

Refer to caption

Figure 4: Sensitivity to changes in the optimized parameters; c=100γ1+10γ2+10γ3subscript𝑐100subscript𝛾110subscript𝛾210subscript𝛾3\mathcal{L}_{c}=100\gamma_{1}+10\gamma_{2}+10\gamma_{3}caligraphic_L start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT = 100 italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + 10 italic_γ start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT + 10 italic_γ start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT from equations 9, 10.

Refer to caption

Figure 5: Change in the estimated ground height over multiple hops; where STD is the standard deviation, and the true ground height is zero.

Figure 4 shows the sensitivity of the optimized parameters to variation, where the cutoff frequencies (fHVSEsubscript𝑓𝐻𝑉𝑆𝐸f_{HVSE}italic_f start_POSTSUBSCRIPT italic_H italic_V italic_S italic_E end_POSTSUBSCRIPT, fHPEsubscript𝑓𝐻𝑃𝐸f_{HPE}italic_f start_POSTSUBSCRIPT italic_H italic_P italic_E end_POSTSUBSCRIPT) and the switching g-force parameter (gssubscript𝑔𝑠g_{s}italic_g start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT) are the most sensitive; resulting in larger percent changes to the cost function than the percent change to the parameter. Furthermore, the significant change caused by increasing the gssubscript𝑔𝑠g_{s}italic_g start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT, suggests that the low-g accelerometer’s noise characteristics change abruptly as its limits are approached, and that the optimization methodology can learn the sensor characteristic from the data.

As can be seen in [47], zeroing altitude (IMUPT-position) removes drift but also the ability to track absolute height in environments where the ground is not flat; resulting in an error relative to the previous contact surface of approximately 0.05 m per step. Absolute height can be recovered through summing the change in height of each stepping or hopping cycle prior to the zeroing. The change in the ground height between cycles can be calculated in two ways including,

Δh1nΔsubscript1𝑛\displaystyle\Delta h_{1n}roman_Δ italic_h start_POSTSUBSCRIPT 1 italic_n end_POSTSUBSCRIPT =(hHAnhTDn)(hHAn1hTDn1)absentsubscript𝐻𝐴𝑛subscript𝑇𝐷𝑛subscript𝐻𝐴𝑛1subscript𝑇𝐷𝑛1\displaystyle=(h_{HAn}-h_{TDn})-(h_{HAn-1}-h_{TDn-1})= ( italic_h start_POSTSUBSCRIPT italic_H italic_A italic_n end_POSTSUBSCRIPT - italic_h start_POSTSUBSCRIPT italic_T italic_D italic_n end_POSTSUBSCRIPT ) - ( italic_h start_POSTSUBSCRIPT italic_H italic_A italic_n - 1 end_POSTSUBSCRIPT - italic_h start_POSTSUBSCRIPT italic_T italic_D italic_n - 1 end_POSTSUBSCRIPT ) (11)
Δh2nΔsubscript2𝑛\displaystyle\Delta h_{2n}roman_Δ italic_h start_POSTSUBSCRIPT 2 italic_n end_POSTSUBSCRIPT =hTDnabsentsubscript𝑇𝐷𝑛\displaystyle=h_{TDn}= italic_h start_POSTSUBSCRIPT italic_T italic_D italic_n end_POSTSUBSCRIPT (12)

where the estimated height at the hop apex (hHAsubscript𝐻𝐴h_{HA}italic_h start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT) and TD (hTDsubscript𝑇𝐷h_{TD}italic_h start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT) are represented accordingly, and n𝑛nitalic_n indicates the hop number. The difference between them (hHAhTDsubscript𝐻𝐴subscript𝑇𝐷h_{HA}-h_{TD}italic_h start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT - italic_h start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT) gives a measure of the drop height, and the difference between subsequent drop heights, provides a measure of the change in the ground height (Δh1Δsubscript1\Delta h_{1}roman_Δ italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT). Second, the estimated TD height (hTDsubscript𝑇𝐷h_{TD}italic_h start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT) provides a direct measure of the change in the ground height (Δh2Δsubscript2\Delta h_{2}roman_Δ italic_h start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT). Taking the average of these two measures,

hgnsubscript𝑔𝑛\displaystyle h_{gn}italic_h start_POSTSUBSCRIPT italic_g italic_n end_POSTSUBSCRIPT =hgn1+(Δh1n+Δh2n)/2absentsubscript𝑔𝑛1Δsubscript1𝑛Δsubscript2𝑛2\displaystyle=h_{gn-1}+(\Delta h_{1n}+\Delta h_{2n})/2= italic_h start_POSTSUBSCRIPT italic_g italic_n - 1 end_POSTSUBSCRIPT + ( roman_Δ italic_h start_POSTSUBSCRIPT 1 italic_n end_POSTSUBSCRIPT + roman_Δ italic_h start_POSTSUBSCRIPT 2 italic_n end_POSTSUBSCRIPT ) / 2 (13)

yields an estimate of the change in the ground height for the subsequent hop or step (hgsubscript𝑔h_{g}italic_h start_POSTSUBSCRIPT italic_g end_POSTSUBSCRIPT). Comparing the estimated ground height error of KF1 (Figure 5) to that of an untrained KF [47], shows that not only can drift be significantly reduced but that the absolute ground height can be accurately tracked. With an overall average ground height error of 0.018 m after 30 hops of up to 4 meters, the trained KF1 can achieve a 64% improvement on the single step error and significantly better than the sum over the same 30 steps. This is due to the optimization tending towards zero mean error with minimum standard deviation; resulting in a minimum error with an equal chance to be positive or negative for each hop.

Refer to caption

Figure 6: Simulated State Estimation Error. a) Unbound and large bound position error, given state estimation at 10 to 400 Hz. b) Unbound and large bound velocity error, given state estimation at 10 to 400 Hz. c) Bound position error, given state estimation at 600 to 3360 Hz. b) Bound velocity error, given state estimation at 600 to 3360 Hz.

V Sensing Frequency

The previously developed dynamic model in [1] can be used to understand the impact of the sensing frequency on the HVSE; which fundamentally controls the aliasing of the accelerometer measurements. Specifically, the state estimation error boundedness and growth as a function of the limiting frequency; that being sensor read speeds or state estimation frequency. To explore the estimation error behavior, the measurement and estimation frequencies are varied over 12 values including [3360, 1680, 840, 700, 600, 500, 400, 300, 200, 100, 50, 10] Hz; where the MultiMo-MHR’s HVSE is optimized to, and operates at, 840 Hz. The simulation (MATLAB) results are shown in Fig. 6 with a control frequency of 400Hz, commanded height, hchsubscript𝑐h_{ch}italic_h start_POSTSUBSCRIPT italic_c italic_h end_POSTSUBSCRIPT, of 3 m, and the robot parameters in Appendix Robot Parameters. The results are shown for simulations both with and without sensor noise, and the controller is using the true state data, at the measurement frequency, as reference for control. The simulation without sensor noise (mean (w/o Noise)) can highlight effects of aliasing alone while the simulation with noise (mean and STD. (w/ Noise)) can provide an understanding of the true error growth characteristics.

As can be seen in Fig. 6a,b, frequencies from 10 to 100 Hz show an unbounded state estimation error with significant growth rate in the standard deviation as indicated by the large monotonic increase over time (Fig. 6a,b STD. (w/ Noise)); at similar-to\sim7 seconds both the 10 and 50 Hz trials are unable to sustain hopping and simply remain stationary on the ground. This unboundedness is similar to the drift associated with direct accelerometer integration (DAI) and therefore, provides no improvement in state estimation over DAI.

Frequencies from 200 to 400 Hz show a bound error characteristic in which the standard deviation in the error is not increasing monotonically (Fig. 6a,b STD. (w/ Noise)). However, both mean and standard deviation remain sufficiently large so as to cause variation in the subsequent hops (Fig. 6a,b mean and STD. (w/ Noise)).

Frequencies from 600 to 3360 Hz show both a bound mean error and a significant reduction in the standard deviation of the error, in both position and velocity, within each hop cycle (Fig. 6c,d mean and STD. (w/ Noise)); creating a deterministic starting point for the subsequent hop. Additionally, from Fig. 6c,d, we see both a low sensitivity to minor changes in frequency and diminishing returns as the frequency is increased. This suggests that the impact of accelerometer aliasing is saturating, and that the HVSE, trained at 840 Hz, is robust to frequency changes in the range of 600 to 3360 Hz. Interestingly, as seen in Fig. 6d, it is not required that the mean error in velocity be reduced; only that the standard deviation be reduced as the velocity scaling factor (δvLOsubscript𝛿𝑣𝐿𝑂\delta_{vLO}italic_δ start_POSTSUBSCRIPT italic_v italic_L italic_O end_POSTSUBSCRIPT) accounts for mean errors in velocity.

VI Hopping Height Control Experiments

Hopping experiments were conducted with the MultiMo-MHR (Fig. 1a) at target heights of 1, 2, 3, and 4 m. Trials had two possible measurement inputs for vertical control; true state (GT, motion capture system, n = 70 hops) or the HVSE position and velocity (n = 121 hops). The HVSE is recorded in all scenarios to identify if the HVSE and vertical controller are decoupled and to evaluate the estimator performance.

The experimental procedure begins with zeroing of the accelerometers and motion capture system with the robot positioned vertically on the ground. The robot is then flown to the set initial height with a separate controller (only used in the startup procedure) before entering the first drop state, beginning the hop cycle and activating the hopping height controller. For a complete breakdown of the hop cycle and corresponding HPE and HVSE see Fig. 3; where, Fig. 1 and 7 provide a visual reference of the hop cycle and HVSE.

Refer to caption

Figure 7: Example hopping trials using the hopping vertical state estimator (HVSE) based control a-b) Displays the vertical position and velocity error of the first 3 and last 2 hops for hopping trials at heights of 1,2,3&4 m. Each has a zoomed in region (a.1, b.1) showing the stance phase behavior. c) Snapshots from a high-speed video of the MultiMo-MHR hopping with the HVSE at a desired height of 3.25 m (Supplemental Video: Video1).

VI-A Results

Figure 8 shows the experimental results of the vertical position and velocity estimation using the HVSE. Table III compares the HVSE to other vertical position and velocity estimation techniques used in hopping robots across five error metrics (Appendix: Error Metrics) including: the mean of the normalized MAE in the vertical position (M1), the mean of the normalized MAE in the vertical velocity (M2), mean absolute percent error (MAPE) in the apex height (M3), mean absolute error (MAE) in the apex time (M4), and MAE in the desired apex height (M5). The table compares three vertical state estimation techniques to the HVSE. These include a Newtonian approach that assumes a ballistic aerial trajectory where the LO state is determined by a leg encoder (BA1) [4, 33, 2]. However, as rotor based hopping robots may not follow a ballistic trajectory, a natural extension is to dead-reckoning the accelerometer measurements (LO to TD) to improve the overall estimates (DR1). Finally, as shown in [49, 46, 47], a Kalman filter with a zero altitude update at TD can be employed to further improve the state estimation (KF3 = KF1 with only IMUPT-position(TD)). Four variations of the HVSE are shown including HVSE1, using the true state (GT) for control, and HVSE2, using the estimated state (SE) for control; where HVSE3 and HVSE4 only include the aerial phase errors. The controller for each technique can use either the true state (GT), focusing on the estimation characteristic, or the estimated state (SE), focusing on the overall hop height control performance.

Validating the simulation (Sim.) data, the experimental (Exp.) results show a similar reduction in both the error mean and standard deviation in position estimation at TD; as a result of the IMUPT-Position(TD) ((Sim.) Fig. 6c, (Exp.) Fig. 8a, a.1). The IMUPT-Velocity(MS) in both cases reduces the velocity mean error growth rate but with limited impact on the standard deviation ((Sim.) Fig. 6d, (Exp.) Fig. 8f). Finally, in both cases at LO (IMUPT-Position(LO), Velocity(LO)), a significant reduction in the velocity error’s mean and standard deviation is observed ((Sim.) Fig. 6d, (Exp.) Fig. 8g.1). The significant reductions in both the mean and standard deviations in the position and velocity errors creates a deterministic starting point for the subsequent hop cycle estimation; minimizing the error cause by the significant aliasing of the accelerometer measurements.

Table III highlights a number of key concepts. First, comparing the common hopping robot vertical state estimation technique (BA1) to its natural extension for rotor based hopping (DR1), suggests that the ballistic trajectory assumption may not be valid. Second, comparing DR1 to the Kalman filter based pedestrian navigation technique (KF3), suggests that a leg encoder can achieve similar results to that of a zeroing altitude condition at TD in a Kalman filter based approach. Third, comparing KF3 to the HVSE, suggests that a trained Kalman filter with the specified IMUPTs can improve the state estimation under significant aliasing conditions. Fourth, comparing HVSE1 to HVSE2 only shows a significant different in M5, suggesting that the controller and HVSE are independent; however, as expected M5 does show a significant difference, suggesting that the HVSE does introduce error beyond that caused by the controller itself. Fifth, comparing HVSE1 and HVSE2 to HVSE3 and HVSE4, suggests that the estimation of the stance phase states is more challenging; however, as the vast majority of the motion of the robot occurs in the aerial phase this will have a minimal overall impact. Sixth, from basic optics, the M1 metric is shown to be good approximation of the error in the horizontal state estimation, given that an optical flow sensor’s range finder (height measurement) is replaced with the HVSE (Appendix: Optical Flow Error). Seventh, given the MultiMo-MHR travels up to 8similar-toabsent8\sim 8∼ 8 meters at velocities that range between ±7similar-toabsentplus-or-minus7\sim\pm 7∼ ± 7 m/s in similar-to\sim2.6 seconds coupled with the significant and stochastic nature of aliasing, a certain amount of error is inherent without further direct measurements of the states. Finally, using experimental data, a KF or ESKF can be trained to extract as much information as possible from a highly aliased signal, and be incorporated back into a full state KF or ESKF.

Refer to caption

Figure 8: Mean and standard deviation of the position (a-d) and velocity (e-h) error for the experimental trials (n=70 hops) utilizing the true state (motion capture data) for height control. a&e) Stance down phase, TD to MS. a&e.1) Zoomed in region of (a&e) to show the behavior after TD). b&f) Stance up phase, MS to LO. c&g) Rebound phase, LO to HA. c&g.1) Zoomed in region from 0-15% of Rebound phase c&g.2) Zoomed in region from 15-100% Rebound phase. d&h) Drop phase, HA to next TD. Note) The phases are segmented by the true state data, while the dots indicate the points at which the robot identified the specified transition.
TABLE III: HVSE Performance Metrics
Metric Est. Meas. 1-4m Units Statistics 333
(M1) Mean BA1 GT 196.8 % t(138)=30.97, p=0.00
nMAE Traj DR1 GT 44.05 % t(138)=5.62, p=0.00
Pos. KF3 GT 60.45 % t(138)=7.49, p=0.00
HVSE1 GT 21.24 % t(189)=0.99, p=0.32
HVSE2 SE 19.46 % Comparison
HVSE3 GT 20.21 %
HVSE4 SE 18.97 %
(M2) Mean BA1 GT 179.9 % t(138)=24.15, p=0.00
nMAE Traj DR1 GT 28.15 % t(138)=3.17, p=0.00
Velo. KF3 GT 37.84 % t(138)=5.24, p=0.00
HVSE1 GT 19.58 % t(189)=0.31, p=0.76
HVSE2 SE 19.11 % Comparison
HVSE3 GT 17.08 %
HVSE4 SE 16.50 %
(M3) BA1 GT 53.85 % t(138)=32.01, p=0.00
MAPE DR1 GT 43.36 % t(138)=5.90, p=0.00
Apex KF3 GT 50.11 % t(138)=7.38, p=0.00
Height HVSE1 GT 13.77 % t(189)=0.83, p=0.41
HVSE2 SE 12.49 % Comparison
(M4) BA1 GT 0.7140 s t(138)=16.83, p=0.00
MAE DR1 GT 0.1323 s t(138)=2.66, p=0.00
Apex Time KF3 GT 0.1388 s t(138)=4.18, p=0.00
HVSE1 GT 0.0641 s t(189)=0.96, p=0.34
HVSE2 SE 0.0588 s Comparison
(M5) MAE HVSE1 GT 0.0912 m t(170)=5.87, p=0.00
Apex Height HVSE2 SE 0.2597 m Comparison
(desired)
  • Error metrics M1-M5 (n=191 hops, Appendix Error Metrics); where Meas. column indicates the measurement used for control (true state (GT), estimated state (SE)). * Values indicate the mean of the RMSE value for a complete hop cycle; TD to subsequent TD. Data uses only the aerial phase as detected by the robot for analysis. 333 Comparing the 1-4 m data to the HVSE2 using a two-tailed t-test given the null hypothesis with a 95% confidence interval. Related works, BA1 [4, 33, 2], KF3 [49, 46, 47].

VI-B Agility Metric

The commonly used hopping performance metric, vertical jumping agility (νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT), defined as an average climb speed in a gravitational environment, allows for quantifying and comparing jumping and hopping robot’s approximate average locomotion speed [42]. The metric is defined as follows, νVJA=h1tapogee=h1ts+trsubscript𝜈𝑉𝐽𝐴subscript1subscript𝑡𝑎𝑝𝑜𝑔𝑒𝑒subscript1subscript𝑡𝑠subscript𝑡𝑟\nu_{VJA}=\frac{h_{1}}{t_{apogee}}=\frac{h_{1}}{t_{s}+t_{r}}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT = divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_a italic_p italic_o italic_g italic_e italic_e end_POSTSUBSCRIPT end_ARG = divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT end_ARG where, the apex height, h1subscript1h_{1}italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT, stance through apex time, tapogeesubscript𝑡𝑎𝑝𝑜𝑔𝑒𝑒t_{apogee}italic_t start_POSTSUBSCRIPT italic_a italic_p italic_o italic_g italic_e italic_e end_POSTSUBSCRIPT, stance time, tssubscript𝑡𝑠t_{s}italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT, and rebound time, trsubscript𝑡𝑟t_{r}italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, define the metric. However, being focused on climb rate, the νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT is unable to account for the drop phase time of continuous hopping robots. A subsequent group amended this metric to the hopping agility metric (νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT) adding the drop phase time, tdsubscript𝑡𝑑t_{d}italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT, to quantify the overall average locomotion speed of continuous hoppers. The metric is defined as follows [2], νHA=2h1tcycle=2h1ts+tr+tdsubscript𝜈𝐻𝐴2subscript1subscript𝑡𝑐𝑦𝑐𝑙𝑒2subscript1subscript𝑡𝑠subscript𝑡𝑟subscript𝑡𝑑\nu_{HA}=\frac{2h_{1}}{t_{cycle}}=\frac{2h_{1}}{t_{s}+t_{r}+t_{d}}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT = divide start_ARG 2 italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_c italic_y italic_c italic_l italic_e end_POSTSUBSCRIPT end_ARG = divide start_ARG 2 italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG where, the total cycle time is tcycle=ts+tr+tdsubscript𝑡𝑐𝑦𝑐𝑙𝑒subscript𝑡𝑠subscript𝑡𝑟subscript𝑡𝑑t_{cycle}=t_{s}+t_{r}+t_{d}italic_t start_POSTSUBSCRIPT italic_c italic_y italic_c italic_l italic_e end_POSTSUBSCRIPT = italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT. However, the base metric, νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT, was developed to quantify existing systems’ performance from videos, and not as a robot design tool. Therefore, while increasing height and decreasing cycle time can increase both metrics, little can be said about control schemes, system losses, and non-constant hopping heights.

The similarity between the metrics allows for their unification, and a mathematical re-derivation allows for a deeper understanding of the effect of system design and operation parameters (Appendix: Hopping Agility). The unified hopping agility (UHA) metric is as follows:

νUHAsubscript𝜈𝑈𝐻𝐴\displaystyle\nu_{UHA}italic_ν start_POSTSUBSCRIPT italic_U italic_H italic_A end_POSTSUBSCRIPT =h1+βh0ts+tr+βtdabsentsubscript1𝛽subscript0subscript𝑡𝑠subscript𝑡𝑟𝛽subscript𝑡𝑑\displaystyle=\frac{h_{1}+\beta{h_{0}}}{t_{s}+t_{r}+\beta t_{d}}= divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_β italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_β italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG (14)
=h1+βh0ts+2h1g(1γr+γlr)+β2h0g(1γdγld)absentsubscript1𝛽subscript0subscript𝑡𝑠2subscript1𝑔1subscript𝛾𝑟subscript𝛾𝑙𝑟𝛽2subscript0𝑔1subscript𝛾𝑑subscript𝛾𝑙𝑑\displaystyle=\frac{h_{1}+\beta{h_{0}}}{t_{s}+\sqrt{\frac{2h_{1}}{g(1-\gamma_{% r}+\gamma_{lr})}}+\beta\sqrt{\frac{2h_{0}}{g(1-\gamma_{d}-\gamma_{ld})}}}= divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_β italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + square-root start_ARG divide start_ARG 2 italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) end_ARG end_ARG + italic_β square-root start_ARG divide start_ARG 2 italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) end_ARG end_ARG end_ARG (15)
h0subscript0\displaystyle h_{0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT =ζs2h1(1γr+γlr)(1γdγld)absentsuperscriptsubscript𝜁𝑠2subscript11subscript𝛾𝑟subscript𝛾𝑙𝑟1subscript𝛾𝑑subscript𝛾𝑙𝑑\displaystyle=\zeta_{s}^{2}\frac{h_{1}(1-\gamma_{r}+\gamma_{lr})}{(1-\gamma_{d% }-\gamma_{ld})}= italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) end_ARG start_ARG ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) end_ARG (16)

where, the previous hop height, h0subscript0h_{0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, and gravitational acceleration, g𝑔gitalic_g, are represented accordingly. The average rebound phase acceleration, arebound=g(1γr+γlr)subscript𝑎𝑟𝑒𝑏𝑜𝑢𝑛𝑑𝑔1subscript𝛾𝑟subscript𝛾𝑙𝑟a_{rebound}=-g(1-\gamma_{r}+\gamma_{lr})italic_a start_POSTSUBSCRIPT italic_r italic_e italic_b italic_o italic_u italic_n italic_d end_POSTSUBSCRIPT = - italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ), and the average drop phase acceleration, adrop=g(1γdγld)subscript𝑎𝑑𝑟𝑜𝑝𝑔1subscript𝛾𝑑subscript𝛾𝑙𝑑a_{drop}=-g(1-\gamma_{d}-\gamma_{ld})italic_a start_POSTSUBSCRIPT italic_d italic_r italic_o italic_p end_POSTSUBSCRIPT = - italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ), are composed of both energy input, [γr,γd]<1subscript𝛾𝑟subscript𝛾𝑑1[\gamma_{r},\gamma_{d}]<1[ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ] < 1, representing average thrust forces in rebound and drop, and energy loss, [γlr,γld]0subscript𝛾𝑙𝑟subscript𝛾𝑙𝑑0[\gamma_{lr},\gamma_{ld}]\geq 0[ italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ] ≥ 0, representing average drag forces in rebound and drop; where positive [γr,γd]subscript𝛾𝑟subscript𝛾𝑑[\gamma_{r},\gamma_{d}][ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ] indicates upward thrust and [γlr,γld]subscript𝛾𝑙𝑟subscript𝛾𝑙𝑑[\gamma_{lr},\gamma_{ld}][ italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ] are always opposite the velocity vector. The change in stance phase velocity between TD and LO, ζs>0subscript𝜁𝑠0\zeta_{s}>0italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT > 0, can capture energy lost, 0<ζs<10subscript𝜁𝑠10<\zeta_{s}<10 < italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT < 1, no energy change, ζs=1subscript𝜁𝑠1\zeta_{s}=1italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1, and energy gained, ζs>1subscript𝜁𝑠1\zeta_{s}>1italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT > 1 in the stance phase. The previous vertical jumping agility metric (νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT) can be derived from β=0𝛽0\beta=0italic_β = 0 whereas, the hopping agility metric (νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT) can be derived from β=1𝛽1\beta=1italic_β = 1, thus unifying the two metrics within a mathematical framework to inform future hopping robot design. Comparing the MultiMo-MHR to existing hopping robots (Table IV) shows that it is able to outperform not only all existing robots but the Galago animal as well.

TABLE IV: Hopping Platforms Vertical Agility
Platform Hop tapogeesubscript𝑡𝑎𝑝𝑜𝑔𝑒𝑒t_{apogee}italic_t start_POSTSUBSCRIPT italic_a italic_p italic_o italic_g italic_e italic_e end_POSTSUBSCRIPT tcyclesubscript𝑡𝑐𝑦𝑐𝑙𝑒t_{cycle}italic_t start_POSTSUBSCRIPT italic_c italic_y italic_c italic_l italic_e end_POSTSUBSCRIPT νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT
Height(m) (s) (s) (m/s) [42] (m/s) [2]
Salto[42] 1.008 0.58111 1.03111 1.75 1.96
Salto-1P[30] 1.252 0.68111 1.15111 1.83 2.18
Galago[42] 1.742 0.78111 1.55111 2.24 2.24
PogoDrone[6] 0.7 4.18222 8.25222 0.17 0.17
PogoX[3] 0.6 0.44222 0.88222 1.37 1.37
HopCopter[2] 1.63 0.71333 1.37333 2.30 2.37
MultiMo-MHR444 3.92 1.58 2.60 2.47 3.01
MultiMo-MHR555 4.02 1.85 2.86 2.18 2.81
  • Note: Vertical Jumping Agility (νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT) [42]. Hopping Agility (νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT) [2]. 111: assumes drop time equals rise time given ballistic motion,222: estimated by paper data,333: assumes rise and drop time are half the total air time,444: MultiMo-MHR max agility,555: MultiMo-MHR max achieved height.

VII Summary

Here we have shown a light-weight, low computational load, IMU only, Kalman filter-based hopping vertical state estimator (position, velocity) coupled to a hopping phase estimator (drop, stance down, stance up, rebound) and the training procedure to learn the specific characteristics of the target system, including significant aliasing of the acceleration measurements. As discussed in the paper, the resulting filter can be reincorporated into a full state Kalman filter and error state Kalman filter. Finally, unlike previous works that trade absolute for relative height estimation to remove drift, the characteristics of the learned filter result in both an absolute height estimation and a significantly reduced drift (average ground height drift of 0.018 m after 30 hops of up to 4 m). The filter was experimentally validated on the MultiMo-MHR with hops up to 4.02 m, 2.47x greater than the next highest continuous hopping robot, at velocities approaching ±7plus-or-minus7\pm 7± 7 m/s. This results in a mean absolute percent error in hop apex height (M3) of 12.5% with an aerial trajectory average normalized mean absolute error in position (M1) and velocity (M2) of 19% and 16.5%, respectively.

Appendix

Hopping Agility

Expanding upon the Vertical Jumping Agility (νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT)[42] and Hopping Agility (νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT)[2] metrics, we developed a unified agility metric (UHA: Unified Hopping Agility). Using plots from [42], the hopping cycle for the agility metric proceeds from the prior HA to current HA. While this is irrelevant for constant hopping height cycles, it can create a critical difference in agility for non-constant hopping height cycles.

Using fundamental Newtonian equations and starting with the sequence of prior HA to TD, the fundamental equations are,

adropsubscript𝑎𝑑𝑟𝑜𝑝\displaystyle a_{drop}italic_a start_POSTSUBSCRIPT italic_d italic_r italic_o italic_p end_POSTSUBSCRIPT =(g+ad+ald)=g(1γdγld)absent𝑔subscript𝑎𝑑subscript𝑎𝑙𝑑𝑔1subscript𝛾𝑑subscript𝛾𝑙𝑑\displaystyle=(-g+a_{d}+a_{ld})=-g(1-\gamma_{d}-\gamma_{ld})= ( - italic_g + italic_a start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT + italic_a start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) = - italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) (S1)
vTDsubscript𝑣𝑇𝐷\displaystyle v_{TD}italic_v start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT =v0+adroptdabsentsubscript𝑣0subscript𝑎𝑑𝑟𝑜𝑝subscript𝑡𝑑\displaystyle=v_{0}+a_{drop}t_{d}= italic_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + italic_a start_POSTSUBSCRIPT italic_d italic_r italic_o italic_p end_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT (S2)
hTDsubscript𝑇𝐷\displaystyle h_{TD}italic_h start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT =h0+vTDtd+12adroptd2absentsubscript0subscript𝑣𝑇𝐷subscript𝑡𝑑12subscript𝑎𝑑𝑟𝑜𝑝superscriptsubscript𝑡𝑑2\displaystyle=h_{0}+v_{TD}t_{d}+\frac{1}{2}a_{drop}t_{d}^{2}= italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT + italic_v start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT + divide start_ARG 1 end_ARG start_ARG 2 end_ARG italic_a start_POSTSUBSCRIPT italic_d italic_r italic_o italic_p end_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (S3)

where we have a control input in the drop phase of ad=gγdsubscript𝑎𝑑𝑔subscript𝛾𝑑a_{d}=g\gamma_{d}italic_a start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT = italic_g italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT and accompanying loss shown as ald=gγldsubscript𝑎𝑙𝑑𝑔subscript𝛾𝑙𝑑a_{ld}=g\gamma_{ld}italic_a start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT = italic_g italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT. The system starts at an initial height and velocity (h0,vh0subscript0subscript𝑣0h_{0},v_{h0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_v start_POSTSUBSCRIPT italic_h 0 end_POSTSUBSCRIPT) proceeds to a touchdown position and velocity of (hTD,vTDsubscript𝑇𝐷subscript𝑣𝑇𝐷h_{TD},v_{TD}italic_h start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT , italic_v start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT) over a drop phase time window (tdsubscript𝑡𝑑t_{d}italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT). In the stance phase, between TD and the subsequent LO, the total energy may change do to loss or addition,

ζs=vLOvTDsubscript𝜁𝑠subscript𝑣𝐿𝑂subscript𝑣𝑇𝐷\displaystyle\zeta_{s}=\frac{v_{LO}}{-v_{TD}}italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = divide start_ARG italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT end_ARG start_ARG - italic_v start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT end_ARG (S4)

over a time period (tssubscript𝑡𝑠t_{s}italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT). The last segment is the rebound phase, between LO and the current HA, in which the equations are as follows,

areboundsubscript𝑎𝑟𝑒𝑏𝑜𝑢𝑛𝑑\displaystyle a_{rebound}italic_a start_POSTSUBSCRIPT italic_r italic_e italic_b italic_o italic_u italic_n italic_d end_POSTSUBSCRIPT =(g+aralr)=g(1γr+γlr)absent𝑔subscript𝑎𝑟subscript𝑎𝑙𝑟𝑔1subscript𝛾𝑟subscript𝛾𝑙𝑟\displaystyle=(-g+a_{r}-a_{lr})=-g(1-\gamma_{r}+\gamma_{lr})= ( - italic_g + italic_a start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT - italic_a start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) = - italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) (S5)
v1subscript𝑣1\displaystyle v_{1}italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT =vLO+areboundtrabsentsubscript𝑣𝐿𝑂subscript𝑎𝑟𝑒𝑏𝑜𝑢𝑛𝑑subscript𝑡𝑟\displaystyle=v_{LO}+a_{rebound}t_{r}= italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT + italic_a start_POSTSUBSCRIPT italic_r italic_e italic_b italic_o italic_u italic_n italic_d end_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT (S6)
h1subscript1\displaystyle h_{1}italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT =hLO+vLOtr+12areboundtr2absentsubscript𝐿𝑂subscript𝑣𝐿𝑂subscript𝑡𝑟12subscript𝑎𝑟𝑒𝑏𝑜𝑢𝑛𝑑superscriptsubscript𝑡𝑟2\displaystyle=h_{LO}+v_{LO}t_{r}+\frac{1}{2}a_{rebound}t_{r}^{2}= italic_h start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT + italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + divide start_ARG 1 end_ARG start_ARG 2 end_ARG italic_a start_POSTSUBSCRIPT italic_r italic_e italic_b italic_o italic_u italic_n italic_d end_POSTSUBSCRIPT italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT (S7)

where we have a control input in the rebound phase of ar=gγrsubscript𝑎𝑟𝑔subscript𝛾𝑟a_{r}=g\gamma_{r}italic_a start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT = italic_g italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT with accompanying loss shown as alr=gγlrsubscript𝑎𝑙𝑟𝑔subscript𝛾𝑙𝑟a_{lr}=g\gamma_{lr}italic_a start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT = italic_g italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT. The system starts at LO with an initial height and velocity (hLO,vLOsubscript𝐿𝑂subscript𝑣𝐿𝑂h_{LO},v_{LO}italic_h start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT , italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT) and continues to an ultimate height and velocity of (h1,v1subscript1subscript𝑣1h_{1},v_{1}italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT) over a rebound time window (trsubscript𝑡𝑟t_{r}italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT).

Solving for the drop phase time, tdsubscript𝑡𝑑t_{d}italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT, from Eq. S3 and S2 and the rebound phase time, trsubscript𝑡𝑟t_{r}italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT, from Eq. S6 and S7, assuming [v0,v1,hTD,hLO]=0subscript𝑣0subscript𝑣1subscript𝑇𝐷subscript𝐿𝑂0[v_{0},v_{1},h_{TD},h_{LO}]=0[ italic_v start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_v start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_h start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT , italic_h start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT ] = 0 results in,

tdsubscript𝑡𝑑\displaystyle t_{d}italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT =2h0g(1γdγld)absent2subscript0𝑔1subscript𝛾𝑑subscript𝛾𝑙𝑑\displaystyle=\sqrt{\frac{2h_{0}}{g(1-\gamma_{d}-\gamma_{ld})}}= square-root start_ARG divide start_ARG 2 italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) end_ARG end_ARG (S8)
trsubscript𝑡𝑟\displaystyle t_{r}italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT =2h1g(1γr+γlr)absent2subscript1𝑔1subscript𝛾𝑟subscript𝛾𝑙𝑟\displaystyle=\sqrt{\frac{2h_{1}}{g(1-\gamma_{r}+\gamma_{lr})}}= square-root start_ARG divide start_ARG 2 italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) end_ARG end_ARG (S9)

Using a switching parameters, β𝛽\betaitalic_β, the two agility metrics, νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT and νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT, can then be combined as,

ν𝜈\displaystyle\nuitalic_ν =h1+βh0ts+tr+βtdabsentsubscript1𝛽subscript0subscript𝑡𝑠subscript𝑡𝑟𝛽subscript𝑡𝑑\displaystyle=\frac{h_{1}+\beta{h_{0}}}{t_{s}+t_{r}+\beta t_{d}}= divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_β italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_β italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_ARG
=h1+βh0ts+2h1g(1γr+γlr)+β2h0g(1γdγld)absentsubscript1𝛽subscript0subscript𝑡𝑠2subscript1𝑔1subscript𝛾𝑟subscript𝛾𝑙𝑟𝛽2subscript0𝑔1subscript𝛾𝑑subscript𝛾𝑙𝑑\displaystyle=\frac{h_{1}+\beta{h_{0}}}{t_{s}+\sqrt{\frac{2h_{1}}{g(1-\gamma_{% r}+\gamma_{lr})}}+\beta\sqrt{\frac{2h_{0}}{g(1-\gamma_{d}-\gamma_{ld})}}}= divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT + italic_β italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT + square-root start_ARG divide start_ARG 2 italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG start_ARG italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) end_ARG end_ARG + italic_β square-root start_ARG divide start_ARG 2 italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_ARG start_ARG italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) end_ARG end_ARG end_ARG (S10)

where, β=0𝛽0\beta=0italic_β = 0 gives the vertical jumping agility metric and β=1𝛽1\beta=1italic_β = 1 gives the hopping agility metric, thus unifying the two metrics within a mathematical framework to inform future hopping robot design. To include changes in energy during the stance phase (ζssubscript𝜁𝑠\zeta_{s}italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT), first solve eq. S2 and S6 for their time and substitute them into eq. S3 and S7, respectively. Solve each of these for their respective velocity at TD (vTDsubscript𝑣𝑇𝐷v_{TD}italic_v start_POSTSUBSCRIPT italic_T italic_D end_POSTSUBSCRIPT) or LO (vLOsubscript𝑣𝐿𝑂v_{LO}italic_v start_POSTSUBSCRIPT italic_L italic_O end_POSTSUBSCRIPT), substitute those into eq. S4, and solve for h0subscript0h_{0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT resulting in,

h0subscript0\displaystyle h_{0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT =ζs2h1(1γr+γlr)(1γdγld)absentsuperscriptsubscript𝜁𝑠2subscript11subscript𝛾𝑟subscript𝛾𝑙𝑟1subscript𝛾𝑑subscript𝛾𝑙𝑑\displaystyle=\zeta_{s}^{2}\frac{h_{1}(1-\gamma_{r}+\gamma_{lr})}{(1-\gamma_{d% }-\gamma_{ld})}= italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT start_POSTSUPERSCRIPT 2 end_POSTSUPERSCRIPT divide start_ARG italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ) end_ARG start_ARG ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ) end_ARG (S11)

where, the previous hop height, h0subscript0h_{0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, and gravitational acceleration, g𝑔gitalic_g, are represented accordingly. The average rebound phase acceleration, arebound=g(1γr+γlr)subscript𝑎𝑟𝑒𝑏𝑜𝑢𝑛𝑑𝑔1subscript𝛾𝑟subscript𝛾𝑙𝑟a_{rebound}=-g(1-\gamma_{r}+\gamma_{lr})italic_a start_POSTSUBSCRIPT italic_r italic_e italic_b italic_o italic_u italic_n italic_d end_POSTSUBSCRIPT = - italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT + italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT ), and the average drop phase acceleration, adrop=g(1γdγld)subscript𝑎𝑑𝑟𝑜𝑝𝑔1subscript𝛾𝑑subscript𝛾𝑙𝑑a_{drop}=-g(1-\gamma_{d}-\gamma_{ld})italic_a start_POSTSUBSCRIPT italic_d italic_r italic_o italic_p end_POSTSUBSCRIPT = - italic_g ( 1 - italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT - italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ), are composed of both energy input, [γr,γd]<1subscript𝛾𝑟subscript𝛾𝑑1[\gamma_{r},\gamma_{d}]<1[ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ] < 1, representing average thrust forces in rebound and drop, and energy loss, [γlr,γld]0subscript𝛾𝑙𝑟subscript𝛾𝑙𝑑0[\gamma_{lr},\gamma_{ld}]\geq 0[ italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ] ≥ 0, representing average drag forces in rebound and drop; where positive [γr,γd]subscript𝛾𝑟subscript𝛾𝑑[\gamma_{r},\gamma_{d}][ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ] indicates upward thrust and [γlr,γld]subscript𝛾𝑙𝑟subscript𝛾𝑙𝑑[\gamma_{lr},\gamma_{ld}][ italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ] are always opposite the velocity vector. The change in stance phase velocity between TD and LO, ζs>0subscript𝜁𝑠0\zeta_{s}>0italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT > 0, can capture energy lost, 0<ζs<10subscript𝜁𝑠10<\zeta_{s}<10 < italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT < 1, no energy change, ζs=1subscript𝜁𝑠1\zeta_{s}=1italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1, and energy gained, ζs>1subscript𝜁𝑠1\zeta_{s}>1italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT > 1 in the stance phase. Comparing the MultiMo-MHR at differing hopping heights highlights how the hopping height affects the metrics (Table S1); where an increase is observed at lower heights and a saturation appears to occur at higher heights.

Analysis of the metric can highlight key characteristics for enhancing robot agility. First, given Eq. 15, assuming ballistic hopping at a constant height with no inputs or losses, and zero stance time ([γlr,γld]=0,ζs=1,[γr,γd]=0,h1=h0,ts=0formulae-sequencesubscript𝛾𝑙𝑟subscript𝛾𝑙𝑑0formulae-sequencesubscript𝜁𝑠1formulae-sequencesubscript𝛾𝑟subscript𝛾𝑑0formulae-sequencesubscript1subscript0subscript𝑡𝑠0[\gamma_{lr},\gamma_{ld}]=0,\zeta_{s}=1,[\gamma_{r},\gamma_{d}]=0,h_{1}=h_{0},% t_{s}=0[ italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ] = 0 , italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 1 , [ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ] = 0 , italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT = italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT = 0), the resulting equation, ν=2gh1/2𝜈2𝑔subscript12\nu=\sqrt{2gh_{1}}/2italic_ν = square-root start_ARG 2 italic_g italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_ARG / 2, shows the metric will increase with increasing gravity or hopping height. Moreover, as the metric switching parameter, β𝛽\betaitalic_β, cancels out, the two metrics are equivalent under these conditions.

Second, given Eq. 15, it is clear that increasing the metric requires decreasing the denominator time parameters for the specified heights. The tssubscript𝑡𝑠t_{s}italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT is inversely related to the robot’s natural frequency (mB/Kssimilar-toabsentsubscript𝑚𝐵subscript𝐾𝑠\sim\sqrt{m_{B}/K_{s}}∼ square-root start_ARG italic_m start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT / italic_K start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT end_ARG); where, the spring constant, Kssubscript𝐾𝑠K_{s}italic_K start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT, and body mass, mBsubscript𝑚𝐵m_{B}italic_m start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT are represented accordingly. Therefore, the stance time (tssubscript𝑡𝑠t_{s}italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT) can be minimized by increasing Kssubscript𝐾𝑠K_{s}italic_K start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT and decrease mBsubscript𝑚𝐵m_{B}italic_m start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT. The drop and rebound phase times (td,trsubscript𝑡𝑑subscript𝑡𝑟t_{d},t_{r}italic_t start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT , italic_t start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT) can be minimized by maximizing the acceleration magnitudes (adrop,areboundsubscript𝑎𝑑𝑟𝑜𝑝subscript𝑎𝑟𝑒𝑏𝑜𝑢𝑛𝑑a_{drop},a_{rebound}italic_a start_POSTSUBSCRIPT italic_d italic_r italic_o italic_p end_POSTSUBSCRIPT , italic_a start_POSTSUBSCRIPT italic_r italic_e italic_b italic_o italic_u italic_n italic_d end_POSTSUBSCRIPT); thus requiring maximum aerial forces. As the MultiMo-MHR can only generate thrust in the positive vertical direction, 0[γr,γd]<10subscript𝛾𝑟subscript𝛾𝑑10\leq[\gamma_{r},\gamma_{d}]<10 ≤ [ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ] < 1, the metric can be maximized by minimizing [γr,γd,γld]=0subscript𝛾𝑟subscript𝛾𝑑subscript𝛾𝑙𝑑0[\gamma_{r},\gamma_{d},\gamma_{ld}]=0[ italic_γ start_POSTSUBSCRIPT italic_r end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT italic_l italic_d end_POSTSUBSCRIPT ] = 0, and maximizing the rebound loss γlrsubscript𝛾𝑙𝑟\gamma_{lr}italic_γ start_POSTSUBSCRIPT italic_l italic_r end_POSTSUBSCRIPT. This will inherently result in non-constant hopping height unless energy is added in stance; the amount of which can be determined by solving Eq. 16 for the velocity ratio between TD and LO, ζssubscript𝜁𝑠\zeta_{s}italic_ζ start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT. This does highlight an additional important consideration of the metric. The metric can be increased with a higher previous hop, h0subscript0h_{0}italic_h start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT, followed by a lower hop, h1subscript1h_{1}italic_h start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT. However, this would reduce the hopping height with each cycle, and therefore could be used to increase agility for individual hops at the expense of long-term agility.

TABLE S1: MultiMo-MHR Vertical Agility
Meas. Hop tssubscript𝑡𝑠t_{s}italic_t start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT tapogeesubscript𝑡𝑎𝑝𝑜𝑔𝑒𝑒t_{apogee}italic_t start_POSTSUBSCRIPT italic_a italic_p italic_o italic_g italic_e italic_e end_POSTSUBSCRIPT tcyclesubscript𝑡𝑐𝑦𝑐𝑙𝑒t_{cycle}italic_t start_POSTSUBSCRIPT italic_c italic_y italic_c italic_l italic_e end_POSTSUBSCRIPT νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT
(n=hop num.) Height(m) (s) (s) (s) (m/s) [42] (m/s) [2]
GT (n=16) 1.03 ±plus-or-minus\pm± 0.05 0.059 ±plus-or-minus\pm± 0.001 0.68 ±plus-or-minus\pm± 0.04 1.18 ±plus-or-minus\pm± 0.04 1.52 1.74
HVSE (n=18) 1.00 ±plus-or-minus\pm± 0.00 0.058 ±plus-or-minus\pm± 0.002 0.69 ±plus-or-minus\pm± 0.06 1.19 ±plus-or-minus\pm± 0.08 1.45 1.68
GT (n=19) 2.02 ±plus-or-minus\pm± 0.02 0.067 ±plus-or-minus\pm± 0.001 0.98 ±plus-or-minus\pm± 0.02 1.68 ±plus-or-minus\pm± 0.01 2.05 2.41
HVSE (n=28) 1.97 ±plus-or-minus\pm± 0.11 0.07 ±plus-or-minus\pm± 0.001 0.96 ±plus-or-minus\pm± 0.11 1.65 ±plus-or-minus\pm± 0.13 2.04 2.39
GT (n=16) 3.03 ±plus-or-minus\pm± 0.06 0.069 ±plus-or-minus\pm± 0.001 1.26 ±plus-or-minus\pm± 0.03 2.14 ±plus-or-minus\pm± 0.04 2.40 2.84
HVSE (n=39) 2.85 ±plus-or-minus\pm± 0.15 0.07 ±plus-or-minus\pm± 0.001 1.29 ±plus-or-minus\pm± 0.11 2.13 ±plus-or-minus\pm± 0.13 2.20 2.68
GT (n=19) 3.78 ±plus-or-minus\pm± 0.13 0.071 ±plus-or-minus\pm± 0.001 1.71 ±plus-or-minus\pm± 0.07 2.72 ±plus-or-minus\pm± 0.08 2.21 2.78
HVSE (n=36) 3.41 ±plus-or-minus\pm± 0.29 0.071 ±plus-or-minus\pm± 0.001 1.64 ±plus-or-minus\pm± 0.19 2.59 ±plus-or-minus\pm± 0.24 2.08 2.63
GT (max) 3.92 0.071 1.58 2.60 2.47 3.01
HVSE (max) 4.02 0.072 1.85 2.86 2.18 2.81
  • Note: Vertical Jumping Agility (νVJAsubscript𝜈𝑉𝐽𝐴\nu_{VJA}italic_ν start_POSTSUBSCRIPT italic_V italic_J italic_A end_POSTSUBSCRIPT)[42]. Hopping Agility (νHAsubscript𝜈𝐻𝐴\nu_{HA}italic_ν start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT) [2].

TABLE S2: Robot Parameters
Parm. Description Value Units
mBsubscript𝑚𝐵m_{B}italic_m start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT Body Mass 0.5619 kg
mLsubscript𝑚𝐿m_{L}italic_m start_POSTSUBSCRIPT italic_L end_POSTSUBSCRIPT Leg Mass 0.0981 kg
IcmBsubscript𝐼𝑐𝑚𝐵I_{cmB}italic_I start_POSTSUBSCRIPT italic_c italic_m italic_B end_POSTSUBSCRIPT Body Rotational Inertia 0.0012 kg m2
IcmLsubscript𝐼𝑐𝑚𝐿I_{cmL}italic_I start_POSTSUBSCRIPT italic_c italic_m italic_L end_POSTSUBSCRIPT Leg Rotational Inertia 0.0019 kg m2
Kssubscript𝐾𝑠K_{s}italic_K start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT Main Power Spring Const. 704 N/m
Klbsubscript𝐾𝑙𝑏K_{lb}italic_K start_POSTSUBSCRIPT italic_l italic_b end_POSTSUBSCRIPT Leg-Body Spring Const. 400Ks400subscript𝐾𝑠400K_{s}400 italic_K start_POSTSUBSCRIPT italic_s end_POSTSUBSCRIPT N/m
blbsubscript𝑏𝑙𝑏b_{lb}italic_b start_POSTSUBSCRIPT italic_l italic_b end_POSTSUBSCRIPT Leg-Body Damping Coef. 100 N s/m
L1subscript𝐿1L_{1}italic_L start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT Leg Top to CML 0.1053 m
L2subscript𝐿2L_{2}italic_L start_POSTSUBSCRIPT 2 end_POSTSUBSCRIPT Leg Bottom to CML 0.2821 m
L3subscript𝐿3L_{3}italic_L start_POSTSUBSCRIPT 3 end_POSTSUBSCRIPT Body CMB from Top Leg 0.1191 m
dmtrxsubscript𝑑𝑚𝑡𝑟𝑥d_{mtrx}italic_d start_POSTSUBSCRIPT italic_m italic_t italic_r italic_x end_POSTSUBSCRIPT Motor Offset from Body CM 0.0820 m
dmtrysubscript𝑑𝑚𝑡𝑟𝑦d_{mtry}italic_d start_POSTSUBSCRIPT italic_m italic_t italic_r italic_y end_POSTSUBSCRIPT Motor Offset from Body CM 0 m
  • Full schematic diagram shown in [1].

Robot Parameters

Table S2 shows the robot parameters used in the dynamic simulation from pervious work [1].

Error Metrics

Five error metrics are shown in Table S3 including:

M1𝑀1\displaystyle M1italic_M 1 =1/ndjnd(1npinp|ziz^i|1npinpz^i)jabsent1subscript𝑛𝑑superscriptsubscript𝑗subscript𝑛𝑑subscript1subscript𝑛𝑝superscriptsubscript𝑖subscript𝑛𝑝subscript𝑧𝑖subscript^𝑧𝑖1subscript𝑛𝑝superscriptsubscript𝑖subscript𝑛𝑝subscript^𝑧𝑖𝑗\displaystyle=1/n_{d}\sum_{j}^{n_{d}}\Bigg{(}\frac{\frac{1}{n_{p}}\sum_{i}^{n_% {p}}\big{|}z_{i}-\hat{z}_{i}\big{|}}{\frac{1}{n_{p}}\sum_{i}^{n_{p}}\hat{z}_{i% }}\Bigg{)}_{j}= 1 / italic_n start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ∑ start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( divide start_ARG divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | italic_z start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | end_ARG start_ARG divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_POSTSUPERSCRIPT over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_ARG ) start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT (S12)
M2𝑀2\displaystyle M2italic_M 2 =1/ndjnd(1npinp|z˙iz˙^i|1npinp|z˙^i|)jabsent1subscript𝑛𝑑superscriptsubscript𝑗subscript𝑛𝑑subscript1subscript𝑛𝑝superscriptsubscript𝑖subscript𝑛𝑝subscript˙𝑧𝑖subscript^˙𝑧𝑖1subscript𝑛𝑝superscriptsubscript𝑖subscript𝑛𝑝subscript^˙𝑧𝑖𝑗\displaystyle=1/n_{d}\sum_{j}^{n_{d}}\Bigg{(}\frac{\frac{1}{n_{p}}\sum_{i}^{n_% {p}}\big{|}\dot{z}_{i}-\hat{\dot{z}}_{i}\big{|}}{\frac{1}{n_{p}}\sum_{i}^{n_{p% }}|\hat{\dot{z}}_{i}|}\Bigg{)}_{j}= 1 / italic_n start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT ∑ start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT end_POSTSUPERSCRIPT ( divide start_ARG divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | over˙ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT - over^ start_ARG over˙ start_ARG italic_z end_ARG end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | end_ARG start_ARG divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | over^ start_ARG over˙ start_ARG italic_z end_ARG end_ARG start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT | end_ARG ) start_POSTSUBSCRIPT italic_j end_POSTSUBSCRIPT (S13)
M3𝑀3\displaystyle M3italic_M 3 =1nHAinHA|zHAiz^HAiz^HAi|absent1subscript𝑛𝐻𝐴superscriptsubscript𝑖subscript𝑛𝐻𝐴subscript𝑧𝐻subscript𝐴𝑖subscript^𝑧𝐻subscript𝐴𝑖subscript^𝑧𝐻subscript𝐴𝑖\displaystyle=\frac{1}{n_{HA}}\sum_{i}^{n_{HA}}\bigg{|}\frac{z_{HA_{i}}-\hat{z% }_{HA_{i}}}{\hat{z}_{HA_{i}}}\bigg{|}= divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | divide start_ARG italic_z start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT - over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_ARG start_ARG over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT end_ARG | (S14)
M4𝑀4\displaystyle M4italic_M 4 =1nHAinHA|tHAit^HAi|absent1subscript𝑛𝐻𝐴superscriptsubscript𝑖subscript𝑛𝐻𝐴subscript𝑡𝐻subscript𝐴𝑖subscript^𝑡𝐻subscript𝐴𝑖\displaystyle=\frac{1}{n_{HA}}\sum_{i}^{n_{HA}}\big{|}t_{HA_{i}}-\hat{t}_{HA_{% i}}\big{|}= divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | italic_t start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT - over^ start_ARG italic_t end_ARG start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT | (S15)
M5𝑀5\displaystyle M5italic_M 5 =1nHAinHA|zHAiz¯HAi|absent1subscript𝑛𝐻𝐴superscriptsubscript𝑖subscript𝑛𝐻𝐴subscript𝑧𝐻subscript𝐴𝑖subscript¯𝑧𝐻subscript𝐴𝑖\displaystyle=\frac{1}{n_{HA}}\sum_{i}^{n_{HA}}\big{|}z_{HA_{i}}-\bar{z}_{HA_{% i}}\big{|}= divide start_ARG 1 end_ARG start_ARG italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_ARG ∑ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT end_POSTSUPERSCRIPT | italic_z start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT - over¯ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT end_POSTSUBSCRIPT | (S16)

where, ndsubscript𝑛𝑑n_{d}italic_n start_POSTSUBSCRIPT italic_d end_POSTSUBSCRIPT is the number of hops, npsubscript𝑛𝑝n_{p}italic_n start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT is the number of points per hop (TD to subsequent TD), nHAsubscript𝑛𝐻𝐴n_{HA}italic_n start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT is the number of hop apexes, and [z,z^],[z˙,z˙^],[zHA,z^HA],[tHA,t^HA]𝑧^𝑧˙𝑧^˙𝑧subscript𝑧𝐻𝐴subscript^𝑧𝐻𝐴subscript𝑡𝐻𝐴subscript^𝑡𝐻𝐴[z,\hat{z}],[\dot{z},\hat{\dot{z}}],[z_{HA},\hat{z}_{HA}],[t_{HA},\hat{t}_{HA}][ italic_z , over^ start_ARG italic_z end_ARG ] , [ over˙ start_ARG italic_z end_ARG , over^ start_ARG over˙ start_ARG italic_z end_ARG end_ARG ] , [ italic_z start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT , over^ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT ] , [ italic_t start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT , over^ start_ARG italic_t end_ARG start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT ] represent the estimated and true vertical position, velocity, hop apex height, and hop apex time, accordingly. Finally, z¯HAsubscript¯𝑧𝐻𝐴\bar{z}_{HA}over¯ start_ARG italic_z end_ARG start_POSTSUBSCRIPT italic_H italic_A end_POSTSUBSCRIPT represents the desired hop apex height.

TABLE S3: HVSE Performance Metrics
Set Height (m)
Metric Est. Meas. 1 2 3 4 1-4m Units Comparison333 to
Description Type HVSE
(M1) Mean BA1 GT 171.9 157.7 193.5 248.8 196.8 % t(138) = 30.97, p = 0.00
nMAE Traj Pos. DR1 GT 39.10 30.06 29.10 74.01 44.05 % t(138) = 5.62, p = 0.00
KF3 GT 50.02 44.12 51.64 89.64 60.45 % t(138) = 7.49, p = 0.00
HVSE1 GT 24.64 20.29 13.81 25.60 21.24 % t(189) = 0.99, p = 0.32
HVSE2 SE 25.18 22.48 13.88 19.79 19.46 % Statistical Comparison
HVSE3 GT 21.36 19.71 13.51 25.38 20.21 %
HVSE4 SE 25.17 21.91 13.48 19.52 18.97 %
(M2) Mean BA1 GT 143.1 136.5 174.7 245.0 179.9 % t(138) = 24.15, p = 0.00
nMAE Traj Velo. DR1 GT 24.24 19.14 17.97 48.46 28.15 % t(138) = 3.17, p = 0.00
KF3 GT 30.91 27.19 31.70 57.35 37.84 % t(138) = 5.24, p = 0.00
HVSE1 GT 28.52 21.52 12.44 16.13 19.58 % t(189) = 0.31, p = 0.76
HVSE2 SE 25.53 21.95 15.73 17.36 19.11 % Statistical Comparison
HVSE3 GT 24.88 18.78 11.37 13.63 17.08 %
HVSE4 SE 21.98 19.59 13.35 14.78 16.50 %
(M3) BA1 GT 57.34 51.72 54.53 53.23 53.85 % t(138) = 32.01, p = 0.00
MAPE DR1 GT 29.04 22.13 22.47 73.30 43.36 % t(138) = 5.90, p = 0.00
Apex Height KF3 GT 37.28 33.24 40.75 81.82 50.11 % t(138) = 7.38, p = 0.00
HVSE1 GT 13.50 12.25 8.81 19.68 13.77 % t(189) = 0.83, p = 0.41
HVSE2 SE 14.79 14.36 8.11 14.62 12.49 % Statistical Comparison
(M4) BA1 GT 0.3305 0.4653 0.6987 0.9950 0.7140 s t(138) = 16.83, p = 0.00
MAE DR1 GT 0.0554 0.0583 0.0659 0.2430 0.1323 s t(138) = 2.66, p = 0.00
Apex Time KF3 GT 0.0726 0.0830 0.1178 0.2483 0.1388 s t(138) = 4.17, p = 0.00
HVSE1 GT 0.0611 0.0581 0.0369 0.0956 0.0641 s t(189) = 0.96, p = 0.34
HVSE2 SE 0.0524 0.0611 0.0505 0.0695 0.0588 s Statistical Comparison
(M5) MAE Apex HVSE1 GT 0.0477 0.0294 0.0562 0.2190 0.0912 m t(170) = 5.87, p = 0.00
Height (desired) HVSE2 SE 0.0353 0.0959 0.1773 0.5885 0.2597 m Statistical Comparison
  • Error metrics M1-M5 (n=191 hops, Appendix Error Metrics); where Meas. column indicates the measurement used for control (true state (GT), estimated state (SE)). * Values indicate the mean of the RMSE value for a complete hop cycle; TD to subsequent TD. Data uses only the aerial phase as detected by the robot for analysis. 333 Comparing the 1-4 m data to the HVSE2 using a two-tailed t-test given the null hypothesis with a 95% confidence interval. Related works, BA1 [4, 33, 2], KF3 [49, 46, 47].

Optical Flow Error

To determine the potential error in the horizontal distance traveled, measured by optical flow. From basic optics, assuming the sensor is traveling parallel to a surface in a single direction, we know the the ratio between the distance an object moves on a camera’s image plane, d^csubscript^𝑑𝑐\hat{d}_{c}over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT, divided by the focal distance, h^csubscript^𝑐\hat{h}_{c}over^ start_ARG italic_h end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT, is equal to the distance the object moves in the world, dwsubscript𝑑𝑤d_{w}italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT, divided by the distance to the surface, hwsubscript𝑤h_{w}italic_h start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT, as follows dw/hw=d^c/h^csubscript𝑑𝑤subscript𝑤subscript^𝑑𝑐subscript^𝑐d_{w}/h_{w}=\hat{d}_{c}/\hat{h}_{c}italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT / italic_h start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT = over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT / over^ start_ARG italic_h end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT. If the measurement of the distance to the object includes error, hw=h^w+δhwsubscript𝑤subscript^𝑤𝛿subscript𝑤h_{w}=\hat{h}_{w}+\delta h_{w}italic_h start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT = over^ start_ARG italic_h end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT + italic_δ italic_h start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT, then, so too will the distance traveled, dw=d^w+δdwsubscript𝑑𝑤subscript^𝑑𝑤𝛿subscript𝑑𝑤d_{w}=\hat{d}_{w}+\delta d_{w}italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT = over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT + italic_δ italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT. Substituting this into the previous equation results in,

d^w+δdw=(d^c/h^c)h^w(1+αh)subscript^𝑑𝑤𝛿subscript𝑑𝑤subscript^𝑑𝑐subscript^𝑐subscript^𝑤1subscript𝛼\displaystyle\hat{d}_{w}+\delta d_{w}=(\hat{d}_{c}/\hat{h}_{c})\hat{h}_{w}(1+% \alpha_{h})over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT + italic_δ italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT = ( over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT / over^ start_ARG italic_h end_ARG start_POSTSUBSCRIPT italic_c end_POSTSUBSCRIPT ) over^ start_ARG italic_h end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT ( 1 + italic_α start_POSTSUBSCRIPT italic_h end_POSTSUBSCRIPT ) (S17)

where, the ^^absent\hat{}over^ start_ARG end_ARG represents the true value, δ𝛿\deltaitalic_δ represents the error, and the height error is converted to a percent of the true height, δhw=αhh^w𝛿subscript𝑤subscript𝛼subscript^𝑤\delta h_{w}=\alpha_{h}\hat{h}_{w}italic_δ italic_h start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT = italic_α start_POSTSUBSCRIPT italic_h end_POSTSUBSCRIPT over^ start_ARG italic_h end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT. The αhsubscript𝛼\alpha_{h}italic_α start_POSTSUBSCRIPT italic_h end_POSTSUBSCRIPT can be approximated as the mean of the normalized mean-absolute-error (nMAE) in the height measurement (Table S3, M1); defined as the mean of the mean-absolute-error in the height divided by the mean of the true height per hop cycle. The error as a percent of the distance traveled can therefore be determined from the ratio of the horizontal distance both with and without the error as,

d^w+δdwd^w=1+αhαh=δddwsubscript^𝑑𝑤𝛿subscript𝑑𝑤subscript^𝑑𝑤1subscript𝛼subscript𝛼𝛿𝑑subscript𝑑𝑤\displaystyle\frac{\hat{d}_{w}+\delta d_{w}}{\hat{d}_{w}}=1+\alpha_{h}% \rightarrow\alpha_{h}=\frac{\delta d}{d_{w}}divide start_ARG over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT + italic_δ italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT end_ARG start_ARG over^ start_ARG italic_d end_ARG start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT end_ARG = 1 + italic_α start_POSTSUBSCRIPT italic_h end_POSTSUBSCRIPT → italic_α start_POSTSUBSCRIPT italic_h end_POSTSUBSCRIPT = divide start_ARG italic_δ italic_d end_ARG start_ARG italic_d start_POSTSUBSCRIPT italic_w end_POSTSUBSCRIPT end_ARG (S18)

where, it can be seen that αhsubscript𝛼\alpha_{h}italic_α start_POSTSUBSCRIPT italic_h end_POSTSUBSCRIPT also represents the horizontal error, as a percent of the distance traveled, that would be incurred by replacing an optical flow sensor’s range finder with the HVSE.

References

  • [1] S. Burns and M. Woodward, “Design and Control of a High-Performance Hopping Robot,” IEEE Robotics and Automation Letters, vol. 10, no. 6, pp. 5641–5648, Jun. 2025.
  • [2] S. Bai, Q. Pan, R. Ding, H. Jia, Z. Yang, and P. Chirarattananon, “An agile monopedal hopping quadcopter with synergistic hybrid locomotion,” Science Robotics, vol. 9, no. 89, 2024.
  • [3] Y. Wang, J. Kang, Z. Chen, and X. Xiong, “Terrestrial Locomotion of PogoX: From Hardware Design to Energy Shaping and Step-to-step Dynamics Based Control,” arXiv, 2023, arXiv: 2309.13737.
  • [4] M. H. Raibert, “Hopping in Legged Systems—Modeling and Simulation for the Two-Dimensional One-Legged Case,” IEEE Transactions on Systems, Man and Cybernetics, vol. SMC-14, no. 3, pp. 451–463, 1984.
  • [5] M. H. Raibert, H. B. Brown, and M. Chepponis, “Experiments in Balance with a 3D One-Legged Hopping Machine,” The International Journal of Robotics Research, vol. 3, no. 2, pp. 75–92, 1984.
  • [6] B. Zhu, J. Xu, A. Charway, and D. Saldana, “PogoDrone: Design, Model, and Control of a Jumping Quadrotor,” Proceedings - IEEE International Conference on Robotics and Automation, pp. 2031–2037, 2022, arXiv: 2204.00207 Publisher: IEEE ISBN: 9781728196817.
  • [7] J. Kang, Y. Wang, and X. Xiong, “Fast Decentralized State Estimation for Legged Robot Locomotion via EKF and MHE,” May 2024, arXiv:2405.20567 [cs].
  • [8] M. Kovač, M. Fuchs, A. Guignard, J. C. Zufferey, and D. Floreano, “A miniature 7g jumping robot,” Proceedings - IEEE International Conference on Robotics and Automation, no. c, pp. 373–378, 2008, iSBN: 9781424416479.
  • [9] V. Zaitsev, O. Gvirsman, U. Ben Hanan, A. Weiss, A. Ayali, and G. Kosa, “A locust-inspired miniature jumping robot,” Bioinspiration & Biomimetics, vol. 10, no. 6, p. 066012, Nov. 2015.
  • [10] B. Shin, H.-Y. Kim, and K.-J. Cho, “Towards a biologically inspired small-scale water jumping robot,” in 2008 2nd IEEE RAS & EMBS International Conference on Biomedical Robotics and Biomechatronics, Oct. 2008, pp. 127–131, iSSN: 2155-1782.
  • [11] W. a. Churaman, A. P. Gerratt, and S. Bergbreiter, “First leaps toward jumping microrobots,” IEEE/RSJ International Conference on Intelligent Robots and Systems, vol. 2, no. 2, pp. 1680–1686, sep 2011.
  • [12] M. Noh, S. W. Kim, S. An, J. S. Koh, and K. J. Cho, “Flea-inspired catapult mechanism for miniature jumping robots,” IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1007–1018, 2012, publisher: IEEE.
  • [13] W. A. Churaman, L. J. Currano, C. J. Morris, J. E. Rajkowski, and S. Bergbreiter, “The First Launch of an Autonomous Thrust-Driven Microrobot Using Nanoporous Energetic Silicon,” Journal of Microelectromechanical Systems, vol. 21, no. 1, pp. 198–205, Feb. 2012, conference Name: Journal of Microelectromechanical Systems.
  • [14] J. S. Koh, S. P. Jung, M. Noh, S. W. Kim, and K. J. Cho, “Flea inspired catapult mechanism with active energy storage and release for small scale jumping robot,” Proceedings - IEEE International Conference on Robotics and Automation, pp. 26–31, 2013, iSBN: 9781467356411.
  • [15] E. W. Hawkes, C. Xiao, R.-a. Peloquin, C. Keeley, M. R. Begley, M. T. Pope, and G. Niemeyer, “Engineered jumpers overcome biological limits via work multiplication,” Nature, vol. 604, no. December 2020, 2022, publisher: Springer US.
  • [16] Boston Dynamics, “Sandflea,” 2013.
  • [17] M. T. Tolley, R. F. Shepherd, M. Karpelson, N. W. Bartlett, K. C. Galloway, M. Wehner, R. Nunes, G. M. Whitesides, and R. J. Wood, “An untethered jumping soft robot,” IEEE International Conference on Intelligent Robots and Systems, no. Iros, pp. 561–566, 2014, publisher: IEEE ISBN: 9781479969340.
  • [18] N. W. Bartlett, M. T. Tolley, J. T. B. Overvelde, J. C. Weaver, B. Mosadegh, K. Bertoldi, G. M. Whitesides, and R. J. Wood, “A 3D-printed, functionally graded soft robot powered by combustion,” Science, vol. 349, no. 6244, pp. 161–165, Jul. 2015, publisher: American Association for the Advancement of Science.
  • [19] Y. Pan, G. Tang, S. Liu, D. Mei, L. He, S. Zhu, and Y. Wang, “Tumro: A Tunable Multimodal Wheeled Jumping Robot Based on the Bionic Mechanism of Jumping Beetles,” Advanced Intelligent Systems, p. 2400024, May 2024.
  • [20] M. A. Woodward and M. Sitti, “Design of a miniature integrated multi-modal jumping and gliding robot,” IEEE International Conference on Intelligent Robots and Systems, pp. 556–561, 2011, publisher: IEEE ISBN: 9781612844541.
  • [21] M. Kovač, Wassim-Hraiz, O. Fauria, J.-C. Zufferey, and D. Floreano, “The EPFL jumpglider: A hybrid jumping and gliding robot with rigid or folding wings,” in 2011 IEEE International Conference on Robotics and Biomimetics, Dec. 2011, pp. 1503–1508.
  • [22] M. A. Woodward and M. Sitti, “MultiMo-Bat: A biologically inspired integrated jumping-gliding robot,” International Journal of Robotics Research, vol. 33, no. 12, pp. 1511–1529, 2014, iSBN: 0278364914541.
  • [23] A. L. Desbiens, M. Pope, F. Berg, Z. E. Teoh, J. Lee, and M. Cutkosky, “Efficient jumpgliding: Theory and design considerations,” in 2013 IEEE International Conference on Robotics and Automation.   Karlsruhe, Germany: IEEE, May 2013, pp. 4451–4458.
  • [24] A. L. Desbiens, M. T. Pope, D. L. Christensen, E. W. Hawkes, and M. R. Cutkosky, “Design principles for efficient, repeated jumpgliding,” Bioinspiration & Biomimetics, vol. 9, no. 2, p. 025009, May 2014.
  • [25] A. Beck, V. Zaitsev, U. B. Hanan, G. Kosa, A. Ayali, and A. Weiss, “Jump stabilization and landing control by wing-spreading of a locust-inspired jumper,” Bioinspiration & Biomimetics, vol. 12, no. 6, p. 066006, Oct. 2017.
  • [26] M. A. Woodward and M. Sitti, “Universal Custom Complex Magnetic Spring Design Methodology,” IEEE Transactions on Magnetics, vol. 54, no. 1, 2018.
  • [27] M. A. Woodward and M. Sitti, “Morphological intelligence counters foot slipping in the desert locust and dynamic robots,” Proceedings of the National Academy of Sciences, p. 201804239, 2018.
  • [28] M. A. Woodward and M. Sitti, “Tailored Magnetic Springs for Shape-Memory Alloy Actuated Mechanisms in Miniature Robots,” IEEE Transactions on Robotics, vol. 35, no. 3, pp. 589–601, 2019, publisher: IEEE.
  • [29] J. Zhao, T. Zhao, N. Xi, M. W. Mutka, and L. Xiao, “MSU Tailbot: Controlling Aerial Maneuver of a Miniature-Tailed Jumping Robot,” IEEE/ASME Transactions on Mechatronics, vol. 20, no. 6, pp. 2903–2914, 2015.
  • [30] D. W. Haldane, J. K. Yim, and R. S. Fearing, “Repetitive extreme-acceleration (14-g) spatial jumping with Salto-1P,” in 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).   Vancouver, BC: IEEE, Sep. 2017, pp. 3345–3351.
  • [31] J. K. Yim and R. S. Fearing, “Precision Jumping Limits from Flight-phase Control in Salto-1P,” in 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).   Madrid: IEEE, Oct. 2018, pp. 2229–2236.
  • [32] J. K. Yim, E. K. Wang, and R. S. Fearing, “Drift-free roll and pitch estimation for high-acceleration hopping,” Proceedings - IEEE International Conference on Robotics and Automation, vol. 2019-May, pp. 8986–8992, 2019, iSBN: 9781538660263.
  • [33] J. K. Yim, B. R. P. Singh, E. K. Wang, R. Featherstone, and R. S. Fearing, “Precision robotic leaping and landing using stance-phase balance,” IEEE Robotics and Automation Letters, vol. 5, no. 2, pp. 3422–3429, 2020.
  • [34] F. Li, G. Bonsignori, U. Scarfogliero, D. Chen, C. Stefanini, W. Liu, P. Dario, and X. Fu, “Jumping mini-robot with bio-inspired legs,” in 2008 IEEE International Conference on Robotics and Biomimetics, Feb. 2009, pp. 933–938.
  • [35] J. Zhao, J. Xu, B. Gao, N. Xi, F. J. Cintron, M. W. Mutka, and L. Xiao, “MSU jumper: A single-motor-actuated miniature steerable jumping robot,” IEEE Transactions on Robotics, vol. 29, no. 3, pp. 602–614, 2013.
  • [36] M. M. Plecnik, D. W. Haldane, J. K. Yim, and R. S. Fearing, “Design exploration and kinematic tuning of a power modulating jumping monopod,” Journal of Mechanisms and Robotics, vol. 9, no. 1, pp. 1–13, 2017.
  • [37] P. Fiorini and J. Burdick, “The Development of Hopping Capabilities for Small Robots,” Autonomous Robots, vol. 14, no. 2, pp. 239–254, Mar. 2003.
  • [38] J. Zhao, R. Yang, N. Xi, B. Gao, X. Fan, M. W. Mutka, and L. Xiao, “Development of a miniature self-stabilization jumping robot,” in 2009 IEEE/RSJ International Conference on Intelligent Robots and Systems, Oct. 2009, pp. 2217–2222, iSSN: 2153-0866.
  • [39] U. Scarfogliero, C. Stefanini, and P. Dario, “Design and Development of the Long-Jumping ”Grillo” Mini Robot,” in Proceedings 2007 IEEE International Conference on Robotics and Automation, Apr. 2007, pp. 467–472, iSSN: 1050-4729.
  • [40] T. Ho and S. Lee, “A novel design of a robot that can jump and roll with a single actuator,” in 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems, Oct. 2012, pp. 908–913, iSSN: 2153-0866.
  • [41] J. Aguilar and D. I. Goldman, “Robophysical study of jumping dynamics on granular media,” Nature Physics, vol. 12, no. 3, pp. 278–283, Mar. 2016.
  • [42] D. W. Haldane, M. M. Plecnik, J. K. Yim, and R. S. Fearing, “Robotic vertical jumping agility via Series-Elastic power modulation,” Science Robotics, vol. 1, no. 1, 2016.
  • [43] D. W. Haldane, M. Plecnik, J. K. Yim, and R. S. Fearing, “A power modulating leg mechanism for monopedal hopping,” in 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).   Daejeon, South Korea: IEEE, Oct. 2016, pp. 4757–4764.
  • [44] J. S. Lee, M. Plecnik, J.-H. Yang, and R. S. Fearing, “Self-Engaging Spined Gripper with Dynamic Penetration and Release for Steep Jumps,” in 2018 IEEE International Conference on Robotics and Automation (ICRA).   Brisbane, QLD: IEEE, May 2018, pp. 1–8.
  • [45] H. Hsiao, S. Bai, Z. Guan, S. Kim, Z. Ren, P. Chirarattananon, and Y. Chen, “Hybrid locomotion at the insect scale: Combined flying and jumping for enhanced efficiency and versatility,” S c i e n c e A d v a n c e s, 2025.
  • [46] Z. Wang, H. Zhao, S. Qiu, and Q. Gao, “Stance-Phase Detection for ZUPT-Aided Foot-Mounted Pedestrian Navigation System,” IEEE/ASME Transactions on Mechatronics, vol. 20, no. 6, pp. 3170–3181, Dec. 2015.
  • [47] A. Norrdine, Z. Kasmi, and J. Blankenbach, “Step Detection for ZUPT-Aided Inertial Pedestrian Navigation System Using Foot-Mounted Permanent Magnet,” IEEE Sensors Journal, vol. 16, no. 17, pp. 6766–6773, Sep. 2016.
  • [48] H. Ju, M. S. Lee, S. Y. Park, J. W. Song, and C. G. Park, “A pedestrian dead-reckoning system that considers the heel-strike and toe-off phases when using a foot-mounted IMU,” Measurement Science and Technology, vol. 27, no. 1, p. 015702, Jan. 2016.
  • [49] E. Foxlin, “Pedestrian Tracking with Shoe-Mounted Inertial Sensors,” IEEE Computer Graphics and Applications, vol. 25, no. 6, pp. 38–46, Nov. 2005.
  • [50] W. Liu, D. Caruso, E. Ilg, J. Dong, A. I. Mourikis, K. Daniilidis, V. Kumar, and J. Engel, “TLIO: Tight Learned Inertial Odometry,” IEEE Robotics and Automation Letters, vol. 5, no. 4, pp. 5653–5660, Oct. 2020.