/** * Follower P-controller ported from agenticros_follow_me/follower_controller.py. * * Given a target person's 3D position (x = lateral metres, z = depth metres), * compute a smoothed, deadzoned, clamped Twist command. */ export interface ControllerConfig { targetDistance: number; maxLinearVel: number; maxAngularVel: number; kpDistance: number; kpAngular: number; distanceDeadzone: number; angularDeadzone: number; smoothingFactor: number; watchdogTimeoutMs: number; } export declare const DEFAULT_CONTROLLER_CONFIG: ControllerConfig; export interface Twist { linearX: number; angularZ: number; } export interface TargetSample { /** Lateral offset in metres (positive = right of camera centre). */ x: number; /** Forward depth in metres. */ z: number; confidence: number; } export declare class FollowerController { readonly config: ControllerConfig; private smoothedLinear; private smoothedAngular; private lastDetectionMs; private lastTwist; constructor(config?: Partial); setTargetDistance(d: number): void; reset(): void; /** Compute next twist. Pass null when no person is detected this tick. */ update(target: TargetSample | null): Twist; getLastTwist(): Twist; } //# sourceMappingURL=controller.d.ts.map