# Issue #506: Demo Launch Profile
# Optimized for demonstrations: tricks, dancing, social interactions, tight maneuvering
#
# Parameters:
#   - Max speed: 0.3 m/s (controlled for safe demo performance)
#   - Geofence: tight (demo area boundary)
#   - GPS: disabled (indoor demo focus)
#   - Costmap inflation: aggressive (enhanced obstacle awareness)
#   - Recovery behaviors: quick recovery from collisions
#   - Tricks: all enabled (spin, dance, nod, celebrate, shy)
#   - Social features: enhanced (face emotion, audio response)

profile: demo
description: "Demo mode with tricks, dancing, and social features (0.3 m/s)"

# ── Navigation & Velocity ──────────────────────────────────────────────────────
max_linear_vel: 0.3            # m/s — controlled for safe trick execution
max_angular_vel: 0.8           # rad/s — agile rotation for tricks
max_vel_theta: 0.8             # rad/s — Nav2 controller (agile)

# ── Costmap Configuration ──────────────────────────────────────────────────────
costmap:
  inflation_radius: 0.70       # 0.35m robot + 0.35m padding (enhanced safety)
  cost_scaling_factor: 12.0    # slightly higher cost scaling for obstacle avoidance
  obstacle_layer:
    inflation_radius: 0.70
    clearing: true
    marking: true

# ── Behavior Server (Recovery) ─────────────────────────────────────────────────
behavior_server:
  spin:
    max_rotational_vel: 2.0    # fast spins for tricks
    min_rotational_vel: 0.5
    rotational_acc_lim: 3.5    # higher acceleration for trick execution
  backup:
    max_linear_vel: 0.12       # conservative backup
    min_linear_vel: -0.12
    linear_acc_lim: 2.5
    max_distance: 0.25         # 25cm max backup distance (safety first)
  wait:
    wait_duration: 1000        # 1 second waits (quick recovery)

# ── Geofence (if enabled) ──────────────────────────────────────────────────────
geofence:
  enabled: true
  mode: "tight"                # tight geofence for controlled demo area
  radius_m: 3.0                # 3m radius (small demo arena)

# ── SLAM Configuration ─────────────────────────────────────────────────────────
slam:
  enabled: true
  mode: "rtabmap"              # RTAB-Map for demo space mapping
  gps_enabled: false            # no GPS in demo mode

# ── Trick Behaviors (Social) ───────────────────────────────────────────────────
tricks:
  enabled: true
  available: ["spin", "dance", "nod", "celebrate", "shy"]
  trick_cooldown_sec: 2.0      # slightly longer cooldown for safe sequencing
  max_trick_duration_sec: 5.0  # 5 second max trick duration

# ── Social Features ────────────────────────────────────────────────────────────
social:
  face_emotion_enabled: true     # enhanced emotional expression
  audio_response_enabled: true   # respond with audio for demo engagement
  greeting_trigger_enabled: true # greet approaching humans
  personality: "friendly"        # social personality preset

# ── Person Follower ────────────────────────────────────────────────────────────
follower:
  follow_distance: 1.0          # closer following for demo engagement
  max_linear_vel: 0.3
  min_linear_vel: 0.05
  kp_linear: 0.6                # higher proportional gain for responsiveness
  kp_angular: 0.4               # moderate angular gain for agility
  following_enabled: true

# ── Scenario Presets ──────────────────────────────────────────────────────────
scenario:
  preset: "public_demo"         # optimized for crowds and public spaces
  collision_tolerance: "low"    # abort tricks on any obstacle
  speed_limit_enforcement: "strict"  # strictly enforce max_linear_vel
