Пример vrmaze показывает, как обнаружение столкновения в 3D Simulink ® Animation™ может использоваться, чтобы симулировать дифференциального колесного робота, решающего задачу лабиринта. Алгоритм управления роботом использует информацию от виртуальных ультразвуковых датчиков, которые чувствуют расстояние до окружающих объектов.
Простой дифференциальный колесный робот оснащён 2 виртуальными ультразвуковыми датчиками, один из датчиков смотрит вперед, один направлен налево от робота. Датчики упрощены, их активная область значений представлена зелеными линиями.
Датчики реализованы как X3D LinePickSensor узлов. Эти датчики обнаруживают приблизительные столкновения лучей (смоделированные как IndexedLineSet) с произвольными геометриями в сцене. В случае геометрических примитивов обнаруживаются точные столкновения. Одним из выходных полей LinePickSensor является поле isActive, которое становится TRUE, как только обнаруживается столкновение между его лучом и окружающими объектами сцены.
При активации линии датчика изменяют свой цвет с зеленого на красный с помощью скрипта, написанного непосредственно в виртуальном мире.
В модели заданы блоки VR Sink и VR Source, связанные с одной и той же виртуальной сценой. VR Source используется для чтения сигналов sensors isActive. VR Sink используется, чтобы задать положение/вращение робота в виртуальном мире.
Алгоритм управления роботом реализован с помощью графика Stateflow ®.
В виртуальном мире задано несколько точек зрения. Измените точку зрения «Follow Robot», чтобы увидеть сцену с другой точки зрения.