Semana 1 - Preparando la simulación
Simulación
Esta semana se empezó a trabajar con el simulador. Lo primero fue establecer el mundo y obtuvimos los modelos de Robotics infrastructure:
Posteriormente, configuramos el dron de manera básica con el modelo y los controladores del mismo repositorio. En nuestro repositorio, creamos un controlador de drones para Gazebo. La idea es que tenga tanto el controlador sencillo como el controlador con Aerostack 2.
Driver sencillo
Lanzaremos todo desde un launcher en el que cargaremos el mundo y el URDF del dron. Para esto, reutilizamos el programa inject_entity.py. El nodo robot_state_publisher también se carga desde el mismo launcher que se encargará de informar sobre el estado del drone a través de topics.
El plugin para el dron implementa un control de servicios. Para poder comandar velocidades al dron, primero tenemos que despegarlo. Una vez que esté en estado volando, podemos enviarle comandos de velocidad a través del topic /name_space/cmd_vel. De esta manera, con un script, podemos crear misiones para el dron.
Aerostack 2
Una vez comprendido como funciona de manera básica el drone, usaremos aerostack2. Primero, debemos comprender cómo funciona este software:
-
Comunicación interproceso: Rostopics con estructuras de datos definidas para mejorar la interoperabilidad.
-
Plataforma y sensores: Lo más destacable es el concepto de plataforma aérea, que recibe la información del controlador de movimiento y la transmite al dron, así como la información que recibe del dron la envía al nodo correspondiente. Esto permite la facilidad de desarrollar un programa en el simulador y, al cambiar la plataforma, poder utilizar el mismo controlador y comportamientos en el dron real.
-
Comportamientos: Aquí se definen comportamientos como el despegue, aterrizaje, movimiento, entre otros…
-
Funciones robóticas: Contamos con diversas funciones, como el estimador de posición o el controlador de movimiento.
-
Aplicación: Aplicación a alto nivel.
-
Mision control: Define la forma en que se controlarán los comportamientos, ya sea a través de teleoperación o mediante el uso de behavior trees.
En relación con la aplicación que queremos desarrollar, primero debemos crear una plataforma capaz de controlar el dron en Gazebo 11. Además, el software ofrece diferentes métodos para controlar el dron. Utilizaremos el control por velocidad, ya que es el más adecuado para seguir una línea. Tenemos dos opciones de control lineal: en 3D o en 2D, donde en el control en 2D, el dron mantendrá la misma altura (Z). En cuanto al yaw (velocidad angular), también lo controlaremos mediante el “rate control” en lugar del control de posición.
En esta semana se consiguó implementar el control básico pero el control por aerostack sigue en proceso aunque se realizaron pruebas con los ejemplos de gazebo ignition.