Real-time crop counting on field robots, running computer vision on the edge.
- Supported tasks: object detection and counting.
- Camera source support: USB/V4L2 devices and IP cameras via RTSP URL.
- YOLO + BoT-SORT tracking accelerated with TensorRT FP16 on Jetson.
- Live video streaming over WebRTC (H.264 NVENC) to any device on the local WiFi network.
- Session recording with H.264 video and per-frame detection overlays, replayable from the web UI.
- Configurable counting lines and ROI zones; per-session statistics synced to the lab server.
- Two-mode architecture: embedded robot (Jetson + SQLite) and lab server (Docker + PostgreSQL), kept in sync automatically.
- Model management: upload
.ptweights on the server, convert to TensorRT engine on the robot.
The platform has two main components that run independently:
Server runs on a lab PC, manages users, models, and devices, and receives sync from robots.
make compose-build
make compose-up # start server (Docker Compose)
make compose-logs # follow logs
make compose-down # stopMobile robot runs on the embedded NVIDIA Jetson Xavier, captures video, runs inference, and records sessions.
make run-robot # backend → :8080
make run-camera # camera worker
make run-recording # recording worker
make run-inference # inference worker
make run-front # frontend → :5173Requirements: Docker, Docker Compose, Git.
cp .env.server.example .env.server # set SECRET_KEY, DB credentials, etc.
make compose-build
make compose-up
make compose-migrate
make compose-create-adminRequirements: Python 3.10+, uv, GStreamer with nvv4l2h264enc, ZED SDK.
cp .env.robot.example .env.robot # set camera, server URL, etc.
make deploy-robot # installs nginx + systemd servicesSubsequent updates:
make update # git pull + rebuild + restart- Architecture: system design, workers, modes, Unix sockets.
- Local development: running robot and server locally.
- Tailscale Funnel: exposing the server to the internet.
- Roadmap: active and upcoming phases.
- Backlog: improvements without a phase yet.
This work is funded by the National Program for Scientific Research and Advanced Studies (PROCIENCIA) under project PE5010-86701-2024-PROCIENCIA: "Development and implementation of a mechanically reconfigurable multifunctional mobile robot to adapt to agricultural farms with different ridges and variable inter-row spacing in the La Libertad region, Peru".
We thank Danper farm for providing field access for data collection, and Universidad Privada Antenor Orrego (UPAO) for institutional support.
