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

  1. libcurl4

  2. libpocoredis62

  3. libzip4j-java

  4. libexif12

  5. libmosquitto1

  6. libjsoncpp1

  7. python3-click

  8. python3-future

  9. libusb-1.0-0

  10. libusb-0.1-4

  11. python3-yaml

  12. python3-lark

  13. libspdlog1

  14. libtinyxml2-6a

  15. libmbim-glib4

  16. libxml2

  17. libxslt1.1

Software

  1. redis

  2. geographiclib-tools

Headers

  1. libusb-dev

  2. libusb-1.0-0

  3. libusb-1.0-0-dev

  4. libboost-all-dev

  5. libpoco-dev

  6. libzip-dev

  7. libexif-dev

  8. libjsoncpp-dev

  9. libcurl4-openssl-dev

  10. libmosquitto-dev

  11. libasio-dev

  12. libgeographic-dev

  13. libjpeg-dev

  14. libeigen3-dev

  15. libspdlog-dev

  16. python3-numpy

  17. libtinyxml-dev

  18. libmbim-glib-dev

  19. libxml2-dev

  20. libxslt1-dev

Python Dependencies

  1. 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:

  1. apiToken

Tipo de Dato: Cadena de Texto

  1. idDevice

Tipo de Dato: Cadena de Texto

  1. minimumVoltage

Tipo de Dato: Numero Entero

  1. videoPort

Tipo de Dato: Numero Entero

  1. weatherDevice

Tipo de Dato: Numero Entero

  1. weatherToken

Tipo de Dato: Cadena de Texto

  1. boxInMission

Tipo de Dato: Booleano

  1. checkBattery

Tipo de Dato: Booleano

  1. checkSatellites

Tipo de Dato: Booleano

  1. controlsHost

Tipo de Dato: Cadena de Texto

  1. distanceRestriction

Tipo de Dato: Numero Entero

  1. isBoxEnable

Tipo de Dato: Booleano

  1. isWeatherEnable

Tipo de Dato: Booleano

  1. maxHdop

Tipo de Dato: Numero Entero

  1. minSats

Tipo de Dato: Numero Entero

  1. NumeroTelefonoSim

Tipo de Dato: Numero Entero

  1. PwdMiTelcel

Tipo de Dato: Cadena de Texto

  1. safetyLandEnable

Tipo de Dato: Booleano

  1. 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.