"Секундомер" не с нуля считает, первое движение ~ на 0.12 c.
Вот скрин с осциллографа, здесь время с учетом распознования и расчета алгоритма.
Здесь ось ординат(Y) - напряжение, абсцисс(X) - время.
Снизу, желтым - линия запуска системы, когда ее уровень повышается - это начало работы системы.
Сверху, синим - один из сигналов, управляющих двигателями.
Белые линии - курсоры, позволяют измерить длительность сигнала. В окошке слева сверху - результаты измерений, здесь нас интересует BX - AX = 388ms
Ну допустим. А почему мы должны вычитать? В любом спорте звучит сигнал, и спортсмену перед тем как стартануть нужно время. Да даже в том же спидкубинге (сужу по видео, сам не занимаюсь) отрываешь руки, секундомер пошел (руки то еще кубика не коснулись, а секундомер уже идет). Если там не вычитают, почему тут должны?
Здесь "отрыв рук" - происходит как раз когда уровень желтого сигнала возрастает. Это, буквально, момент когда была нажата кнопка старта.
BX - AX = время между двумя курсорами, и ничего более.
Более того, на скриншоте AX отрицательный. Это просто специфика интерфейса осциллографа.
Тогда курсор А вообще не нужен, просто время курсора В. Ноль времени как раз по нарастающему фронту первого (жёлтого канала). Лишних 6 мс.
мне вот интересно, как поведет себя робот, если переставить физически 2 кубика в неправильную позицию.