Skip to content

greatroboticslab/agentAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

519 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

agentAI

A research-data platform for physical & embodied agents β€” upload any modality (images, video, GPS/IMU sensor logs), get an automatic diagnosis, then collect β†’ review β†’ train, all from one dashboard.

CI Python License

πŸ”— Live platform: https://lab-b660m-c.tailfa6424.ts.net β€” sign in with your MTSU Google account. Runs on the lab server; reachable from the lab network / Tailscale. GPU jobs queue on PSC Bridges-2.

Built at the MTSU Great Robotics Lab. Create a project for any research field, add data of any kind, then point AI agents at it to harvest, filter, label, and train β€” any number, any mix, or none. The dashboard runs on the lab server; GPU jobs queue on the PSC Bridges-2 cluster.

Research Projects home β€” open a project or start a new one
Every research domain is a project. Open one, or start a new one for any data type β€” images, video, sensor, …

Jump to: 5-minute demo Β· Ask your data Β· Every modality Β· Autonomous agents Β· Run it locally Β· Research & benchmarks


πŸš€ 5-minute demo β€” diagnose a robot's sensor logs

A hands-on walkthrough you can reproduce on the live platform. We take one patrol robot's raw sensor logs β€” a GPS track and an IMU (accelerometer + gyro) β€” and let the platform turn them into a diagnosis: how clean each signal is, what went wrong and exactly when, and which sensors caught the same physical event.

The payoff (Step 4β‘’): the platform finds that at t β‰ˆ 60 s the GPS and the IMU flagged trouble at the same instant β€” the fingerprint of a real pothole β€” while a bad GPS fix at 30 s and a dead IMU channel at 75 s each show up on one sensor alone. That cross-sensor agreement is something no single log can tell you.

Step 1 β€” Grab the demo data

Download docs/demo/patrol_multisensor.zip (24 KB): two CSVs β€” gps.csv (timestamp, lat, lon, speed_mps, heading_deg) and imu.csv (timestamp, ax, ay, az, gyro_z), 1,000 rows each at 10 Hz, sharing one clock. It's realistically-shaped driving data with three faults deliberately injected so every detector has something true to find.

Step 2 β€” Create a project

On the home page, click New Project, name it Patrol Multisensor, and tick Sensor as the data type β€” or just describe your goal in plain English and let the AI propose the setup. No config files, no code.

Create a new project β€” name, research field, data types, or describe it in plain English

Step 3 β€” Upload the logs

Open the project and drop the .zip onto the upload box. The platform detects both CSVs as sensor data and registers the dataset. Set a goal β€” "Find cross-sensor events where GPS and IMU agree" β€” so the AI review knows what you actually care about.

Step 4 β€” Read the diagnosis

Open Analyze. The page is modality-aware; for sensor data it builds a three-layer diagnosis, top to bottom.

β‘  The route β€” and how clean each signal is. The GPS track is drawn as its actual shape (colored by speed), with a red βœ• everywhere the position jumps implausibly. Below it, every signal gets a noise score: residual after smoothing as a % of its range, plus SNR. GPS lat/lon come back clean (0.5–0.8 %); the IMU axes read noisier because they carry a constant gravity component with little real variation β€” the page says so instead of crying "bad data".

GPS route drawn as an oval, colored by speed, with red X marks on implausible position jumps Signal-quality card: per-signal noise % and SNR for all 8 GPS + IMU signals

β‘‘ What went wrong β€” and exactly when. Four grounded detectors β€” robust rapid-change (median + MAD z-score), GPS teleports (physically implausible implied speed), sampling gaps, and stuck-sensor flatlines β€” each report a precise timestamp. Here: a 118 m GPS jump at 30 s, a stuck IMU az channel for 61 samples at 75 s, and a burst of activity at 60 s.

Anomalies table: GPS jumps, sudden changes, and an IMU flatline, each with its timestamp and detail

