Используйте датчики

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

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

  2. Добавьте Исходный блок VR и выберите свойства датчика читать. Смотрите, что Значения Датчика Чтения Используют MATLAB.

    Примечание

    Вместо того, чтобы использовать Исходный блок VR, чтобы считать значения датчика, можно записать S-функцию или использовать блок MATLAB function.

    Если вы работаете в MATLAB®, можно считать значения датчика с помощью свойств объектов vrnode.

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

Добавьте датчики в виртуальные миры

Можно настроить интерфейс в блок-схеме Simulink® к датчикам в сцене виртуальной реальности. Вы можете также входные сигналы программно от виртуального мира в имитационную модель.

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

Путями можно использовать датчики, включайте:

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

  • Обеспечьте интерактивность между пользовательской навигацией и взаимодействием в виртуальном мире и симуляции модели.

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

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

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

  • Измените состояние других узлов виртуального мира.

  • Примените алгоритмы MATLAB к данным о столкновении.

  • Модели Drive Simulink.

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

Можно задать эти датчики в сцене.

ДатчикиОписание
CylinderSensorДвижение указателя карт (например, мышь) во вращение на невидимом цилиндре, который выравнивается с y - ось системы локальной координаты.
PlaneSensorДвижение манипулятора карт в двумерный перевод в плоской параллели к z =0 плоскостей системы локальной координаты.
ProximitySensorГенерирует события, когда средство просмотра входит, выходит и перемещается в области в пробел (заданный полем)
SphereSensorДвижение манипулятора карт в сферическое вращение вокруг источника системы локальной координаты
TimeSensorГенерирует события как передачи времени
TouchSensorОтслеживает местоположение и состояние манипулятора и обнаруживает, когда вы указываете на геометрию, содержавшую в родительской группе узла TouchSensor.
VisibilitySensorОбнаруживает изменения видимости прямоугольника, когда вы перемещаетесь по миру.
PointPickSensorОблака точек использования, чтобы обнаружить, какая из точек является внутренними сталкивающимися конфигурациями
LinePickSensorИспользование излучает вентиляторы или другие наборы строк, которые обнаруживают расстояние до сталкивающихся конфигураций
PrimitivePickSensorПримитивные конфигурации (такие как конус, сфера или поле), которые обнаруживают сталкивающиеся конфигурации

Считайте значения датчика

Можно считать значения из узлов датчика в виртуальном мире при помощи:

Считайте значения датчика Используя исходные блоки VR

Можно использовать Исходный блок VR для интерактивности между пользователем, перемещающимся по виртуальному миру и симуляцией модели Simulink. Исходный блок VR указывает взаимодействие с пользователем с виртуальным миром и передает те данные модели, чтобы влиять на симуляцию модели. Исходный блок VR читает значения из полей виртуального мира, заданных в диалоговом окне Block Parameters, и вводит их к модели.

Например, можно задать заданные значения (желаемые положения) в виртуальном мире, так, чтобы пользователь мог указать, что местоположение виртуального мира возражает в интерактивном режиме. Симуляция затем отвечает на измененное местоположение объекта. Исходный блок VR может читать в образцовые события из виртуального мира, такие как метки деления времени или выходные параметры из скриптов. Исходный блок VR может также читать в статическую информацию модели о виртуальном мире (например, размер поля, заданного в виртуальном мире 3D файл).

Для примеров, которые используют Исходный блок VR, см. Виртуальную Модель Панели управления и Магнитной левитации.

Считайте значения датчика Используя S-функции

Чтобы использовать заданное значение в модели Simulink, можно записать S-функцию или блок MATLAB function, который читает датчик вывод периодически. Этот пример использует S-функцию.

  1. Щелкните правой кнопкой по блоку VR Sensor Reader модели Magnetic Levitation Model (vrmaglev) и выберите Mask> Look Under Mask.

    Отображения модели vrmaglev/VR Sensor Reader. Эта модель содержит блок vrextin, который является Блоком s-function. vrextin S-функция синхронизирует поле датчика в методе setup и периодически читает его значение в методе mdlUpdate.

  2. Исследуйте S-параметры-функции. Щелкните правой кнопкой по vrextin и выберите S-Function Parameters.

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

Примечания О vrextin S-функции

  • Вместо того, чтобы установить его собственный блок выходные параметры, S-функция vrextin устанавливает значение смежного блока Constant value_holder. Эта установка делает блок VR Sensor Reader совместимым с генерацией кода Simulink Coder™ так, чтобы модель могла работать на целях Simulink Coder.

  • Цикл сигнала между пользовательским действием (перемещающийся шар в желаемое положение с помощью мыши) закрывает через связанную модель Simulink vrmaglev. Захват шара и перемещение его к новой позиции работают только, когда модель запускается и когда модель устанавливает синий переключатель метода выбора на путь прохождения сигнала датчика виртуальной реальности. Чтобы испытать поведение PlaneSensor с помощью виртуальной сцены только, сохраните файл maglev.wrl под новым именем. Удалите символ комментария (#), чтобы включить последнюю строку этого файла. Эти действия активируют прямую маршрутизацию датчика вывод к переводу шара. Затем можно экспериментировать с недавно созданной сценой вместо исходного мира maglev.wrl.

    ROUTE Grab_Sensor.translation_changed TO Ball.translation
  • Можно использовать этот подход, чтобы ввести информацию от всех полей узла типа exposedField или eventOut, не только поле Sensor eventOut. Смотрите Типы классов Данных о VRML для получения дополнительной информации о типах классов данных о виртуальном мире.

  • Для полей класса exposedField можно использовать альтернативное название с помощью имени поля с суффиксом, _changed. Например, translation и translation_changed являются альтернативными названиями для запроса значения поля перевода узла Grab_Sensor.

Смотрите также

Блоки

Похожие темы