@@ -41,6 +41,38 @@ geometry_msgs/Point current_position
4141
4242---
4343
44+ ### FixedTrajectoryTask
45+
46+ ** File:** ` action/FixedTrajectoryTask.action `
47+ ** Action server:** ` /{robot_name}/tasks/fixed_trajectory `
48+ ** Implemented by:** * (not yet implemented)*
49+
50+ Follow a pre-defined trajectory specified by shape type and parameters. With ` loop: true ` , the trajectory repeats until the task is cancelled.
51+
52+ #### Goal
53+
54+ | Field | Type | Description |
55+ | ----- | ---- | ----------- |
56+ | ` trajectory_spec ` | airstack_msgs/FixedTrajectory | Trajectory type (e.g. ` Circle ` , ` Figure8 ` , ` Lawnmower ` ) and key-value attributes |
57+ | ` loop ` | bool | If true, repeat trajectory indefinitely until cancelled |
58+
59+ #### Result
60+
61+ | Field | Type | Description |
62+ | ----- | ---- | ----------- |
63+ | ` success ` | bool | True if trajectory completed (or cancelled normally when looping); false on error |
64+ | ` message ` | string | Completion reason |
65+
66+ #### Feedback
67+
68+ | Field | Type | Description |
69+ | ----- | ---- | ----------- |
70+ | ` status ` | string | Task status string |
71+ | ` progress ` | float32 | Fraction of current pass completed (0.0–1.0) |
72+ | ` current_position ` | geometry_msgs/Point | Current robot position |
73+
74+ ---
75+
4476### NavigateTask
4577
4678** File:** ` action/NavigateTask.action `
@@ -156,158 +188,77 @@ Perform a systematic lawnmower-pattern coverage survey of a polygonal area. Comp
156188
157189---
158190
159- ### ObjectSearchTask
191+ ### SemanticSearchTask
160192
161- ** File:** ` action/ObjectSearchTask .action `
162- ** Action server:** ` /{robot_name}/tasks/object_search `
193+ ** File:** ` action/SemanticSearchTask .action `
194+ ** Action server:** ` /{robot_name}/tasks/semantic_search `
163195** Implemented by:** * (not yet implemented)*
164196
165- Search an area for instances of a named object class. Stops early when ` target_count ` objects have been found (or 0 to search until time limit or full coverage) .
197+ Search an area for a target described in natural language. Uses a vision-language model to match the query against observations during flight. Stops early once ` target_count ` matches have been found .
166198
167199#### Goal
168200
169201| Field | Type | Description |
170202| ----- | ---- | ----------- |
171- | ` object_class ` | string | Object class to search for (e.g. ` "person" ` , ` "vehicle "` ) |
203+ | ` query ` | string | Natural-language description of the target (e.g. ` "a red truck near a building " ` ) |
172204| ` search_area ` | geometry_msgs/Polygon | Area to search |
173205| ` min_altitude_agl ` | float32 | Minimum flight altitude above ground (m) |
174206| ` max_altitude_agl ` | float32 | Maximum flight altitude above ground (m) |
175207| ` min_flight_speed ` | float32 | Minimum flight speed (m/s) |
176208| ` max_flight_speed ` | float32 | Maximum flight speed (m/s) |
177209| ` time_limit_sec ` | float32 | Maximum task duration in seconds (0 = no limit) |
178- | ` target_count ` | int32 | Stop after finding this many objects (0 = search all) |
179-
180- #### Result
181-
182- | Field | Type | Description |
183- | ----- | ---- | ----------- |
184- | ` success ` | bool | True if target count reached or area exhausted; false if cancelled |
185- | ` message ` | string | Completion reason |
186- | ` objects_found ` | int32 | Total number of objects found |
187- | ` object_poses ` | geometry_msgs/PoseArray | Poses of all detected objects |
188-
189- #### Feedback
190-
191- | Field | Type | Description |
192- | ----- | ---- | ----------- |
193- | ` status ` | string | Task status string |
194- | ` progress ` | float32 | Search area fraction covered (0.0–1.0) |
195- | ` objects_found_so_far ` | int32 | Objects detected so far |
196- | ` current_position ` | geometry_msgs/Point | Current robot position |
197-
198- ---
199-
200- ### ObjectCountingTask
201-
202- ** File:** ` action/ObjectCountingTask.action `
203- ** Action server:** ` /{robot_name}/tasks/object_counting `
204- ** Implemented by:** * (not yet implemented)*
205-
206- Count all instances of a named object class within a defined area. Unlike ` ObjectSearchTask ` , this task always covers the full area regardless of how many objects are found.
207-
208- #### Goal
209-
210- | Field | Type | Description |
211- | ----- | ---- | ----------- |
212- | ` object_class ` | string | Object class to count (e.g. ` "car" ` , ` "tree" ` ) |
213- | ` count_area ` | geometry_msgs/Polygon | Area to survey |
214- | ` min_altitude_agl ` | float32 | Minimum flight altitude above ground (m) |
215- | ` max_altitude_agl ` | float32 | Maximum flight altitude above ground (m) |
216- | ` min_flight_speed ` | float32 | Minimum flight speed (m/s) |
217- | ` max_flight_speed ` | float32 | Maximum flight speed (m/s) |
218-
219- #### Result
220-
221- | Field | Type | Description |
222- | ----- | ---- | ----------- |
223- | ` success ` | bool | True if area fully surveyed; false if cancelled |
224- | ` message ` | string | Completion reason |
225- | ` count ` | int32 | Total number of objects counted |
226- | ` object_poses ` | geometry_msgs/PoseArray | Poses of all detected objects |
227-
228- #### Feedback
229-
230- | Field | Type | Description |
231- | ----- | ---- | ----------- |
232- | ` status ` | string | Task status string |
233- | ` progress ` | float32 | Survey coverage fraction (0.0–1.0) |
234- | ` current_count ` | int32 | Objects counted so far |
235- | ` current_position ` | geometry_msgs/Point | Current robot position |
236-
237- ---
238-
239- ### FixedTrajectoryTask
240-
241- ** File:** ` action/FixedTrajectoryTask.action `
242- ** Action server:** ` /{robot_name}/tasks/fixed_trajectory `
243- ** Implemented by:** * (not yet implemented)*
244-
245- Follow a pre-defined ` TrajectoryXYZVYaw ` waypoint trajectory. With ` loop: true ` , the trajectory repeats until the task is cancelled.
246-
247- #### Goal
248-
249- | Field | Type | Description |
250- | ----- | ---- | ----------- |
251- | ` trajectory ` | airstack_msgs/TrajectoryXYZVYaw | Waypoint trajectory to execute |
252- | ` loop ` | bool | If true, repeat trajectory indefinitely until cancelled |
210+ | ` confidence_threshold ` | float32 | Minimum confidence to accept a match (0.0–1.0) |
211+ | ` target_count ` | int32 | Stop after finding this many matches (0 = search until time limit or full coverage) |
253212
254213#### Result
255214
256215| Field | Type | Description |
257216| ----- | ---- | ----------- |
258- | ` success ` | bool | True if trajectory completed (or cancelled normally when looping) ; false on error |
217+ | ` success ` | bool | True if at least one match above threshold was found ; false if cancelled or not found |
259218| ` message ` | string | Completion reason |
219+ | ` found_poses ` | geometry_msgs/PoseArray | Poses of all matches found |
220+ | ` confidence ` | float32 | Confidence of the best match (0.0–1.0) |
221+ | ` objects_found ` | int32 | Total number of matches found |
260222
261223#### Feedback
262224
263225| Field | Type | Description |
264226| ----- | ---- | ----------- |
265227| ` status ` | string | Task status string |
266- | ` progress ` | float32 | Fraction of waypoints completed (0.0–1.0) in current pass |
267- | ` current_waypoint_index ` | int32 | Index of current waypoint |
268- | ` total_waypoints ` | int32 | Total number of waypoints in trajectory |
228+ | ` progress ` | float32 | Search coverage fraction (0.0–1.0) |
229+ | ` best_confidence_so_far ` | float32 | Highest confidence match seen so far |
230+ | ` objects_found_so_far ` | int32 | Number of matches found so far |
269231| ` current_position ` | geometry_msgs/Point | Current robot position |
270232
271233---
272234
273- ### SemanticSearchTask
235+ ### ChatTask
274236
275- ** File:** ` action/SemanticSearchTask .action `
276- ** Action server:** ` /{robot_name}/tasks/semantic_search `
237+ ** File:** ` action/ChatTask .action `
238+ ** Action server:** ` /{robot_name}/tasks/chat `
277239** Implemented by:** * (not yet implemented)*
278240
279- Search for a location or object described in natural language. Uses a vision- language model to match the query against observations during flight .
241+ Send a free-form text prompt and optional images to the robot for processing by an onboard language model or remote AI service. The task completes when the model produces a response .
280242
281243#### Goal
282244
283245| Field | Type | Description |
284246| ----- | ---- | ----------- |
285- | ` query ` | string | Natural-language description of the target (e.g. ` "a red truck near a building" ` ) |
286- | ` search_area ` | geometry_msgs/Polygon | Area to search |
287- | ` min_altitude_agl ` | float32 | Minimum flight altitude above ground (m) |
288- | ` max_altitude_agl ` | float32 | Maximum flight altitude above ground (m) |
289- | ` min_flight_speed ` | float32 | Minimum flight speed (m/s) |
290- | ` max_flight_speed ` | float32 | Maximum flight speed (m/s) |
291- | ` time_limit_sec ` | float32 | Maximum task duration in seconds (0 = no limit) |
292- | ` confidence_threshold ` | float32 | Minimum confidence to accept a match (0.0–1.0) |
247+ | ` text ` | string | Free-form text prompt or question |
248+ | ` images ` | sensor_msgs/CompressedImage[ ] | Zero or more images to include with the prompt |
293249
294250#### Result
295251
296252| Field | Type | Description |
297253| ----- | ---- | ----------- |
298- | ` success ` | bool | True if a match above threshold was found; false if cancelled or not found |
299- | ` message ` | string | Completion reason |
300- | ` found_pose ` | geometry_msgs/Pose | Pose of the best match (if found) |
301- | ` confidence ` | float32 | Confidence of the best match (0.0–1.0) |
254+ | ` success ` | bool | True if the model produced a response; false on error |
255+ | ` message ` | string | Model response text, or error description on failure |
302256
303257#### Feedback
304258
305259| Field | Type | Description |
306260| ----- | ---- | ----------- |
307- | ` status ` | string | Task status string |
308- | ` progress ` | float32 | Search coverage fraction (0.0–1.0) |
309- | ` best_confidence_so_far ` | float32 | Highest confidence match seen so far |
310- | ` current_position ` | geometry_msgs/Point | Current robot position |
261+ | ` status ` | string | Processing status (e.g. ` "processing" ` , ` "streaming" ` ) |
311262
312263---
313264
0 commit comments