β‘’ Where the sensors agree β€” the real events. This is the part a single sensor can't give you. Every sensor's events go onto one shared time axis; a red dashed line marks any instant where two or more sensors flagged at once. The 30 s GPS glitch and the 75 s IMU flatline each stand alone β€” likely sensor faults. But at 60.03 s the GPS jump and speed-drop line up with the IMU's vertical-acceleration spike: that agreement is the fingerprint of a real pothole, not a glitch.

Cross-sensor timeline: events per sensor on a shared time axis, a red dashed line at 60s where GPS and IMU coincide, and a correlated-moments table

Honest by design. Alignment uses the files' absolute timestamps (a true shared clock) when present, and says so on the card; otherwise it falls back to each file's own start and tells you it's assuming synchronized logging. A one-click AI review then narrates all of this in plain English and rates training-readiness β€” a small model runs locally on the server, a stronger cluster model is selectable per project.

Step 5 β€” Ask it anything, in plain words

The standard read is just the start. Every dataset has an Analysis agent chat box: type a question and it picks the analysis for that question. Ask "what went wrong during the run and when?" and it runs anomaly detection, answering with the exact events and their timestamps β€” every number computed by a tool, never invented:

Analysis agent answering a typed question: 22 anomalies with the GPS jump at 30s and IMU change at 59.8s, and which tool it ran

Ask a different question β€” "where do GPS and IMU flag the same moment?" β€” and it runs a different analysis (cross-sensor correlation β†’ the pothole at 60 s), with an actionable suggestion. A vague "analyze this" gets guided back to concrete options instead of a canned run.

Step 6 β€” …or just say it β€” live

Click the πŸŽ™ mic and speak your question. Transcription streams on the lab GPU (self-hosted Whisper), so the words appear in the box as you talk; when you stop, the agent runs the analysis. A different spoken question gives a different analysis β€” you steer it in real time, by voice.

Live voice: the mic is recording (red) and the spoken words appear in the box in real time
Words appear live as you speak (mic recording).
On stop, the agent answers the spoken question: a per-signal noise/SNR table and suggestions
On stop, the agent picks the analysis for what you asked and answers with real numbers.

🧠 Ask your data β€” the analysis agent

That's the agent you just used in Steps 5–6. It works the same on any sensor or image dataset:

  • "which signal is noisiest?" Β· "what happened around 60 seconds?" Β· "do GPS and IMU agree anywhere?" Β· "are any images blurry?" Β· "compare the first half to the second half" β€” each one runs a different analysis. A vague question ("analyze this") gets guided back to concrete options instead of a canned run.
  • A small local model only chooses which tools to run; the findings are computed by real code β€” robust anomaly detection, cross-sensor time alignment, image blur (variance of Laplacian), class balance β€” and stated exactly as computed, so no number is ever invented. It then lists actionable suggestions (blurry images to review, unlabeled or duplicate images to fix, class imbalance, and so on).
  • Voice runs the whole thing: the πŸŽ™ button streams your question to self-hosted Whisper on the lab GPU β€” the words appear live as you speak β€” and on stop the agent runs the analysis. A different spoken question gives a different analysis, so you can steer the analysis in real time, by voice.

Why not just drop the file into a general AI chat?

General AI chat + a file This analysis agent
The numbers reads a truncated sample; can miscount or invent figures (worse the bigger the file) computed by code over the whole file; stated exactly as computed
The methods approximates by "reading" real signal processing β€” anomaly detection, GPS-jump, cross-sensor alignment, Laplacian blur
Reproducible varies run to run same question β†’ same computed answer; shows which tools ran, and why
The data a throwaway conversation a versioned dataset on a platform that also labels it and trains on the cluster

A general chat is still better for open-ended reasoning and tiny quick reads β€” this is grounded and specialized for real datasets at scale, wired into the collect β†’ label β†’ train pipeline.


🧩 One upload box, every modality

That sensor pipeline isn't a special case β€” it's the same upload box every project has. Drop a .zip, a folder, images, a raw .mp4, or CSV logs, and the platform auto-detects what the data is (by content, not file extension) and runs the analysis that fits it. Verified live with real uploads:

