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 :ref:`seccion_instalacionautomatica` 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. .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash source /opt/ros/foxy/setup.bash Ya teniendo correctamente instalado ROS2, procedemos a clonar el repositorio de **SkyDevice**. .. _seccion_clonacion: 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: .. code-block:: bash 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. .. code-block:: bash 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". .. code-block:: bash git status git checkout development Una vez que estemos en la rama "development", procederemos a actualizar los submódulos con el siguiente comando: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash 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. .. code-block:: bash 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: .. code-block:: bash 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. .. code-block:: bash ./build - **Websockets** Para Wiringpi debemos ubicarnos en la carpeta **skydevice/lib/websockets**, en esta carpeta realizaremos la siguiente serie de comandos: .. code-block:: bash mkdir build cd build cmake .. make && sudo make install .. _seccion_compilacionskydevice: 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: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash Tools/environment_install/install-prereqs-ubuntu.sh -y Y vuelves a cargar la ruta con el siguiente comando: .. code-block:: bash . ~/.profile .. _seccion_atributosthings: 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* 2. **idDevice** Tipo de Dato: *Cadena de Texto* 3. **minimumVoltage** Tipo de Dato: *Numero Entero* 4. **videoPort** Tipo de Dato: *Numero Entero* 5. **weatherDevice** Tipo de Dato: *Numero Entero* 6. **weatherToken** Tipo de Dato: *Cadena de Texto* 7. **boxInMission** Tipo de Dato: *Booleano* 8. **checkBattery** Tipo de Dato: *Booleano* 9. **checkSatellites** Tipo de Dato: *Booleano* 10. **controlsHost** Tipo de Dato: *Cadena de Texto* 11. **distanceRestriction** Tipo de Dato: *Numero Entero* 12. **isBoxEnable** Tipo de Dato: *Booleano* 13. **isWeatherEnable** Tipo de Dato: *Booleano* 14. **maxHdop** Tipo de Dato: *Numero Entero* 15. **minSats** Tipo de Dato: *Numero Entero* 16. **NumeroTelefonoSim** Tipo de Dato: *Numero Entero* 17. **PwdMiTelcel** Tipo de Dato: *Cadena de Texto* 18. **safetyLandEnable** Tipo de Dato: *Booleano* 19. **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: .. code-block:: bash 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: .. code-block:: bash 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-block:: bash code ~/.bashrc Ya teniendo **abierto el archivo .bashrc**, hasta al final del archivo procedemos a agregar las siguientes líneas: .. code-block:: 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 .. _seccion_ejecucionskyardu: 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: .. code-block:: bash ../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: .. code-block:: bash 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. .. _seccion_instalacionautomatica: 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 :ref:`seccion_clonacion`. 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: .. code-block:: bash ./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 :ref:`seccion_atributosthings` (Solo la parte de los atributos compartidos). Al igual tendríamos que realizar la parte de :ref:`seccion_compilacionskydevice`. Y finalizando puedes consultar como es que se ejecutan Ardupilot y SkyDevice en esta sección de la documentación :ref:`seccion_ejecucionskyardu`.