Перейти к содержанию
Скачать руководство PDF

Первый запуск

Сначала выполните установку через CLI или установку из исходников. Дальше можно проверить интерфейс без оборудования, подключить одну камеру и сохранить первый снимок. Модель нейросети, GPU и калибровочный шаблон для этого не нужны.

Запустите приложение

smartcamera run

CLI сам подключает окружения и использует сохранённые настройки. Создавать YAML вручную не нужно: первичная настройка уже подготовила пустой список камер. Повторная настройка не удаляет добавленные источники.

Откройте http://127.0.0.1:8000/cameras. Если вы изменили порт при установке, подставьте своё значение. Оставьте терминал открытым. Для фонового запуска вместо обычного используйте smartcamera run --detach, а журнал смотрите через smartcamera logs --follow.

Страница камер SmartCamera

Скриншот показывает страницу с уже добавленными камерами; названия и доступные потоки зависят от вашей конфигурации. Обзор остальных разделов находится в руководстве по интерфейсу.

Во втором терминале проверьте, что веб-сервер видит пустую конфигурацию:

curl --fail --silent http://127.0.0.1:8000/api/v1/cameras \
  | python3 -m json.tool

В JSON должны быть revision и пустой список cameras. Swagger с актуальной схемой HTTP-запросов доступен по адресу http://127.0.0.1:8000/docs.

Добавьте одну USB-камеру

Подключите камеру к компьютеру с сервером SmartCamera. При локальном запуске её устройства можно проверить командами:

v4l2-ctl --list-devices
ls -l /dev/v4l/by-id/

При запуске в Docker сначала разрешите доступ к устройству:

smartcamera stop

smartcamera configure --yes --device /dev/video0

smartcamera run --detach

Замените /dev/video0 своим устройством. Для RealSense используйте инструкцию Docker, поскольку доступ к USB настраивается иначе.

На странице Камеры откройте добавление камеры и выберите V4L2-устройство. Предпочитайте стабильный путь /dev/v4l/by-id/...: номер /dev/videoN может измениться после переподключения. У одного устройства бывает несколько video-узлов; выбирайте узел, который действительно предоставляет нужный видеопоток.

Для первой камеры задайте ID front, понятное название и топик /smart_camera/front/image_raw. Выберите разрешение и FPS из списка поддерживаемых режимов. Не задавайте произвольный режим только потому, что он помещается в форму: драйвер должен подтвердить получение первого кадра. Для начала достаточно 640×480 и 30 FPS, если этот режим есть у устройства.

Для нескольких USB-камер MJPG часто уменьшает нагрузку на шину. Выбирайте его только при наличии в режимах устройства. Параметр transport: compressed управляет передачей изображения в ROS и не заменяет выбор формата захвата pixel_format.

Сохраните камеру и дождитесь изображения. При неудачном применении приложение пытается вернуть предыдущую конфигурацию; прочитайте сообщение формы и журнал launch, прежде чем повторять сохранение. Подробности RealSense, внешних ROS-потоков, depth и калибровки — в руководстве по камерам.

Проверьте поток и сохранение

Для камеры front с compressed transport:

Эти команды выполняются в терминале с окружением ROS 2.

ros2 topic info /smart_camera/front/image_raw/compressed -v
ros2 topic hz /smart_camera/front/image_raw/compressed
ros2 topic echo /diagnostics --once

Для raw transport используйте /smart_camera/front/image_raw. Камера может работать, даже если конкретный ROS-подписчик не получает изображения: сравните QoS. Изображения передаются с best-effort, volatile и глубиной очереди 1; для подписки используйте совместимую политику.

Сделайте одиночный снимок через интерфейс и найдите материал в разделе Архив. Это проверяет не только просмотр, но и запись в выбранный каталог. Если запущена запись видео, серия фото или ROS bag, сначала остановите её: операции записи взаимоисключающие. Для первого теста достаточно одной камеры — групповая фотография дополнительно требует свежих кадров с допустимым расхождением timestamps.

Остановите приложение через smartcamera stop (или Ctrl+C в терминале запуска), затем снова выполните smartcamera run. Камера должна остаться в конфигурации, а снимок — в архиве. Закрытие вкладки браузера сервер не останавливает. При штатном завершении лучше сначала закончить запись, чтобы материал успел получить окончательный статус.

Подключите нейросеть и внешнее управление

Когда обычный поток работает, откройте библиотеку моделей, скачайте стандартную модель в библиотеку и добавьте запуск в Камеры → Нейросети. Выбор модели относится к конкретному запуску: одной камере можно назначить несколько моделей. Успешное включение ещё не означает, что веса уже загружены — дождитесь состояния и обработанного кадра. После перезапуска сервера запуски остаются выключенными.

Для команд ROS ниже сначала подключите окружение ROS 2. Для ROS-управления браузер не нужен, но web_server должен продолжать работать. Он предоставляет общую конфигурацию для веб-панели и ROS-команд:

ros2 service call /smart_camera/control smart_camera_interfaces/srv/Control \
  '{command: {operation: cameras.list}}'

Команды выбора модели, включения камеры и подписки на результаты приведены в ROS 2 API. Для HTTP-клиента используйте справочник HTTP API.

Доступ с другого компьютера

Остановите приложение и измените адрес веб-сервера:

smartcamera stop

smartcamera configure --yes --host 0.0.0.0 --port 8000

smartcamera run --detach

Откройте http://IP_СЕРВЕРА:8000/cameras на другом компьютере. В приложении нет встроенной аутентификации и TLS; такой запуск предназначен для доверенной сети. Если локальная страница открывается, а удалённая нет, проверьте адрес сервера и сетевой фильтр. Ошибки установки и потоков разобраны в диагностике.