A system for detecting limb strikes, the system comprising: an inertial measurement unit configured to provide inertial measurements; and a processing unit configured to receive the inertial measurements from the inertial measurement unit, wherein computer readable instructions direct the processing unit to: determine a plurality of local vertical acceleration samples from the inertial measurements, wherein each local vertical acceleration sample in the plurality of local vertical acceleration samples defines a component of acceleration along the local vertical axis and an associated time; characterized in that the computer readable instructions further direct the processing unit to: integrate the plurality of local vertical acceleration samples to determine a plurality of local vertical velocity samples; identify limb strike regions, where limb strikes occur, from the plurality of local vertical velocity samples, wherein a limb strike region is associated with at least one local vertical velocity sample in the plurality of local vertical velocity samples; and determine limb strike times based on the identified limb strike regions and the plurality of local vertical acceleration samples. an inertial measurement unit configured to provide inertial measurements; and a processing unit configured to receive the inertial measurements from the inertial measurement unit, wherein computer readable instructions direct the processing unit to: determine a plurality of local vertical acceleration samples from the inertial measurements, wherein each local vertical acceleration sample in the plurality of local vertical acceleration samples defines a component of acceleration along the local vertical axis and an associated time; characterized in that the computer readable instructions further direct the processing unit to: integrate the plurality of local vertical acceleration samples to determine a plurality of local vertical velocity samples; identify limb strike regions, where limb strikes occur, from the plurality of local vertical velocity samples, wherein a limb strike region is associated with at least one local vertical velocity sample in the plurality of local vertical velocity samples; and determine limb strike times based on the identified limb strike regions and the plurality of local vertical acceleration samples. determine a plurality of local vertical acceleration samples from the inertial measurements, wherein each local vertical acceleration sample in the plurality of local vertical acceleration samples defines a component of acceleration along the local vertical axis and an associated time; characterized in that the computer readable instructions further direct the processing unit to: integrate the plurality of local vertical acceleration samples to determine a plurality of local vertical velocity samples; identify limb strike regions, where limb strikes occur, from the plurality of local vertical velocity samples, wherein a limb strike region is associated with at least one local vertical velocity sample in the plurality of local vertical velocity samples; and determine limb strike times based on the identified limb strike regions and the plurality of local vertical acceleration samples. integrate the plurality of local vertical acceleration samples to determine a plurality of local vertical velocity samples; identify limb strike regions, where limb strikes occur, from the plurality of local vertical velocity samples, wherein a limb strike region is associated with at least one local vertical velocity sample in the plurality of local vertical velocity samples; and determine limb strike times based on the identified limb strike regions and the plurality of local vertical acceleration samples.