> For the complete documentation index, see [llms.txt](https://copter-space.gitbook.io/uchebnik-mashinnoe-zrenie-tom-2/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://copter-space.gitbook.io/uchebnik-mashinnoe-zrenie-tom-2/razdel-4./vizualizaciya-v-rviz.md).

# Визуализация в RVIZ

&#x20;Когда rviz запускается в первый раз – на экране отображается пустое окно:

![](/files/-M28Oz_YWmsOCeqdOJ8k)

&#x20;Большой чёрный квадрат – это 3D – вид сцены (пустой, поскольку ещё пока ничего не видим). Слева – список дисплеев Displays, на котором отображаются все настроенные дисплеи. \
В начальный момент на нём отображаются только глобальные настройки.

## Дисплеи

Дисплей в rviz – это нечто, имеющее отображение в 3D – мире и имеющее опции настройки. Например: облако точек, позиция робота, и т.д. Добавление нового дисплея – кнопка Add на панели внизу: &#x20;

![](/files/-M28PJW7lvw4sONdWP_W)

&#x20;Появится окно добавления дисплея: &#x20;

![](/files/-M28PaFmHbqpPHQ2TOBY)

&#x20;В списке вверху перечислены типы дисплеев. Тип дисплея определяет, какой тип данных дисплей визуализирует. В текстовом окне приводится описание выбранного типа дисплея. Внизу следует задать наименование дисплея. Например, если у Вашего робота два лазерных сканера – вы можете создать два дисплея типа «Laser Scan» и назвать их «Лазер База» и «Лазер Голова». \
У каждого дисплея есть собственные параметры, например: &#x20;

![](/files/-M28Pu_oWz80O0uc6OM2)

&#x20;У каждого дисплея также отображается статус, чтобы пользователь знал, всё ли с ним в порядке. Есть 4 варианта статуса: **ОК, Warning** (предупреждение), **Error (ошибка)** или **Disabled (выключен)**. Статус отображается в названии дисплея в виде цвета фона, а также в строке **Status** в параметрах дисплея: &#x20;

![](/files/-M28Q9ua9ZHXFGKsq3z1)

&#x20;Перемещение дисплеев выше/ниже реализовано с помощью механизма **Drag’n’Drop** указателем мыши. Встроенные типы дисплеев:

\| <p> <br> Axes</p> | <p></p><p> <br>		</p> |   |
\| ----------------- | --------------------- | - |
\| Effort            |                       |   |
\| Camera            |                       |   |
\|                   |                       |   |
\|                   |                       |   |

&#x20;Различные конфигурации дисплеев часто полезны для разных задач визуализации. Поэтому rviz позволяет загружать и сохранять различные конфигурации. Конфигурация содержит: дисплеи + их параметры, параметры инструментов, тип камеры + начальную точку зрения. \
Недавно использованные конфигурации отображаются в меню **Recent Configs**: &#x20;

![](/files/-M28Sk1fhpJsWcNT8F8z)

&#x20;Для просмотра 3D сцены доступны несколько типов камер, по мере развития rviz добавляются новые типы: &#x20;

![](/files/-M28SpvXTnexLgQ_7IBo)

Тип камеры определяет как способы управления камерой, так и разные типы проекции (ортографический, перспективный и т.д.)\\

**Орбитальная камера (Orbital** **Camera)** всегда вращается вокруг точки фокуса, всё время смотря в эту точку. Точка фокуса отображается в виде маленького диска, когда вы перемещаете камеру: &#x20;

![](/files/-M28TJFJfeDJ2JO4SjXF)

&#x20;Управление: левая кнопка мыши – вращение камеры вокруг точки фокуса, средняя кнопка – перемещение фокальной точки, правая кнопка или колёсико мышки – приближение к/ удаление от фокальной точки.

**Камера от первого лица (FPS** **–** **First** **Person** **Camera)** – представление сцены от лица зрителя. Управление: левая кнопка мыши – вращение камеры, средняя кнопка – перемещение камеры, правая кнопка или колёсико мышки – перемещение зрителя вперёд/назад.

**Ортографическая камера (Top-down** **Orthographic)** – всегда направлена вниз по оси Z и отображает ортографическую проекцию (т.е. объекты по мере удаления от камеры не становятся больше/меньше).\
Управление: левая кнопка мыши – вращение вокруг оси Z, средняя кнопка – перемещение камеры в плоскости XY, правая кнопка или колёсико мышки – увеличение/уменьшение изображения. \
**XY** **Orbit** – то же, что орбитальная камера, но точка фокуса ограничена плоскостью XY. \
**Third** **Person** **Follower** – камера сохраняет постоянный угол зрения относительно установленной системы координат. В отличие от XY Orbit камера вращается вместе с поворотом целевой системы координат. Панель Views (Виды) также позволяет сохранять несколько именованных видов и переключаться между ними. Вид состоит из целевой системы координат, типа и положения камеры. Вид может быть сохранён с помощью кнопки Save Current. &#x20;

![](/files/-M28TlWTst9_kIQrF-XU)

\
&#x9;	@page { size: 21cm 29.7cm; margin: 2cm }\
&#x9;	p { margin-bottom: 0.25cm; direction: ltr; line-height: 115%; text-align: left; orphans: 2; widows: 2; background: transparent }\
&#x9;	a:visited { color: #954f72; text-decoration: underline }\
&#x9;	a:link { color: #0000ff; text-decoration: underline }\
&#x9;

&#x20;Вид состоит из типа контроллера, конфигурации вида (положение, ориентация, и т.д.), целевой системы координат.

Виды сохраняются для пользователя ОС, а не в файлах конфигурации.

**Системы координат**

RVIZ использует пакет трансформации TF для перевода данных из исходной системы координат в глобальную систему. О двух системах координат визуализатора важно знать: Fixed Frame и Target frame.

Наиболее важная система координат – это **Fixed** **Frame**. Эта система координат соответствует системе координат «мир» робота. Обычно она называется «map», или «world». В случае протокола mavros этим параметрам соответствует «local\_origin».

Если fixed frame по ошибке присвоен, например, базе робота, тогда все объекты о которых робот знает, появятся в визуализаторе в положении относительно робота, в тех положениях, в которых их обнаружили сенсоры. Для получения корректных результатов, **fixed** **frame** **не должен перемещаться относительно реального мира**. Если в настройках меняется fixed frame – все отображаемые данные будут очищены, а не трансформированы.\
**Target** **frame** – это целевая система координат для вида камеры. Например, если target frame – это карта местности map – мы увидим робота, двигающегося относительно карты. Если target frame – это база робота – на 3D сцене робот будет стоять на месте, а всё остальное будет двигаться относительно него. Также эти системы координат описаны в видео: <https://www.youtube.com/watch?v=nD1Faww4m2c>

В визуализаторе также реализован набор инструментов, доступных в соответствующей панели: движение камеры, выбор объектов на 3D сцене, задание цели движения, оценка положения в пространстве. \
Панель времени (Time) наиболее полезна при использовании симулятора: она позволяет отследить как много времени ROS затрачено относительно реального времени. Также она позволяет сбросить внутреннее время визуализатора – при этом сбрасываются все дисплеи и внутренний кэш модуля TF. Если не использовать симуляцию – эта панель скорее бесполезна и её можно закрыть, освободив место на экране. &#x20;

![](/files/-M28U7SFNiinVXcUk4mt)

**RVIZ** может отображать **3D стерео**, если это поддерживает графический адаптер, монитор и очки. Установка стерео описана по ссылке <http://wiki.ros.org/rviz/Tutorials/Rviz%20in%20Stereo>

Также новые типы дисплеев могут быть подключены в **rviz** в виде внешних плагинов.