You upload Auto-detected as The analysis page shows
Field photos + YOLO labels image class distribution, boxed sample previews, near-duplicate check
GPS / IMU logs (CSV) sensor the 3-layer diagnosis above β€” route, noise, anomalies, cross-sensor timeline
Robot camera clip (raw .mp4) video duration / fps / frames / resolution + 8 auto-extracted frame previews

For image datasets you get class distribution, image-dimension stats, near-duplicates, boxed samples, and the same one-click AI review. No data.yaml? Click ✎ Edit class names and name each YOLO class right on the page β€” saving writes data.yaml and the real names appear immediately.

Image-dataset analysis: class distribution, image stats, AI review, boxed sample previews Video analysis: duration, fps, frames, resolution, and 8 auto-extracted preview frames

πŸ€– It's also an autonomous agent platform

Upload-and-analyze is the ground floor. A project can also run agents β€” any number, any mix, or none:

  • Collector β€” harvests data by your queries Β· Filter β€” DINOv2 quality-scores it Β· Labeler β€” pushes to Roboflow for human labeling Β· Trainer β€” trains on the cluster GPU Β· Evaluator β€” runs model.val on a held-out split.
  • Compounding rounds β€” each round is one collect β†’ filter β†’ label β†’ train β†’ evaluate pass, recorded with who ran it and when; evaluation metrics feed the next round's collection.
  • Fill in a research field and the project auto-generates harvest queries and an accept-vocabulary from it β€” a new domain is config, not code. There's a built-in 2-minute guide at /guide.

⚑ Run it locally

cd weed_llm_benchmark              # the package lives here
pip install -r requirements-dev.txt   # light: boots the dashboard without torch
echo mypassword > ~/.dashpass      # auth fails closed without a configured password
DASH_USER=me uvicorn weed_optimizer_framework.tools.dashboard_server:app --port 8000
# β†’ open http://localhost:8000  (log in: me / mypassword)

Running tests, CI details, and contributing conventions are in docs/DEVELOPMENT.md.


What's in this repo

Path What it is
weed_llm_benchmark/ The live platform β€” dashboard, autonomous harvest β†’ label β†’ train pipeline, MongoDB, Roboflow sync. This is where active work happens.
multagent/ EMACF robotics agent framework (Brain / Perception / Targeting / Navigation) β€” the earlier embodied-robot direction, kept for reference.
docs/ Screenshots + platform roadmap.

Latest: v3.6 β€” the analysis agent: ask any dataset a question by text or πŸŽ™ voice and it picks the right analysis (a different question β†’ a different analysis), with every number computed by code (never invented) plus actionable suggestions. Built on the v3.2 sensor-diagnosis pipeline (noise/SNR, timestamped anomalies, cross-modal alignment). See weed_llm_benchmark/CHANGELOG.md and RESEARCH_LOG.md.


Research & benchmarks

The platform grew out of two research threads. Full detail is collapsed below to keep this page usable β€” expand it for the architecture, the 19-model VLM benchmark, every phase, and the results tables.

πŸ“„ Click to expand β€” EMACF framework, the VLM-vs-YOLO benchmark, all phases & results, tech stack, papers

Origin

This repository implements EMACF (Embodied Multi-Agent Cognitive Framework) β€” a domain-agnostic agent architecture where an LLM serves as a robot's "brain" and specialized real-time agents serve as its "body". The same core infrastructure is designed to handle weed detection, robot navigation, human-robot interaction, and future applications. The dataset platform above is the weed-detection domain, generalized.

Repository structure (research view)

