Глава 14. Первоначальная настройка микрокомпьютера NanoPi-AR
Для взаимодействия с модулем SVCAM на NanoPi-AR с ПК под управлением Windows необходимо настроить удалённое подключение по протоколу SSH (Secure Shell). SSH позволяет управлять микрокомпьютером NanoPi-AR через командную строку, отправлять команды и устанавливать программное обеспечение. В этом разделе описан процесс настройки и установки необходимых пакетов программ для дальнейшей работы с модулем SVCAM с использованием программы MobaXterm. Данную программу можно скачать по ссылке https://mobaxterm.mobatek.net/.
Перед началом убедимся, что модуль SVCAM подключён к ПК по USB, а сетевой адаптер настроен с IP-адресом 10.10.11.1 (см. раздел "Подключение модуля SVCAM к ПК с ОС Windows").
В MobaXterm нажмем кнопку Session в верхнем меню. Выберем тип сессии SSH. В поле Remote host введем IP-адрес модуля SVCAM: 10.10.11.2 (рис. 20). Убедимся, что порт установлен на 22 (по умолчанию для SSH) и нажмите ОК.

Рис.33 (а) Окно настройки SSH-сессии в MobaXterm
Для подключения нужно ввести логин pi и пароль pi.

(б) Подключение к микрокомпьютеру NanoPi-AR

(в) Терминал MobaXterm после успешного подключения
После успешного подключения можем приступить к установке необходимых библиотек для работы с камерой на микрокомпьютере NanoPi-AR.
Настройка сетевого подключения
Для скачивания исходных файлов и библиотек необходимо подключить встроенный микрокомпьютер NanoPi-AR к сети. Можно подключиться по Wi-Fi, выполняя следующую команду:
sudo nmcli -a d wifi connect <имя_сети>
Например, если имя сети Wi-Fi applied_robotics, выполняем команду:
sudo nmcli -a d wifi connect applied_robotics
После этого вводим пароль сети и подключение выполнено.

Рис.34 Успешное подключение по Wi-Fi
Дальше обновим существующий пакет программ с помощью следующих команд :
Скачаем репозиторий SVCAM: ЗАМЕНИТЬ
git clone https://github.com/Edgar-dotcom02/SVCAM.git
Затем выполняем следующую команду для обновления текущих пакет программ микрокомпьютера:
cd SVCAM/
chmod +x init.sh && sudo ./init.sh
Если при обновлении появится сообщение (рис.35), то необходимо напечатать “Y” и нажать на ENTER, после чего продолжится обновление.

Рис. 35 Сообщение при обновлении
После обновления необходимо перезагрузить микрокомпьютер выполняя команду:
sudo reboot
Установка библиотеки ZeroMQ
ZeroMQ - это высокопроизводительная асинхронная библиотека обмена сообщениями, предназначенная для использования в распределённых или параллельных приложениях. Она реализует паттерн "publish-subscribe", "client-server" и другие модели обмена сообщениями. Для её установки сначала необходимо подключится к интернету (см. Настройка сетевого подключения) и выполняйте следующие команды:
cd ~
wget http://archive.org/download/zeromq_4.0.5/zeromq-4.0.5.tar.gz
tar -xvf zeromq-4.0.5.tar.gz
cd zeromq-4.0.5
./configure
sudo make install
sudo ldconfig
Установка libtconfig
libtconfig - это библиотека для работы с конфигурационными файлами в формате .cfg, поддерживающая вложенные секции и типы данных (int, float, string).
cd ~/SVCAM/libs/
mkdir applied_robotics-libtconfig-180423-build
cd applied_robotics-libtconfig-180423-build
cmake ../applied_robotics-libtconfig-180423
sudo make install
Установка libtlive
libtlive - библиотека для потоковой передачи данных с камер в реальном времени, поддерживающая различные форматы видео и сетевые протоколы.
cd ~/SVCAM/libs/
mkdir applied_robotics-libtlive-180423-build
cd applied_robotics-libtlive-180423-build
cmake ../applied_robotics-libtlive-180423
sudo make install
Установка библиотеки yaml-cpp
yaml-cpp - библиотека для обработки конфигурационных файлов в формате YAML.
cd ~
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
git checkout yaml-cpp-0.6.3
mkdir ~/yaml-cpp-build && cd ~/yaml-cpp-build
cmake ../yaml-cpp -DYAML_CPP_BUILD_TESTS=OFF
make -j1
sudo make install
Оставка библиотеки trackingcam3d_reader
Библиотека trackingcam3d_reader - клиентская библиотека для получения изображений с модуля SVCAM (RGB, карта глубины и т.п).
cd ~/SVCAM/libs/
mkdir trackingcam3d_reader-build
cd trackingcam3d_reader-build
cmake ../trackingcam3d_reader
make
sudo make install
Чтобы убедиться в работоспособности данной библиотеки можно запустить демо-программу для отображения на экран изображений с камеры. Поскольку камера SVCAM может генерировать несколько типов изображений одновременно (RGB, глубина, исправленные изображения и т.д.), при запуске демо-программы, нужно указать тип изображений, которые надо выводить. Список поддерживаемых изображений:
left: Изображение с левой камеры. Это базовое RGB-изображение для обработки (например, нахождение объектов).
left_rect: Исправленное изображение с левой камеры, где убраны искажения объектива (дисторсия). Её разница с left: отсутствие "рыбьего глаза" или других дефектов.
left_gray_rect: Исправленное изображение с левой камеры в оттенках серого. Данный тип изображения может потребоваться для задач, где цвет не нужен (экономит ресурсы, быстрее обработка).
right: RGB изображение с правой камеры (аналогично left).
right_rect: Исправленное изображение с правой камеры (аналогично left_rect).
right_gray_rect: Аналогично left_gray_rect.
depth: Карта глубины (depth map). Она показывает расстояние до каждого пикселя. Идеально для навигации, избегание препятствий или измерений дальностей до объектов. Важно заметить, что это не изображение, а "карта глубины" (требует нормализации для просмотра).
disparity: Карта диспаритета (disparity map), показывающая разницу между левым и правым изображением (основа для расчёта глубины). Разница: Не глубина, а "сдвиг" пикселей; требует калибровки для преобразования в метры.
Для визуализации изображений с камеры можно запустить данную демо программу (рис.36):
cd ~/SVCAM/libs/trackingcam3d_reader-build/
./trackingcam3d_reader_demo <тип изображения>

