-
Notifications
You must be signed in to change notification settings - Fork 1
Unit CPG — Hopf oscillator
Модный подход, основанный на использовании одного/несколько осцилляторов и поиске способов управления ими.
Не понятно, что можно достичь, нет аналитического алгоритма, всё основано на подборе чего-то для чего-то. Тем не менее, работ много и можно попробовать почерпнуть идеи.
В качестве базового осциллятора часто используют следующий осциллятор Hopf-а. Он удобен независимостью параметров влияющих на поведение осциллятора.
Здесь
Стабилизация осциллятора достигается за
Для улучшения приближённого численного решения используется метод Рунге-Кутты четвёртого порядка.
Из двух полученных значений
С целью удобства итеративного вычисления, переменную
получается легко связать один цикл осциллятора
Пример реализации для Octave см. в файле unit_cpg_hopf_runge_kutta.m
Один цикл осциллятора описывает полный цикл движения лапы, включая этапы поддержания и перестановки. Длительность полного цикла движения лапы обозначим через
Разные шаблоны движения имеют различное соотношение длительности этапов поддержвания и перестановки, следовательно и различное значение коэффициента заполнения
Разделим скорость колебаний на две составляющих, отвечающих за разные этапы цикла движения лапы и определим функцию для переключения значения скорости в зависимости от знака значения
При выборе достаточно большого значения
Для удобства расчётов запишем скорости колебаний каждого этапа через длительность соответствующего этапа, и выразим всё через значение длительности этапа перестановки (обратите внимание, каждый из этапов занимает только половину цикла, поэтому использовано
Подставив в предыдущую формулу, получим уравнение скорости колебаний:
Итого, получаем уточнённую систему уравнений осциллятора:
В примечании к предыдущей секции было описание преобразование реального времени в дискретное для вычисления. Здесь аналогично, вместо
Пример реализации для Octave см. в файле unit_cpg_hopf_runge_kutta_duty.m