1 of 29

Aerostack2

Desarrolla tu enjambre de drones desde simulación a real

Rafael Perez-Segui, Pedro Arias-Perez, 19/09/2024, Sevilla

Aerostack2 - ROSCon España 2024 Workshop

2 of 29

Agenda

  • ¿Qué es Aerostack2?
  • Arquitectura
  • Ejemplos prácticos
    • Control por referencias al controlador
    • Control de ejecución de plan y estructura de un proyecto
    • Paso a real, uso de Crazyflies
    • Misión multi-agente compleja: Drone-convoy

2

Aerostack2 - ROSCon España 2024 Workshop

3 of 29

¿Qué es Aerostack2?

Aerostack2 en un framework de código abierto destinado al diseño y creación de sistemas aéreos multiagentes, basado en ROS 2.

Es una evolución de su predecesor Aerostack, usado por nuestro grupo Computer Vision & Aerial Robotics (CVAR) Group desde 2016.

3

Aerostack2 - ROSCon España 2024 Workshop

4 of 29

Especificaciones

  1. Modular y flexible
  2. Soporte de distintas plataformas
  3. Manejo de enjambres
  4. Facilidad en la creación de misiones
  5. Desarrollo seguro de sistemas
  6. Soporte de vuelos en interior y exterior

4

Aerostack2 - ROSCon España 2024 Workshop

5 of 29

Arquitectura

5

Aerostack2 - ROSCon España 2024 Workshop

6 of 29

Arquitectura

6

Aerostack2 - ROSCon España 2024 Workshop

7 of 29

Interfaz con los actuadores y sensores

Interfaz entre las distintas plataformas aéreas y sus sensores con Aerostack2.

  • Agnóstica a la plataforma
  • Facilita el paso de simulación a real
  • Permite trabajar con enjambres heterogéneos
  • Emplea los estándares de comunicación de ROS 2

7

Aerostack2 - ROSCon España 2024 Workshop

8 of 29

Plataformas soportadas

8

Bitcraze Crazyflie 2.X

DJI Ryze Tello

Plataformas basadas en PX4 / Mavlink

DJI Matrice 200/300 series

Gazebo

AS2 Multirotor Simulator

Aerostack2 - ROSCon España 2024 Workshop

9 of 29

Gazebo Platform

  1. Especificar la simulación (world.yaml)

  • Lanzar simulador de Gazebo

  • Lanzar una plataforma por drone (namespace = model_name)

9

world_name: "empty"

drones:

- model_type: "crazyflie"

model_name: "drone0"

xyz:

- 0.0

- 0.0

- 0.3

- model_type: "crazyflie"

model_name: "drone1"

xyz:

- -0.5

- 0.0

- 0.3

- model_type: "crazyflie"

model_name: "drone2"

xyz:

- -1.0

- 0.0

- 0.3

ros2 launch as2_gazebo_assets launch_simulation.py

simulation_config_file:=<%= simulation_config_file %>

ros2 launch as2_platform_gazebo platform_gazebo_launch.py

namespace:=<%= drone_namespace %>

platform_config_file:=config/config.yaml

simulation_config_file:=<%= simulation_config_file %>

Aerostack2 - ROSCon España 2024 Workshop

10 of 29

Arquitectura

10

Aerostack2 - ROSCon España 2024 Workshop

11 of 29

State Estimator

Encargado de proporcionar el estado del dron.

  • Cargar y seleccionar plugins
  • Generar el árbol de TFs
  • Conversión entre geodésicas y cartesianas
  • Adaptar las entradas y salidas

11

ros2 launch as2_state_estimator state_estimator_launch.py

namespace:=<%= drone_namespace %>

config_file:=config/config.yaml

Aerostack2 - ROSCon España 2024 Workshop

12 of 29

Motion Controller

Encargado del movimiento del dron.

  • Cargar y seleccionar plugins
  • Seleccionar el modo de control
  • Adaptar las entradas y salidas

12

ros2 launch as2_motion_controller controller_launch.py

namespace:=<%= drone_namespace %>

config_file:=config/config.yaml

plugin_name:=pid_speed_controller

plugin_config_file:=config/pid_speed_controller.yaml

Aerostack2 - ROSCon España 2024 Workshop

13 of 29

Ejemplos prácticos

  1. Control por referencias al controlador
  2. Control de ejecución de plan y estructura de un proyecto
  3. Paso a real, uso de Crazyflies
  4. Misión multi-agente compleja: Drone-convoy

13

