DocsPlugins
Overview
Every plugin that ships with Aerostack2, what each one does and how to pick one.
Many Aerostack2 components do their work through a plugin, loaded when the component starts. The
component handles its ROS 2 interface, and the plugin holds the algorithm, so swapping a controller
or a planner is a change of one parameter. Most components choose theirs with plugin_name.
| Component | Plugins |
|---|---|
| Motion controller | pid_speed_controller, differential_flatness_controller, geometric_controller |
| State estimator | ground_truth, raw_odometry, simple_ekf |
| Motion behaviors | Position and trajectory plugins for every motion behavior, plus speed and platform plugins for take off and land |
| Trajectory generator | dynamic_mav_trajectory_generator, mav_trajectory_generator, gcopter_trajectory_generator, jerk_limited_trajectory_generator |
| Path planning | a_star, voronoi |
| Map server | scan2occ_grid, depth2occ_grid, point_cloud2occ_grid |
| Gripper | two_fingers, dc_servo |
| Object perception | aruco |
Common setups
Which controller to use depends on the commands the platform accepts:
| Controller sends | Controller | Platforms that accept it |
|---|---|---|
| Velocities | pid_speed_controller | Gazebo, Crazyflie, Tello, DJI, PX4, MAVLink and the multirotor simulator |
| Body rates and thrust | differential_flatness_controller or geometric_controller | Betaflight, PX4, MAVLink, the multirotor simulator, and Gazebo with its body rates control modes file |
Differential flatness only takes trajectories, so pair it with the trajectory plugins of the motion behaviors and a trajectory generator. The PID speed and geometric controllers also take position references, so the position plugins work with them.
The state estimator depends on where the drone's position comes from. See choosing a plugin.
Plugins
Motion controller
PID speed, differential flatness and geometric control, with every gain.
State estimator
Ground truth, raw odometry and the EKF, with every setting.
Motion behaviors
How take off, land, go to and follow behaviors move the drone.
Trajectory generators
Four planners that turn waypoints into smooth trajectories.
Path planning
A* and Voronoi planners on an occupancy grid.
Map server
Occupancy grids from a lidar, a depth camera or a point cloud.
Payload
Gripper plugins for Gazebo and for a servo.
Perception
ArUco marker detection.
Writing a plugin
A plugin is a class that inherits from its component's base class, exported with pluginlib. The guides walk through a controller plugin, an estimator plugin and a follow reference plugin.
Last updated on November 3, 2026