Примеры мира виртуальной реальности и динамических систем

Примеры интерфейса Simulink

Для всех примеров, которые имеют Simulink® model, используйте следующую процедуру, чтобы запустить пример и просмотреть модель:

  1. В MATLAB® Командное окно, введите имя модели Simulink. Для примера введите:

    vrbounce
    

    Откроется окно Simulink с блоком для модели. По умолчанию виртуальный мир также открывается в Simulink 3D Animation™ Viewer или в вашем HTML5-enabled веб-браузере. Если вы закрываете окно виртуального мира, дважды кликните блок VR Sink, чтобы отобразить его снова.

    Примечание

    Если средство просмотра не открывается, дважды кликните блок VR Sink в модели Simulink. В Simulink 3D Средство Просмотра, из меню Simulation, нажмите Block Parameters. Откроются Параметры блоков диалоговое окно. Флажок Открыть средство просмотра автоматически должен быть установлен по умолчанию. При двойном клике по блоку VR Sink этот выбор позволяет открыть окно виртуального мира.

  2. В окне Simulink, в меню Simulation, нажмите запуск. (Также в Simulink 3D Средство Просмотра в меню Simulation нажмите Start.)

    Симуляция начинает работать, и виртуальный мир анимируется с помощью данных сигнала от симуляции.

В следующей таблице перечислены примеры Simulink, предоставленные с продуктом Simulink 3D Animation. Описания примеров следуют за таблицей.

ПримерSimulink Coder™ готовПриемник VRИсточник VRДжойстикПространственная мышь
sl3dex_rigidbodytree X   
sl3dex_uav XX X

vrbounce

X

X

   

vrcrane_joystick

 

X

 

X

 

vrcrane_panel

 

X

X

  

vrcrane_traj

X

X

   

vrlights

X

X

   

vrmaglev

 

X

X

  

vrmaglev_sldrt

X

X

   

vrmanipul

 

X

  

X

vrmanipul_global

 

X

X

  

vrmemb1

X

X

   

vrmorph

X

X

   

vr_octavia

X

X

   
vr_octavia_2cars 

X

   
vr_octavia_graphs 

X

   
vr_octavia_mirror 

X

   

vr_octavia_video

 

X

   

vrdemo_panel

 

X

X

  

vrpend

X

X

   

vrplanets

X

X

   

vrtkoff

X

X

   

vrtkoff_trace

 

X

   

vrtkoff_hud

 

X

   

vrcollisions

 

X

X

  
vrcollisions_lidar 

X

X

  

vrmaze

 

X

X

  

Пример конкуренции БПЛА (sl3dex_uav)

The sl3dex_uav пример показывает, как виртуальные датчики столкновения могут использоваться для интерактивного управления симуляцией и изменения внешнего вида объектов виртуального мира с помощью Simulink ® 3D Animation™. Пример представляет вызов простого беспилотного летательного транспортного средства (БПЛА).

