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

Команда smartcamera

smartcamera устанавливает зависимости, сохраняет параметры запуска и управляет приложением из терминала. Самой команде не нужен ROS: его установка выполняется отдельно, при подготовке локального режима. Для Docker ROS устанавливается внутри образа. Установщик рассчитан на Linux; автоматическая локальная установка — на Ubuntu 24.04 с ROS 2 Jazzy. Для Linux Mint с базой Noble установщик использует зависимости Ubuntu Noble; другие базы не поддерживаются.

Быстрая установка

Для загрузки проекта нужны curl, Git и Python 3.10 или новее с модулем venv. На Ubuntu 24.04 и Linux Mint на базе Noble установите их:

sudo apt update

sudo apt install -y curl git python3 python3-venv

Скачайте и запустите установщик из основного репозитория:

curl -fsSL https://gitverse.ru/api/repos/daniel-robotics/SmartCamera/raw/branch/master/install.sh \
  | bash

Установщик скачивает ветку master из SmartCamera на GitVerse, сохраняет исходники в ~/.local/share/smartcamera/source и создаёт команду ~/.local/bin/smartcamera. Для CLI используется отдельное окружение Python в ~/.local/share/smartcamera/cli-env.

Добавьте команду в PATH текущего терминала и запустите мастер:

export PATH="$HOME/.local/bin:$PATH"

smartcamera setup

smartcamera run

Для первой проверки выберите в мастере local и cpu; для контейнера — docker и cpu. Остальные значения можно оставить по умолчанию. После установки зависимостей и сборки команда run запустит приложение. Первая подготовка требует интернета, нескольких гигабайт свободного места и времени на загрузку библиотек и сборку.

Откройте http://127.0.0.1:8000, перейдите в Камеры → Добавить камеру и настройте первый источник по инструкции подключения. Для остановки запуска в терминале нажмите Ctrl+C.

Сам install.sh устанавливает только команду CLI. ROS, библиотеки приложения или Docker подготавливаются при setup, local-setup либо docker-setup. Запускайте установщик обычным пользователем; мастер вызовет sudo для необходимых системных действий.

Доступ к команде в новых терминалах

Если ~/.local/bin ещё не входит в PATH, добавьте в ~/.bashrc строку:

export PATH="$HOME/.local/bin:$PATH"

Затем откройте новый терминал и проверьте:

smartcamera --help

Если исходники уже скачаны

Перейдите в корень вашего проекта и установите CLI из этого каталога:

cd ~/dev/SmartCamera
bash install.sh --source "$PWD"
export PATH="$HOME/.local/bin:$PATH"

smartcamera setup

smartcamera run

Замените ~/dev/SmartCamera своим путём. В режиме --source установщик не выполняет Git-команды: выбранная ветка и локальные изменения сохраняются.

Для ручного клонирования:

mkdir -p ~/dev
git clone --branch master https://gitverse.ru/daniel-robotics/SmartCamera.git ~/dev/SmartCamera

После клонирования выполните команды установки из каталога выше. Для другой опубликованной ветки замените master в команде git clone.

Другая ветка и каталоги установки

Чтобы передать параметры установщику по прямой ссылке, используйте bash -s --. Например, установка ветки dev в отдельный каталог:

curl -fsSL https://gitverse.ru/api/repos/daniel-robotics/SmartCamera/raw/branch/master/install.sh \
  | bash -s -- --branch dev --install-dir "$HOME/tools/smartcamera-dev" --bin-dir "$HOME/bin"

Ветка должна существовать на GitVerse и содержать CLI. Здесь сам установщик загружается из master, а исходники приложения — из указанной ветки. Команда появится в ~/bin/smartcamera; добавьте ~/bin в PATH, если его там нет.

Для имеющихся исходников те же параметры задаются так:

bash install.sh --source "$PWD" \
  --install-dir "$HOME/tools/smartcamera" \
  --bin-dir "$HOME/bin"

--install-dir задаёт каталог CLI-окружения и скачиваемых исходников, а --bin-dir — место запускаемой команды. Каталог пользовательских данных выбирается отдельно при настройке приложения.

Повторная установка и перенос

Если при установке по ссылке каталог ~/.local/share/smartcamera/source уже существует, установщик остановится. Для обычного обновления используйте команды обновления. Для восстановления команды из уже скачанного проекта:

bash "$HOME/.local/share/smartcamera/source/install.sh" \
  --source "$HOME/.local/share/smartcamera/source"

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

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

bash /новый/путь/SmartCamera/install.sh --source /новый/путь/SmartCamera
smartcamera configure --yes --source /новый/путь/SmartCamera

Установщик обновляет путь загрузки CLI, а configure — путь приложения. Для локального режима после переноса повторите smartcamera local-setup --yes: окружения Python и сборка ROS могут содержать старые абсолютные пути.

Первая настройка

smartcamera setup

Мастер последовательно спрашивает:

