DOI: 10.5061/dryad.xd2547dtf
title: Data from: Monopedal robot branch-to-branch leaping and landing inspired by squirrel balance control

description: Locomotors traversing arboreal environments must often leap across large
 gaps to landon small diameter supports. Balancing these dynamic landings
 is challenging due to high incidentmomentum, restricted foothold options,
 and reduced capacity to produce reaction torques onnarrow supports. We
 hypothesized that leg length control to enhance branch reaction
 controlauthority would dramatically expand the range of successful landing
 conditions, drawing on thesame powerful leg actuation required for
 leaping. Exploring this balance strategy, the monopedalrobot Salto-1P
 demonstrates branch-to-branch leaps including some upright balanced
 landingdespite negligible grasping torque. We also compared this landing
 strategy to the landings ofsquirrels which similarly lack the grip
 strength found in other arboreal species. We demonstratethat greater
 radial force control reduces the inertial body torque and/or grasping
 torque at thesupport required to balance a given landing. Adding simple
 radial force balance control strategiesto conventional balance controllers
 greatly expands potential landing conditions, increasing therange of
 initial angular momentum that can be balanced by 230% and 470% across
 ranges oflanding angles for low-order models of the robot and squirrel,
 respectively.
description: # Data from: Monopedal robot branch-to-branch leaping and landing inspired
 by squirrel balance control **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](https://www.mathworks.com/matlabcentral/fileexchange/30733-hatchfill). ## 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](https://www.mathworks.com/matlabcentral/fileexchange/30733-hatchfill)). **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: ``` &gt;&gt; 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; ```