Directory Description Status
multagent/ EMACF core framework β€” event-driven multi-agent system extending MetaGPT for real-time robot control. BrainAgent (LLM), PerceptionAgent (YOLO), TargetingAgent (laser), NavigationAgent, cloud-edge comms, real-time dashboard. Reference
weed_llm_benchmark/ Vision-LLM benchmark + dataset platform β€” evaluates 19 open-source vision LLMs against YOLO on CottonWeedDet12 (5,648 images, 12 species), and hosts the live harvest/label/train platform. Active
robot_navigation/ Robot navigation (planned) β€” autonomous navigation sharing the same EMACF framework. Planned

Architecture overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    EMACF (multagent/)                             β”‚
β”‚                                                                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Brain    β”‚  β”‚  Perception  β”‚  β”‚ Targeting  β”‚  β”‚ Navigation β”‚  β”‚
β”‚  β”‚  Agent    β”‚  β”‚  Agent       β”‚  β”‚ Agent      β”‚  β”‚ Agent      β”‚  β”‚
β”‚  β”‚  (LLM)   β”‚  β”‚  (YOLO)      β”‚  β”‚ (Laser)    β”‚  β”‚ (Movement) β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β”‚
β”‚       β”‚               β”‚                β”‚               β”‚         β”‚
β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚                           EventBus                               β”‚
β”‚                              β”‚                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                    Edge Bridge (WebSocket)                  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   Edge Device       β”‚
                    β”‚   (LaserCar)        β”‚
                    β”‚   Camera + Laser    β”‚
                    β”‚   + Safety Monitor  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key design principles

  1. Universal agent framework β€” domain logic lives in agent implementations, not the core. The same EmbodiedTeam, EventBus, and AgentRegistry handle any task.
  2. Event-driven β€” agents react to events in real time, not turn-based. The BrainAgent (LLM) only intervenes on significant events.
  3. Hot-pluggable agents β€” add/remove agents at runtime via AgentRegistry.
  4. LLM-agnostic β€” switch between vLLM, Ollama, OpenAI, or any backend via config.
  5. Cloud-edge separation β€” heavy compute (YOLO, LLM) on cloud GPU; edge device handles only hardware I/O with independent safety fallback.

Progress β€” EMACF framework (multagent/)

Component Status Description
Core Framework Done EmbodiedTeam, EventBus, AgentRegistry, EdgeBridge
BrainAgent Done LLM-based cognitive center with memory and self-optimization
PerceptionAgent Done YOLO11n detection + tracking + noise filtering + trajectory prediction
TargetingAgent Done Coordinate transform + firing control + laser patterns
NavigationAgent Done Mode management + vehicle commands
Dashboard Done Vue 3 real-time visualization (live feed, agent status, metrics)
Edge Client Done Camera streaming, command execution, safety monitor

Progress β€” Weed LLM benchmark (weed_llm_benchmark/)

