Моделирования движения. Моделирование движения объектов
Продолжаем серию статей по автоматизации выполнения фигур пилотажа на малом ДПЛА. Настоящая статья имеет, прежде всего, образовательную цель: здесь мы покажем, как можно создать простейшую систему автоматического управления (САУ) на примере задачи выполнения фигуры пилотажа «бочка» при управлении летательным аппаратом только элеронами. Статья является второй в цикле публикаций «Пилотажный ДПЛА», рассказывающем о процессе постройки аппаратной и программной частей САУ в обучающей форме.
Введение
Итак, мы решили реализовать «бочку» в автоматическом режиме. Очевидно, что для автоматического выполнения фигуры необходимо сформулировать соответствующий закон управления. Процесс придумывания будет гораздо безболезненнее и быстрее, если использовать математическую модель движения ЛА. Проверка закона управления в лётном эксперименте хоть и возможна, но требует гораздо большего времени, к тому же может оказаться гораздо дороже в случае потери или повреждения аппарата.Так как при небольших углах атаки и скольжения самолёта его движение по крену практически не связано с движением в двух других каналах: путевом и продольном - для выполнения простой «бочки» достаточно будет построить модель движения только вокруг одной оси - оси ОХ связанной СК. По этой же причине, закон управления элеронами не будет существенно изменяться, когда дело дойдет до создания полной системы управления.
Модель движения
Уравнение движения ЛА вокруг продольной оси ОХ связанной СК крайне простое:Где - момент инерции относительно оси ОХ , а момент состоит из нескольких составляющих, из которых для реалистичного описания движения нашего самолёта достаточно рассмотреть только две:
Где - момент, обусловленный вращением ЛА вокруг оси ОХ (демпфирующий момент), - момент, обусловленный отклонением элеронов (управляющий момент). Последнее выражение записано в линеаризованной форме: момент крена линейно зависит от угловой скорости и угла отклонения элеронов с постоянными коэффициентами пропорциональности и соответственно.
Как известно (например, из Вики), линейному дифференциальному уравнению
Соответствует апериодическое звено первого порядка
Где - передаточная функция, - оператор дифференцирования, - постоянная времени, а - коэффициент усиления.
Как перейти от дифференциального уравнения к передаточной функции?
В нашем случае от параметров уравнения к параметрам передаточной функции можно перейти следующим образом (зная, что производная отрицательная):
Для апериодического звена постоянная времени равна времени, за которое выходная величина при единичном ступенчатом воздействии входной величины принимает значение, отличающееся от установившегося на величину ~5%, а коэффициент усиления численно равен установившемуся значению выходной величины при единичном ступенчатом воздействии:
В построенной модели движения есть два неизвестных параметра: коэффициент усиления и постоянная времени . Эти параметры выражаются через характеристики физической системы: момент инерции , а также производные момента крена и :
Таким образом, если известен момент инерции , то, определив параметры модели, по ним можно восстановить параметры системы.
Параметры модели. Момент инерции
Наш летательный аппарат состоит из следующих частей: крыло, фюзеляж с оперением, двигатель, аккумулятор (АКБ) и БРЭО:К БРЭО относятся: плата автопилота, плата приёмника СНС, плата радиомодема, плата приёмника сигнала от управляющей аппаратуры, два регулятора напряжения, регулятор оборотов двигателя, а также соединительные провода.
В силу малого веса БРЭО, его вкладом в общий момент инерции можно пренебречь.
Как проводилась оценка величины момента инерции?
Оценку момента инерции можно провести следующим образом. Посмотрим на самолёт вдоль оси ОХ :
А затем представим его в виде следующей упрощённой модели:
Схема для расчёта момента инерции . Слева вверху - аккумулятор, справа внизу - двигатель. Двигатель и аккумулятор располагаются на оси фюзеляжа
Видно, что для создания модели были отброшены: киль, горизонтальное оперение, винт, а также БРЭО. При этом остались: фюзеляж, крыло, аккумулятор, двигатель. Измерив массы и характерные размеры каждой части, можно вычислить моменты инерции каждой части относительно продольной оси фюзеляжа:
Общее значение момента инерции ЛА относительно оси ОХ получим сложением моментов инерции частей:
Оценив вклад каждой из частей ЛА в общий момент инерции , получилось следующее:
- крыло - 96.3%,
- фюзеляж - 1.6 %,
- двигатель и аккумулятор - 2%,
Поэтому, несмотря на скромный вес (около 20% от общей взлётной массы ЛА), крыло имеет значительный момент инерции.
Параметры модели. Производные момента крена и
Вычисление производных момента крена – довольно трудная задача, связанная с расчётом аэродинамических характеристик ЛА численными методами или с помощью инженерных методик. Применение первых и вторых требует значительных временных, интеллектуальных и вычислительных затрат, которые оправданы при разработке систем управления большими самолётами, где стоимость ошибки всё же превышает затраты на построение хорошей модели. Для задачи управления БПЛА, масса которого не превосходит 2 кг, такой подход вряд ли оправдан. Другой способ вычисления этих производных - лётный эксперимент. Учитывая дешевизну нашего самолёта, а также близость подходящего поля для проведения такого эксперимента, для нас выбор был очевиден.Записав в автопилот прошивку для ручного управления и регистрации параметров, мы собрали самолёт и подготовили его к испытаниям:
В лётном эксперименте удалось получить данные по углу отклонения элеронов и угловой скорости вращения ЛА. Пилот управлял самолётом в ручном режиме, выполняя полёт по кругу, развороты и «бочки», а бортовое оборудование регистрировало и отправляло необходимую информацию на наземную станцию. В результате были получены необходимые зависимости: (град/с) и (б/р). Величина представляет собой нормированный угол отклонения элеронов: значение 1 соответствует максимальному отклонению, а значение −1 - минимальному:
Как теперь определить и из полученных данных? Ответ - измерить параметры переходного процесса по графикам и .
Как определялись коэффициенты k и T?
Коэффициент усиления определялся путём отнесения величины установившегося значения угловой скорости к величине отклонения элерона:
Зависимости угла отклонения элеронов и угловой скорости крена от времени, полученные в лётном эксперименте
На предыдущем рисунке участкам установившегося значения угловой скорости приблизительно соответствуют, например, отрезки вблизи моментов времени 422, 425 и 438 с (отмечены тёмно-красным на рисунке).
Постоянная времени определялась из тех же графиков. Для этого найдены участки резкого изменения угла отклонения элерона, а затем измерено время, за которое угловая скорость принимает значение, отличающееся от установившегося значения на 5%.
Результат определения значений постоянной времени и коэффициента усиления следующий: , . Этим значениям коэффициентов при известном значении момента инерции соответствуют следующие значения производных момента крена:
Верификация модели
Итак, построив модель, основой которой является апериодическое звеноМожно провести её верификацию, подав на вход сигнал , полученный из лётного эксперимента, и сравнить выходной сигнал модели с величиной , также полученной в эксперименте.
Как проводилось моделирование?
Инструмент для проведения моделирования мы выбирали, прежде всего, основываясь на возможности повторения результатов широким кругом читателей: это прежде всего означает, что программа должна быть в общественном доступе. В принципе задачу моделирования поведения апериодического звена первого порядка можно решить и создав свой собственный инструмент с нуля. Но так как в дальнейшем модель будет усложняться, то создание своего инструмента может отвлечь от основной задачи - создания САУ пилотажного ДПЛА. С учётом принципа открытости инструмента мы выбрали JSBsim .
В предыдущем разделе мы получили значения коэффициентов и . Используем их для моделирования движения самолета. Из прошлой статьи мы помним, что конфигурация модели самолета в JSBsim
задается при помощи XML
файла. Создадим собственную модель:
Так как мы строим модель движения аппарата только по крену, оставим многие из секций файла пустыми. В файле модели последовательно задаются следующие характеристики.
Геометрические размеры самолёта задаются в секции metrics : площадь крыла, размах, длина средней аэродинамической хорды, площадь горизонтального оперения, плечо горизонтального оперения, площадь вертикального оперения, плечо вертикального оперения, положение аэродинамического фокуса.
Массовые характеристики самолёта задаются в секции mass_balance : тензор инерции самолета, вес пустого самолета, положение центра масс.
Стоит отметить, что абсолютные положения аэродинамического фокуса и центра масс самолета не участвуют в расчете динамики аппарата, важно их относительное расположение.
Далее следуют секции, описывающие характеристики шасси самолета и его силовой установки.
В следующей секции, ответственной за систему управления , заполним канал, ответственный за управление по крену: укажем единственный вход fcs/aileron-cmd-norm , величина которого будет нормирована от -1 до 1.
Аэродинамические характеристики задаются в секции aerodynamics : силы задаются в скоростной системе координат, моменты - в связанной. Нас интересует момент по крену. В секции axis name=«ROLL» задаются функции, которые определяют момент сил от различных составляющих проекции момента аэродинамических сил на ось OX связанной системы координат. В нашей модели таких составляющих две. Первая составляющая - демпфирующий момент, который равен произведению угловой скорости на определенный ранее коэффициент . Вторая составляющая - это момент от элеронов при фиксированной скорости полёта: он равен произведению ранее определенного коэффициента на величину отклонения элеронов.
Стоит отметить, что при определении коэффициента была использована размерная величина . В наших полетных данные величина угловой скорости измерялась в градусах в секунду, тогда как в JSBSim используются радианы в секунду, поэтому коэффициент должен быть приведен к нужной нам размерности, т. е. разделен на 180 градусов и умножен на радиан. Записываем эти составляющие момента аэродинамических сил внутри функций произведения product . При моделировании результат выполнения всех функций суммируется и получается значение проекции аэродинамического момента на соответствующую ось.
Проверить созданную модель можно на экспериментальных данных, полученных при лётных испытаниях. Для этого создаем скрипт следующего содержания:
где точками обозначены пропущенные данные. В знакомом нам по предыдущей статье файле скрипта появился новый тип события («Time Notif»
), который позволяет задавать непрерывное изменение параметра по времени. Зависимость параметра от времени задана табличной функцией. JSBSim
линейно интерполирует значение функции между табличными данными. Процедура верификации модели движения по крену заключается в исполнении данного скрипта на созданной модели и сравнения результатов с экспериментальными.
Результат верификации показан на рисунке:
Как видно из рисунка, совпадение модели с реальностью чуть менее, чем полное.
Синтез управления для выполнения «бочки»
Получив модель, несложно определить, на какую величину и как долго необходимо отклонять элероны, чтобы выполнить «бочку». Одним из вариантов является следующий алгоритм отклонения:Наличие отрезков длительностью по 0.1 с в начале и в конце алгоритма отклонения элеронов моделирует инертность сервопривода, который не может отклонить поверхности мгновенно. Модель показывает, что при таком законе отклонения элеронов ЛА должен выполнить один полный оборот вокруг оси ОХ , проверим?
Лётный эксперимент
Полученный закон управления элеронами был запрограммирован в автопилот, установленный на самолёт. Идея эксперимента проста: вывести самолёт в горизонтальный полёт, после чего задействовать полученный закон управления. В случае если реальное движение ЛА по крену соответствует созданной модели, то самолёт должен выполнить «бочку» - один полный оборот на 360 градусов.Отдельно выражаем благодарность нашему верному пилоту за труд, профессионализм и удобный багажник на приоре-универсал!
В процессе проведения эксперимента стало ясно, что модель движения по крену была построена удачно - самолёт выполнял одну «бочку» за другой, как только пилот задействовал запрограммированный закон управления. На следующем рисунке показана угловая скорость , записанная в процессе эксперимента, и полученная по результатам моделирования, а также угол крена и тангажа из лётного эксперимента:
А на следующем рисунке показаны зарегистрированные в лётном эксперименте сигналы на элероны, руль высоты (РВ) и руль направления (РН):
Вертикальными линиями обозначены моменты начала и окончания выполнения «бочки». Из рисунков видно, что в процессе выполнения «бочки» пилот не вмешивается в управление рулём высоты и рулём направления, также видно, что угол тангажа неизменно стремится уменьшиться при выполнении «бочки» - самолёт затягивает в пикирование, как это и было предсказано по результатам моделирования в авиасимуляторе (см. статью «Пилотажный ДПЛА. Как правильно сделать бочку»). Если внимательно рассмотреть предыдущие графики, то станет видно, что третья «бочка» даже не была закончена, потому что пилот вмешался в управление, чтобы вывести самолёт из пикирования: настолько сильно изменяется угол тангажа при выполнении «бочки» одними элеронами.
Замечания
Выводы
В результате проведённой работы мы показали один из способов создания модели движения ДПЛА по угловой скорости . В лётном эксперименте было доказано, что созданная модель движения вполне соответствует моделируемому объекту. На основании разработанной модели получен закон программного управления, позволяющий выполнять «бочку» в автоматическом режиме. Также мы убедились, что выполнить правильную «бочку» одними элеронами не получится, а также наглядно это продемонстрировали.Следующим этапом будет доработка закона управления путём добавления обратной связи, а также включение в управление руля высоты. Последнее потребует создание модели продольного движения нашего самолёта. По результатам работы выйдет следующая публикация.
К этому уроку прилагается 3D-сцена
Краткое предисловие
Собственно говоря, в предыдущих уроках уже были упомянуты отдельные аспекты физики в Cinema 4D: так, например, в самом первом уроке на данном сайте мы с вами роняли шар на плоскую поверхность , позже физическую модель Cinema 4D рассматривали как один из способов моделирования генератора бесконечного движения . Но до сих пор это были лишь частные, крайне поверхностные и самые примитивные аспекты физики.
В данном же уроке мы с вами перейдём к самому интересному: к углублённому изучению физики в Cinema 4D на основе конкретного примера - мы попробуем создать и настроить (хотя бы в самом примитивном варианте) вполне работоспособную физическую модель движения автомобиля по пересечённой местности, имитирующую в общих чертах те же принципы, по которым автомобиль движется в реальном мире.
Необходимость применения физической модели перемещения автомобиля кроется в словах «по пересечённой местности». В большинстве случаев при моделировании автомобильного движения нет никакой необходимости в использовании физической модели: автомобили равномерно движутся по траектории (именно такой транспортный поток мы с вами учились создавать из одной модели автомобиля , помните?), визуально практически никак не взаимодействуя с окружающей обстановкой, и это легко и просто изобразить простыми средствами, не прибегая к физике. Однако как только речь заходит о сложном рельефе местности, по которой едет автомобиль, или о неординарном поведении самого автомобиля (дрифт, заносы или столкновения) - вот тут-то и настаёт черёд физики, если только мы с вами не хотим вручную расставлять огромное количество ключей и править кривые поведения трёхмерной модели для каждой секунды поведения последней (и это без гарантии визуального праводоподобия финального рендера).
Цели и задачи
Для начала определимся с целями и задачами. В данном уроке наша с вами цель - изобразить более-менее правдоподобное поведение автомобиля при движении по неровной поверхности. Конкретнее: автомобиль должен подпрыгивать и крениться при наезде на неровности, а также вывешивать колёса над выбоинами. А ещё, разумеется, он должен замедляться при преодолении нервностей и ускоряться на ровных участках.
Если бы не ускорение и замедление автомобиля в зависимости от рельефа, то возможно, мы с вами упростили бы себе задачу, «подвесив» автомобиль к движущемуся по заданной траектории невидимому «лидеру» - в этом случае автомобиль уподобился бы детским санкам, скорость которых зависит не от высоты снежных сугробов под полозьями, а от скорости шага отца, который тащит на санках сына. В нашем же случае нам с вами такой вариант решения проблемы не подходит, то есть придётся оборудовать модель автомобиля самым что ни на есть работающим двигателем. Для максимальной эффектности сделаем наш автомобиль заднеприводным внедорожником.
Приступаем?
Начнём с моделирования внешнего вида автомобиля (именно внешнего вида, а не физической модели - это не одно и то же!). Состоять наш с вами автомобиль будет всего лишь из пяти трёхмерных элементов: кузов и четыре колеса. Надеюсь, вам понятно, что каждое колесо должно быть отдельным элементом модели. Кроме того, каждое из колёс желательно сделать цельным (монолитным), то есть состоящим из одного-единственного элемента, а не из набора элементов, иначе впоследствии вы столкнётесь с массой сложностей - вам придётся скреплять между собой все элементы каждого из колёс при помощи физических модификаторов, что, на мой взгляд, было бы совершенно излишней тратой времени. Основной принцип, исходя из которого мы с вами разделили элементы модели - это возможность последующего визуального смещения элементов друг относительно друга во время движения внедорожника.
Обратите внимание, что в днище кузова внедорожника предусмотрены вырезы для колёс - оговорюсь сразу, что их отсутствие не помешало бы работе нашей будущей физической модели (позже вы сами в этом убедитесь), но во время просмотра анимации было бы видно проходящие насквозь через днище колёса, что, конечно, было бы грубой визуальной ошибкой.
А теперь переходим к самому главному: к созданию непосредственно физической модели внедорожника. Возможно, вы сразу же предположите, что наступила пора прикрепить колёса к кузову. Ни в коем случае! Ни сейчас, ни позже. И вот почему. Дело в том, что прикрепи вы колёса непосредственно к кузову - у вас опять-таки возникла бы куча сложностей: физическая модель Cinema 4D воспринимала бы колёса как находящиеся внутри кузова (т. е. как бы завязшие внутри него), и во что бы то ни стало пыталась бы высвободить их, вследствие чего вместо более-менее правдоподобного поведения колёс вы увидели бы главным образом их мелкую, безостановочную вибрацию и минимум реакции на физическое взаимодействие с прочими окружающими внедорожник объектами. Конечно, проблема эта вполне решается тонкой и длительной настройкой значений динамики сцены и моделей, вроде интервалов, по достижении которых начинается взаимодействие трёхмерных элементов, но мы с вами пойдём более простым путём.
Мы с вами пойдём более простым путём - и создадим на сей раз не визуальную, а физическую модель кузова автомобиля. В исполнении автора - это самый обычный полигональный куб. В вашем это может быть любой другой полигональный объект - главное, чтобы он не был виден под кузовом внедорожника, и чтобы он был полигональной моделью, края которой находятся достаточно далеко от колёс. Этот элемент мы условно назовём весовым центром.
Почему именно так, спросите вы? Почему это не может быть NULL-объект или сплайн?
Потому что созданный нами весовой центр по определению и в силу своего наименования предназначен для активного участия в физической модели внедорожника. Ни сплайны, ни NULL-объекты, будучи наделены физическими характеристиками, не используют последние, так как не имеют физической поверхности.
Итак, весовой центр внедорожника создан. Переходим к прикреплению колёс. При отсутствии физической модели мы просто подчинили бы их кубу (или даже кузову) в менеджере объектов, и этого было бы вполне достаточно. В нашем же случае колёса должны быть прикреплены не жёстко, а с учётом определённой физической свободы, то есть возможности слегка смещаться относительно весового центра при возникновении физического взаимодействия с другими объектами в сцене (например, с неровностями дорожного покрытия).
Именно для такого вида крепления в Cinema 4D предусмотрены объекты типа «Connector» (от англ. «connect» - «соединять»). Переходим в верхнее меню, ищем пункт «Simulation», в выпадающем из этого пункта меню выбираем подпункт «Dynamics» и в выпадающем подменю жмём «Connector».
Мы видим, что в рабочем окне появился новый объект, а в менеджере объектов - его наименование. Начнём с правого переднего колеса. Размещаем коннектор в точке, где расположен геометрический центр колеса, которое будет прикреплено с помощью коннектора к кузову - при этом сам геометрический центр колеса должен быть расположен в том месте, где у колеса как бы находится центр колёсной ступицы.
Теперь нужно настроить коннектор. Выделяем его наименование в менеджере объектов и видим открывшееся ниже окно свойств.
Первый параметр, значение которого нам следует изменить - это тип соединения (параметр «Type»), от него зависит, по каким закономерностям будет смещаться колесо относительно кузова. Очевидно, наиболее подходящим типом соединения в нашем случае будет «Wheel Suspension». В поле напротив слов «Object A» перетаскиваем из менеджера объектов наименование весового центра, на изображении ниже он обозначен как «Base» - это объект, к которому мы с вами прикрепляем колесо. В поле напротив слов «Object B» перетаскиваем наименование колеса (на изображении обозначено как «Wheel_FR», от сокращения «Wheel Front Right») - это объект, который мы с вами прикрепляем. Параметры «Attachment A» и «Attachment B» трогать не будем - они обозначают, где у объектов находятся центры масс, и выставленные по умолчанию значения в данном случае нас вполне устраивают.
Переходим к тонкой настройке коннектора.
Параметр «Ignore Collisions» («игнорировать взаимодействие») предназначен для случая, когда вы хотите избежать физического взаимодействия колеса с весовым центром - например, если параметры коннектора позволяют колесу отклоняться на угол до 45 градусов, но колесо при этом упирается в объект, к которому прикреплено, и не может отклониться на максимально разрешённый угол, то эта настройка может помочь. Параметр «Steering Angle» («Угол поворота») - это и есть тот самый максимально разрешённый угол отклонения колеса от своего первоначального положения. Параметр «Suspension Rest Position» определяет смещение колеса по вертикали в состоянии покоя (то есть в те моменты, когда колесо ни с чем не взаимодействует). В нашем с вами случае значение составляет -15 см. - если изменить его до -25, то кузов внедорожника будет поднят по отношению к колёсам ещё выше, нежели в данный момент, и дорожный просвет увеличится, но при этом понизится устойчивость внедорожника, так как весовой центр окажется выше - не правда ли, это уже напоминает баланс устойчивости автомобилей в реальном мире? От значения параметра «Suspension Stiffness» зависит мягкость подвески. Чем меньше значение, тем мягче будет подвеска. Параметр «Suspension Dumping» определяет «прыгучесть» подвески. Ну и наконец, при желании можно активировать параметры «Lower Limit Y» и «Upper Limit Y» и указать для них значения дистанций, на расстояния больше которых колесо отклониться не сможет.
Закончив настройку коннектора, повторяем ту же операцию - начиная с создания нового коннектора - для второго переднего колеса, на сей раз левого. Вместо путешествий по верхнему меню, как вы, вероятно, уже сообразили, можно просто найти созданный нами ранее коннектор правого переднего колеса, и изо всех сил вдавив и не отпуская клавишу «Ctrl» на клавиатуре, перетащить наименование коннектора на свободное место в менеджере объектов - после выполнения этой операции мы с вами получим новую копию коннектора, да к тому же унаследовавшую от своего оригинала все настройки. Главное - не забудьте сменить в поле «Object B» свойств нового коннектора наименование правого колеса на наименование левого.
С передними колёсам закончили. Переходим к задним.
И сразу же сталкиваемся с несколько неочевидным на первый взгляд вопросом: сколько двигателей должно быть у нашего внедорожника? Что за странный вопрос, скажете вы - один, естественно.
Объясню, с чем связан такой вопрос. В реальном механизме автомобиля крутящий момент передаётся на оба ведущих колеса одновременно через достаточно сложную систему механических приводов. Нам с вами нет смысла моделировать эту систему приводов, так как у нас нет задачи визуализировать внутреннее устройство внедорожника, а значит, вместо полноценной работы двигателя мы можем позволить себе любую его упрощённую физическую имитацию, лишь бы ведущие колёса крутились и толкали автомашину вперёд.
Таким образом, у нас с вами имеется два альтернативных решения: если нам позарез требутся изобразить раздельную тягу двух ведущих колёс , мы можем добавить в виртуальную конструкцию два отдельных двигателя, каждый из которых будет крутить «своё» колесо. Если же моделирование раздельной тяги нам с вами не нужно, то наиболее эффективным и простым способом привести автомобиль в движение будет создание так называемой «колёсной пары» - два наглухо сцементированных вместе колеса, которые приводятся в движение одним мотором.
В данном уроке мы с вами выберем второй, более простой способ - создание колёсной пары и её вращение одним мотором. С оговоркой, что в принципе при желании можно усложнить и этот способ - к примеру, вращать не колёсную пару, а ось с прикреплёнными к ней при помощи коннекторов ведущими колёсами, чтобы последние свободно вихлялись туда-сюда, как это уже настроено нами ранее для передних колёс. Впрочем, в данном уроке лишне усложнять себе задачу мы с вами не будем, есть желание - экспериментируйте самостоятельно на основе сцены, приложенной к этому уроку, ссылку на неё можно найти в начале урока.
Итак, решено - создаём колёсную пару: выделяем два задних колеса - можно в рабочем окне, можно в менеджер объектов, где вам удобнее - затем уже именно в менеджере объектов щёлкаем на любом из них правой клавишей мыши и в выпадающем контекстном меню ищем пункт «Connect+Delete» («Соединить и удалить»). Строкой выше в том же контекстном меню есть пункт «Connect» - он при объединении элементов создаёт новый объект, оставляя нетронутыми оригиналы объединяемых моделей, нам же с вами оригиналы раздельных задних колёс не понадобятся.
Мы видим, что задние колёса внедорожника стали одним трёхмерным элементом - то, что нам и требовалось.
Создаём ещё один коннектор - на сей раз для задней колёсной пары, и учитывая её монолитность, всего один, после чего настраиваем его. Располагаем его, естественно, в центре колёсной пары.
Теперь создаём мотор: верхнее меню, снова пункт «Simulation», выпадающее меню, подпункт «Dynamics», в выпадающем меню подпункт «Motor».
Располагаем созданный мотор там же, где коннектор для колёсной пары - посерединке между задними колёсами (или, выражаясь научно, в геометрическом центре задней колёсной пары), затем выделяем его наименование в менеджере объектов, плавно премещаем взгляд в открывшееся ниже окно свойств мотора и приступаем к настройке.
В поле рядом со словами «Object A» перетаскиваем из менеджера объектов наименование задней колёсной пары (на изображении оно обозначено как «Back Wheels»). В поле рядом со словами «Object B» ничего не перетаскиваем. Для параметра «Type» («Тип») выбираем значение «Angular» («угловой») - всё правильно, ведь для движения внедорожника созданный нами мотор должен непрерывно поворачивать ведущую колёсную пару на определённый угол. В качестве значения для параметра «Mode» («Режим») указываем «Regulate Speed» («Постоянная скорость»). Ну и наконец указываем числовые значения для параметров «Angular Target Speed» («скорость вращения цели») и «Torque» («крутящий момент»).
Вероятно, вы уже готовы запустить анимацию и проверить полученный результат. Если так, то - несколько рановато: ведь мы с вами выполнили только одну часть работы - настроили физическое воздействие на объекты, тогда как самих физических объектов у нас с вами пока нет. А колёса, скажете вы, а кузов, а весовой куб? Верно, полигональные модели созданы, но физически для сил воздействия ни колёс, ни кузова, ни весового куба пока не существует - пока колёсам, кузову и весовому кубу не назначен тег динамики. Ибо именно назначенный полигональному элементу трёхмерной сцены тег динамики обозначает, что данный элемент участвует во взаимодействии с другими элементами, обладающими динамическими характеристиками.
Приступаем к настройке физических характеристик внедорожника. А заодно и выстраиваем иерархическую структуру элементов, из которых он состоит. Первым делом создаём группу, в которой будут собраны все элементы автомобиля (если этого ещё не сделано) - это можно сделать, объединив несколько первых попавшихся под руку элементов при помощи комбинации клавиш Alt+G (напоминаю, что в отличие от общепринятого в Cinema 4D способа последовательного раздельного нажатия клавиш, эта комбинация нажимается одновременно!), либо создав NULL-объект.
Далее обзываем созданную группу неким уникальным, неповторимым и незабываемым словом (к примеру, автор назвал её «CAR») и запихиваем в неё все относящиеся к внедорожнику элементы: кузов, колёса, коннекторы, весовой куб и мотор.
Теперь обозначаем элементы группы как участников физического взаимодействия с окружающей физической моделью: выделяем наименование группы, щёлкаем на нём правой клавишей мыши, в выпадающем меню наводим курсор мыши на пункт «Dynamics Tags» («Теги динамики») и в выпадающем из последнего подменю выбираем единственный пункт - «Dynamics Body».
Если до сих пор вы внимательно знакомились с данным уроком, то, возможно, спросите: как группа «CAR», будучи NULL-объектом, может физически взимодействовать в физической модели? Верно, сам NULL-объект - никак. Зато свойства динамики могут унаследовать от него все подчинённые ему элементы, при этом отпадает необходимость назначать тег динамики каждому элементу индивидуально. Главное - правильно настроить тег динамики группы. Настраиваем: выделяем тег и в открывшемся ниже окне свойств выбираем вкладку «Dynamics», в которой активируем параметр «Enabled» (тем самым включая физику взаимодействия) и выбираем значение «On» для параметра «Dynamic» (тем самым указывая участие группы во всех общих для сцены физических правилах, типа гравитации и пр.)...
После чего переходим во вкладку «Collision» («Соприкосновение») в том же окне свойств и указываем значения, заставляющие элементы группы наследовать правила динамики: «Apply Tag to Children» («распространять действие тега на дочерние элементы») для параметра «Inherit Tag» («Наследование»), «All» («всё») для «Individual Elements» («Отдельные элементы»), галочку напротив «Self Collisions» («Собственное взаимодействие») и «Automatic (MoDynamics)» для «Shape» («Контур»). Остальные параметры настраиваем на свой вкус.
Тут будет уместно наконец-то вспомнить про кузов внедорожника. По нашей задумке, он также должен взаимодействовать с окружающей физической моделью трёхмерной сцены - например, разбрасывать носовой частью стену из картонных ящиков, - но при этом не должен взаимодействовать с другими элементами своей же группы - с весовым кубом и колёсами. Чтобы добиться такого результата, мы с вами подчиним его весовому кубу и назначим кузову индивидуальный тег динамики - точно так же, как группе элементов автомобиля, - но в теге динамики кузова отключим параметр «Dynamic» (укажем для него значение «Off») во вкладке «Dynamics» (обратите внимание, параметр «Enabled» остаётся активированным, иначе кузов вообще перестанет участвовать в физической модели сцены, и любое оказавшееся на пути внедорожника препятствие свободно пройдёт насквозь через кузов!). Во вкладке «Collision» назначенного кузову тега динамики для параметров «Inherit Tag» и «Individual Elements» можно указать соответственно «None» и «Off» - у кузова нет подчинённых элементов, которым следовало бы передавать динамические свойства кузова.
Всё, что осталось - это добавить в трёхмерную сцену неоднократно упоминавшуюся выше окружающую физическую модель - некий неровный рельеф, который в финальной анимации выявлял бы физически правдоподобную реакцию автомобиля на взаимодействие с ухабами. В приложенной к уроку сцене - это грубое подобие некоей арены с усеянной буграми сердцевиной.
В заключение
В данном уроке мы с вами изучили создание простейшей физической модели движения автомобиля - без каких-либо дополнительных плагинов и модулей, штатными средствами Cinema 4D. В уроке, как вы заметили, не рассматривается моделирование поворотов, созданная нами модель способна к движению только по прямой - разумеется, если только неровности рельефа под колёсами не изменят траекторию движения (что и происходит в нижеприведённом видеоролике). К слову говоря, автор намеренно настроил параметры физической модели трёхмерной сцены так, чтобы движение внедорожника было как бы гиперболизировано, с целью наглядно продемонстрировать взаимодействие колёс и кузова машины с неровностями. Кроме того, в приложенную к уроку сцену входят и другие, не упомянутые в уроке элементы, предназначенные для съёмки и освещения. Впоследствии, возможно, на сайте будут рассмотрены и более сложные физические модели.
Финальный результат в виде анимации.
Допустим, вы двигаетесь на велосипеде, и вдруг кто-то толкает вас сбоку. Чтобы быстро восстановить равновесие и избежать падения, вы повернете руль велосипеда в направлении толчка. Велосипедисты делают это рефлекторно, но удивительно, что велосипед может выполнить это действие самостоятельно. Современные велосипеды могут самостоятельно удерживать равновесие даже при движении без управления. Посмотрим, как этот эффект можно смоделировать в COMSOL Multiphysics.
Что мы знаем о самобалансировании велосипедов
Современный велосипед не очень сильно отличается от безопасного велосипеда — одной из первых конструкций, появившейся в 80-х годах XIX века. По прошествии более ста лет ученые все еще пытаются выяснить, за счет каких эффектов велосипед становится самобалансируемым. Другими словами, как неуправлемый велосипед сохраняет равновесие в вертикальном положении? Описанию движения велосипеда с помощью аналитических уравнений посвящено множество опубликованных работ. Одной из первых важных публикаций по этой теме была статья Фрэнсиса Уиппла, в которой он получил общие нелинейные уравнения динамики велосипеда, управляемого велосипедистом без использования рук.
Принято считать, что устойчивость велосипеда обеспечивается двумя факторами — гироскопической прецессией переднего колеса и стабилизирующим действием продольного наклона оси поворота колеса. Совсем недавно команда исследователей из Делфта и Корнелла (см. ) опубликовала всеобъемлющий обзор линеаризованных уравнений движения для модели велосипеда Уиппла. Они использовали свои результаты для демонстрации самобалансирующегося велосипеда. Их исследование показывает, что этому явлению нельзя дать простое объяснение. Сочетание факторов, в том числе гироскопического и стабилизирующего эффектов, геометрии велосипеда, скорости и распределения массы позволяет неуправляемому велосипеду сохранять вертикальное положение.
Вдохновившись этой работой, мы построили динамическую модель многотельной системы, чтобы продемонстрировать самобалансирующееся движение велосипеда, управляемого велосипедистом без помощи рук.
Положение велосипеда в разные моменты времени.
Многотельная модель велосипеда
Чтобы обеспечить чистое качение колес и ограничить их проскальзывание в трех направлениях, нам нужны три граничных условия.
Модель колеса с отображением направлений, в которых ограничены перемещения.
Используются следующие ограничения: Отсутствие проскальзывания в прямом направлении:
{\frac{d\bold{u}}{dt}.\bold{e}_{2}=r\frac{d\bold{\theta}_s}{dt}}
Отсутствие проскальзывания в поперечном направлении:
\frac{d\bold{u}}{dt}.\bold{e}_{3}=r\frac{d\bold{\theta}_{l}}{dt}
Отсутствие проскальзывания перпендикулярно поверхности контакта с землей:
\frac{d\bold{u}}{dt}.\bold{e}_{4}=0
где \bold{e}_{2} , \bold{e}_{3} , and \bold{e}_{4} — мгновенное направление (наклонная ось), поперечное направление (ось вращения) и нормаль к поверхности контакта (\bold{e}_{4}=\bold{e}_{2} \times\bold{e}_{3}) , соответственно;
\frac{d\bold{u}}{dt} — поступательная скорость движения; r — радиус колеса; \frac{d\bold{\theta}_{s}}{dt} — угловая скорость вращения; \frac{d\bold{\theta}_{l}}{dt} — угловая наклонная скорость.
Поскольку применить указанные граничные условия к скорости невозможно, они дискретизируются во времени и накладываются следующим образом:
(\bold{u}-\bold{u}_{p}).\bold{e}_{2}=r(\bold{\theta}_{s}-\bold{\theta}_{sp})
(\bold{u}-\bold{u}_{p}).\bold{e}_{3}=r(\bold{\theta}_{l}-\bold{\theta}_{lp})
(\bold{u}-\bold{u}_{p}).\bold{e}_{4}=0
где \bold{u}_{p} , \bold{\theta}_{sp} и\bold{\theta}_{lp} — это вектор смещения, угол вращения и наклона в предыдущий момент времени, соответственно.
В дискретных граничных условиях, обеспечивающих отсутствие проскальзывания, используется результат расчета положения колеса на предыдущем шаге по времени. Положение жесткого тела, вращение и мгновенные положения осей на предыдущем шаге по времени сохраняются с помощью глобальных уравнений и узла Previous Solution в нестационарном решателе.
Моделирование движения самобалансирующегося велосипеда
Для анализа мы выбрали велосипед, угол наклона руля которого составляет 18°. Начальное значение скорости велосипеда составляет 4.6 м/с. Через 1 секунду после начала движения на велосипед в течение очень короткого периода времени воздействует сила 500 Н. Под действием силы велосипед отклоняется от прямолинейной траектории движения в заданном направлении.
В течении первой секунды велосипед движется вперед вдоль первоначально заданного направления с постоянной скоростью. Затем боковое усилие вызывает отклонение. Отметим, что велосипедист не держит руки на руле и не может управлять балансом велосипеда. Что происходит дальше? Мы можем заметить, что как только велосипед начинает наклоняться, руль поворачивается в направлении падения. Корректировка положения руля при падении приводит к восстановлению равновесия велосипеда.
Велосипед продолжает двигаться вперед, и в процессе движения начинает наклоняться в обратную сторону. Этот наклон меньше по величине, а движение руля точно следует за наклоном с небольшим отставанием. Такое колебание вправо-влево продолжается и в конечном итоге затухает. Велосипед движется вперед в строго вертикальном положении и слегка увеличивает скорость. Колебания руля, углы поворота и угловая скорость постепенно снижаются и затухают.
Движение велосипеда на ровной поверхности при отклонении от прямолинейного движения. Стрелка показывает наклон велосипеда.
Результаты расчета углов наклона и поворота руля (слева) и относительная угловая скорость (справа) велосипеда.
Проведение анализа устойчивости
Таким образом, мы узнали, что велосипед может самобалансироваться. Исследование показало, что невозможно выделить какой-то один параметр, определяющий устойчивость велосипеда. Конструкция велосипеда, распределение массы и скорость движения — все эти факторы влияют на устойчивость. Чтобы лучше понять это явление, мы провели дополнительный анализ для изучения влияния двух параметров — начальной скорости и наклона рулевой оси. Мы использовали описанную выше модель велосипеда с углом наклона оси руля 18° и начальной скоростью 4.6 м/с в качестве исходной конфигурации и провели параметрический анализ влияния этих двух факторов.
Различные значения начальной скорости
Велосипед не может оставаться в строго вертикальном положении, когда стоит на месте. Мы изменяли скорость движения от 2.6 м/с до 6.6 м/с с шагом 1 м/с, чтобы оценить влияние этого параметра. В диапазоне 2.6–3.6 м/с велосипед наклоняется слишком сильно и неустойчив. На скорости 5.6 м/с скорость наклона стремится к нулю, но сам угол наклона приобретает ненулевое значение. Хотя данная конфигурация устойчива, велосипед будет двигаться по кругу с небольшим наклоном. На 6.6 м/с наклон и угол поворота руля увеличиваются со временем, делая движение неустойчивым.
Неустойчивое | Устойчивое | Неустойчивое | ||
---|---|---|---|---|
2.6 м/с | 3.6 м/с | 4.6 м/с | 5.6 м/с | 6.6 м/с |
Устойчивый случай соответствует скорости 5.6 м/с (слева), а неустойчивый — скорости 6.6 м/с (справа).
Угол поворота руля
Узел рулевого управления очень важен для самобалансировки велосипеда. Если велосипедом невозможно управлять (например, если руль заклинило), то велосипед не сможет компенсировать наклон, поэтому он в итоге упадет. В этой связи, поворот оси руля, который контролирует уход вилки, также влияет на самобалансировку велосипеда.
Чтобы проанализировать влияние поворота оси руля на устойчивость велосипеда, мы изменяли углы поворота руля от 15° до 21° с шагом 1°. При угле в 15° наклон и угол поворота руля увеличиваются со временем, что делает данную конфигурацию неустойчивой. Велосипед устойчив в диапазоне от 16° до 19° и неустойчив для больших углов. При значениях поворота больше 19°, наклон и угол поворота колеблются, и эти осцилляции со временем возрастают, что приводит к потере устойчивости.
В этой публикации мы рассказали, как смоделировать движение неуправляемого самобалансирующегося велосипеда с помощью модуля Динамика многотельных систем (Multibody Dynamics) в COMSOL Multiphysics. Мы продемонстрировали, как реализовать ограничения на проскальзывание на жестком колесе через уравнения, а затем объединили эти ограничения с многотельной моделью велосипеда. Затем мы проанализировали влияние начальной скорости и поворота оси на устойчивость велосипеда. Оценив эти параметры, мы увидели, что велосипед может сохранять устойчивость в одной конфигурации и терять ее в другой.
Самобалансировка велосипеда является следствием целого ряда факторов. С помощью нашего анализа и в соответствии с предыдущими исследованиями мы продемонстрировали, что устойчивость велосипеда связана с его способностью "подруливать" в направлении наклона.
Раздел программы: “Формализация и моделирование”.
Тема урока: “Моделирование движения”.
Тип урока: урок изучения нового материала.
Вид урока: комбинированный.
Технология: личностно-ориентированная.
Время проведения: второй урок по теме “Моделирование графических объектов”.
Цели урока:
- развитие представлений о моделировании как методе познания;
- формирование системно-информационного подхода к анализу окружающего мира;
- формирование общеучебных и общенаучных навыков работы с информацией.
Задачи урока:
- Воспитательная – развитие познавательного интереса, воспитание информационной культуры, воспитание умения четко организовать самостоятельную работу.
- Учебная – изучить и закрепить прием моделирования динамических объектов.
- Развивающая – развитие системно-конструктивного мышления, расширение кругозора.
Методы: словесные, наглядные, практические.
Организационные формы работы: фронтальные, индивидуальные.
Материально-техническая база:
- презентация “Моделирование движение”;
- комплекс: демонстрационный экран и компьютер с ОС Windows-9x с установленным MS Office 2000;
- компьютеры с программной средой Turbo Pascal 7.0.
Межпредметная связь : математика.
1. Подготовка к уроку
Для урока подготовлена презентация с помощью Power Point с целью визуализации информации по ходу объяснения нового материала. (Приложение1.ppt)
План урока:
Содержание этапа урока | Вид и формы работы |
1. Организационный момент | Приветствие |
2. Мотивационное начало урока | Постановка цели урока. Фронтальный опрос |
3. Изучение нового материала | Использование слайдов, работа в тетради |
4. Этап закрепления, проверки полученных знаний | Практическая работа: компьютерный эксперимент по проверке программы |
5. Этап систематизации, обобщения изученного | Самостоятельная работа за компьютером:
компьютерный эксперимент по исследованию
модели. Работа в тетради |
6. Подведение итогов, домашнее задание | Работа в тетради |
Ход урока
2. Организационный момент
3. Мотивационное начало урока. Постановка цели урока
Учитель: На прошлом занятии мы строили статичное изображение.
Вопрос: Какая модель называется статической? Какая модель называется динамической?
Ответ: Модель, описывающая состояние объекта, называется статической. Модель, описывающая поведение объекта, называется динамической.
Учитель: Сегодня продолжим тему построение изображений, но уже в динамике, т.е. объект будет изменять свое положение на плоскости во времени. Начну с демонстрации имеющейся у меня копилки программ, которые хорошо иллюстрируют тему сегодняшнего урока. (Начинается показ через запуск программ на ЯП Паскаль “Хаотичное движение” , “Полет в космосе” , “Движение колеса” (Приложение2.pas, Приложение3.pas, Приложение4.pas). Изучение модели движения мы и посвятим сегодняшний урок.
В классе на экране тема урока “Моделирование движения”.
Запишите тему сегодняшнего урока.
Учитель: Условие задачи зафиксируйте в тетради.
Для решения задачи смоделируем процесс движения сначала через описательную модель, затем формализованную и, наконец, компьютерную, чтоб можно было реализовать модель на компьютере.
Для начала давайте обсудим вопрос, что значит создать анимацию (иллюзию движения какого-либо объекта)?
Обсуждение. Заслушивание всех вариантов ответов, вплоть до невозможных.
Предполагаемый ответ: Если это как в мультипликации, то, наверное, это должно быть в виде набора статичных изображений сменяющих друг друга через какое-то время.
Учитель: Хорошо.
4. Изучение нового материала
Словесную описательную модель нашей задачи можно сформулировать так:
Учитель вслух комментирует описательную модель, просит учащихся зафиксировать ее в тетради.
Учитель: Перейдем к формализованной модели, и раз это изображение, то воспользуемся системой координат компьютера и схематично изобразим, как это должно выглядеть.
Учащиеся фиксируют эту модель в тетрадь.
Учитель: А вот как это будет выглядеть на экране (слайд выполнен с анимацией, круг проделывает движение слева на право).
Учащиеся наблюдают.
Учитель: Запишем словесный алгоритм реализации нашей модели. Ясно, что для повторения многократного изображений круга каждый раз в новой точке экрана понадобится цикл.
Вопрос: Какой цикл лучше использовать?
Ответ: For-To-Do.
Вопрос: Какая процедура поможет нам нарисовать круг белого цвета? Черного цвета?
Ответ: SetColor(15) и Circle(X,Y,R), затем SetColor(0) и Circle(X, Y, R).
Вопрос: Как осуществить задержку времени на пример на 100 м/сек?
Ответ: Delay(100).
Учитель: Правильно.
Демонстрируем слайды с 8 по 10. Учащиеся сверяют свои ответы с правильными.
Учитель: А теперь запишите всю программу целиком у себя в тетради.
Выдерживаем паузу 5–7 минут. Затем даем возможность свериться с образцом.
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
РЕСПУБЛИКАНСКИЙ ИНСТИТУТ ИННОВАЦИОННЫХ ТЕХНОЛОГИЙ
КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Курсовая работа
Дисциплина «Математическое моделирование»
Тема: «Моделирование движения парашютиста»
Введение
1. Свободное падение тела с учетом сопротивления среды
2. Формулировка математической модели и ее описание.
3. Описание программы исследования с помощью пакета Simulink
4. Решение задачи программным путем
Список использованных источников
Введение
Формулировка проблемы :
Катапульта выбрасывает манекен человека с высоты 5000 метров. Парашют не раскрывается, манекен падает на землю. Оценить скорость падения в момент удара о землю. Оценить время достижения манекеном предельной скорости. Оценить высоту, на которой скорость достигла предельного значения. Построить соответствующие графики, провести анализ и сделать выводы.
Цель работы :
Научиться составлять математическую модель, решать дифференциальные уравнения программными средствами (используется язык технических вычислений MatLAB 7.0, пакет расширения Simulink) и анализировать полученные данные о математической модели.
1. Свободное падение тела с учетом сопротивления среды
При реальных физических движениях тел в газовой или жидкостной среде трение накладывает огромный отпечаток на характер движения. Каждый понимает, что предмет, сброшенный с большой высоты (например, парашютист, прыгнувший с самолета), вовсе не движется равноускоренно, так как по мере набора скорости возрастает сила сопротивления среды. Даже эту, относительно несложную, задачу нельзя решить средствами “школьной” физики: таких задач, представляющих практический интерес, очень много. Прежде чем приступать к обсуждению соответствующих моделей, вспомним, что известно о силе сопротивления.
Закономерности, обсуждаемые ниже, носят эмпирический характер и отнюдь не имеют столь строгой и четкой формулировки, как второй закон Ньютона. О силе сопротивления среды движущемуся телу известно, что она, вообще говоря, растет с ростом скорости (хотя это утверждение не является абсолютным). При относительно малых скоростях величина силы сопротивления пропорциональна скорости и имеет место соотношение, где определяется свойствами среды и формой тела. Например, для шарика - это формула Стокса, где - динамическая вязкость среды, r - радиус шарика. Так, для воздуха при t = 20°С и давлении 1 атм = 0,0182 H.c.м-2 для воды 1,002 H.c.м-2 , для глицерина 1480 H.c.м-2.
Оценим, при какой скорости для падающего вертикально шара сила сопротивления сравняется с силой тяжести (в движение станет равномерным).
(1)
Пусть r= 0,1 м, = 0,8 кг/м (дерево). При падении в воздухе м/с, в воде 17 м/с, в глицерине 0,012 м/с.
На самом деле первые два результата совершенно не соответствуют действительности. Дело в том, что уже при гораздо меньших скоростях сила сопротивления становится пропорциональной квадрату скорости: . Разумеется, линейная по скорости часть силы сопротивления формально также сохранится, но если , то вкладом можно пренебречь (это конкретный пример ранжирования факторов). О величине k2 известно следующее: она пропорциональна площади сечения тела S, поперечного по отношению к потоку, и плотности среды и зависит от формы тела. Обычно представляют k2 = 0,5сS, где с - коэффициент лобового сопротивления - безразмерен. Некоторые значения с (для не очень больших скоростей) приведены на рис.1.
При достижении достаточно большой скорости, когда образующиеся за обтекаемым телом вихри газа или жидкости начинают интенсивно отрываться от тела, значение с в несколько раз уменьшается. Для шара оно становится приблизительно равным 0,1. Подробности можно найти в специальной литературе.
Вернемся к указанной выше оценке, исходя из квадратичной зависимости силы сопротивления от скорости.
для шарика
(3)
Рис 1 . Значения коэффициента лобового сопротивления для некоторых тел, поперечное сечение которых имеет указанную на рисунке форму
Примем r = 0,1 м, =0,8.103 кг/м3 (дерево). Тогда для движения в воздухе (= 1,29 кг/м3) получаем 18 м/с, в воде(= 1.103 кг/м3) 0,65 м/с, в глицерине (= 1,26.103 кг/м3) 0,58 м/с.
Сравнивая с приведенными выше оценками линейной части силы сопротивления, видим, что для движения в воздухе и в воде ее квадратичная часть сделает движение равномерным задолго до того, как это могла бы сделать линейная часть, а для очень вязкого глицерина справедливо обратное утверждение. Рассмотрим свободное падение с учетом сопротивления среды. Математическая модель движения - уравнение второго закона Ньютона с учетом двух сил, действующих на тело: силы тяжести и силы сопротивления среды:
(4)
Движение является одномерным; проецируя векторное уравнение на ось, направленную вертикально вниз, получаем
(5)
Вопрос, который мы будем обсуждать на первом этапе, таков: каков характер изменения скорости со временем, если все параметры, входящие в уравнение (7) заданы? При такой постановке модель носит сугубо дескриптивный характер. Из соображений здравого смысла ясно, что при наличии сопротивления, растущего со скоростью, в какой-то момент сила сопротивления сравняется с силой тяжести, после чего скорость больше возрастать не будет. Начиная с этого момента, , и соответствующую установившуюся скорость можно найти из условия =0, решая не дифференциальное, а квадратное уравнение. Имеем
(6)
(второй - отрицательный - корень, естественно, отбрасываем). Итак, характер движения качественно таков: скорость при падении возрастает от до . Как и по какому закону – это можно узнать, лишь решив дифференциальное уравнение (7).
Однако даже в столь простой задаче мы пришли к дифференциальному уравнению, которое не относится ни к одному из стандартных типов, выделяемых в учебниках по дифференциальным уравнениям, допускающих очевидным образом аналитическое решение. И хотя это не доказывает невозможность его аналитического решения путем хитроумных подстановок, но они не очевидны. Допустим, однако, что нам удастся найти такое решение, выраженное через суперпозицию нескольких алгебраических и трансцендентных функций – а как найти закон изменения во времени перемещения? Формальный ответ прост:
(7)
но шансы на реализацию этой квадратуры уже совсем невелики. Дело в том, что класс привычных нам элементарных функций очень узок, и совершенно обычна ситуация, когда интеграл от суперпозиции элементарных функций не может быть выражен через элементарные функции в принципе. Математики давно расширили множество функций, с которыми можно работать почти так же просто, как с элементарными (т. е. находить значения, различные асимптотики, строить графики, дифференцировать, интегрировать). Тем, кто знаком с функциями Бесселя, Лежандра, интегральными функциями и еще двумя десятками других, так называемых специальных функций, легче находить аналитические решения задач моделирования, опирающихся на аппарат дифференциальных уравнений. Однако даже получение результата в виде формулы не снимает проблемы представления его в виде, максимально доступном для понимания, чувственного восприятия, ибо мало кто может, имея формулу, в которой сопряжены логарифмы, степени, корни, синусы и тем более специальные функции, детально представить себе описываемый ею процесс - а именно это есть цель моделирования.
В достижении этой цели компьютер - незаменимый помощник. Независимо от того, какой будет процедура получения решения - аналитической или численной, - задумаемся об удобных способах представления результатов. Разумеется, колонки чисел, которых проще всего добиться от компьютера (что при табулировании формулы, найденной аналитически, что в результате численного решения дифференциального уравнения), необходимы; следует лишь решить, в какой форме и размерах они удобны для восприятия. Слишком много чисел в колонке быть не должно, их трудно будет воспринимать, поэтому шаг, с которым заполняется таблица, вообще говоря, гораздо больше шага, с которым решается дифференциальное уравнение в случае численного интегрирования, т.е. далеко не все значения и , найденные компьютером, следует записывать в результирующую таблицу (табл. 2).
Таблица 2
Зависимость перемещения и скорости падения от времени (от 0 до 15 с)
t(c) | S(m) | (м/с) | t(c) | S(m) | (м/с) |
Кроме таблицы необходимы графики зависимостей и ; по ним хорошо видно, как меняются со временем скорость и перемещение, т.е. приходит качественное понимание процесса.
Еще один элемент наглядности может внести изображение падающего тела через равные промежутки времени. Ясно, что при стабилизации скорости расстояния между изображениями станут равными. Можно прибегнуть и к цветовой раскраске - приему научной графики, описанному выше.
Наконец, можно запрограммировать звуковые сигналы, которые подаются через каждый фиксированный отрезок пути, пройденный телом - скажем, через каждый метр или каждые 100 метров - смотря по конкретным обстоятельствам. Надо выбрать интервал так, чтобы вначале сигналы были редкими, а потом, с ростом скорости, сигнал слышался все чаще, пока промежутки не сравняются. Таким образом, восприятию помогают элементы мультимедиа. Поле для фантазии здесь велико.
Приведем конкретный пример решения задачи о свободно падающем теле. Герой знаменитого фильма “Небесный тихоход” майор Булочкин, упав с высоты 6000 м в реку без парашюта, не только остался жив, но даже смог снова летать. Попробуем понять, возможно, ли такое на самом деле или же подобное случается только в кино. Учитывая сказанное выше о математическом характере задачи, выберем путь численного моделирования. Итак, математическая модель выражается системой дифференциальных уравнений.
(8)
Разумеется, это не только абстрактное выражение обсуждаемой физической ситуации, но и сильно идеализированное, т.е. ранжирование факторов перед построением математической модели произведено. Обсудим, нельзя ли произвести дополнительное ранжирование уже в рамках самой математической модели с учетом конкретно решаемой задачи, а именно - будет ли влиять на полет парашютиста линейная часть силы сопротивления и стоит ли ее учитывать при моделировании.
Так как постановка задачи должна быть конкретной, мы примем соглашение, каким образом падает человек. Он опытный летчик и наверняка совершал раньше прыжки с парашютом, поэтому, стремясь уменьшить скорость, он падает не “солдатиком”, а лицом вниз, “лежа”, раскинув руки в стороны. Рост человека возьмем средний - 1,7 м, а полуобхват грудной клетки выберем в качестве характерного расстояния - это приблизительно 0,4 м. для оценки порядка величины линейной составляющей силы сопротивления воспользуемся формулой Стокса. Для оценки квадратичной составляющей силы сопротивления мы должны определиться со значениями коэффициента лобового сопротивления и площадью тела. Выберем в качестве коэффициента число с=1,2 как среднее между коэффициентами для диска и для полусферы (выбор дня качественной оценки правдоподобен). Оценим площадь: S = 1,7 ∙ 0,4 = 0,7(м2).
В физических задачах на движение фундаментальную роль играет второй закон Ньютона. Он гласит, что ускорение, с которым движется тело, прямо пропорционально действующей на него силе (если их несколько, то равнодействующей, т.е. векторной сумме сил) и обратно пропорционально его массе:
Так для свободно падающего тела под действием только собственной массы закон Ньютона примет вид:
Или в дифференциальном виде:
Взяв интеграл от этого выражения, получим зависимость скорости от времени:
Если в начальный момент V0 = 0, тогда .
.
Выясним, при какой скорости сравняются линейная и квадратичная составляющие силы сопротивления. Обозначим эту скорость Тогда
Ясно, что практически с самого начала скорость падения майора Булочкина гораздо больше, и поэтому линейной составляющей силы сопротивления можно пренебречь, оставив лишь квадратичную составляющую.
После оценки всех параметров можно приступить к численному решению задачи. При этом следует воспользоваться любым из известных методов интегрирования систем обыкновенных дифференциальных уравнений: методом Эйлера, одним из методов группы Рунге - Кутта или одним из многочисленных неявных методов. Разумеется, у них разная устойчивость, эффективность и т.д. - эти сугубо математические проблемы здесь не обсуждаются.
Вычисления производятся до тех пор, пока не опустится на воду. Примерно через 15 с после начала полета скорость становится постоянной и остается такой до приземления. Отметим, что в рассматриваемой ситуации сопротивление воздуха радикально меняет характер движения. При отказе от его учета график скорости, изображенный на рисунке 2, заменился бы касательной к нему в начале координат.
Рис. 2. График зависимости скорости падения от времени
2. Формулировка математической модели и ее описание
парашютист падение сопротивление математическая модель
При построении математической модели необходимо соблюдение следующих условий:
Манекен массой 50 кг соответственно падают в воздухе с плотностью 1,225 кг/м3;
На движение влияют только силы линейного и квадратичного сопротивления;
Площадь сечения тела S=0.4 м2;
Тогда для свободно падающего тела под действием сил сопротивления закон Ньютона примет вид:
,
где a – ускорение тела, м/с2,
m – его масса, кг,
g – ускорение свободного падения на земле, g = 9,8 м/с2,
v – скорость тела, м/c,
k1 – линейный коэффициент пропорциональности, примем k1 = β = 6πμl (μ – динамическая вязкость среды, для воздуха μ = 0,0182 Н.с.м-2; l – эффективная длина, примем для среднестатистического человека при росте 1,7 м и соответствующем обхвате грудной клетки l = 0,4 м),
k2 – квадратичный коэффициент пропорциональности. K2 = α = С2ρS. В данном случае достоверно можно узнать лишь плотность воздуха, а площадь манекена S и коэффициент лобового сопротивления С2 для него определить сложно, можно воспользоваться полученными экспериментальными данными и принять K2 = α = 0,2.
Тогда получим закон Ньютона в дифференциальном виде:
Тогда можно составить систему дифференциальных уравнений:
Математическая модель при падении тела в гравитационном поле с учетом сопротивления воздуха выражается системой из двух дифференциальных уравнений первого порядка.
3. Описание программы исследования с помощью пакета Simulink
Для имитационного моделирования движения парашютиста в системе MATLAB используем элементы пакета расширения Simulink. Для задания величин начальной высоты - H_n, конечной высоты - H_ k, числа - pi, μ – динамическая вязкость среды - my, обхват - R, массе манекена m, коэффициент лобового сопротивления - c, плотность воздуха - ro, площадь сечения тела - S, ускорение свободного падения - g, начальная скорость - V_n используем элемент Constantнаходящийся в Simulink/Sources(рисунок 3).
Рисунок 3. Элемент Constant
Для операции умножения используем блок Product, находящийся в Simulink/MathOperations/Product (рисунок 4).
Рисунок. 4
Для ввода k1 – линейного коэффициента пропорциональности и k2 – квадратичного коэффициента пропорциональности используем элемент Gain, находящийся в Simulink/MathOperations/Gain(Рисунок. 5.)
Рисунок. 5
Для интегрирования – элемент Integrator. Находящийсяв Simulink/Continuous/Integrator. Рисунок. 6.
Рисунок. 6
Для вывода информации используем элементы Display и Scope. Находящиеся в Simulink/Sinks. (Рисунок. 7)
Рисунок. 7
Математическая модель для исследования с использованием вышеперечисленных элементов, описывающая последовательный колебательный контур приведена на рисунке 8.
Рисунок. 8
Программа исследований
1. Исследование графика зависимости высоты от времени и скорости от времени масса парашютиста равна 50кг.
Рисунок 9
Из графиков видно, что при расчете падения парашютиста массой 50 кг, следующие данные: максимальная скорость равна 41,6 м/с и время равно 18с, и должна достигаться через 800 м падения, т.е. в нашем случае на высоте около 4200 м.
Рисунок. 10
2. Исследование графика зависимости высоты от времени и скорости от времени масса парашютиста равна 100кг.
Рисунок 11
Рисунок 12
С массой парашютиста 100 кг.: максимальная скорость равна 58 м/с и время равно 15с, и должна достигаться через 500 м падения, т.е. в нашем случае на высоте около 4500 м. (рисунок. 11., рисунок. 12).
Выводы по полученным данным, которые справедливы для манекенов, отличающихся только массой, но с одинаковыми размерами, формой, типом поверхности и другими параметрами, определяющими внешний вид объекта.
Легкий манекен при свободном падении в гравитационном поле с учетом сопротивления среды достигает меньшей предельной скорости, но за меньший промежуток времени и, естественно, при одинаковой начальной высоте – в более низкой точке траектории, чем тяжелый манекен.
Чем тяжелее манекен, тем быстрее он достигнет земли.
4. Решение задачи программным путем
%Функция моделирования движения парашютиста
function dhdt=parashut(t,h)
global k1 k2 g m
% система ДУ первого порядка
dhdt(1,1)= -h(2);
% Моделирование движения парашютиста
% Васильцов С. В.
global h0 g m k1 k2 a
% k1-линейный коэффициент пропорциональности, определяющийся свойствами среды и формой тела. Формула Стокса.
k1=6*0.0182*0.4;
%k2-квадратичный коэффициент пропорциональности, пропорционален площади сечения тела, поперечного по
%отношения к потоку, плотности среды и зависит от формы тела.
k2=0.5*1.2*0.4*1.225
g=9.81; % ускорение свободного падения
m=50; % масса манекена
h0=5000; % высота
Ode45(@parashut,,)
r=find(h(:,1)>=0);
a=g-(k1*-h(:,2)+k2*h(:,2).*h(:,2))/m % вычисляемускорение
% Построение графика зависимости высоты от времени
subplot(3,1,1), plot(t,h(:,1),"LineWidth",1,"Color","r"),grid on;
xlabel("t, c"); ylabel("h(t), m");
title("Графикзависимостивысотыотвремени", "FontName", "Arial","Color","r","FontWeight","bold");
legend("m=50 kg")
% Построение графика зависимости скорости от времени
subplot(3,1,2), plot(t,h(:,2),"LineWidth",1,"Color","b"),grid on;
ylabel("V(t), m/c");
Title("Графикзависимостискоростиотвремени", "FontName", "Arial","Color","b","FontWeight","bold");
legend("m=50 kg")
% Построение графика зависимости ускорения от времени
subplot(3,1,3), plot(t,a,"-","LineWidth",1,"Color","g"),grid on;
text (145, 0,"t, c");
ylabel("a(t), m/c^2");
Title("Графикзависимостиускоренияотвремени", "FontName", "Arial","Color","g","FontWeight","bold");
legend("m=50 kg")
Экранная форма вывода графиков.
1. Вся физика. Е.Н. Изергина. – М.: ООО «Издательство «Олимп», 2001. – 496 с.
2. Касаткин И. Л. Репетитор по физике. Механика. Молекулярная физика. Термодинамика/ Под ред. Т. В. Шкиль. – Ростов Н/Д: изд-во «Феникс», 2000. – 896 с.
3. Компакт-диск «Самоучитель MathLAB». ООО «Мультисофт», Россия, 2005.
4. Методические указания к Курсовой работе: дисциплина Математическое моделирование. Движение тела при учете сопротивления среды. – Минск. РИИТ БНТУ. Кафедра ИТ, 2007. – 4 с.
5. Решение систем дифференциальных уравнений в Matlab. Дубанов А.А. [Электронный ресурс]. – Режим доступа: http://rrc.dgu.ru/res/exponenta/ educat/systemat/dubanov/index.asp.htm;
6. Энциклопедия д.д. Физика. Т. 16. Ч.1. с. 394 – 396. Сопротивление движению и силы трения. А. Гордеев. /Глав. ред. В.А. Володин. – М. Аванта+, 2000. – 448 с.
7. MatlabFunctionReference [Электронный ресурс]. – Режим доступа: http://matlab.nsu.ru/Library/Books/Math/MATLAB/help/techdoc/ref/.