Primeros pasos¶
Instalación Paso a Paso de Skydevice¶
Esta guía proporciona instrucciones detalladas sobre cómo instalar el software de Skydevice en tu sistema. Asegúrate de seguir los pasos descritos a continuación para garantizar una instalación exitosa.
Toda la instalación se realizará a través de la terminal de Linux. Así que todos los comandos se ejecutaran ahí.
Puedes hacer la instalación manual siguiendo los pasos siguientes, o puedes hacer la instalación automática yendo a esta parte de la documentación Instalación Automática de Skydevice y empezar la instalación desde ahí.
Instalación de ROS2¶
Podemos consultar la documentación oficial de ROS2 Foxy Aqui
Para el correcto funcionamiento del Software de SkyDevice necesitaremos instalar ROS2.
UTF-8
Los siguientes comandos los ejecutamos ya que configuran el sistema operativo para utilizar la configuración regional en_US.UTF-8 para el idioma inglés.
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
Repositorio ROS2
Tenemos que agregar el repositorio apt Ros2 al sistema, para eso ejecutamos los siguientes comandos:
sudo apt install software-properties-common
sudo add-apt-repository universe
Herramienta CURL
Enseguida tenemos que instalar la herramienta CURL y también descargar la clave de autenticación del respositorio de paquetes ROS. Para eso usamos los siguientes comandos:
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
Agregar a lista de fuentes
Este comando agrega una línea de repositorio de paquetes ROS a un archivo de lista de fuentes del sistema:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
Instalación de paquete de ROS2
Primero se actualiza el repositorio y después se instala los paquetes requeridos para el correcto funcionamiento de ROS2. Ejecutamos los siguientes comandos en la terminal:
sudo apt update
sudo apt upgrade
sudo apt install ros-foxy-ros-base python3-argcomplete
Configuración del entorno
Se configura el entorno para poder trabajar con el siguiente comando:
source /opt/ros/foxy/setup.bash
Ya teniendo correctamente instalado ROS2, procedemos a clonar el repositorio de SkyDevice.
Clonación del repositorio de SkyDevice¶
Instalación de Git
Para empezar con el proceso de instalación primero se debe tener instalado correctamente git en el SO. Para ello utilizamos los siguientes comandos:
sudo apt update
sudo apt install git
git --version
Una vez hayamos instalado correctamente git podemos empezar con el proceso de clonación de los repositorios necesarios.
Clonación del repositorio
Para este proceso, deberemos tener acceso al repositorio a clonar, en este caso SkyDevice. Una vez que lo tengamos, procederemos a clonar el repositorio en nuestro sistema operativo. Al momento de clonar el repositorio, nos pedirá nuestro usuario y contraseña con el cual queremos acceder al repositorio.
git clone https://gitlab.com/therobox/skydevice
Ya clonado el repositorio, nos ubicaremos en la carpeta del mismo y revisaremos la rama en la que nos encontramos con el comando “git status”. Si nos encontramos en la rama “main”, procederemos a cambiarnos a la rama “development”.
git status
git checkout development
Una vez que estemos en la rama “development”, procederemos a actualizar los submódulos con el siguiente comando:
git submodule update --init --recursive
Instalación de SkyDevice¶
Instalación de Dependencias
El siguiente paso consiste en la instalación de las dependencias necesarias del proyecto. Para hacerlo, utilizaremos el siguiente comando:
sudo apt-get install Dependency
Donde Dependency será sustituido por la dependencia a instalar, las dependencias necesarias a instalar son (Tendremos que instalar todas una por una):
Libraries
libcurl4
libpocoredis62
libzip4j-java
libexif12
libmosquitto1
libjsoncpp1
python3-click
python3-future
libusb-1.0-0
libusb-0.1-4
python3-yaml
python3-lark
libspdlog1
libtinyxml2-6a
libmbim-glib4
libxml2
libxslt1.1
Software
redis
geographiclib-tools
Headers
libusb-dev
libusb-1.0-0
libusb-1.0-0-dev
libboost-all-dev
libpoco-dev
libzip-dev
libexif-dev
libjsoncpp-dev
libcurl4-openssl-dev
libmosquitto-dev
libasio-dev
libgeographic-dev
libjpeg-dev
libeigen3-dev
libspdlog-dev
python3-numpy
libtinyxml-dev
libmbim-glib-dev
libxml2-dev
libxslt1-dev
Python Dependencies
python3-netifaces
NOTA: Algunas versiones de las anteriores dependencias pueden variar por lo que no podrán ser encontradas por el instalador, de ser ese el caso utilizar el comando:
sudo apt-cache search Dependency
Este comando buscará todas las versiones disponibles de la librería o dependencia, de esta manera podremos instalar la versión más actual.
Instalación de Geographiclib
Después de haber instalado las dependencias correspondientes, se procederá a instalar la librería geographiclib, para lo cual nos moveremos al directorio skydevice/lib/mavros/mavros/scripts, una vez ahí ejecutaremos la siguiente línea de código para instalarlo de manera correcta.
sudo ./install_geographiclib_datasets.sh
Instalación de AWS, Websockets y Wiringpi
Enseguido procedemos a la instalación de 3 repositorios importantes del proyecto, que se encuentran ubicados en skydevice/lib cada uno de los repositorios cuanta con una serie de pasos para su instalación:
AWS
Para AWS(Amazon Web Services) debemos ubicarnos en la carpeta skydevice/lib/aws, una vez nos encontremos ahí procederemos con los siguientes comandos para su correcta instalación:
sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_ONLY="s3" ..
make && sudo make install
Wiringpi
Para Wiringpi debemos ubicarnos en la carpeta skydevice/lib/WiringPi, en esta carpeta ejecutaremos el comando ./build que se encargará de realizar la instalación del repositorio.
./build
Websockets
Para Wiringpi debemos ubicarnos en la carpeta skydevice/lib/websockets, en esta carpeta realizaremos la siguiente serie de comandos:
mkdir build
cd build
cmake ..
make && sudo make install
Compilación de SkyDevice¶
Una vez tengamos listas todas las dependencias asi como las librerías necesarias procederemos a la compilación del proyecto. Nos ubicaremos en la carpeta de skydevice/drone, una vez ahí, procedemos a ejecutar las siguientes líneas de comando:
source /opt/ros/foxy/setup.bash
colcon build
NOTA: Con estos comandos comenzará la compilación del proyecto, este proceso puede tardar dependiendo las capacidades del sistema, si en la compilación ocurre un error se deberán instalar las librerías faltantes que marque en color rojo, si en el proceso de compilación sigue marcando error a pesar de tener todas las librerías necesarias instaladas, se recomienda borrar las carpetas creadas por colcon (build,log,installation) y volver a ejecutar el comando colcon build.
Instalación de ArduPilot¶
Para este punto ya se tuvo que haber instalado correctamente Skydevice, y justo dentro del repositorio de SkyDevice ya viene dentro ArduPilot.
El siguiente comando se utiliza para actualizar la lista de paquetes disponibles en los repositorios configurados:
sudo apt-get update
Instalación de MAVProxy
Para poder instalar y compilar correctamente ArduPilot necesitaremos instalar este paquete de software. Para eso ejecutamos el siguiente comando:
pip install mavproxy
Instalación
Para la instalación nos tenemos que dirigir al directorio skydevice/lib/ardupilot, y ahi procedemos a ejecutar el siguiente comando:
Tools/environment_install/install-prereqs-ubuntu.sh -y
Y vuelves a cargar la ruta con el siguiente comando:
. ~/.profile
Asignación de atributos compartidos en ThingsBoard y modficación del archivo .bashrc¶
Una vez que hayamos instalado todas las librerías y dependencias necesarias, asi como compilado el proyecto para corroborar que todo está en orden, se procederá a hacer la ejecución del mismo, para ello tendremos que realizar unas configuraciones previas.
Asignación de atributos compartidos en ThingsBoard
Ahora procederemos a asignar los atributos compartidos que recibe el programa a la hora de ejecutarse, estos atributos los obtenemos de ThingsBoard que funciona como un intermediario entre el usuario y el programa, ingresaremos en la página de The Robox e ingresaremos con el usuario y contraseña proporcionados por el adminsitrador, una nos hayamos loggeado exitosamente nos iremos a la pestaña de Devices, en esta página encontraremos los dispositivos que se encuentran disponibles en el proyecto, para este caso haremos uso del drone1, daremos click en este y del lado derecho aparecerá información relevante del dispositivo, para el caso de los atributos compartidos nos iremos a la sección de Attributes y seleccionaremos la opción de Shared Attributes, en este apartado agregaremos las siguientes llaves con su respectivo tipo de dato:
apiToken
Tipo de Dato: Cadena de Texto
idDevice
Tipo de Dato: Cadena de Texto
minimumVoltage
Tipo de Dato: Numero Entero
videoPort
Tipo de Dato: Numero Entero
weatherDevice
Tipo de Dato: Numero Entero
weatherToken
Tipo de Dato: Cadena de Texto
boxInMission
Tipo de Dato: Booleano
checkBattery
Tipo de Dato: Booleano
checkSatellites
Tipo de Dato: Booleano
controlsHost
Tipo de Dato: Cadena de Texto
distanceRestriction
Tipo de Dato: Numero Entero
isBoxEnable
Tipo de Dato: Booleano
isWeatherEnable
Tipo de Dato: Booleano
maxHdop
Tipo de Dato: Numero Entero
minSats
Tipo de Dato: Numero Entero
NumeroTelefonoSim
Tipo de Dato: Numero Entero
PwdMiTelcel
Tipo de Dato: Cadena de Texto
safetyLandEnable
Tipo de Dato: Booleano
streamHost
Tipo de Dato: Cadena de Texto
Modficación de .bashrc para las variables de entorno
El programa necesita unas variables de entorno para poder funcionar correctamente. Entonces lo que haremos es modificar el archivo .bashrc para agregarlas.
Para modificarlo con Vim
Si no tienes instalado vim, para instalarlo se utilizan los siguientes comandos:
sudo apt-get update
sudo apt-get install vim
Con eso ya tendrás instalado vim y con el siguiente comando te abrirá el archivo .bashrc para modificarlo:
vim ~/.bashrc
Para modificarlo con Visual Studio Code
En dado caso que tengas instalado VSC podemos acceder a modificar el archivo .bashrc ejecutando en la terminal el siguiente comando:
code ~/.bashrc
Ya teniendo abierto el archivo .bashrc, hasta al final del archivo procedemos a agregar las siguientes líneas:
export TOKEN_DEV_TEST="Aquí va el token del drone"
export VAR_URL_TEST="127.0.0.1"
export PORT_URL_TEST="5762"
Una vez hecho este cambio procedemos a guardar los cambios.
Nota: En el caso de estarlo modificando con vim después de abrirlo, presiona la tecla “i” para modificar el archivo y posteriormente cuando queramos salir y guardar los cambios presionamos esc, escribimos “:wq” y damos enter.
Una vez hayamos asignado los valores correctos a los atributos compartidos se procederá a la ejecución del programa
Ejecución de SkyDevice y ArduPilot¶
Ejecución de ArduPilot
Nos ubicaremos en el directorio skydevice/lib/ardupilot/ArduCopter y ahí procedemos a ejecutar el siguiente comando en la terminal:
../Tools/autotest/sim_vehicle.py -D -L Oficina
La primera vez que se ejecute van a compilarse algunos paquetes, ya las siguientes veces que lo ejecutes no lo va a hacer. Cuando termine de compilar procedemos a ejecutar SkyDevice.
Ejecución de SkyDevice
En otra terminal, nos ubicaremos en la carpeta de skydevice/drone, en este directorio ejecutaremos las siguientes líneas de comando en consola:
source /opt/ros/foxy/local_setup.bash
source install/local_setup.bash
ros2 launch sim_launch.py
Si realizamos de manera correcta los pasos anteriores, el programa se ejecutará de manera correcta. Vamos a tener corriendo ArduPilot y SkyDevice al mismo tiempo.
Instalación Automática de Skydevice¶
Para poder ejecutar el script que nos va a instalar todo el ambiente para el Software de SkyDevice primero tendremos que clonar el repositorio, para eso podemos consultar esta parte de la documentación Clonación del repositorio de SkyDevice.
Ya teniendo clonado el repositorio, desde la terminal nos ubicaremos en la carpeta skydevice/scripts/environment_install, y procedemos a ejecutar el siguiente comando para empezar la instalación:
./install-prereqs-ubuntu.sh
La ejecución va a durar bastante tiempo, pero durante el proceso va a haber una serie de preguntas que tienes que contestar para que siga la correcta instalación.
Ya cuando vaya a terminar te va a pedir los valores de las siguientes variables:
varToken
Su valor es el Token del Drone.
varURL
El valor es: 127.0.0.1
varPORT
El valor es: 5762
Al terminar toda la instalación faltaría realizar la parte de la Asignación de atributos compartidos de ThingsBoard; la puedes consultar en esta sección de la documentación Asignación de atributos compartidos en ThingsBoard y modficación del archivo .bashrc (Solo la parte de los atributos compartidos). Al igual tendríamos que realizar la parte de Compilación de SkyDevice.
Y finalizando puedes consultar como es que se ejecutan Ardupilot y SkyDevice en esta sección de la documentación Ejecución de SkyDevice y ArduPilot.