Создание виртуального мира в Matlab

Автор: Пользователь скрыл имя, 23 Февраля 2012 в 12:57, курсовая работа

Описание работы

Объектом моделирования является необитаемый космический аппарат – луноход.
Цель работы - разработка модели виртуального мира, представляющего собой рельеф поверхности Луны, с необитаемым космическим аппаратом - луноходом. Модель разрабатываемого лунохода должна быть оснащена электрическими двигателем, который приводит в движение луноход.
Для создания виртуального мира выбрано программное средство VR Toolbox - это пакет, решающий задачи взаимодействия и управления виртуальными моделями динамических систем во времени.

Содержание

\ВВЕДЕНИЕ 3
1. Немного о луноходе 4
2. Теоретическая часть 7
3. Последовательность создания виртуального мира 12
3.1. Создание заготовки модели 12
3.1.1. Создание двигателя 14
3.2. Создание виртуального мира 19
3.3.Указание свойств объектов виртуального мира, которые будут изменяться сигналами Simulink 25
3.4. Запуск и проверка работоспособности модели 26
ЗАКЛЮЧЕНИЕ 29
СПИСОК ЛИТЕРАТУРЫ 30

Работа содержит 1 файл

Создание виртуального мира.doc

— 576.00 Кб (Скачать)

2.      Если входной сигнал не совпадает ни с одним из элементов вектора входных значений, то блок выполняет линейную интерполяцию между двумя ближайшими к нему элементами.

3.      Если входной сигнал выходит за границы вектора входных значений, то блок выполняет линейную экстраполяцию по двум крайним элементам.

Блок объединения сигналов в матрицу Matrix Concatenation.

Назначение: блок выполняет объединение (конкатенацию) входных векторов или матриц.

Параметры:

1.      Number of inputs – Количество входов.

2.      Concatenation method – Способ объединения. Выбирается из списка:

Horizontal – Горизонтальный. Массивы объединяются добавлением новых массивов справа.

Vertical – Вертикальный. Массивы объединяются добавлением новых массивов снизу.

3.1.1. Создание двигателя

Характеристики двигателя:

Напряжение – 14 В

Для создания модели двигателя необходимо запустить Matlab и Simulink и перетащить в окно редактора блок схем следующие элементы: блок constant, 4 блока gain, 3 блока integrator, sum, scope. Расположить и соединить как указано на рис.3

Рис. 3. Схема двигателя

Источник постоянного сигнала Constant

Назначение: Задает постоянный по уровню сигнал.

Параметры:

1.      Constant value - Постоянная величина.

2.      Interpret vector parameters as 1-D – Интерпретировать вектор параметров как одномерный (при установленном флажке).

Значение константы может быть действительным или комплексным числом, вычисляемым выражением, вектором или матрицей.

Усилители Gain

Назначение: выполняют умножение входного сигнала на постоянный коэффициент.

Параметры:

1.      Gain – Коэффициент усиления.

2.      Multiplication – Способ выполнения операции. Может принимать значения (из списка):

Element-wise K*u– Поэлементный.

Matrix K*u – Матричный. Коэффициент усиления является левосторонним операндом.

Matrix u*K – Матричный. Коэффициент усиления является правосторонним операндом.

3.      Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

Параметр блока Gain может быть положительным или отрицательным числом, как больше, так и меньше 1. Коэффициент усиления можно задавать в виде скаляра, матрицы или вектора, а также в виде вычисляемого выражения. В том случае если парметр Multiplication задан как Element-wise K*u, то блок выполняет операцию умножения на заданный коэффициент скалярного сигнала или каждого элемента векторного сигнала. В противном случае блок выполняет операцию матричного умножения сигнала на коэффициент заданный матрицей.

По умолчанию коэффициент усиления является действительным числом типа double.

