Skip to content

Глава 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) и нажмите ОК.

C:\Users\Edgar\AppData\Local\Temp\ksohtml6780\wps1.jpg

Рис.33 (а) Окно настройки SSH-сессии в MobaXterm

Для подключения нужно ввести логин pi и пароль pi.

C:\Users\Edgar\AppData\Local\Temp\ksohtml6780\wps2.jpg

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

C:\Users\Edgar\AppData\Local\Temp\ksohtml6780\wps3.jpg

(в) Терминал 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

C:\Users\Edgar\Downloads\Telegram Desktop\image (7).png

Рис.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

Итак, все необходимые модули установлены. Теперь можно перейти к запуску задач.