Пакеты Клевера на Jetson Nano
О Jetson Nano
Jetson Nano – система на модуле (SoM), выпускаемая компанией Nvidia. Система построена на базе платформы Tegra X1 и несёт на себе четырёхядерный процессор ARM Cortex-A57 частотой 1.4 ГГц, 4 ГБ оперативной памяти и видеоядро на базе Nvidia Maxwell.
Набор для разработчиков Jetson Nano включает в себя как сам модуль, так и плату-носитель с портами USB 3.0, CSI, Ethernet и GPIO-пинами. Плата-носитель ненамного больше одноплатного компьютера Raspberry Pi и может быть использована в качестве бортового компьютера.
СОВЕТ
На плате-носителе изначально нет Wi-Fi-адаптера. Для организации беспроводного подключения к Jetson Nano следует использовать USB-адаптер или Wi-Fi карту стандарта M.2. Следует свериться со списком совместимого оборудования перед установкой адаптера.
Установка ПО
Nvidia предоставляет образ системы для Jetson Nano на базе Ubuntu 18.04. Эта версия системы поддерживается как база для ROS Melodic.
Начальная установка
СОВЕТ
Более подробные инструкции можно получить на официальном сайте Nvidia для Jetson Nano.
Для начальной установки требуется использование клавиатуры, мыши и HDMI-монитора. Скачайте образ системы Jetson Nano и запишите его на карту microSD (размером не менее 16 ГБ; рекомендуется использовать карту объёмом не менее 32 ГБ). Вставьте записанную карту в модуль Jetson Nano, подключите клавиатуру, мышь и монитор к плате-носителю и подайте питание на модуль.
СОВЕТ
Jetson Nano можно питать от кабеля microUSB, но для повышения надёжности рекомендуется использовать специальный разъём питания. При использовании этого разъёма следует поместить перемычку на пины J48 (расположены рядом с разъёмом CSI).
Примите лицензионное соглашение на использование системы и следуйте дальнейшим указаниям установщика. После установки система автоматически перезагрузится и покажет экран входа в систему. Выберите созданного вами пользователя и введите пароль, указанный на этапе установки.
СОВЕТ
Настоятельно рекомендуется выбрать английский язык как системный, дабы избежать возможных проблем с ROS.
Рекомендуется настроить автоматические подключение к Wi-Fi сети. Для этого после установки системы нажмите на значок Wi-Fi подключения в верхней части экрана, выберите опцию "Edit Connections..." в выпадающем меню, выделите текущую Wi-Fi сеть в открывшемся списке и нажмите на кнопку с иконкой шестерёнки.
Во вкладке "General" поставьте галочку возле пункта "All users may connect to this network". Нажмите на кнопку "Save" для применения параметров и закрытия окна.
СОВЕТ
Убедитесь, что Jetson Nano доступен в сети. В образе по умолчанию установлен и включен SSH-сервер; для выполнения дальнейших операций рекомендуется подключиться к нему.
Установка ROS
СОВЕТ
Ubuntu 18.04 официально поддерживается дистрибутивом ROS Melodic, и поэтому на официальном сайте есть подробная инструкция по его установке.
Добавьте ключи и репозитории OSRF в систему:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt update
Установите базовые ROS-пакеты (стек ros-base
):
sudo apt install ros-melodic-ros-base
Активируйте окружение ROS и обновите кэш утилиты rosdep
:
source /opt/ros/melodic/setup.bash
sudo rosdep init
rosdep update
СОВЕТ
Добавьте строчку source /opt/ros/melodic/setup.bash
в конец файла .profile
в своей домашней директории, чтобы не производить активацию окружения ROS каждый раз заново.
Установите пакетный менеджер pip для Python 2 (он требуется для установки некоторых зависимостей):
sudo apt install curl
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python ./get-pip.py
Сборка нод Клевера
Создайте в своей домашней директории "рабочее пространство" (workspace) и добавьте туда необходимые для Клевера пакеты:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/CopterExpress/clover
git clone https://github.com/CopterExpress/ros_led
git clone https://github.com/okalachev/vl53l1x_ros
Установите зависимости этих пакетов с помощью утилиты rosdep
:
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -y
Для функционирования mavros потребуется также скачать географические данные. Это делается следующими командами:
curl https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh -o install_geographiclib_datasets.sh
chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
Для сборки пакетов также потребуется установить заголовочные файлы OpenCV 3.2 (по умолчанию в новых образах для Jetson Nano установлены заголовочные файлы для OpenCV 4.1.1; с ними компиляция пакетов провалится):
sudo apt install libopencv-dev=3.2.0+dfsg-4ubuntu0.1
Наконец, запустите сборку нод Клевера:
cd ~/catkin_ws
catkin_make
СОВЕТ
При подключении полётных контроллеров на базе PX4 через USB следует также добавить правила udev в систему. Скопируйте файл с правилами в /etc/udev/rules.d
и выполните команду sudo udevadm control --reload-rules && sudo udevadm trigger
.
Запуск Клеверных нод
Активируйте окружение "рабочего пространства":
cd ~/catkin_ws
source devel/setup.bash
Поменяйте launch-файлы так, чтобы это соответствовало вашей конфигурации, и запустите ноды с помощью roslaunch
:
roslaunch clover clover.launch
СОВЕТ
Вы можете настроить systemd
так, чтобы ноды Клевера запускались автоматически. Примером такой настройки может служить образ Клевера для Raspberry Pi: там созданы сервисы roscore
и clover
. Их можно подкорректировать и использовать в Jetson Nano.
Возможные проблемы
CSI-камеры
Jetson Nano не поддерживает старые камеры для Raspberry Pi (v1, на базе сенсора Omnivision OV5647). Камеры Raspberry Pi v2 (на базе Sony IMX219) поддерживаются, но не показываются в виде Video4Linux-устройств.
Изображения с этих камер можно захватывать с помощью GStreamer. Для последующей передачи этих изображений в ROS можно использовать ноды gscam
или jetson_camera
. Для запуска ноды jetson_camera
потребуется собрать OpenCV из ветки 3.4 с поддержкой GStreamer.
Примеры конвейеров GStreamer для захвата изображения доступны в репозитории JetsonHacksNano.
Изображение с камеры может становиться более красным по краям. Это можно исправить с помощью настройки процессора изображения. Эта процедура должна выполняться производителями камер; вот пример файла настройки процессора изображения от компании Arducam.
LED-лента
В данный момент Jetson Nano не поддерживает работу с LED-лентой через GPIO.