Este curso está dividido en 4 capítulos.
En el capítulo 1 aprenderás a instalar los paquetes y dependencias de ROS necesarias para lanzar un ArduCopter (drone de la marca ArduPilot) en Gazebo 11, ROS Noetic y Ubuntu 20.04, utilizando la página oficial de ArduPilot y un repositorio en Github.
En el capítulo 2 lanzarás un ArduCoper sin sensores extra, con sensor lidar o con cámara apuntando hacia abajo y hacia enfrente. Podrás agregar más modelos al simulador Gazebo y especificar la ruta dónde gazebo puede encontrar tales modelos. Además, instalarás la estación en tierra QGroundControl para monitorear y manipular el drone, además de establecer recorridos de vuelo, sin usar ROS.
En el capítulo 3 se explica a detalle el archivo launch y los nodos de ROS necesarios para lanzar un ArduCoper en Gazebo. Se explica también qué tópicos y sus tipos de mensajes son usados para controlar el drone desde terminal usando ROS.
Finalmente en el capítulo 4, programarás diferentes nodos de ROS en lenguaje C++ parar lograr el seguimiento de trayectoria del drone, considerando que las entradas de control son: a) posiciones cartesianas deseadas, b) velocidades o c) la orientación deseada del drone y su empuje vertical. Los resultados serán interpretados mediante gráficas en MATLAB para calificar el desempeño de todos los controladores diseñados.
El contenido del curso se muestra a continuación.
1 Instalación de ArduPilot en ROS Noetic y Ubuntu 20.04
1.1 Instalación de ArduPilot (ArduCopter) en ROS Noetic y Gazebo 11
2 Configuración del ambiente de trabajo en ROS
2.1 Creación de un paquete en ROS y archivos launch para lanzar diferentes ArduCopters
2.2 Lanzar un ArduCopter sin sensores extra
2.3 Lanzar un ArduCopter con cámara frontal
2.4 Lanzar un ArduCopter con sensor lidar
2.5 Lanzar un ArduCopter con cámara apuntando hacia abajo
2.6 Agregando modelos a Gazebo
2.7 Instalación de la estación en tierra QGroundControl para un ArduCopter
3 Control de un ArduCopter en ROS
3.1 Cambio de namespace
3.2 Tópicos y mensajes de ArduPilot en ROS
4 Nodos en C++ para controlar el ArduCopter
4.1 Control por posición
4.2 Control por velocidades
4.3 Resultados del control por velocidades
4.4 Control por orientación deseada y empuje vertical
4.5 Resultados del control por orientación deseada y empuje vertical