Для операции поэлементного усиления входной сигнал может быть скалярным, векторным или матричным любого типа, за исключением логического (boolean). Элементы вектора должны иметь одинаковый тип сигнала. Выходной сигнал блока будет иметь тот же самый тип, что и входной сигнал. Параметр блока Gain может быть скаляром, вектором или матрицей либого типа, за исключением логического (boolean).

При вычислении выходного сигнала блок Gain использует следующие правила:

        Если входной сигнал действительного типа, а коэффициент усиления комплексный, то выходной сигнал будет комплексным.

        Если тип входного сигнала отличается от типа коэффициента усиления, то Simulink пытается выполнить приведение типа коэффициента усиления к типу входного сигнала. В том случае, если такое приведение невозможно, то расчет будет остановлен с выводом сообщения об ошибке. Такая ситуация может возникнуть, например, если входной сигнал есть беззнаковое целое (uint8), а параметр Gain задан отрицательным числом.

Блок вычисления суммы Sum

Назначение: вполняет вычисление суммы текущих значений сигналов.

Параметры:

1.      Icon shape – Форма блока. Выбирается из списка.

round – окружность,

rectangular – прямоугольник.

2.      List of sign – Список знаков. В списке можно использовать следующие знаки: + (плюс), - (минус) и | (разделитель знаков).

3.      Saturate on integer overflow (флажок) – Подавлять переполнение целого. При установленном флажке ограничение сигналов целого типа выполняется корректно.

Количество входов и операция (сложение или вычитание) определяется списком знаков параметра 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 и два раза щёлкнуть на осциллограф. Если всё сделано правильно, то на осциллографе мы увидим два графика (рис.4.)

 

Рис. 4. Экран осциллографа

 

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.

                  

Рис.12. Окно редактирования                           Рис. 13. Окно редактирования

высоты цилиндра                                              радиуса цилиндра

Аналогичным образом создаём верхнюю часть, выбирая другой радиус, высоту, и перемещая её с помощью свойства translation (рис.14)

Рис.14. Окно перемещения объектов

Аналогичным образом создаём колёса и оси, антенны, для их разворота используем свойство rotation (рис. 15.)

Рис.15. Окно вращения объектов

Для изменения цвета объектов щёлкаем 2 раза на свойстве Material,

далее выбираем цвет, материал и прозрачность, как это показано на рис. 16.

Рис.16. Окно редактора цвета, материала, прозрачности объекта

Рис.17. Модель Лунохода в виртуальном мире

 

3.3. Указание свойств объектов виртуального мира, которые будут изменяться сигналами Simulink

Сохраняем модель виртуального мира и переходим обратно к заготовке модели, делаем двойной щелчок на блоке VR sink, в появившемся окне параметров жмём кнопку browse, для вызова окна Select world в котором, выбираем только что сохранённый виртуальный мир. Для подтверждения жмём кнопку apply. Результат приведён на рис. 18.

В правой части параметров появилось дерево объектов виртуального мира, в чём можно убедиться, нажав кнопку слева от объекта lunohod, как это показано на рис.19 и нажмём apply.

Рис.18. дерево объектов виртуального мира

Рис.19.  Выбор изменяющегося свойства

3.4. Запуск и проверка работоспособности модели

Перейдём к заготовке модели и убедимся, что у блока VR sink появился вход lunohod translation. Меняем параметры блоков Look-up Table так как это указано в таблице 2

Таблица 2

Изменение параметров блоков Look-up Table

Название блока

Новые параметры

Look-up Table

Vector of input values [1 2 3 4]

Vector of output values [1 2 3 4]

Look-up Table2

Vector of input values [0 0 0 30]

Vector of output values [0 0 0 11]

 

Затем соединяем все блоки, как показано на рис.20.

 

 

Рис.20. Соединение блоков

Затем сохраняем модель и делаем двойное нажатие на блоке VR sink и жмём кнопку View. Откроется просмотрщик в котором появится изображение лунохода и луны, для того чтобы оживить модель жмём на кнопку start modulation. Результат моделирования на рис.21.

Информация о работе Создание виртуального мира в Matlab