Aerostack2 - ROSCon España 2024 Workshop

14 of 29

Arquitectura

14

Aerostack2 - ROSCon España 2024 Workshop

15 of 29

Behaviors

  • Proporcionar una capa lógica para formular planes de misión de manera uniforme y más simplificada​
  • Cada comportamiento corresponde a una habilidad específica del robot relacionada​
  • Cada comportamiento encapsula el control y la supervisión de la ejecución de su tarea​
  • Se implementan ampliando las acciones de ROS 2 para proporcionar capacidades adicionales

15

Aerostack2 - ROSCon España 2024 Workshop

16 of 29

Behaviors

16

# Motion Behaviors

- ros2 launch as2_behaviors_motion motion_behaviors_launch.py

namespace:=<%= drone_namespace %>

config_file:=config/config.yaml

# Trajectory Generation Behavior

- ros2 launch as2_behaviors_trajectory_generation generate_polynomial_trajectory_behavior_launch.py

namespace:=<%= drone_namespace %>

config_file:=config/config.yaml

# Point Gimbal Behavior

- ros2 launch as2_behaviors_perception point_gimbal_behavior.launch.py

namespace:=<%= drone_namespace %>

config_file:=config/config.yaml

Aerostack2 - ROSCon España 2024 Workshop

17 of 29

Arquitectura

17

Aerostack2 - ROSCon España 2024 Workshop

18 of 29

Plan Execution Control

Se encarga de la especificación del plan de misión y la supervisión de su ejecución.

18

import rclpy

from as2_python_api.drone_interface import DroneInterface

rclpy.init()​

drone = DroneInterface(drone_id="drone0")​

drone.takeoff(height=1.0, speed=0.5)​

drone.go_to.go_to_point([1.0, 1.0, 2.0], speed=0.5, frame_id="earth")​

drone.land(speed=0.5)​

drone.shutdown()​

rclpy.shutdown()

"target": "drone0",​

"plan": [​

{​

"behavior": "takeoff",​

"args": {"height": 1.0, "speed": 0.5}},​

{​

"behavior": "go_to",​

"method": "go_to_point",​

"args": {"point": [1.0, 1.0, 2.0] , "speed": 0.5 , "frame_id": "earth"}},​

{​

"behavior": "land",​

"args": {"speed": 0.5 }}​

]

Behavior Trees

AS2 Mission Interpreter

AS2 Python API

Aerostack2 - ROSCon España 2024 Workshop

19 of 29

Arquitectura

19

Aerostack2 - ROSCon España 2024 Workshop

20 of 29

Mission Control

Destinado a facilitar la definición y supervisión de las misiones.

20

AS2 GUI

AS2 Keyboard Teleoperation

AS2 Alphanumeric Viewer

Aerostack2 - ROSCon España 2024 Workshop

21 of 29

Ejemplos prácticos

  • Control por referencias al controlador
  • Control de ejecución de plan y estructura de un proyecto
  • Paso a real, uso de Crazyflies
  • Misión multi-agente compleja: Drone-convoy

21

Aerostack2 - ROSCon España 2024 Workshop

22 of 29

Use Cases:

22

Aerostack2 - ROSCon España 2024 Workshop

23 of 29

Use Cases:

23

ARIAS-PEREZ, Pedro, et al. Exploring Unstructured Environments using Minimal Sensing on Cooperative Nano-Drones. arXiv preprint arXiv:2407.06706, 2024.

Aerostack2 - ROSCon España 2024 Workshop

24 of 29

Use Cases:

24

Aerostack2 - ROSCon España 2024 Workshop

25 of 29

Real World Experiment

25

Aerostack2 - ROSCon España 2024 Workshop

26 of 29

Even harder !!

26

Aerostack2 - ROSCon España 2024 Workshop

27 of 29

Agradecimientos

Principales autores:​

- Miguel Fernandez-Cortizas​

- Pedro Arias-Perez​

- Rafael Perez-Segui

- Javier Melero-Deza​​

- David Perez-Saura​

- Martin Molina​

- Pascual Campoy​

27

Aerostack2 - ROSCon España 2024 Workshop

28 of 29

Gracias por vuestra atención

28

Please consider to star and contribute to our project on GitHub!

Aerostack2 - ROSCon España 2024 Workshop

29 of 29

Aerostack2

Desarrolla tu enjambre de drones desde simulación a real

Rafael Perez-Segui, Pedro Arias-Perez, 19/09/2024, Sevilla

Aerostack2 - ROSCon España 2024 Workshop