# SaltyBot Autonomous Behavior Tree Coordinator (Issue #482)

## Overview

Autonomous mode state machine with 5 states:
```
idle → patrol → investigate → interact → return → idle
```

## States

### IDLE: Waiting/Charging
- Robot stationary, waiting for activation
- Timeout: 60 seconds
- Transition: Moves to PATROL when activated

### PATROL: Autonomous Patrolling
- Executes waypoint routes within geofence (#441)
- Integrates curiosity (#470) for autonomous exploration
- Monitors for person detection
- Battery check: Returns to IDLE if <20%

### INVESTIGATE: Person Investigation
- Approaches and tracks detected person (#212)
- Fallback: Navigate to last known position
- Transition: → INTERACT when person approached

### INTERACT: Social Interaction
- Face recognition and greeting
- Gesture detection and response (#454)
- Timeout: 30 seconds
- Transition: → RETURN

### RETURN: Return to Home/Dock
- Navigates back to home pose
- Nav2 recovery behaviors with retries
- Transition: → IDLE when complete

## Blackboard Variables

```python
battery_level: float          # Battery percentage (0-100)
person_detected: bool         # Person detection state
obstacle_state: str          # 'clear' | 'near' | 'blocked'
current_mode: str            # State: idle/patrol/investigate/interact/return
home_pose: PoseStamped       # Home/dock location
```

## Safety Features

- **E-Stop** (#459): Highest priority, halts operation immediately
- **Battery protection**: Returns home if <20%
- **Geofence** (#441): Keeps patrol within 5m boundary
- **Obstacle avoidance**: LIDAR monitoring

## Integration with Features

- **Patrol** (#446): Waypoint routes
- **Curiosity** (#470): Exploration during patrol
- **Person Following**: Approach detected persons
- **E-Stop** (#459): Emergency override
- **Geofence** (#441): Boundary constraint

## Launch

```bash
ros2 launch saltybot_bringup autonomous_mode.launch.py
```

## Files

- `autonomous_coordinator.xml`: BehaviorTree definition
- `launch/autonomous_mode.launch.py`: Full launch setup
- `saltybot_bringup/bt_nodes.py`: Custom BT node plugins
- `BEHAVIOR_TREE_README.md`: Documentation
