Небольшой рассказ о том, как простенькая физическая модель ходьбы, написанная практически на коленке, дала неожиданно хорошие результаты при сравнении с реальностью. За подробностями прошу под хабракат.
Модель
Обо всем по порядку. Эксперимент родился из интереса посмотреть, возможно ли при проектировании шагающего механизма достичь равномерного и прямолинейного движения его корпуса. Проблема довольно очевидна. При вынесении центра масс за пределы стопы, сила тяжести создаёт момент, стремящийся опрокинуть робота:
Конечно, этого можно избежать, увеличив ступни. Если их длина будет больше ширины шага, то подобной неустойчивости не возникает. Но такой выход довольно неуклюж. К счастью, помимо опорной ноги, у нас есть нога свободная, которая может принять на себя весь получаемый механизмом момент импульса и при этом ускорится в нужном ей направлении. Модель заключается в согласовании такого движения свободной ноги с движением опорной ноги и корпуса. При этом возникает условие на максимальную длину шага при заданных параметрах робота и его скорости, а также специфическая динамика свободной ноги.
Для того чтобы посмотреть, как получаемое движение будет выглядеть, была написана небольшая программа.
Примечание: Модель рассматривает только движение в плоскости. Поэтому и вертикальные колебания корпуса, вызываемые переваливаниями с ноги на ногу в поперечном направлении выходят за границы обсуждаемого.
Программа
Потрогать её можно тут.
Обозначения: M/m – отношение массы корпуса к массе ноги, height – высота тазобедренного сустава над землей, foot – длина ступни (задаётся её половина), v – скорость движения корпуса, Scale – масштаб картинки.
Все величины указываются в единицах СИ.
После изменения входных данных нужно нажать Calculate для пересчета параметров модели.
Бегающая вертикальная черта – человек (для масштаба).
Анализ результатов
Ради интереса я попробовал в качестве входных данных взять примерные параметры человека и сравнить полученные расчетом данные с экспериментальными, найденными на википедии:
В этот момент волосы у меня на голове несколько зашевелились. Само собой, реальные погрешности больше, чем расхождение в графиках: модель довольно грубая, да и «среднестатистический человек» понятие не точное. Но и чистой случайностью такую сходимость явно не объяснить.
Чтобы также проверить выводы из теории о временной зависимости положения ступней, для анализы было выбрано видео. Для определения положения корпуса тречилось ухо, а за положение ступни бралось примерное положение её середины. Полученные результаты для опорной и свободной фаз движения ноги представлены на графике:
(x – координата по оси, направленной вдоль направления движения, в системе отсчета, связанной с корпусом.)
В рассматриваемой модели, опорная ступня движется равномерно относительно корпуса (ведь относительно земли она покоится, а движение корпуса относительно земли считается равномерным). Как видно из графика (синяя линия), в действительности это примерно так и происходит.
Но куда интереснее рассмотреть движение свободной ноги. Из модели следует, что его график (красная линия) должен представлять собой два куска кубических парабол, соединённых участком с линейной зависимостью:
Перерисовав полученные данные в логарифмических координатах, получаем следующую картину:
Красным и синим цветами обозначены точки, относящиеся к разным половинам исходного красного графика.
Далёкие от начала координат точки не представляют особого интереса, поскольку относятся к участку равномерного движения. По начальным же точкам можно провести прямую, что свидетельствует о наличии степенной зависимости. Угловой коэффициент при этом равен ln(x)/ln(t)≈tg(71⁰)≈2.9. То есть зависимость, как и следует из теории, близка к кубической.
Подводя итоги
Описанная модель не имеет никаких свободных параметров, кроме антропологических метрик и скорости движения. Однако уже этого оказывается достаточно, чтобы с хорошей точностью посчитать такие общие характеристики как длина и время шага. А также в общем виде описать зависимость от времени положения ступней.
Надеюсь, материал был интересным. Благодарю за внимание.