Сцена соревнований БПЛА основана на Конкурсе рейсов IMAV, проходившем в 2013 году в Тулузе, Франция. (http://www.imav2013.org)

Визуализация древовидного твердого тела (sl3dex_rigidbodytree)

The sl3dex_rigidbodytree пример демонстрирует функциональность блока Simulink 3D Animation VR RigidBodyTree. Этот пример требует Robotics System Toolbox™

Блок VR RigidBodyTree вставляет визуальное представление объекта Robotics System Toolbox RigidBodyTree в виртуальном мире и отображает его в средстве просмотра виртуальной реальности. Во время симуляции древовидное твердое тело впоследствии анимируется в соответствии с строением, заданной во входе Config.

В этом примере строение манипулятора обеспечивается блоком Robotics System Toolbox Inverse Kinematics. Можно использовать ползунки, чтобы изменить положение конца и ориентацию робота вокруг одной оси.

Пример прыгающего мяча (vrbounce)

The vrbounce пример представляет мяч, прыгающий с пола. Мяч деформируется, когда он ударяется о пол, сохраняя объем мяча постоянным. Деформация достигается путем изменения масштабного поля мяча.

Портальный кран с управлением джойстиком (vrcrane_joystick)

The vrcrane_joystick пример иллюстрирует, как модель Simulink может взаимодействовать с виртуальным миром. Динамика портальных кранов моделируется в интерфейсе Simulink и визуализируется в виртуальной реальности. Модель использует блок Joystick Input, чтобы управлять уставкой. Оси джойстика 3 управляют положением уставки, и кнопка 1 запускает кран. Этот пример требует стандартного джойстика с по крайней мере тремя независимыми осями, подключенными к ПК.

Чтобы минимизировать количество сигналов, переданных между моделью Simulink и миром виртуальной реальности, и сохранить модель максимально простой и гибкой, из модели в блок VR Sink отправляется только минимальный набор свойств движущихся объектов. Все другие значения, необходимые для описания перемещения объектов виртуальной реальности, вычисляются из этого минимального набора с помощью VRMLScript в связанном файле 3D виртуального мира.

Для получения дополнительной информации о том, как реализована иерархия модели крана и логика скриптов, смотрите связанный с ней файл 3D виртуального мира с комментариями portal_crane.wrl.

Виртуальная панель управления (vrdemo_panel)

The vrdemo_panel пример показывает использование объектов измерения, которые доступны в библиотеке 3D World Editor Components. Эти объекты объединяют датчики виртуального мира с логикой, которая изменяет их визуальный внешний вид на основе пользовательского ввода. Значения датчика могут быть считаны в Simulink исходным блоком VR. Логика реализована с помощью скриптов VRML и маршрутов.

Панель управления содержит кнопку, кнопку переключателя, тумблер и область выбора 2-D уставки. Выходы этих элементов считываются в модель Simulink и впоследствии отображаются с помощью стандартных приемников или используются в качестве входов блоков, которые управляют некоторыми объектами в виртуальном мире.

Кнопка, кнопка переключения и переключатели имеют выходы состояния логического типа. Их значения отображаются с помощью возможности.

Два выхода области уставки 2D используются для достижения следующего поведения. Значение «SetPoint_Changed» eventOut постоянно обновляется, когда указатель мыши находится над областью датчика. Это значение запускается вторым выходом - «isActive», который верен только при нажатии кнопки указателя. Срабатывающее значение - координаты активной точки на плоскости датчика отображаются с помощью XY Graph и отправляются обратно в виртуальный мир двумя способами: как положение маркера зеленого конуса и как текст, который блок VR Text Output отображает на панели управления.

Пример портального крана с предопределенной траекторией (vrcrane_traj)

The vrcrane_traj пример основан на vrcrane_joystick пример, но вместо интерактивного управления, он имеет предопределенную траекторию нагрузки. The vrcrane_traj модель иллюстрирует метод создания визуального впечатления от соединения и разделения движущихся объектов в виртуальном мире.

Магнит крана присоединяет ящик нагрузки, перемещает его в другое место, затем отпускает ящик и возвращается в исходное положение. Этот эффект достигается с помощью дополнительного, геометрически идентичного теневого объекта, который помещается в качестве независимого объекта вне иерархии объектов крана. В любой момент времени только один из Load или Shadow отображаются объекты, используя два Switch узлы, соединенные ROUTE оператор.

После того, как кран переместит нагрузку в новое положение, во время релиза нагрузки скрипт VRMLScript присваивает новое положение теневого объекта в соответствии с текущим Load положение. The Shadow объект становится видимым. Поскольку он не зависит от остальной иерархии движущихся частей крана, он остается в своем положении, когда кран удаляется.

Пример подсветки (vrlights)

The vrlights В примере используются источники света. В сцене можно переместить Солнце (смоделировано как DirectionalLight) и лампа (моделируется как PointLight) объекты вокруг модели Simulink. Это движение создает иллюзию изменений между днем и ночью и ночной подсветкой местности. Связанный файл 3D виртуального мира задает несколько точек зрения, которые позволяют вам наблюдать постепенные изменения света с различных точек зрения.

Пример модели магнитного левитации (vrmaglev)

The vrmaglev пример показывает взаимодействие между динамическими моделями в окружение Simulink и виртуальными мирами. Модель Simulink представляет HUMUSOFT® CE 152 Модель шкалы обучения/презентации магнитной левитации. Модель объекта управления управляется ПИД-регулятор с feedforward, чтобы справиться с нелинейностью системы магнитной левитации. Чтобы легче наблюдать и управлять мячом, установите средство просмотра на точку обзора Camera 3.

Задать уставку мяча положения можно двумя способами:

  • Использование Signal Generator (Simulink) блока

  • Кликнув в сцене виртуальной реальности в нужном положении

Для достижения эффекта перетаскивания используйте PlaneSensor прикреплен к шаровой геометрии с ограничением выходного выхода < 0,1 > в вертикальной координате и обработан блоком VR Sensor Reader. The vrextin S-функция обеспечивает подключение к данным.

Для получения дополнительной информации о том, как считать значения из виртуальных миров программно, смотрите Добавить датчики в виртуальные миры.

Магнитная модель левитации для примера рабочего Simulink Desktop Real-Time (vrmaglev_sldrt)

В дополнение к vrmaglev пример, vrmaglev_sldrt пример работает непосредственно с фактическим оборудованием модели шкалы CE 152 в реальном времени. Эта модель для работы с платой сбора данных HUMUSOFT MF 624, и программным обеспечением Simulink Coder и Simulink Desktop Real-Time™. Однако можно адаптировать эту модель для других целей и плат сбора. Цифровой БИХ из библиотеки DSP System Toolbox™ фильтрует выходы физической системы. Можно обойти физическую систему при помощи встроенной модели объекта управления. Запуск этой модели в реальном времени является примером, показывающим возможности продукта Simulink в проекте систем управления и быстром прототипировании.

После включения удаленного представления в диалоговом окне блока VR Sink можно управлять моделью Simulink даже с другого (удаленного) клиентского компьютера. Это управление может быть полезно для распределения вычислительной степени между моделью Simulink в реальном времени, работающей на одной машине, и визуализацией мира виртуальной реальности на другой машине.

Чтобы работать с этой моделью, используйте максимально мощную машину или разделите вычисления и визуализацию на две машины.

Пример манипулятора с пространственной мышью (vrmanipul)

The vrmanipul пример иллюстрирует использование программного обеспечения Simulink 3D Animation для прототипирования виртуальной реальности и проверки жизнеспособности проектов перед фазой реализации. Кроме того, этот пример иллюстрирует использование входа пространственной мыши для манипулирования объектами в виртуальном мире. Для запуска этого примера необходимо ввести пробел мыши.

Модель виртуальной реальности представляет собой манипулятор с ядерной горячей ёмкостью. Им манипулирует простая модель Simulink, содержащая блок Space Mouse Input. Эта модель использует все шесть степеней свободы пространственной мыши для манипулирования механической рукой и использует кнопку мыши 1, чтобы закрыть захват челюстей манипулятора.

Пространственная мышь является входом с шестью степенями свободы. Он полезен для навигации и манипулирования объектами в виртуальном мире. Пространственная мышь также подходит в качестве общего устройства входа для моделей Simulink. Вы можете использовать пространственную мышь для повышения эффективности приложений и комфорта пользователя. Вход мыши Space поддерживается через блок Space Mouse Input, который входит в библиотеку блоков Simulink 3D Animation для окружения Simulink.

Блок Space Mouse Input может работать в трех режимах, чтобы охватить наиболее типичное использование такого устройства в трехмерном контексте:

  • Скорости

  • Положения

  • Координаты точки зрения

Манипулятор, перемещающий нагрузку с использованием глобальных координат (vrmanipul_global)

The vrmanipul_global пример иллюстрирует использование глобальных координат в моделях Simulink 3D Animation. Можно использовать глобальные координаты в модели многими способами, включая:

  • Отслеживание объектов и манипуляции

  • Простое обнаружение столкновения

  • Симуляция гаптических эффектов

Исходный блок VR поддерживает использование глобальных координат для объектов в виртуальном мире. Для каждого Преобразования в сцене в древовидном виде в диалоговом окне параметра VR Source block отображается Extensions ветвь. В этой ветви можно выбрать translation_abs и rotation_abs поля. Поля с _abs суффикс содержит глобальные координаты объекта. Поля без _abs суффикс вводит их данные в локальные координаты объекта модели Simulink (относительно их родительских объектов в иерархии модели).

Модель виртуальной реальности представляет собой манипулятор с ядерной горячей ёмкостью. Манипулятор перемещает нагрузку с одной серой цилиндрической платформы на другую. Траектория для конечного эффектора манипулятора предопределена с помощью Signal Builder. Каждая часть рычага манипулятора независимо приводится в действие с помощью разложенных компонентов траектории, с помощью блоков VR Expander (см. VR Transformations подсистема).

Блок VR Source в дереве виртуальной сцены слева захватывает глобальные координаты всех объектов, важных для манипуляции нагрузкой:

  • Контрольная точка захвата манипулятора (центр хомута)

  • Контрольная точка назначения

  • Начальное положение нагрузки

Положение захвата манипулятора является результатом комплексного перемещения частей рычага манипулятора, которые образуют иерархическую структуру. Обычно очень трудно вычислить глобальные координаты для таких объектов, затронутых иерархическими связями в сцене. Однако Simulink 3D Animation предоставляет простой способ чтения глобальных координат объектов, затронутых иерархическими отношениями, в модель Simulink.

Основываясь на наличии глобальных координат всех важных объектов, можно реализовать простую логику управления манипулятором.

Пример вращающейся мембраны (vrmemb1)

The vrmemb1 пример аналогичен vrmemb пример, но в vrmemb1 пример связанный виртуальный мир управляется из модели Simulink.

Пример геометрии Морфинга (vrmorph)

The vrmorph пример иллюстрирует, как можно передать сигнальные данные матричного типа или переменного размера между интерфейсом Simulink и миром виртуальной реальности. С помощью этой возможности можно выполнить массовые изменения цвета или морфинг. Эта модель морфирует кубик в октаэдр, а затем изменяет его обратно на кубик.

Визуализация динамики аппарата (vr_octavia)

The vr_octavia пример иллюстрирует преимущества визуализации сложной динамической модели в среде виртуальной реальности. Также показана функциональность записи анимации 3D Simulink 3-D Animation в автономном режиме.

Динамика аппарата - симуляция нескольких объектов (vr_octavia_2cars)

Этот пример расширяет vr_octavia пример, чтобы показать визуализацию сценария с несколькими объектами.

Предварительно рассчитанные данные моделирования представляют стандартный маневр с двухполосным переходом, проводимый в двухмашинных строениях. Один из строения взаимодействует с управляющим модулем Electronic Stability Program. Другие переключатели строения, которые управляют модулем off. Пример отправляет два набора данных динамики аппарата параллельно в сцену виртуальной реальности, чтобы управлять двумя различными транспортными средствами.

Модели транспортных средств используют EXTERNPROTO механизм. В главном виртуальном мире, сопоставленном с блоком VR Sink, можно создать несколько одинаковых транспортных средств как образцов общего объекта 3-D. Этот подход значительно упрощает разработку виртуального мира. Например, очень легко создать третье транспортное средство, чтобы одновременно визуализировать другой сценарий симуляции. The octavia_scene_lchg_2cars.wrl виртуальный мир, код после определения PROTOS иллюстрирует подход к простым в определении переиспользуемым объектам.

В дополнение к свойствам автомобиля, управляемым в vr_octavia например, прототипы транспортных средств также позволяют вам определять цвет и шкалу транспортного средства. Эти свойства различают отдельные образцы автомобиля (цвет) и избегают неприятного визуального взаимодействия двух почти выровненных 3-D объектов (шкала). Масштабирование одного из автомобилей на небольшое количество, охватывает один автомобиль в другой, так что их лица не зажимаются случайным образом, основываясь на текущих данных моделирования на каждом шаге симуляции.

Чтобы визуализировать транспортные средства один за другим, добавьте смещение к положению одного транспортного средства.

Динамика аппарата визуализацию с Графиками (vr_octavia_graphs)

The vr_octavia_graphs пример расширяет vr_octavia пример, показывающий, как объединить холст виртуальной реальности на одном рисунке с другими объектами графического интерфейса пользователя. В этом случае виртуальный мир отображает три графика, которые обновляются на каждом главном временном шаге симуляции.

Динамика аппарата визуализация с живым задним зеркальным изображением (vr_octavia_mirror)

The vr_octavia_mirror пример расширяет vr_octavia пример, показывающий возможность блока VR Sink обрабатывать видеопоток на входе. В виртуальном мире, PixelTexture текстурная карта определяется в точке левого заднего зеркала транспортного средства. Пример помещает 2-D изображение с точки зрения в то же положение (глядя назад). Это изображение закольцовывается назад в тот же виртуальный мир и проецируется на заднее зеркальное стекло, создавая впечатление живого отражения. Текстурные изображения могут иметь различные форматы (соответствующие доступному SFImage определения согласно VRML97 стандарту). Этот пример использует изображение RGB, которое имеет тот же формат, что и выход из блока VR в видео. В файле 3D виртуального мира, сопоставленном со сценой, можно задать только тривиальную текстуру (в этом случае - шахматную доску 4х4 пикселя), которая изменяется во время симуляции, согласно текущему размеру сигнала на входе. Смотрите пример Plane Манипуляции Using Space Mouse MATLAB Объекта.

Пример визуализации динамики аппарата с выходом видео (vr_octavia_video)

The vr_octavia_video пример иллюстрирует, как использовать выход видео из блока VR To Video. Эта модель выполняет простые операции на выходе видео. Для этого требуется продукт Computer Vision Toolbox™.

Пример инвертированного маятника (vrpend)

The vrpend пример иллюстрирует различные способы взаимодействия динамической модели в интерфейсе Simulink со сценой виртуальной реальности. Это модель двумерного перевернутого маятника, управляемый ПИД-регулятор. То, что отличает эту модель от общих моделей инвертированного маятника, является методами для установки заданной точки. Вы визуализируете и взаимодействуете с виртуальным миром с помощью блоков Trajectory Graph и VR Sink. Блок Trajectory Graph позволяет вам отслеживать историю положения маятника и изменять заданную точку тремя способами:

  • Мышь - щелкните и перетащите указатель мыши в двумерное окно График

  • Входной сигнал - вход графика внешней траектории в этой модели (управляется генератором случайных чисел)

  • Датчик VR - активирует вход от VRML TouchSensor

Когда указывающее устройство в средстве просмотра виртуального мира перемещается по активной области TouchSensor, форма курсора изменяется. Логика запуска в этой модели установлена, чтобы применить новое значение заданной точки с помощью нажатия кнопки левой кнопки мыши.

Заметьте псевдоортографическое представление, заданное в связанном файле 3D виртуального мира. Вы достигаете этого эффекта путем создания точки зрения, которая находится далеко от объекта интереса с очень узким видом, заданным FieldOfView параметр. Ортогональное представление полезно для устранения панорамных искажений, возникающих при использовании широкоугольного объектива. Недостатком этого метода является то, что размещение точки обзора на расстоянии делает стандартную навигацию средства просмотра сложной или трудной в некоторых навигационных режимах, таких как режим Exampine. Если вы хотите перемещаться вокруг скамейки виртуальных маятников, вам следует использовать другую точку зрения.

Пример Солнечной системы (vrplanets)

The vrplanets пример показывает динамическое представление первых четырех планет Солнечной системы, Луны, вращающейся вокруг Земли, и самого Солнца. Модель использует реальные свойства небесных тел. Только относительные размеры планеты и расстояние между Землей и Луной регулируются, чтобы обеспечить интересный вид.

Несколько точек зрения определены в виртуальном мире, как статические, так и прикрепленные к наблюдателю на Земле. Можно видеть, что тела планеты не представлены как совершенные сферы. Использование Sphere графический примитив, который визуализирован таким образом, упростил модель. Если вы хотите сделать планеты более реалистичными, можно использовать более сложные IndexedFaceSet тип узла.

Ускорения взаимной гравитации тел вычисляются с помощью поддержки данных матричного типа Simulink.

Пример взлета плоскости (vrtkoff)

The vrtkoff пример представляет собой упрощенный самолет, взлетающий с взлетно-посадочной полосы. В этой модели задано несколько точек обзора, как статических, так и присоединенных к плоскости, что позволяет видеть выборку с различных ракурсов.

Модель показывает метод объединения нескольких объектов, импортированных или полученных из различных источников (пакеты CAD, общие 3-D моделисты и так далее), в сцену виртуальной реальности. Обычно вам необходимо обернуть такие импортированные объекты дополнительным Transform узел. Эта обертка позволяет вам соответствующим образом задать масштабирование, положение и ориентацию объектов, помещаемых в сцене. В этом примере модель самолета из Ligos® Библиотека объектов V-Realm Builder включена в сцену. Файл vrtkoff2.wrl использует ту же сцену с другим типом самолетов.

Пример взлета плоскости с трассировкой траектории (vrtkoff_trace)

The vrtkoff_trace является вариантом vrtkoff пример, который иллюстрирует, как проследить траекторию движущегося объекта (плоскости) в сцене. Он использует блок VR Tracer. Используя предопределённый шаг расчета, этот блок позволяет вам помещать маркеры в текущее положение объекта. Когда симуляция останавливается, маркеры указывают путь траектории объекта. Этот пример использует октаэдр в качестве маркера.

Пример взлета плоскости с текстом HUD (vrtkoff_hud)

The vrtkoff_hud пример иллюстрирует, как отобразить значения сигналов как текст в виртуальном мире и простом Head-Up Display (HUD). Это вариант vrtkoff пример.

Пример отправляет текст в виртуальный мир, используя блок VR Text Output. Этот блок форматирует вектор входа, используя строку формата, заданную в его маске (см. sprintf для получения дополнительной информации) и отправляет получившуюся строку в 'string' поле связанного Text узел в сцене.

Пример достигает поведения HUD (поддержание постоянного относительного положения между пользователем и Text узел) путем определения ProximitySensor. Этот датчик чувствует положение и ориентацию пользователя, когда он перемещается через сцену и направляет эту информацию к перемещению и вращению объекта HUD (в этом случае a Transform который содержит Text узел).

Обнаружение столкновения с помощью линейного датчика (vrcollisions)

The vrcollisions пример показывает простой способ реализации обнаружения столкновения.

В виртуальном мире X3D LinePickSensor задан. Этот датчик обнаруживает приблизительные столкновения нескольких лучей (смоделированы как IndexedLineSet) с произвольными геометриями в сцене. Для геометрических примитивов обнаруживаются точные столкновения. Один из LinePickSensor выходные поля являются полем\\, которое становится TRUE как только обнаруживается столкновение между любым из лучей и окружающими объектами сцены.

Робот находится внутри комнаты с несколькими препятствиями. Во время симуляции робот движется вперед, пока его датчик не прыгает в стенку или препятствие. Используйте Left и Right кнопки, чтобы повернуть робота так, чтобы впереди был свободный путь, и робот снова начинает движение.

Модель задает как VR Sink, так и VR Source блоки, сопоставленные с одной и той же виртуальной сценой. Датчик считывается с VR Source isActive сигнал и текущее положение робота. Блок VR Sink устанавливает положение, поворот и цвет робота.

В виртуальном мире заданы две точки зрения - одна статическая и одна прикрепленная к роботу.

Дифференциальный колесный робот с датчиком Лидара (vrcollisions_lidar)

The vrcollisions_lidar пример показывает, как LinePickSensor может использоваться, чтобы смоделировать поведение датчика лидара в Simulink 3D Animation.

В простом виртуальном мире задан колесный робот с установленным на его верхней части датчиком лидара. Этот датчик лидара реализован с помощью LinePickSensor который обнаруживает столкновения нескольких лучей (моделируется как IndexedLineSet) с окружающими объектами сцены. Датчик pickedRange и pickedPoint поля используются в этой модели только в целях визуализации, но вместе с информацией о положении робота они могут использоваться для одновременной локализации и отображения (SLAM) и других аналогичных целей.

Линии измерения датчика видны, показаны как прозрачные зеленые линии. В горизонтальной плоскости между -90 и 90 степенями равномерно расположен 51 чувствительный луч. Область значений лидара составляет 10 метров.

В порядок визуализации выхода датчика лидара существует прокси визуализации LineSet задается линиями, идентичными линиям, заданным как LinePickSensor измерение геометрии. Линии визуализации синие. Комбинация pickedPoint и pickedRange LinePickSensor выходы используются для визуализации точек столкновения. The pickedPoint выход содержит координаты точек, которые столкнулись с окружающими объектами. Этот выход имеет переменный размер в зависимости от того, сколько лучей датчика столкнулось. The pickedRange фиксируют выходной размер, равный количеству чувствительных лучей. Выход возвращает расстояние от источника датчика лидара до точки столкновения для каждой измерительной линии. Для лучей, которые не сталкиваются, этот выход возвращает -1. The pickedRange используется для определения индексов линий, для которых точки столкновения возвращаются в pickedPoint выход датчика. В эффект синие линии сокращаются так, что для каждой линии отображается только сегмент линии между источником вентилятора луча и точкой столкновения.

Траектория робота моделируется тривиальным способом с помощью блоков Signal Builder и Ramp. В Signal Builder для первых 40 секунд симуляции задается простая квадратная траектория 1x1 метр. После возвращения в исходное положение робот вращается только на неопределённое время.

В модели заданы как VR Sink, так и VR Source блоки, сопоставленные с одним и тем же виртуальным миром. Этот VR Source используется для считывания сигналов датчика. Этот VR Sink используется, чтобы задать положение/вращение робота и координаты конечных точек визуальных прокси-линий датчика.

В виртуальном мире задано несколько точек зрения, как статических, так и прикрепленных к роботу, что позволяет наблюдать лидарную визуализацию с разных точек зрения.

Дифференциальный колесный робот в лабиринте (vrmaze)

The vrmaze пример показывает, как можно использовать обнаружение столкновения для симуляции дифференциального колесного робота, который решает проблему лабиринта. Алгоритм управления роботом использует информацию от виртуальных ультразвуковых датчиков, которые чувствуют расстояние до окружающих объектов.

Простой дифференциальный колесный робот оснащен двумя виртуальными ультразвуковыми датчиками. Один из датчиков смотрит вперед, а другой направлен налево от робота. Датчики упрощены, их активная область значений представлена зелеными линиями. Датчики реализованы следующим X3D LinePickSensor узлы. Эти датчики обнаруживают приблизительные столкновения лучей (моделируются как IndexedLineSet) с произвольными геометриями в сцене. Для геометрических примитивов обнаруживаются точные столкновения. Один из LinePickSensor выходные поля являются isActive поле, которое становится TRUE как только обнаруживается столкновение его луча с окружающими объектами сцены. При активации линии датчика изменяют свой цвет с зеленого на красный с помощью скрипта, написанного непосредственно в виртуальном мире.

В модели заданы как VR Sink, так и VR Source блоки, сопоставленные с одной и той же виртуальной сценой. В VR Source считываются датчики isActive сигналы. Этот VR Sink устанавливает положение робота и вращение в виртуальном мире.

Алгоритм управления роботом реализован с помощью графика Stateflow ®.

Примеры интерфейсов MATLAB

В следующей таблице перечислены примеры интерфейса MATLAB, поставляемые вместе с программным обеспечением. Описания примеров следуют за таблицей. Примеры интерфейса MATLAB отображают виртуальные миры в вашем средстве просмотра по умолчанию. Если по умолчанию используется Simulink 3D Средство Просмотра, некоторые кнопки недоступны. В частности, кнопки симуляции для симуляции и записи недоступны.

ПримерПеремещение
Объекты
Превращение
Объекты
ТекстЗаписьvrml () Использование функцииПространственная мышь
vrcar

X

     
vrheat 

X

X

   
vrheat_anim 

X

X

X

  
vrmemb

X

 

X

 

X

 
vrterrain_simple 

X

    
vrtkoff_spacemouse  

X

  

X

Пример автомобиля в горах (vrcar)

Этот пример иллюстрирует использование продукта Simulink 3D Animation с интерфейсом MATLAB. В пошаговом руководстве он показывает команды для навигации виртуального автомобиля по пути через горы.

  1. В Командном Окне MATLAB введите

    vrcar
    
  2. Запускается учебный скрипт. Следуйте инструкциям в Командном Окне MATLAB.

Пример теплопередачи (vrheat)

Этот пример иллюстрирует использование продукта Simulink 3D Animation с интерфейсом MATLAB для манипулирования сложными объектами.

В этом примере данные матричного типа передаются между программным обеспечением MATLAB и миром виртуальной реальности. Используя эту функцию, можно добиться массивных изменений цвета или морфинга. Это полезно для представления различных физических процессов. Используются предварительно рассчитанные данные основанного на времени распределения температуры в L-образном металлическом блоке. Данные затем отправляются в виртуальный мир. Это формирует анимацию с относительно большими изменениями.

Это пошаговый пример. Показаны следующие функции:

  • Изменение формы объекта

  • Применение цветовой палитры для представления распределенных параметров по форме объекта

  • Работа с текстовыми объектами VRML или X3D

  • Анимация сцены с помощью интерфейса MATLAB

  • Синхронизация нескольких свойств сцены

В конце этого примера можно сохранить объект виртуального мира в рабочем пространстве MATLAB, затем сохранить полученную сцену в соответствующий файл 3D виртуального мира или выполнить другие последующие операции над ним.

Визуализация теплопередачи с 2-D анимацией (vrheat_anim)

Этот пример иллюстрирует использование интерфейса Simulink 3D Animation C для создания 2-D автономных файлов анимации.

Можно управлять автономным механизмом записи анимации путем установки соответствующей vrworld и vrfigure свойства объекта. Для записи анимации следует использовать Simulink 3D Средство Просмотра. Однако непосредственное управление записью также возможно.

Этот пример использует данные распределения тепла из vrheat пример для создания файла анимации. Можно позже распространить этот файл анимации, чтобы его независимо просматривали другие. Для этого вида визуализации, где статическая геометрия, представленная IndexedFaceSet узел окрашен на основе симуляции некоторого физического явления, он подходит для создания 2-D .avi файлы анимации. Программное обеспечение использует MATLAB VideoWriter объект для записи 2-D анимации в точности так, как она появляется на рисунке средства просмотра.

Для записи анимации можно использовать несколько методов. В этом примере мы используем запланированную запись. Когда запланированная запись активна, в файл анимации записывается временная система координат с каждой настройкой виртуального мира Time свойство. Запись завершается, когда вы устанавливаете время сцены в конце или вне предопределенного интервала записи.

При использовании интерфейса MATLAB Simulink 3D Animation вы устанавливаете требуемое время сцены. Это обычно с точки зрения моделируемого явления равноудаленное время. Это является наиболее важным различием от записи анимации для виртуальных миров, которые связаны с моделями Simulink, где время сцены соответствует непосредственно времени Simulink.

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

Это пошаговый пример. Показаны следующие функции:

  • Запись 2-D автономную анимацию с помощью интерфейса MATLAB

  • Применение цветовой палитры для визуализации распределенных параметров по форме объекта

  • Анимация сцены

  • Воспроизведение созданного 2-D файла анимации с помощью системного AVI-плеера

В конце этого примера полученный файл vrheat_anim.avi остается в рабочей папке для дальнейшего использования.

Пример вращающейся мембраны с графическим интерфейсом MATLAB (vrmemb)

The vrmemb пример показывает, как использовать 3-D графический объект, сгенерированный из окружения MATLAB, с продуктом Simulink 3D Animation. Мембрана генерируется logo функция и сохранена в формате VRML с помощью стандартной vrml функция. Вы можете сохранить всю дескриптивную графику® Объекты таким образом и используйте их с программным обеспечением Simulink 3D Animation в качестве компонентов связанных виртуальных миров.

После запуска примера вы увидите панель управления с двумя ползунками и тремя флажками. Используйте ползунки для поворота и масштабирования мембраны во время использования флажков для определения оси поворота вокруг.

В виртуальной сцене заметьте текстовый объект. Это ребенок Billboard узел. Можно сконфигурировать этот узел так, чтобы его локальная ось Z поворачивалась, чтобы постоянно указывать на средство просмотра. Это может быть полезно для моделирования виртуальных панелей управления и головных отображений (HUDs).

Пример визуализации местности (vrterrain_simple)

Этот пример иллюстрирует преобразование доступных цифровых моделей повышения в формат VRML для использования в сценах виртуальной реальности.

В качестве источника данных о местности использовалась модель South San Francisco DEM (включенная в программное обеспечение Mapping Toolbox™). Простой Boeing® 747® модель включена в сцену, чтобы показать метод создания виртуальных миров из нескольких источников на лету.

Этот пример требует программного обеспечения Mapping Toolbox от MathWorks®.

Манипуляция с плоскостью с использованием объекта MATLAB мыши пространства

Этот пример иллюстрирует использование пространственной мыши с помощью интерфейса MATLAB. После запуска этого примера в Simulink 3D Animation Viewer отображается виртуальный мир с самолетом. Вы можете перемещаться по плоскости в сцене с помощью пространственного устройства входа мыши. Нажмите кнопку 1, чтобы разместить маркер в текущем положении плоскости.

Для этого примера требуется пространственная мышь или совместимое устройство.

Похожие темы