wikillm

Paper · 2024-11-19 · cs.RO

Locomotion Mode Transitions: Tackling System- and User-Specific Variability in Lower-Limb Exoskeletons

Personalizes a threshold-based finite-state detector of walk-to-sit and stair transitions on two lower-limb exoskeletons (eWalk, autonomyo). Two methods adapt the thresholds: a statistics-based rescaling and Bayesian optimization on labelled user data. A linear hip-angle mapping is fitted for autonomyo. Author-reported: up to 80% gain over non-personalized thresholds in some scenarios.

Finite-state machineBayesian optimizationGaussian processHuman-in-the-looproboticsexoskeletontransition-detectionpersonalization

arXivPDFMarkdown13 min read

AI-compiled by claude-haiku-5-5 on 2026-10-25, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Lower-limb exoskeletons need to know what the wearer is doing. A change from walking to sitting, or from walking to climbing or descending stairs, needs a different kind of help, and the device has to notice the change quickly.

The detector in this paper is a simple state machine with a few hand-set thresholds on body-angle signals, trained once on earlier data. The authors found that people and devices differ enough that one fixed set of thresholds misses transitions for some users. They add two ways to adjust the thresholds for a given user and device. One rescales the thresholds using simple statistics from that user's data. The other searches for better thresholds with Bayesian optimization, which needs labelled examples of the user's own transitions. The authors also correct a hip-angle offset on one exoskeleton with a small linear model. In the reported tests the search method improved detection on both exoskeletons, while the statistics method helped only on the simpler one.

TL;DR

  • The paper detects walk/sit/stair transitions on two lower-limb exoskeletons with a finite-state machine whose thresholds come from an ML model trained offline §2.1 §2.2.
  • It adds a statistics-based threshold rescaling §2.5.1 and Bayesian optimization of thresholds against labelled data §2.5.2.
  • Author-reported: BO raises per-transition accuracies on both devices; SBA gives no gain on autonomyo §4.2.
  • Not real-time for BO, no active assistance during tests, right-leg sensing only §5.5.
  • No official code was found §Paper vs code.

Problem

Threshold-based transition detection trained on one population loses accuracy for users whose gait differs from it §2.5. Non-adaptive classifiers struggle to keep accuracy high without adding latency when user behaviour or the exoskeleton's mechanical design changes §1. Fixed-window methods from prior work are described as limited in adaptability §1. Personalization through subject-specific training data is described as limited by lengthy evaluation times §1. The autonomyo device, with more active joints, led to slower sitting patterns and pre-sit adjustments, and its hip joint showed misalignment with the human hip §1 §4.1.

Method

The pipeline has four parts.

  1. Features. Three instantaneous characteristic features (ICFs) are taken from thigh angle and angular velocity at three gait moments: maximum hip flexion (MHF), heel strike (HS), and a thigh-angle window THR §2.1 tab. 1. ICF-1 is the thigh angle at MHF, ICF-2 is the MHF-minus-HS difference, and ICF-3 is the thigh angular velocity inside THR §2.1.
  2. Finite-state machine (FSM). The FSM has four states: Sit, Walk, Stair Ascent, and Stair Descent. Level walking, standing and ramp walking are merged into Walk. Gait events (MHF, HS) come from detectors using thigh angle and ground reaction force. Each transition is a binary decision on one ICF §2.1 fig. 1.
  3. Threshold classifiers. Several scikit-learn classifiers were trained offline on the Reznick et al. dataset (90% train/validation, 10% test) §2.1 §2.2. The best performers, linear SVM and logistic regression, were then replaced by if/else thresholds on the one-dimensional ICF, so the embedded device runs no classifier at run time §2.2. The resulting thresholds per transition for eWalk and autonomyo are in tab. 1.
  4. Personalization. Three steps are described:
    • a hip-angle mapping for autonomyo, a least-squares fit from position, velocity and acceleration to literature hip angles §2.4 eq. 1 eq. 2 eq. 3 eq. 4 eq. 5 tab. 2;
    • a statistics-based approach (SBA), which rescales each threshold by the ratio of new-user to training ICF statistics §2.5.1 eq. 6 fig. 3;
    • Bayesian optimization (BO) of the threshold pair for each transition pair, using a Gaussian-process surrogate and an acquisition function §2.5.2 eq. 7 eq. 8 eq. 9 alg. 1 alg. 2 eq. 10. A discrete grid search (GSA) over the same space is the baseline for BO §2.5.3.

The SBA update is eq. 6:

TH_{new} = TH_{tr} \cdot \frac{mean(ICF^{new}_i) \pm std(ICF^{new}_i)}{mean(ICF^{tr}_i) \pm std(ICF^{tr}_i)} eq. 6

The BO loop replaces the cost J(TH) with a surrogate S(TH) from a Gaussian process (RBF kernel, GPy) and minimizes the acquisition function eq. 8 eq. 9 §2.5.2. The search is over the threshold pair of one transition pair at a time §2.5.2.

Pseudocode
# Statistics-based threshold update (SBA)  [§2.5.1] [eq. 6]
# Input:  th_train (scalar), icf_train, icf_new (1-D arrays)
# Output: th_new (scalar)

def sba_threshold(th_train, icf_train, icf_new, lower_bound):
    # Sign: '+' for lower-bound transitions, '-' otherwise  [§2.5.1]
    # Which transitions are lower-bound is inferred from the text.
    sign = 1.0 if lower_bound else -1.0
    # Ratio of (mean +/- std) of new data to training data  [eq. 6]
    numerator = mean(icf_new) + sign * std(icf_new)
    denominator = mean(icf_train) + sign * std(icf_train)
    return th_train * numerator / denominator
Pseudocode
# Bayesian optimization of one threshold pair  [alg. 1] [§2.5.2]
# Input:  bounds (search space Omega), labelled user transitions
# Output: thresholds (selection rule not stated)

def bayesian_optimize(bounds, labelled_transitions):
    # Number of iterations is 30 in the experiments  [§2.5.2]
    samples = initial_samples(bounds)  # initial design not stated
    for step in range(30):
        # Evaluate the cost of the candidate on labelled data  [alg. 2]
        cost = objective(candidate, labelled_transitions)
        samples.append((candidate, cost))
        # Fit a GP (RBF kernel) surrogate to all (TH, J) pairs  [§2.5.2]
        surrogate = fit_gaussian_process(samples)
        # A = k * mean(S) +/- (1 - k) * std(S), k = 0.5; the sign is
        # not stated  [eq. 8]
        acquisition = acquisition_value(surrogate, k=0.5)
        # Minimise the acquisition over the bounds  [eq. 9]
        candidate = argmin_over(acquisition, bounds)
    return best_threshold(samples)  # which one is reported is not stated
Pseudocode
# Cost of one candidate pair on labelled data  [alg. 2] [§2.5.2] [eq. 10]
# Constants: C1 = 0.005, C2 = 0.001, alpha = 2e-5, limits 55 and 5 deg

def objective(thresholds, labelled_transitions):
    cost = 0.0
    # The paper adds the penalty per FSM output; the text says it grows
    # with detection delay, which this loop does not express  [§2.5.2]
    for each (truth, fsm_output, reached_class1) in run_fsm(thresholds):
        # Penalty when the first transition (class1) is missed  [alg. 2]
        if truth == class1 and fsm_output != class1:
            cost = cost + C1
        # Penalty for a wrong Walk output after class1 was reached  [alg. 2]
        if reached_class1 and truth == walk and fsm_output != walk:
            cost = cost + C2
    # Keep thresholds near the limits; squared distance  [eq. 10] [§2.5.2]
    cost = cost + (alpha / 2) * squared_distance(thresholds, limits)
    return cost

Hip-angle mapping for autonomyo §2.4 tab. 2:

Pseudocode
# Hip-angle mapping for autonomyo  [eq. 1] [eq. 3] [eq. 5]
# Input:  hip angle x, its velocity and acceleration per time step
# Output: corrected hip angle (scalar)

def basis(x, x_dot, x_ddot):
    # Seven basis functions, no normalisation  [eq. 5] [§4.1]
    return [1, x, x_dot, x_ddot, x * x_dot, x * x_ddot, x_dot * x_ddot]

def fit_mapping(features, literature_targets):
    # Closed-form least squares  [eq. 3]
    gram = transpose(features) @ features
    return inverse(gram) @ transpose(features) @ literature_targets

def corrected_angle(weights, x, x_dot, x_ddot):
    # Linear combination of the basis  [eq. 1]
    return dot(weights, basis(x, x_dot, x_ddot))

Hyperparameters

NameValueWhereNotes
Gait-cycle window THR (thigh angle)[62, 75] deg eWalk; [55, 70] deg autonomyo§2.1Defines the window in which ICF-3 is taken
ICF threshold, W-S / S-W (ICF-3)23.32 / -4.32 deg/s, both devicestab. 1Units from the table caption
ICF threshold, W-SA / SA-W (ICF-1)50.52 / 51.21 deg, both devicestab. 1
ICF threshold, W-SD / SD-W (ICF-2)10.37 (eWalk), 13.37 (autonomyo) / 9.62 degtab. 1Only W-SD differs by device
Offline train/test split90% / 10% of the Reznick et al. dataset§2.1Validation split inside the 90% not stated
Softwarescikit-learn 1.3.0, Python 3.11.4§2.2
Linear SVM, logistic regressionscikit-learn defaults§2.2Selected for the FSM classifiers
k-NNk = 5, Euclidean distance§2.2Not selected for the FSM
Naive BayesGaussian kernel§2.2Not selected for the FSM
Random forest12 minimum splits, 30 estimators§2.2Not selected for the FSM
Gradient boosting2 minimum splits, 100 estimators, learning rate 0.1§2.2The text writes the learning rate as the symbol alpha
Mapping basis7 terms: 1, x, x', x'', x x', x x'', x' x''eq. 5Trained on 12 W-SA cycles from 10 subjects §2.4
Mapping weightsw0 = 5.7, w1 = 6.7e-1, w2 = 3.3e-2, w3 = 3.1e-4, w4 = -4.6e-4, w5 = 5.7e-6, w6 = -2.5e-6tab. 2No normalisation, so scales differ §4.1
Acquisition weight k0.5§2.5.2Balances exploration and exploitation
GP kernelRBF, via GPy§2.5.2Kernel hyperparameter fitting not stated
BO iterations30§2.5.2 §4.3Compared with 100 GSA evaluations §4.3
BO training / evaluation transitions2 / 3 per subject§2.5.2Which transitions are used for each is not stated
Transitions per subject (scenario)5§2.5.2Repetition count unclear, see Pitfalls
Penalty C10.005§2.5.2 alg. 2Heuristic
Penalty C20.001§2.5.2 alg. 2Heuristic
Regularisation alpha2e-5§2.5.2 eq. 10Heuristic; written "2.10^{-5}"
Penalty limits55 deg (W-SA / SA-W); 5 deg (W-SD / SD-W)§2.5.2
Search space W-S / S-W[-60, 60]§2.5.2 §2.5.3Same for BO and GSA
Search space W-SA / SA-W[30, 65]§2.5.2 §2.5.3Same for BO and GSA
Search space W-SD / SD-W[0, 25]§2.5.2 §2.5.3Same for BO and GSA
GSA grid step10 deg (W-S / S-W); 2.5 deg (W-SA / SA-W and W-SD / SD-W)§2.5.3Number of grid points not stated
Supervision for BOground-truth transition labels requiredalg. 2Supervised BO
Recognition accuracy windowone-step delay§4.2 eq. 11Binary per transition
Experiment repetitions50 transitions per exoskeleton; 5 trials per subject§3See Pitfalls
Compute for timingApple M1, 8-core CPU, 7-core GPU, 8 GB RAM; 10 runs per subject§4.3Figure caption says five subjects

Results

Author-reported. Setup: real-time tests with eWalk (10 subjects) and autonomyo (10 subjects; Ss 3 and 7 excluded from autonomyo accuracies) §3 §4.2. Trials ran in zero-torque transparent mode, and ground truth was labelled live by an observer §3. The comparison baseline is the non-personalized ML-trained threshold method §4.2. The offline model was trained on the Reznick et al. dataset §2.1.

SettingMetricBaselineThis paperSource
autonomyo hip, mapped vs literaturemean MHF angle73.87 deg55.27 deg (literature 60.55 deg)§4.1
autonomyo hip, mapped vs literaturemean std across gait cycles17.48 deg11.95 deg (literature 10.49 deg)§4.1
autonomyo hip, mapped vs literaturemean RMSE to literaturenot statedreduced by 3.61 deg§4.1
eWalk, no tuning, median accuracyW-S / S-W / W-SA / SA-W / W-SD / SD-W100 / 90 / 100 / 90 / 100 / 100 %not applicable§4.2
autonomyo, no tuning, median accuracysame six transitions80 / 80 / 90 / 100 / 70 / 70 %not applicable§4.2
autonomyo, hip mapping appliedW-S / S-W / W-SA / SA-W / W-SD / SD-W80 / 80 / 90 / 100 / 70 / 70 % (no mapping)70 / 70 / 100 / 100 / 90 / 80 %§4.2
eWalk, SBAW-S / S-W / SA-W92 / 86 / 80 %94 / 90 / 88 %§4.2 fig. 6
eWalk, BOW-S / S-W / SA-W92 / 86 / 80 % (initial)"same increases" as SBA; exact values not stated§4.2 fig. 6
eWalk, BOW-SD / SD-Wnot stated96 / 98 %§4.2 fig. 6
autonomyo, SBAall transitionsnot statedno improvement§4.2
autonomyo, BOW-S / S-W / W-SD / SD-W77.5 / 75 / 77.5 / 75 %90 / 90 / 87.5 / 82.5 %§4.2 fig. 6
per-subject, eWalk S5W-SD / SD-W20 / 40 %100 / 100 %§4.2 fig. 7
per-subject, eWalk S2W-S / S-Wconflicting, see Pitfalls100 %§4.2 §5.3
BO vs GSA, one subjectiterations / evaluations100 (GSA)30 (BO)§4.3 fig. 8
BO vs GSA, runtimeaverageGSAabout 4x faster than GSA§4.3 fig. 10
BO runtime on a PCtotalnot statedabout 2 minutes§5.4

The abstract's headline "up to an 80% increase in certain scenarios" is not tied to a table. The closest in-text case is eWalk S5's W-SD transition, which rose from 20% to 100% §4.2. That is 80 percentage points, and the paper does not explicitly link the two.

Paper vs code

No official code. Searches run for this card:

  • Paper and links. The paper's links are the Zenodo dataset (https://zenodo.org/records/14076104, CC BY 4.0 per the record) and a YouTube video §5.1. The Zenodo record is an archive of data (ExoMove.rar) with an "example script" the paper mentions §4.1. Its contents were not checked, and it is not a code repository.
  • GitHub, keyword search. autonomyo, eWalk exoskeleton transition, locomotion mode transitions exoskeleton, rehassist, and exoskeleton finite state machine thresholds returned no repository from the authors or their lab. One hit (MimileAns/FootBoard) is a hardware board repository for autonomyo V2 by a third party, so it is not used.
  • GitHub, user search. orhan exoskeleton returned no user.

No discrepancies can be checked against code. The GP kernel is named in the paper (RBF, GPy) §2.5.2, and the GPy library is cited, but the authors' configuration is not released.