Параметр Что выбрать
Режим local для запуска на хосте или docker для контейнера
Профиль моделей cpu по умолчанию; cuda для совместимой NVIDIA GPU
Каталог данных Постоянное место для камер, записей, калибровок и моделей
IP веб-сервера 127.0.0.1 для этого компьютера; 0.0.0.0 для доступа по сети
Порт По умолчанию 8000
ROS_DOMAIN_ID То же число, что у других ROS-узлов, от 0 до 232

После ввода мастер устанавливает зависимости и собирает выбранный режим. Локальная установка использует sudo для APT и правил udev; терминал может попросить пароль. Остальная сборка выполняется от вашего пользователя. Не запускайте весь установщик через sudo: иначе настройки окажутся у root.

На первом запуске создаётся пустой список камер. Камеры из рабочего YAML репозитория не копируются. Добавьте нужные источники через веб-интерфейс по инструкции. Повторная настройка не перезаписывает этот YAML.

Те же действия без вопросов:

smartcamera local-setup --yes --profile cpu \
  --data-dir "$HOME/.local/share/smartcamera/data" \
  --host 127.0.0.1 --port 8000 --domain-id 0

Перед фактической установкой можно посмотреть команды:

smartcamera local-setup --yes --dry-run
smartcamera docker-setup --yes --dry-run

--dry-run не устанавливает пакеты, не создаёт конфигурацию и не запускает приложение. Вывод показывает команды и, для Docker, конфигурацию Compose.

Что устанавливается локально

Локальная подготовка устанавливает системные зависимости, ROS Jazzy, rosdep, FFmpeg и библиотеки камер. Затем создаёт внутри исходников:

  • .venv/ — Python приложения с доступом к системному ROS/OpenCV;
  • .venv-inference/ — отдельный Python для PyTorch и Ultralytics;
  • .local/node/ — Node.js 22.16.0 для сборки интерфейса;
  • .local/librealsense/ — SDK 2.50.0, используемый проектом для L515;
  • build/, install/, log/ — результат сборки ROS.

Зависимости Node устанавливаются через npm ci. ML-окружение использует те же версии и скрипты, что описаны в разделе моделей. Установка cuda проверяет доступность GPU после установки PyTorch. Драйвер NVIDIA автоматически не заменяется. Если проверка не проходит, исправьте драйвер и повторите local-setup, либо выберите cpu.

Для V4L2 пользователь должен иметь доступ к /dev/videoN; обычно это группа video. Проверяйте через id и ls -l /dev/video*. После добавления в группу нужно выйти из сеанса и войти снова. Подготовка устанавливает правила udev RealSense; переподключите камеру после их обновления.

Запуск, остановка и журнал

smartcamera run

Откройте http://127.0.0.1:8000. Локальный запуск показывает вывод ROS в терминале. Ctrl+C завершает его процессы.

Для работы в фоне:

smartcamera run --detach
smartcamera status
smartcamera logs --follow
smartcamera stop

При локальном фоновом запуске журнал находится в logs/application.log внутри каталога данных. Выход из просмотра журнала через Ctrl+C не останавливает приложение; для этого предназначена команда stop. Автозапуск после перезагрузки компьютера в CLI не настраивается.

CLI управляет только зарегистрированным им запуском. Приложение, запущенное отдельной командой ros2 launch, нужно останавливать в его терминале. Для локальных процессов проверяется не только PID, но и время создания процесса, чтобы старый файл состояния не указывал на постороннюю программу.

Где хранятся настройки и данные

Путь Содержимое
~/.config/smartcamera/settings.json Режим, исходники, каталог данных, адрес, порт, ROS_DOMAIN_ID, устройства
Рядом: settings.run.json Состояние запуска CLI
Рядом: settings.run-<id>.compose.json Сохранённая конфигурация Docker-запуска
<data>/config/cameras.yaml Камеры и их параметры
<data>/config/web.json Настройки веб-интерфейса
<data>/recordings/ Материалы и связанные данные приложения
<data>/logs/ Журнал локального фонового запуска

Посмотреть и изменить настройки:

smartcamera configure --show
smartcamera stop
smartcamera configure --yes --port 8080 --domain-id 10
smartcamera run

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

smartcamera --config "$HOME/.config/smartcamera/test.json" configure --yes \
  --data-dir "$HOME/smartcamera-test" --port 8002

Обновление и диагностика

smartcamera stop

smartcamera update

smartcamera rebuild

smartcamera run

update обновляет текущую ветку из origin только через fast-forward. Он не переключается на master. Незакоммиченные и неотслеживаемые файлы, расхождение истории или неожиданный адрес origin останавливают обновление с объяснением. Команда не делает reset и не удаляет локальные изменения. Сохранённые данные находятся вне исходников и не входят в обновление.

rebuild пересобирает приложение; для обновления системных зависимостей или смены CPU/CUDA повторите соответствующий local-setup/docker-setup.

smartcamera doctor
smartcamera docs

doctor проверяет необходимые файлы и инструменты; он не подтверждает качество изображения, доступность всех моделей или работу физического устройства. docs подготавливает отдельное окружение в docs/.venv, собирает руководство и показывает его на http://127.0.0.1:8001. Для сборки без сервера:

smartcamera docs --build-only --pdf