Tracking: демо приложение на C++ для Raspberry Pi

Tracking: демо приложение на C++ для Raspberry Pi

Консольное приложение на C++, демонстрирующее трекинг на Raspberry Pi с использованием библиотек Antilatency.

Вам понадобится

Как скомпилировать и запустить

Давайте начнем. Вставьте в Raspberry Pi microSD-карту с образом ОС. Поместите плату в корпус во избежание случайного повреждения. Подключите к плате клавиатуру и мышь через имеющиеся USB-порты. Если у вас модель А+ и USB портов для подключения недостаточно — используйте USB Хаб. Подключите к Raspberry Pi монитор через HDMI и Wired USB Socket вместе с Alt через USB Type-C. Подключите в Raspberry Pi блок питания или power bank. Чтобы исключить проблемы с питанием, используйте обязательно «официальный блок питания» или power bank, отвечающий установленным техническим требованиям. Дождитесь загрузки системы.
Raspberry Pi готова к работе.
Можете не использовать монитор, клавиатуру и мышь, а управлять Raspberry Pi удаленно через SSH клиент, например, PuTTY. Для подключения нужно указать IP-адрес Raspberry. Найти IP-адрес Raspberry Pi можно с помощью стороннего ПО, которое просканирует всю вашу сеть, например, Advanced IP Scanner.
Создайте директорию проекта в файловой системе и перейдите в нее.
cd <full path to project directory> 
mkdir <project directory> 
cd .<project directory>
Для примера:
cd /home/pi
mkdir TrackingMinimalDemoCpp
cd ./TrackingMinimalDemoCpp
Клонируйте репозиторий из Github командой:
git clone --recurse-submodules https://github.com/antilatency/Antilatency.TrackingMinimalDemoCpp
Обратите внимание на --recurse-submodules: в репозитории есть подмодуль Git. Он нужен, чтобы подключить к проекту релиз SDK.
Создайте директорию для исполняемого файла.
cd ./TrackingMinimalDemoCpp/Antilatency.TrackingMinimalDemoCpp
mkdir build
cd ./build
Соберите и запустите проект из терминала:
cmake ../
make
Для компиляции понадобится CMake. Если он у вас не установлен, установите его с помощью команды sudo apt install cmake.
Директория ./build теперь содержит исполняемый файл TrackingMinimalDemo и библиотеки.
При запуске исполняемый файл TrackingMinimalDemo ожидает два аргумента: данные Environment в качестве первого аргумента и данные Placement в качестве второго. Оба аргумента могут быть получены из ссылки на элемент в AntilatencyService. Используя пункт меню Copy link (в версии для Windows Desktop) или Share... (в версии для Universal Windows Platform и Android), скопируйте ссылку на Environment и Placement.
Например, ссылки на Environment и Placement могут выглядеть следующим образом:
Cсылка на Environment: http://www.antilatency.com/antilatencyservice/environment?data=AAVSaWdpZBcABnllbGxvdwQEBAABAQMBAQEDAAEAAD_W&name=Floor_2400x2400
Cсылка на Placement: http://www.antilatency.com/antilatencyservice/placement?data=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&name=Identity
Чтобы получить данные Environment и Placement из ссылок, нужно оставить фрагменты после data= и до &name.
Ниже рассмотрены данные Environment и Placement, передаваемые в качестве аргументов TrackingMinimalDemo:
Данные Environment: AAVSaWdpZBcABnllbGxvdwQEBAABAQMBAQEDAAEAAD_W
Данные Placement: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Подробнее о работе с ссылками читайте тут: Environments
Чтобы стандартный пользователь имел права доступа для работы с USB устройствами, необходимо добавить правило udev. Выполните следующую команду:
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="3237", MODE="0666", GROUP="pi"' | sudo tee /etc/udev/rules.d/66-antilatency.rules
После чего запустите TrackingMinimalDemo, передав необходимые аргументы.
./TrackingMinimalDemo AAVSaWdpZBcABnllbGxvdwQEBAABAQMBAQEDAAEAAD_W AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
В качестве альтернативы можете запустить TrackingMinimalDemo от имени пользователя root для работы с USB-устройствами.
sudo ./TrackingMinimalDemo AAVSaWdpZBcABnllbGxvdwQEBAABAQMBAQEDAAEAAD_W AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Сразу после запуска программа создаст ADN, найдет подключенный Alt и запустит трекинг.
Запустив трекинг, программа будет опрашивать состояние Alt и выводить в терминал его экстраполированное состояние каждые 500 мс (2FPS):
Более подробно про кинематическое состояние отслеживаемого объекта читайте в API State.