Skip to content

Custom Behaviors Tutorial

Create custom behaviors for specialized missions.

from aqua.behaviors import Behavior, Status

class SpiralSearch(Behavior):
    def __init__(self, center, max_radius, spacing):
        self.center = center
        self.max_radius = max_radius
        self.spacing = spacing
        self.current_radius = 0
        self.angle = 0

    def update(self):
        # Compute next position in spiral
        x = self.center[0] + self.current_radius * cos(self.angle)
        y = self.center[1] + self.current_radius * sin(self.angle)

        # Navigate to position
        self.navigate_to([x, y, self.center[2]])

        # Update spiral parameters
        self.angle += radians(10)
        if self.angle > 2 * pi:
            self.angle = 0
            self.current_radius += self.spacing

        # Check completion
        if self.current_radius > self.max_radius:
            return Status.SUCCESS

        return Status.RUNNING

Usage

# Create spiral search behavior
spiral = SpiralSearch(
    center=[20, 20, -10],
    max_radius=15,
    spacing=3
)

# Execute
spiral.run()

Next: Multi-Vehicle Operations