Автор работы: Пользователь скрыл имя, 12 Ноября 2011 в 14:03, курсовая работа
Цель работы - разработка модели виртуального мира, представляющего собой рельеф поверхности Луны, с необитаемым космическим аппаратом - луноходом. Модель разрабатываемого лунохода должна быть оснащена электрическими двигателем, который приводит в движение луноход.
Рис.1. Система
координат и положительное
3. Последовательность создания виртуального мира
3.1. Создание заготовки модели
Запускаем Matlab и Simulink. Создаём окно редактора блок схем и перетаскиваем в него блоки: Matrix Concatenation, 3 блока Look-up Table и блок VR sink. Располагаем их так, как это показано на рис. 2. У блока Matrix Concatenation необходимо добавить третий вход и изменить метод объединения на вертикальный.
Рис. 2. Редактор блок схем.
Блок одномерной таблицы Look-Up Table
Назначение: задает в табличной форме функцию одной переменной.
Параметры:
Блок работает в соответствии со следующими правилами:
Блок объединения сигналов в матрицу Matrix Concatenation.
Назначение: блок выполняет объединение (конкатенацию) входных векторов или матриц.
Параметры:
Horizontal – Горизонтальный. Массивы объединяются добавлением новых массивов справа.
Vertical – Вертикальный. Массивы объединяются добавлением новых массивов снизу.
3.1.1. Создание двигателя
Характеристики двигателя:
Напряжение – 14 В
Для создания модели двигателя необходимо запустить Matlab и Simulink и перетащить в окно редактора блок схем следующие элементы: блок constant, 4 блока gain, 3 блока integrator, sum, scope. Расположить и соединить как указано на рис.3
Рис. 3. Схема двигателя
Источник постоянного сигнала Constant
Назначение: Задает постоянный по уровню сигнал.
Параметры:
Значение константы может быть действительным или комплексным числом, вычисляемым выражением, вектором или матрицей.
Усилители Gain
Назначение: выполняют умножение входного сигнала на постоянный коэффициент.
Параметры:
Element-wise K*u– Поэлементный.
Matrix K*u – Матричный. Коэффициент усиления является левосторонним операндом.
Matrix u*K – Матричный. Коэффициент усиления является правосторонним операндом.
Параметр блока Gain может быть положительным или отрицательным числом, как больше, так и меньше 1. Коэффициент усиления можно задавать в виде скаляра, матрицы или вектора, а также в виде вычисляемого выражения. В том случае если парметр Multiplication задан как Element-wise K*u, то блок выполняет операцию умножения на заданный коэффициент скалярного сигнала или каждого элемента векторного сигнала. В противном случае блок выполняет операцию матричного умножения сигнала на коэффициент заданный матрицей.
По умолчанию коэффициент усиления является действительным числом типа double.
Для операции поэлементного усиления входной сигнал может быть скалярным, векторным или матричным любого типа, за исключением логического (boolean). Элементы вектора должны иметь одинаковый тип сигнала. Выходной сигнал блока будет иметь тот же самый тип, что и входной сигнал. Параметр блока Gain может быть скаляром, вектором или матрицей либого типа, за исключением логического (boolean).
При вычислении выходного сигнала блок Gain использует следующие правила:
Блок вычисления суммы Sum
Назначение: вполняет вычисление суммы текущих значений сигналов.
Параметры:
round – окружность,
rectangular – прямоугольник.
Количество входов и операция (сложение или вычитание) определяется списком знаков параметра List of sign, при этом метки входов обозначаются соответствующими знаками. В параметре List of sign можно также указать число входов блока. В этом случае все входы будут суммирующими.
Если количество входов блока превышает 3, то удобнее использовать блок Sum прямоугольной формы.
Блок может использоваться для суммирования скалярных, векторных или матричных сигналов. Типы суммируемых сигналов должны совпадать. Нельзя, например, подать на один и тот же суммирующий блок сигналы целого и действительного типов.
Если количество входов блока больше, чем один, то блок выполняет поэлементные операции над векторными и матричными сигналами. При этом количество элементов в матрице или векторе должно быть одинаковым.
Если в качестве списка знаков указать цифру 1 (один вход), то блок можно использовать для определения суммы элементов вектора.
Блок аналогового интегратора Integrator
Назначение: блок используется для выполнения операции интегрирования в аналоговых системах.
Параметры:
Integration method – Метод численного интегрирования:
Forward Euler - Прямой метод Эйлера.
Метод использует аппроксимацию T/(z-1) передаточной функции 1/s. Выходной сигнал блока рассчитывается по выражению:
y(k) = y(k–1) + T*u(k–1),
y – выходной сигнал интегратора,
u – входной сигнал интегратора,
T – шаг дискретизации,
k – номер шага моделирования.
Backward Euler – Обратный метод Эйлера.
Метод
использует аппроксимацию T*z/(z–1) передаточной
функции 1/s. Выходной сигнал блока
рассчитывается по выражению:
y(k) = y(k–1) + T*u(k).
Trapeziodal – Метод трапеций.
Метод
использует аппроксимацию T/2*(z+1)/(z–1)
передаточной функции 1/s.
Выходной сигнал блока рассчитывается
по выражению:
x(k) = y(k–1) + T/2 * u(k–1).
Осциллограф Scope
Назначение: строит графики исследуемых сигналов в функции времени. Позволяет наблюдать за изменениями сигналов в процессе моделирования.
Для проверки работы двигателя можно запустить модель кнопкой start simulation и два раза щёлкнуть на осциллограф. Если всё сделано правильно, то на осциллографе мы увидим два графика.
3.2. Создание виртуального мира
Для создания виртуального мира заходим в V-Realm Builder и нажимаем кнопку New.
Окно редактора поделено на две части: слева будет отображаться древовидная структура виртуального мира (пока там видна только надпись <New World>), а справа – объекты виртуального мира.
Для начала создадим поверхность луны.
Поверхность луны будем создавать с помощью инструмента <ElevationGrid Editor> показанный на рис.5.
Рис. 5.Инструмент <ElevationGrid Editor>
Затем выберем направление источника света (в нашем случае это солнце). Для этого выберем меню Nodes > Insert > Light > Directional light. C помощью свойства direction выбираем направление света (рис.6.), с помощью свойства color-цвет (рис.7.)
Рис.6. Окно настройки направления света
Рис. 7. Окно настройки цвета источника света
Затем приступим к созданию лунохода. Для начала создадим группирующий элемент <Transform>, ( меню Nodes > Insert > Groups > Transform). И переименуем его в <lunohod>. Для переименования необходимо 2 раза щёлкнуть на Transform, подождать пару секунд (цвет фона станет синим) затем сменить имя. как это показано на рис.8.
Рис. 8. Последовательность переименования объекта transform.
Создадим корпус лунохода, для того чтобы он являлся дочерним объектом объекта lunohod, необходимо раскрыть список свойств объекта lunohod и выделить свойство children. Корпус представляет собой усечённый конус, для его создания используем элемент Extrusion (меню Nodes > Insert > Geometry > Extrusion). Имя объекта Transform меняем на korpus. Результат приведён на рис.9.
Рис.9. Иерархия объектов
Затем переходим к редактированию объекта korpus, для этого двойным щёлчком мыши по его названию, вызываем окно Extrusion Editor. В подменю Cross section жмём на кнопку <creates a triangle> (рис.10), а в подменю spine жмём на кнопку <creates a circle> (рис.11.)
Рис.10. Окно
Extrusion Editor Cross section
Рис.11. Окно Extrusion Editor spine
Далее создадим нижнюю часть лунохода, для её создания используем цилиндр ( меню Nodes > Insert> Geometry > Cylinder), не забываем что он также должен быть дочерним объектом объекта lunohod. Переименовываем его тем же образом, что и остальные объекты. Затем переходим к его редактированию. Выбираем свойство height и редактируем высоту цилиндра, как это показано на рис.12. Затем выбираем свойство radius и редактируем его, как это показано на рис.13.
Информация о работе Моделирование привода лунохода в Матлабе