Data from: Monopedal robot branch-to-branch leaping and landing inspired by squirrel balance control
Data files
Mar 19, 2025 version files 20.38 MB
-
DataAndCodeSupplementRevised.zip
20.37 MB
-
README.md
10.51 KB
Abstract
Locomotors traversing arboreal environments must often leap across large gaps to land
on small diameter supports. Balancing these dynamic landings is challenging due to high incident
momentum, restricted foothold options, and reduced capacity to produce reaction torques on
narrow supports. We hypothesized that leg length control to enhance branch reaction control
authority would dramatically expand the range of successful landing conditions, drawing on the
same powerful leg actuation required for leaping. Exploring this balance strategy, the monopedal
robot Salto-1P demonstrates branch-to-branch leaps including some upright balanced landing
despite negligible grasping torque. We also compared this landing strategy to the landings of
squirrels which similarly lack the grip strength found in other arboreal species. We demonstrate
that greater radial force control reduces the inertial body torque and/or grasping torque at the
support required to balance a given landing. Adding simple radial force balance control strategies
to conventional balance controllers greatly expands potential landing conditions, increasing the
range of initial angular momentum that can be balanced by 230% and 470% across ranges of
landing angles for low-order models of the robot and squirrel, respectively.
Dataset overview
Details of the formulation and analysis of these files are described in the related publication (see below).
This dataset contains experimental data collected with the Salto monopedal jumping robot, data from N. H. Hunt et al. “Acrobatic squirrels learn to leap and land on tree branches without falling” published in Science (2021) with new analysis, and simulation models of leaping and landing.
Data collection by N. H. Hunt et al. (2021) was approved by the University of California, Berkeley’s Animal Care and Use Committee (AUP-2015-08-7830) and the California Department of Fish and Wildlife Nongame Wildlife Program.
Corresponding author information
Name: Justin K. Yim
ORCID: 0000-0002-8593-7032
Affiliation: Department of Mechanical Science and Engineering, University of Illinois Urbana-Champaign, Urbana, Illinois, United States
email: jkyim@illinois.edu
Alternative contact information
Name: Eric K. Wang
ORCID: 0000-0002-9124-7951
Affiliation: Department of Mechanical Engineering, Massachusetts Institute of Technology, Cambridge, Massachusetts, United States
email: ekwang@mit.edu
Related publication
J. K. Yim, E. K. Wang, S. D. Lee, N. H. Hunt, R. J. Full, R. S. Fearing, "Monopedal robot branch-to-branch leaping and landing inspired by squirrel balance control," Science Robotics (2025)
Funding information
This work was supported by Army Research Office grant no. W911NF-18-1-0038, Army Research Office through a Multidisciplinary University Research 590 Initiatives (MURI) grant no. W911NF-1810327, and National Institutes of Health grant no. P20GM109090.
Code and software versions
All code was developed and run in MATLAB R2023b. It makes use of the MATLAB Parallel Computing Toolbox (but can be modified to run without it).
The hatchfillpkg Version 1.11.0.0 by Neil Tandon is required and should be copied into the External folder. hatchfillpkg is available from MathWorks File Exchange at the following URL.
Files
File structure
The dataset root folder contains four directories and eight MATLAB scripts.
External
SaltoBalanceSim
SaltoData
SquirrelData
Gripper.m
readSaltoData.m
readSquirrelFlight.m
SaltoActuationSpace.m
SaltoBalanceableRegion.m
snapShotScript.m
SquirrelActuationSpace.m
SquirrelBalanceableRegion.m
Each directory and script is described in the following sections.
Data files
SaltoData
This directory contains data files from all Salto experiment trials 1 to 30.
Each file trial[NUM]_mocap.csv
is a comma separated value formatted log of Optitrack motion capture data for trial NUM. Its first row lists the variable recorded in each column and its second row lists the engineering units of the variable in each column. Each subsequent row is a measurement at the time given in the first column. The logged variables are as follows:
t: time (sec)
vt: time for velocity (sec)
yaw: yaw angle (rad)
rol: roll angle (rad)
pit: pitch angle (rad)
posx: x position (m)
posy: y position (m)
posz: z position (m)
vx: x velocity (m/s)
vy: y velocity (m/s)
vz: z velocity (m/s)
accx: x acceleration (m/s^2)
accy: y acceleration (m/s^2)
accz: z acceleration (m/s^2)
Each file trial[NUM]_telem.csv
is a comma separated value formatted log of the monopedal robot Salto’s onboard data recorded from its TDK InvenSense MPU-6000 inertial measurement unit, AMS AS5048B absolute magnetic encoders, and onboard firmware for trial NUM. Its first row lists the variable recorded in each column and its second row lists the engineering units of the variable in each column. Each subsequent row is a measurement at the time given in the first column. The logged variables are as follows:
t: time (sec)
tail: reaction wheel tail angle measured by encoder (rad)
femur: femur angle measured by encoder (rad)
motor: leg motor angle measured by encoder (rad)
pit: Salto onboard estimated pitch angle (rad)
rol: Salto onboard estimated roll angle (rad)
yaw: Salto onboard estimated yaw angle (rad)
wTail: Salto onboard reaction wheel tail angular velocity (rad/s)
crank: Salto onboard calculated crank angle (rad)
force: Salto onboard estimated foot force (N)
foot: Salto onboard calculated leg length (m)
vFoot: Salto onboard estimated foot velocity (m/s)
wx: body-fixed x angular velocity (rad/s)
wy: body-fixed y angular velocity (rad/s)
wz: body-fixed z angular velocity (rad/s)
ax: body-fixed x acceleration (m/s^2)
ay: body-fixed y acceleration (m/s^2)
az: body-fixed z acceleration (m/s^2)
state: Salto onboard state machine mode (used for debugging)
tailPwm: reaction wheel tail H-bridge pulse width modulation duty factor and direction
C0507.mp4 is a high-speed video of Salto experiment trial number 1 recorded at 959.04 frames per second and played back at 29.97 frames per second. C0507M01.XML is the metadata file for video file C0507.mp4.
SquirrelData
This directory contains processed data files from N. H. Hunt et al. (2021). Experiments on rigid substrates are stored in files named [NAME][NUM]_rigid_aerialPhase_data.mat
for subject NAME’s trial number NUM. Experiments on compliant substrates are stored in files named [NAME][NUM]_compliant_aerialPhase_data.mat
for subject NAME’s trial number NUM.
Each contains two matlab structs squirrelStructure
and squirrelStructure_vec
containing the same data in different arrangements. squirrelStructure
is a 1xn struct of data at n sample times while squirrelStructure_vec
is a 1x1 struct of 1xn vectors for each variable over n sample times. Additional details can be found in N. H. Hunt et al. (2021). The struct fields are:
time
nosex
nosey
tailx
taily
distNoseToTailCM
buttx
butty
distNoseToButtCM
frontlegx
frontlegy
backlegx
backlegy
backx
backy
stomachx
stomachy
bodyBisectorLengthCM
tailBisectorLengthCM
BodymidptX
BodymidptY
TailmidptX
TailmidptY
quadraticButtA
quadraticButtB
quadraticButtC
quadraticTailA
quadraticTailB
quadraticTailC
refDistance
squirrel_COM.m is a Matlab script that processes image tracking to fit geometry of squirrel postures in the variables above as described in N. H. Hunt (2021).
Processing Code
External
This is an empty folder into which hatchfillpkg should be downloaded and saved (URL).
SaltoBalanceSim
This directory contains helper functions for the MATLAB scripts in the root directory:
balFunLanding3.m
balFUnLanding4.m
balFunNoExt.m
balanceBound.m
bangBangBalance.m
dynamicsTermination.m
f_ballistic.m
saltoSimBranch.m
select1Output.m
simChecks.m
Gripper.m
This script plots landing catch geometry (catch relative angle vs relative displacement) for all 30 Salto experiments annotated with outcome success (successful balance, catch and swing under, catch and swing over, fall). In the related manuscript this is used in figure 4 panel B. The script is run in MATLAB:
>> Gripper;
readSaltoData.m
This script reads all data files from directory SaltoData and populates the MATLAB Workspace for other scripts. It is run in MATLAB:
readSaltoData;
readSquirrelFlight.m
This script reads all data files from directory SquirrelData, applies curve fitting, and populates the MATLAB Workspace for other scripts. It is run in MATLAB:
sq = readSquirrelFlight;
SaltoActuationSpace.m
This script plots Salto’s landing actuation space (effective torque magnitdue vs. radial force magnitude) and the range of feasible actuation for balancing trial 13. In the related manuscript this is figure 6 panel B. The script uses the functions of directory SaltoBalanceSim to simulate the dynamics of landing balance and requires the third party hatchfillpkg. It is run in MATLAB:
SaltoActuationSpace;
SaltoBalanceableRegion.m
This script plots the landing balance region as estimated in simulation for Salto in the space of touchdown angular momentum vs. touchdown tilt angle for a set of three landing strategies: effective torque only, radial force only, and effective torque plus radial force together. The touchdown conditions of all Salto trials and their outcomes are overlaid. In the related manuscript this is figure 6 panel D as well as supplementary figure S4. The script uses the functions of directory SaltoBalanceSim to simulate the dynamics of landing balance and plots data read by readSaltoData.m. To run without the MATLAB Parallel Computing Toolbox, change all instances of parfor
to for
. It is run in MATLAB:
SaltoActuationSpace;
snapShotScript.m
This script plots the trajectory of Salto landing and balancing for one experimental trial. Pitch and its velocity, radial distance and its velocity, and reaction wheel torque and radial force are all plotted against time and snapshots of the robot are extracted from video overlaid with the trajectory of the robot center of mass tracked in motion capture. In the related manuscript this is figure 5. The script is run in MATLAB:
snapShotScript;
SquirrelActuationSpace.m
This script plots the estimated landing actuation space (effective torque magnitdue vs. radial force magnitude) for squirrels and the range of feasible actuation for one landing condition. In the related manuscript this is figure 6 panel A. The script uses the functions of directory SaltoBalanceSim to simulate the dynamics of landing balance and requires the third party hatchfillpkg. It is run in MATLAB:
SquirrelAcutationSpace;
SquirrelBalanceableRegion.m
This script plots the landing balance region as estimated in simulation for squirrels in the space of touchdown angular momentum vs. touchdown tilt angle for a set of three hypothesized landing strategies: effective torque only, radial force only, and effective torque plus radial force together. The touchdown conditions of all squirrel trials and their outcomes are overlaid. In the related manuscript this is figure 6 panel C. The script uses the functions of directory SaltoBalanceSim to simulate the dynamics of landing balance and plots data read by readSquirrelData.m. It is run in MATLAB:
SquirrelBalanceableRegion;