Phase Status Description
Phase 0: Evaluation Module Done evaluate.py (mAP, precision, recall), datasets.py, format converters
Phase 1: YOLO Baseline Done YOLO11n fine-tuned on CottonWeedDet12 β€” mAP@0.5=0.929, P=0.930, R=0.850
Phase 2: Full LLM Benchmark Done 15 models evaluated on CottonWeedDet12 (9 with mAP > 0)
Phase 3: YOLO+LLM Fusion Done Only OWLv2 filter improves YOLO (+0.018 F1); LLMs cannot rescue YOLO misses
Phase 3B: Cross-Species Generalization Done YOLO drops 27% on unseen species; Florence-2 precision exceeds YOLO; LLM augmentation +0.009 F1
Phase 3C: Anti-Forgetting Methods Done All simple methods fail; label quality (SAM+Depth) is the bottleneck
Phase 3D: SAM+Depth Enhanced Labeling Done SAM+Florence-2 caption: worse (-6.8% old, -11% new); caption classification too noisy
Phase 3E: Agent Optimizer Done First improvement! Florence+OWLv2 consensus: +0.016 F1 on unseen species, -0.020 forgetting
Phase 3F: Florence-2 Fine-tune Done Negative: fine-tuning degraded both old (-11%) and new species
Phase 4: HyperAgent Closed-Loop Done Qwen2.5-7B Brain: 3 rounds executed, system works but Brain needs stronger reasoning
Phase 4B: Weed Optimizer Framework Done 14 files, 3,522 lines. Ollama function calling, job chain, plant.id API, HuggingFace model discovery.
Phase 4C: Clone + Train External Models Done YOLOv8s trained from COCO→CottonWeed: F1=0.888; DETR zero-shot: F1=0; YOLO11n baseline: F1=0.917
Phase 4D: plant.id Integration Done API key configured, local test OK (Status 201). Cluster needs pre-cache. 49 credits left.
Phase 4E: DeepSeek-R1 Brain Done 7 action types (vs Qwen's 1). Autonomously searched HuggingFace + downloaded models.
Phase 4F: Extended Run (6h48m) Done 7 rounds autonomous. Filter removed 16.3% label noise. Brain reasoning loop validated.
Phase 4G: Anti-Forgetting (LoRA + freeze + distill) Done Hybrid LoRA: 37 Conv2d layers, 38.15% params. Near-zero mAP forgetting.
Phase 4H: Gemma 4 Brain + Evaluator Fix Done Gemma 4 31B (MoE). Corrected evaluator (dual-conf). New mAP50: +9.7%, old mAP50: -0.6%.
Phase 5: Dataset platform (dashboard, provenance, multi-domain) Active The platform shown at the top of this page.
Paper writing Planned Figures, tables, manuscript

Benchmark results (CottonWeedDet12, 848 test images)

Model Type mAP@0.5 mAP@0.5:0.95 Precision Recall F1 Time
YOLO11n (fine-tuned) Detector 0.929 0.865 0.930 0.850 0.888 β€”
Florence-2-base (0.23B) VLM 0.434 0.392 0.789 0.519 0.626 558s
Florence-2-large (0.77B) VLM 0.329 0.302 0.692 0.431 0.531 662s
InternVL2-8B VLM 0.208 0.091 0.545 0.354 0.429 3838s
Qwen2.5-VL-3B VLM 0.196 0.068 0.333 0.249 0.285 5898s
MiniCPM-V-4.5 VLM 0.192 0.043 0.407 0.340 0.371 6595s
OWLv2-large Detector 0.184 0.117 0.194 0.943 0.322 2519s
Qwen2.5-VL-7B VLM 0.176 0.059 0.334 0.214 0.261 6047s
InternVL2-2B VLM 0.002 0.001 0.038 0.025 0.031 2094s
InternVL2.5-8B VLM 0.000 0.000 0.016 0.001 0.001 6238s
Grounding-DINO-base Detector 0.000 0.000 β€” β€” β€” 843s
Llama 3.2 Vision 11B VLM 0.000 0.000 0.005 0.007 0.006 11370s
Moondream / Molmo / LLaVA VLM 0.000 0.000 β€” β€” β€” β€”

Technology stack

Component Technology
Agent Framework MetaGPT (extended for embodied AI)
Backend FastAPI + asyncio + WebSocket
Object Detection Ultralytics YOLO11n (fine-tuned on CottonWeedDet12)
LLM Integration vLLM / Ollama / OpenAI-compatible APIs
Dashboard Server-rendered FastAPI (platform) + Vue 3 + ECharts (robot demo)
Storage MongoDB + append-only JSON registry + Roboflow (labeling surface)
Hardware HeliosDAC (laser) + ESP32 (motor/laser control)
Compute Cluster PSC Bridges-2 (V100 GPUs)

Papers

  1. "Universal Embodied Multi-Agent Cognitive Framework for Agricultural Robotics" β€” EMACF architecture (targeting Scientific Reports)
  2. "Can Vision LLMs Detect Weeds? A Benchmark of Open-Source Multimodal Models for Agricultural Object Detection" β€” VLM benchmark (targeting Computers and Electronics in Agriculture)

Per-project docs


License

Proprietary β€” research use only. Β© 2026 MTSU Great Robotics Lab, all rights reserved. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages