Raw File
function [value,isterminal,direction] = heelstrikeevent(t,x,walk,parms)
% HEELSTRIKEEVENT Returns event location info for detecting heelstrike,
% where we'll stop the simulation.
% [value, isterminal, direction] = heelstrikeevent(t, x, walk)
% where t is time, x is the state, and parms is a walk is a walk object containing
% the parameters

% Arthur D. Kuo, see:
% Kuo, A. D. (2002) Energetics of actively powered locomotion using the 
%   simplest walking model, Journal of Biomechanical Engineering, 124: 113-120. 
% Kuo, A. D. (2001) A simple model predicts the step length-speed 
%   relationship in human walking, Journal of Biomechanical Engineering, 
%   123: 264-269. 

% CHANGES
%   Modified by Art to remove the ugly kludge by which we biased things for
%   long-period gaits, and avoidance of mid-stance scuffing.

% we don't need any parms, so this is currently unused
%if nargin < 4 % we are not given parameters
  %parms = get(walk, 'parms');
%end
  
x0 = get(walk, 'xstar');

% DEPRECATED:
%q10 = (x0(1) + parms.gamma); % this is an ugly kludge to avoid stumbling
% if the swing foot scuffs the ground. It is safer in future to make the
% modification to isterminal, and leave value alone.

q1 = x(1); q2 = x(2); u1 = x(3); u2 = x(4);

% DEPRECATED:
% look for a combination of the foot hitting the ground and
% being more than 10% of the original initial stance angle
% (to ignore stubbing of the foot near midstance) and
% also u2 < 0 (to look for long-period gaits)
% value = (-q2 + 2*q1) * (q1 <= -0.1*q10) * (u2 < 0);
value = (-q2 + 2*q1); 
isterminal = q1 < 0;   % stop if we've gone past midstance
direction = -1;   % and going negative
back to top