Команда 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