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

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Модели Drive Simulink.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Вместо того, чтобы установить его собственный блок выходные параметры, vrextin S-функция устанавливает значение смежного блока 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, не только Датчик eventOut поле . Смотрите Типы классов Данных о VRML для получения дополнительной информации о типах классов данных о виртуальном мире.

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

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

Блоки

Похожие темы