Рис.36 Визуализация изображении с левой камеры и карты глубины
Исходный код демо программы можно найти в директории ~/SVCAM/libs/trackingcam3d_reader/examples/main.cpp
Установка сервиса dxlSlave.service
Данный программный пакет позволяет использовать модуль SVCAM как DXL-совместимое устройство (ведомое), обменивающееся данными с ведущим контроллером (например, OpenCM, DXL-IoT) по протоколу Dynamixel.
Обмен осуществляется через набор из 32 регистров, каждый объёмом 4 байта (адреса от 0 до 31), которые заполняются или читаются ведущим устройством.
Сервис dxlSlave выполняет роль эмулятора Dynamixel-устройства для модуля SVCAM. Для установки выполняем следующие команды:
cd ~/SVCAM/libs/dxlSlaveService
chmod +x install_service.sh && sudo ./install_service.sh
После установки сервис автоматически запускается в фоновом режиме и будет загружаться при каждом включении микрокомпьютера. Чтобы проверить, работает ли сервис, выполняем команду:
sudo systemctl status dxlSlave.service

Рис.37 Сообщение статуса при активном состоянии сервиса
После запуска сервис переводит SVCAM в режим DXL-совместимого модуля со следующими параметрами по умолчанию: Baudrate = 115200, ID устройства = 1, режим работы : “dxl”. Также следует отметить, что сервис поддерживает два режима функционирования – режим “dxl” (стандартный режим обмена по протоколу Dynamixel) или режим “lidar” (специальный режим передачи данных лидара).
Для изменения параметров сервиса (скорость обмена, ID, режим…), необходимо отредактировать параметры в файле конфигурации /usr/bin/dxl/config.json
Открывается данный файл через команду:
sudo nano /usr/bin/dxl/config.json

Рис.38 Параметры сервиса dxlSlave.service
Сохраните файл с помощью сочетания клавиш CTRL+O, ENTER, затем закрывайте его с сочетанием клавиш CTRL+X.
После изменения файла конфигурации перезапускаем сервис:
sudo systemctl restart dxlSlave.service
Установка библиотеки dxlSlave
Теперь переходим к установке библиотеки dxlSlave. Данная библиотека, написанная на языке С++ позволяет подключиться к сервису dxlSlave.service и изменить значения регистров модуля. Для установки выполняем следующие команды:
cd ~/SVCAM/libs/
mkdir -p dxlSlaveLib-build && cd dxlSlaveLib-build
cmake ../dxlSlaveLib
make
sudo make install
Итак, все необходимые модули установлены. Теперь можно перейти к запуску задач.