Pitfalls

  • SBA sign convention. The paper gives "+" for "lower bound transitions" and "-" otherwise, without naming all of them §2.5.1 eq. 6. The pseudocode above infers the lower-bound set from the text describing SA-W and W-SA. Check before implementing.
  • Acquisition sign. The acquisition is written as k\,\mathrm{mean}(S) \pm (1-k)\,\mathrm{std}(S), and BO minimizes it eq. 8 eq. 9. The paper does not state which sign it uses, or whether the std enters with the same sign convention as SBA §2.5.2.
  • Penalty shape. The text says the W-SA/SA-W penalty applies if a threshold exceeds 55 deg, and the W-SD/SD-W penalty if one falls below 5 deg §2.5.2. The equation penalizes the squared distance to the limit for every component, with the same limit for both components eq. 10. These are not the same function. The paper does not say which to implement.
  • Penalty timing. The text says penalties grow with the time the FSM takes to detect a transition §2.5.2. Algorithm 2 adds fixed constants per condition alg. 2. How the cost is accumulated over time is not stated.
  • BO needs labels. The cost uses ground-truth transitions alg. 2. BO therefore needs labelled data from each user before deployment. The paper says BO was not run in real time §5.5.
  • Which subjects and transitions get BO. BO was applied to "subjects and transitions with poor performance" §2.5.2. The selection rule is not stated.
  • Evaluation split. BO trains on 2 transitions and evaluates on 3 §2.5.2. The paper does not say whether the reported accuracies §4.2 use only the 3 evaluation transitions or all transitions. The per-subject numbers may therefore include training data.
  • Repetition counts. The text gives "50 times per exoskeleton", "five trials per subject", and "5 transitions per subject" §3 §2.5.2. How these combine into the accuracy denominator is not stated.
  • Median versus mean. The no-tuning baseline is reported as medians §4.2. The SBA and BO numbers that follow describe "initial" values with different figures (for example W-S 92% in the SBA sentence, but 100% as the eWalk median). Mean and median are mixed without explanation.
  • "Same increases". The text says BO achieved "the same increases" for W-S, S-W and SA-W as SBA §4.2. It is unclear whether that means identical final values or identical gains in points.
  • Conflict on subject S2. Results say S2's W-S was missed before BO and detected after §4.2. The discussion says S2's W-S and S-W improved from 80% and 60% to 100% §5.3. The two statements do not agree.
  • Dataset size. The contributions list an open dataset of 18 subjects §1. Each exoskeleton had 10 subjects in the experiments §3. The overlap is not explained.
  • Autonomyo exclusion. Ss 3 and 7 were excluded from autonomyo accuracies for discomfort §4.2. Results are therefore over 8 subjects for autonomyo.
  • Mapping conditioning. Weights are not normalised, and the weights span about six orders of magnitude tab. 2 §4.1. The closed-form solve eq. 3 has no regularization stated. The acceleration x'' is not defined beyond "acceleration"; how it is computed (for example by finite differences) is not stated.
  • Mapping scope. The mapping is fitted on literature W-SA cycles, not on the user, and it is applied to hip flexion/extension on autonomyo only §2.4. The claim that the basis is "system-agnostic" is a speculation in the paper §2.4.
  • Equation numbering. Equation numbers above were counted in source order (IEEEtran), since no compiled PDF was available. Check against a rendered copy if a citation must match exactly.
  • Figures only. Accuracy per subject and per transition appears in figures fig. 6 fig. 7. Only the subset quoted in the text is reproduced here.
  • Compute claims. The "2 minutes" BO time is on a PC, and "a few minutes" on an embedded system is an expectation, not a measurement §5.4.
  • Gain definition. The "up to 80%" headline is not defined as relative or absolute percentage points [abstract] §4.2.
  • Assistance off. Tests ran with no active assistance, so user kinematics were unaffected by assistive torque §5.5. The detector relies on right-leg measurements, which the authors say risks misclassification for left-leg-dominant users §5.5.
  • Symbol collision. \alpha is used for the regularization weight eq. 10 and, in the text, for the gradient boosting learning rate §2.2.

Lineage

  • Builds on: the Cheng et al. (2021) FSM framework for ICF-based transition detection, which this paper follows §2.1 §1.
  • Builds on: the authors' earlier ML-trained threshold method and embedded optimization (Orhan et al., 2024, ICRA), which replaced classifiers with threshold conditions §1 §2.2.
  • Builds on: the Reznick et al. (2021) dataset, used for offline training and as literature reference for hip-angle data §2.1 §2.4.
  • Compared against: a non-personalized threshold method §4.2; grid search (GSA) as the baseline for BO §2.5.3.
  • Superseded by: not stated.

Source and license

Adapted from “Locomotion Mode Transitions: Tackling System- and User-Specific Variability in Lower-Limb Exoskeletons” by Andrea Dal Prete, Zeynep Özge Orhan, Anastasia Bolotnikova, Marta Gandolla, Auke Ijspeert, Mohamed Bouri (arXiv:2411.12573), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.