Подглава 10.3 Установка и тестирование драйверов камеры ROS

Если вы этого еще не сделали, установите драйверы ROS, необходимые для вашей камеры, следуя приведенным ниже инструкциям.

10.3.1 Установка драйверов ROS OpenNI и OpenKinect (freenect)

Чтобы установить драйверы ROS openni и freenect, выполните команду:

$ sudo apt-get install ros-indigo-openni-* ros-indigo-openni2-* \ ros-indigo-freenect-*

$ rospack profile

Это все, что нужно сделать!

10.3.2 Установка драйвера веб-камеры

Существует несколько возможных драйверов ROS для веб-камер. Официальный пакет драйверов - libuvc_camera, но для него требуются права суперпользователя или добавление правил udev для конкретного поставщика вашей камеры. Вы, безусловно, можете свободно использовать libuvc_camera, если вы предпочитаете, особенно если вы уже это делаете.

В предыдущих редакциях этой книги мы использовали отличный драйвер uvc_cam от Eric Perko. Хотя uvc_cam все еще собирается и работает под ROS Indigo, Eric больше не поддерживает пакет. Так что для этой ревизии мы перейдем к драйверу Bosch usb_cam, который, похоже, хорошо работает с рядом различных внутренних и внешних веб-камер. Хотя для драйвера есть пакет Ubuntu Debian, нам нужна самая новая исходная установка, которая содержит недавнее усовершенствование. Чтобы установить драйвер из исходного кода, выполните следующие команды:

$ cd ~/catkin_ws/src

$ git clone https://github.com/bosch-ros-pkg/usb_cam.git

$ cd ~/catkin_ws

$ catkin_make

$ rospack profile

10.3.3 Тестирование камеры Kinect или Xtion

После того, как вы установили драйверы openni или freenect, убедитесь, что вы можете видеть видеопоток с камеры с помощью пакета ROS image_view. Для Kinect или Xtion сначала подключите камеру к любому доступному USB-порту (а для Kinect убедитесь, что она подключена к адаптеру 12 В или другим способом), затем выполните одну из следующих команд:

Для Microsoft Kinect:

$ roslaunch freenect_launch freenect-registered-xyzrgb.launch

Для камер Asus Xtion, Xtion Pro или Primesense 1.08/1.09:

$ roslaunch openni2_launch openni2.launch depth_registration:=true

Если подключение к камере установлено успешно, вы должны увидеть ряд диагностических сообщений, которые выглядят примерно так:

process[camera/camera_nodelet_manager-1]: started with pid [18070] [INFO] [1420555647.969035762]: Initializing nodelet with 4 worker threads.

process[camera/driver-2]: started with pid [18078] Warning: USB events thread - failed to set priority. This might cause loss of data...

process[camera/rectify_color-3]: started with pid [18112] process[camera/depth_rectify_depth-4]: started with pid [18126] etc

ПРИМЕЧАНИЕ. Не беспокойтесь, если увидите несколько предупреждений об использовании значений по умолчанию. Эти сообщения являются нормальными и могут быть проигнорированы.

Затем используйте утилиту ROS image_view для просмотра видеопотока RGB. Цветной видеопоток публикуется в теме ROS /camera/rgb/image_raw. Для просмотра видео мы запускаем:

$ rosrun image_view image_view image:=/camera/rgb/image_raw

Должно появиться небольшое окно дисплея камеры, и после небольшой задержки вы должны увидеть прямую трансляцию видео с вашей камеры. Переместите что-нибудь перед камерой, чтобы убедиться, что изображение обновляется соответствующим образом. Вы можете изменить размер окна изображения с помощью мыши, как и любое другое окно. Как только вы убедитесь, что у вас есть живое видео, закройте окно image_view или введите Ctrl-C в терминале, с которого вы его запустили.

Чтобы проверить изображение глубины с вашей камеры, запустите image_view для темы изображения глубины /camera/deep_registered/image_rect следующим образом:

$ rosrun image_view image_view image:=/camera/depth_registered/image_rect

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

10.3.4 Тестирование веб-камеры USB

Для камеры USB нам необходимо указать видеоустройство, которое мы хотим использовать. Если у вашего компьютера есть внутренняя камера (как у многих ноутбуков), он, вероятно, будет подключен к /dev/video0, а внешне подключенная USB-камера, вероятно, будет подключена к /dev/video1. Обязательно Ctrl-C из всех файлов запуска openni или freenect, которые вы могли запускать из предыдущего раздела, а затем выполните соответствующую команду ниже в зависимости от видеоустройства вашей веб-камеры:

$ roslaunch rbx1_vision usb_cam.launch video_device:=/dev/video0

или

$ roslaunch rbx1_vision usb_cam.launch video_device:=/dev/video1

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

Далее используйте утилиту ROS image_view для просмотра основного видеопотока. Мы настроили файлы запуска нашей камеры так, чтобы цветной видеопоток был опубликован в теме ROS /camera/rgb/image_raw. Для просмотра видео мы запускаем:

$ rosrun image_view image_view image:=/camera/rgb/image_raw

Должно появиться небольшое окно дисплея камеры, и после небольшой задержки вы должны увидеть прямую трансляцию видео с вашей камеры. Переместите что-нибудь перед камерой, чтобы убедиться, что изображение обновляется соответствующим образом. Вы можете изменить размер окна изображения с помощью мыши, как и любое другое окно. Как только вы убедитесь, что у вас есть живое видео, закройте окно image_view или введите Ctrl-C в терминале, с которого вы его запустили.

ПРИМЕЧАНИЕ. По умолчанию узел usb_cam публикует изображение в теме /usb_cam/image_raw. Наш файл запуска usb_cam.launch переназначает тему в /camera/rgb/image_raw, которая является темой, используемой файлами запуска openni и freenect для глубинных камер. Таким образом, мы можем использовать тот же код ниже для любого типа камеры.

Last updated