{"id":19614251,"url":"https://github.com/s1ink/visionserver","last_synced_at":"2025-06-25T05:08:52.913Z","repository":{"id":37026249,"uuid":"426467598","full_name":"S1ink/VisionServer","owner":"S1ink","description":"A C++ vision processing library designed for raspberry pi deployment on an FRC robot","archived":false,"fork":false,"pushed_at":"2024-01-16T00:31:48.000Z","size":118317,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-23T18:52:54.952Z","etag":null,"topics":["cpp","cscore","frc","ml","networktables","opencv","raspberry-pi","tensorflow-lite","vision","wpilib"],"latest_commit_sha":null,"homepage":"https://s1ink.github.io/VisionServer/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/S1ink.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-10T03:09:14.000Z","updated_at":"2024-03-13T02:52:11.000Z","dependencies_parsed_at":"2024-11-11T11:02:26.529Z","dependency_job_id":null,"html_url":"https://github.com/S1ink/VisionServer","commit_stats":null,"previous_names":["s1ink/visionserver"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/S1ink/VisionServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S1ink%2FVisionServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S1ink%2FVisionServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S1ink%2FVisionServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S1ink%2FVisionServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/S1ink","download_url":"https://codeload.github.com/S1ink/VisionServer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S1ink%2FVisionServer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261808075,"owners_count":23212694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cscore","frc","ml","networktables","opencv","raspberry-pi","tensorflow-lite","vision","wpilib"],"created_at":"2024-11-11T10:50:16.523Z","updated_at":"2025-06-25T05:08:52.875Z","avatar_url":"https://github.com/S1ink.png","language":"C++","readme":"[![CI](https://github.com/S1ink/VisionServer/actions/workflows/ci.yml/badge.svg)](https://github.com/S1ink/VisionServer/actions/workflows/ci.yml) [![Build Docs](https://github.com/S1ink/VisionServer/actions/workflows/doxygen-pages.yml/badge.svg?branch=main)](https://github.com/S1ink/VisionServer/actions/workflows/doxygen-pages.yml)\r\n\r\n# VisionServer\r\n### | [Get Started](#get-started) | [Vision Resources](#more-on-vision-processing) | [Docs](https://S1ink.github.io/VisionServer) |\r\n\r\n## Project Overview\r\n - This project originally existed as a testing environment for vision processing code that would be run on an FRC robot (Raspberry Pi coprocessor).\r\n - C++ was chosen as the primary development language, and a more generalized program framework was created, titled 'VisionServer'.\r\n - VisionServer[v1.*] was released as a framework which could be reimplemented by modifying the main source file(s) and recompiling the entire project. These releases were utilized during 2021 testing and the 2022 Rapid React season; provided features for both ease of use [on a robot] and advanced vision processing techniques.\r\n - VisionServer[v2.*+] now comes with a redesigned program (library) structure that focuses on concurrency and multithreading. The project is also now implemented as a library that allows easier integration in external projects, and can functionally be used as a git submodule. This repo contains automations for updating the necessary dependencies (wpilib, opencv, tflite), which makes creating a vision program simpler and more accessible.\r\n - **October 2023 Update: This project is no longer in active development for direct use in FRC.**\r\n\r\n__Highlighted Features:__\r\n- Load and run unlimited* vision processing pipelines - although obviously limited by hardware specs\r\n- Run each pipeline in its own thread for concurrent operation, or one at a time in singlethreaded mode\r\n- Extendable pipeline class for easily running custom pipelines\r\n- Parse ntable and camera settings from frc.json (WPILibPi config file) or any other provided json in order to auto-initialize cameras (and calibration data)\r\n- Setup any number of output streams (amount limited by cscore) and dynamically assign input sources during runtime\r\n- Chain pipeline outputs dynamically during runtime (although this is very non-performant)\r\n- SequentialPipeline class for running any number of pipelines sequentially - this accomplishes the same as above but is much more performant\r\n- Camera feeds can be processed by multiple pipelines concurrently without losing frames\r\n- Automatic networktable integration for pipelines, output streams, and main settings for dynamic runtime control (and robot communication)\r\n- Target class for sending target information to a robot over networktables\r\n- TfLite libraries included, along with base pipeline classes to support training and using [WPILib] Axon object detection models\r\n- EdgeTPU library included for running hardware accelerated TfLite models\r\n\r\n__Simple object detection program using VisionServer (and an axon-generated tflite model):__\r\n```cpp\r\n#include \u003cvector\u003e\r\n#include \u003ccore/visioncamera.h\u003e\r\n#include \u003ccore/visionserver2.h\u003e\r\n#include \u003ccore/vision.h\u003e\r\n#include \u003ccore/tfmodel.h\u003e\r\n\r\nusing namespace vs2;\r\n\r\nint main() {\r\n    std::vector\u003cVisionCamera\u003e cameras;\r\n    readConfig(cameras);            // default config is /boot/frc.json\r\n\r\n    VisionServer::Init();           // verbosely initialize VS rather than allow lazy-loading\r\n    VisionServer::addCameras(std::move(cameras));\r\n    VisionServer::addStream(\"vision\");\r\n    AxonRunner a(\"model.tflite\", TfModel::Optimization::EDGETPU, \"map.pbtxt\", 4);   // filename for model, attempt to load as edge tpu optimized, filename for labels, use 4 threads\r\n    VisionServer::addPipeline(\u0026a);  // or VisionServer::addPipeline\u003cAxonRunner\u003e(); for [default-constructed,] dynamically allocated pipeline\r\n    VisionServer::run(50);          // the target (and maximum) fps\r\n\r\n    atexit(VisionServer::stopExit);  // stop the server when the program ends\r\n    return 0;\r\n}\r\n```\r\n\r\n## Get Started\r\n__All guides and code documentation can be found on this repo's [gh-pages](https://S1ink.github.io/VisionServer).__ Additionally, all guides can be found in markdown format under [docs/](docs/).\r\n\r\n## More on Vision Processing\r\n__Here is a list of some [helpful resources](docs/References.md) used in the making of this project.__\r\n\r\n## Suggestions?\r\n__Currently [I](https://github.com/S1ink/) am the sole developer and maintainer of this project, so any suggestions/help are welcome (note that things don't get done very fast) - just post an issue or create a pull request. There is no template for this, just use common sense and try to be as helpful as possible.__","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs1ink%2Fvisionserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs1ink%2Fvisionserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs1ink%2Fvisionserver/lists"}