Para usar la cámara de profundidad Intel Realsense D435 en una NVIDIA Jetson Nano es necesario tener el sistema operativo Ubuntu 16.04, 18.04 o 20.04, el SO recomendado es Ubuntu 20.04 LTS.
Con la cámara desconectada se empezará a configurar las librerías, paquetes y actualizaciones necesarias en la NVIDIA Jetson Nano.
-
Asegurar que la Herramienta Avanzada de Paquetería está actualizada:
sudo apt-get update && sudp apt-get upgrade
-
Instalar Python 3 y sus archivos de desarrollo.
sudo apt-get install python3 python3-dev python3-pip
-
Instalar
Numpy
yOpenCV
por medio de PIP.pip3 install numpy pip3 install opencv-python
-
Registrar las llaves públicas del servidor de la librería
librealsense
.sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key
-
Añadir el server a la list de repositorios.
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
-
Instalar el SDK.
sudo apt-get install apt-utils -y sudo apt-get install librealsense2-utils librealsense2-dev -y
-
Se instalan las herramientas de Python necesarias para la utilización.
sudo apt-get update && sudo apt-get -y upgrade sudo apt-get install -y --no-install-recommends \ python3 \ python3-setuptools \ python3-pip \ python3-dev
-
Instalar los paquetes core necesarios para acceder a la información de la cámara desde Python.
sudo apt-get install -y git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev sudo apt-get install -y libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
-
Clonar el repositorio de librealsense.
git clone https://github.com/IntelRealSense/librealsense.git cd ./librealsense
-
Ejecutar el archivo que habilita los permisos de utilización de la cámara.
./scripts/setup_udev_rules.sh
-
Preparar la compilación de paquetes.
mkdir build && cd build
Compilar los paquetes de Python.
cmake ../ -DBUILD_PYTHON_BINDINGS:bool=true
Recompilar los archivos binarios de configuración.
sudo make uninstall && sudo make clean && sudo make -j4 && sudo make install
-
Exportar variable de entorno para reconocer el paquete desde Python.
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.6/pyrealsense2
Para que la variable de entorno no se reinicie cada vez que se apague la máquina se puede añadir el comando de exportación dentro del archivo
~/.bashrc
.Ahora Python es capaz de acceder a la información de la cámara de profundidad D435.
Para habilitar con Python el uso de los pines digitales de salida de la Jetson Nano, también llamados GPIO, son necesarias unas configuraciones.
-
Instalar las librerías de
Jetson.GPIO
.sudo pip install Jetson.GPIO sudo pip3 install Jetson.GPIO
-
Configurar los permisos del usuario.
sudo groupadd -f -r gpio sudo usermod -a -G gpio your_user_name
La variable
your_user_name
debe cambiarse por el nombre de usuario de la máquina. -
Copiar el archivo
99-gpio.rules
en el directoriorules.d
sudo cp etc/99-gpio.rules /etc/udev/rules.d/
-
Volver a cargar las reglas para que el archivo entre en vigor.
sudo udevadm control --reload-rules && sudo udevadm trigger
Ahora Python es capaz de controlar la salida de voltaje de los pines GPIO de la Jetson Nano.
-
Habilitar el servidor VNC cada vez que se acceda a la Jetson Nano.
mkdir -p ~/.config/autostart cp /usr/share/applications/vino-server.desktop ~/.config/autostart/.
-
Configurar el servidor VNC
gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false
-
Configurar una contraseña de acceso al servidor VNC
gsettings set org.gnome.Vino authentication-methods "['vnc']" gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)
La cadena
thepassword
se sustituye por la contraseña deseada -
Reiniciar el sistema para aplicar los cambios
sudo reboot
Ahora la Jetson Nano cuenta con un servidor VNC cada vez que se accede a ella.
Para poder acceder por medio de VNC desde otra computadora se puede utilizar un software como VNC Viewer especificando la red, el usuario y la contraseña del servidor VNC de la Jetson Nano.
Para poder acceder a la Jetson Nano sin necesidad de que se pida un usuario y una contraseña al inicio, es necesario habilitar el inicio de sesión automático, para esto se realiza lo siguiente:
Abrir "Unity launcher" de la pantalla principal, ejecutar la aplicación "User Accounts", dar click en "Unlock" del botón de la esquina superior derecha de la ventana, escribir la contraseña requerida y habilitar la opción "Enable/Disable Automatic Login for your Account".
Con esto ahora cada vez que se encienda la Jetson Nano se accederá directamente a la pantalla principal sin requerir usuario y contraseña.
Para que el programa principal se ejecute con tan solo encender la Jetson Nano es necesaria la siguiente configuración:
-
Crear un archivo llamado
/usr/local/bin/python.sh
donde adentro de este archivo se tengan los comandos necesarios para ejecutar el archivo de Python, por ejemplo:#!/bin/bash python3 ~/project/opencv_pyrealsense2.py
-
Cambiar sus permisos de ejecución.
sudo chmod +x /usr/local/bin/python.sh
-
Crear un archivo llamado
/etc/systemd/system/python.service
. -
En este archivo poner le siguiente texto:
[Unit] Description=python: initialize my python script After=multi-user.target [Service] ExecStart=/usr/local/bin/python.sh Restart=always StartLimitInterval=10 RestartSec=10 [Install] WantedBy=multi-user.target
-
Correr los siguiente comando en la terminal para habilitar e iniciar el servicio.
sudo systemctl enable mything.service sudo systemctl start mything.service
Ahora el programa de Python se ejecutará cada vez que inicie la máquina.