/** * In-process follow-me loop. Subscribes to color + depth, runs YOLOv8n person * detection, computes a Twist via FollowerController, and publishes cmd_vel. * * This is the `mode: 'local'` alternative to the agenticros_follow_me ROS2 node. */ import type { AgenticROSConfig, ResolvedRobot, RosTransport } from "@agenticros/core"; import { type Twist } from "./controller.js"; export interface FollowMeLocalStatus { enabled: boolean; tracking: boolean; targetDistance: number; targetDescription: string | null; personCount: number; lastPerson: { x: number; z: number; confidence: number; } | null; lastTwist: Twist; lastError: string | null; framesProcessed: number; detectionsSinceStart: number; } export interface StartOptions { targetDescription?: string; } export declare class FollowMeLocal { private readonly robot; private readonly config; private readonly transport; private readonly detector; private readonly controller; private enabled; private running; private targetDescription; private colorSub; private depthSub; private latestColor; private latestDepth; private tickHandle; private lastError; private framesProcessed; private detectionsSinceStart; private lastPerson; private tracking; constructor(robot: ResolvedRobot, config: AgenticROSConfig, transport: RosTransport); /** Stable id of the robot this loop is bound to. Used by the registry below. */ get robotId(): string; start(opts?: StartOptions): Promise; stop(): Promise; setTargetDistance(d: number): void; setTargetDescription(description: string): void; status(): FollowMeLocalStatus; private subscribeFrames; private unsubscribeFrames; private tickSafe; private tick; private projectTo3D; private publishTwist; private publishStop; } export declare function getFollowMeLocal(robot: ResolvedRobot, config: AgenticROSConfig, transport: RosTransport): FollowMeLocal; /** Stop the in-process YOLO follow loop if one was started for this robot. */ export declare function stopFollowMeLocalIfPresent(robotId: string): Promise; /** Test-only: clear the registry so suites can run in isolation. */ export declare function _resetFollowMeLocalRegistry(): void; //# sourceMappingURL=loop.d.ts.map