* Refactor package structure, various cleanups * Add pipeline classes, settings, separate enums * updated Largest ContourSortMode and added centermost * Add DriverPipeline classes, apply spotless * Add crosshair to DriverMode, cleanups * Add FrameStaticProperties as member in Frame Add FrameStaticProperties as member in Frame * Finish ReflectivePipeline, various tweaks * Apply Spotless * Move test images * add Releasable interface, implement in classes * add TestUtils class, move testimages * Refactor CVPipeline, add ReflectivePipelineTest * Fix ConcurrentModificationException bug in group contours pipe with potential targets * Resolve memory leaks due to unnecessary instantiation of Points * Apply spotless * Add CVMat, ReflectionUtils to help track rogue Mats * various cleanups, add DummyFrameConsumer * Add logback * Add slv4j logger to replace the current debugLogger I'm waiting on stuff to be less skeletoned to add more * Add perimeter, MatOfPoint2f getters to Contour * Create CornerDetectionPipe based on old solvePNPPipe * Add ContourShape class for approxPolyDp Start on ColoredShape tracking * Add point detection, fix convex hull calculation in Contour * Make Draw2dContours pipe respect showMultiple * Update Contour.java * Clean up draw 3d, fix convex hull bug in corner detection * Update geometry classes * Add lifecam calibration data * Implement solvePNP, bounding box top and bottom * Fix JSON mat bug and lifecam default calibration for tests, fix 3d drawing * run spotless * Refactor calibration into `common.calibration` * Update .gitignore * Add offset method to get2020Target * Various cleanups, add PipelineType enum * Apply spotless Co-authored-by: ori agranat <oriagranat9@gmail.com> Co-authored-by: Matt <matthew.morley.ca@gmail.com>
Chameleon-Vision
Chameleon Vision is free open-source software for FRC teams to use for vision proccesing on their robots.
There instructions are for compiling (contributing) and running the source-code of the project. This is NOT intended for the co-processor setup or your testing PC. To run the program normally (from a build .jar file), take a look at our ReadTheDocs documentation for installation here
These instruction are for the Chameleon Vision's backend/server in Java
To run the UI's sourcecode (optional) see the UI's readme
Hardware
Currently any 64-Bit devices (Windows, Linux and Mac OS) are supported.
32 Bit devices are not supported.
At least one USB camera (supported one is recommended)
Development setup
Prerequisites
- Java Development Kit 12: Follow the correct instructions for your platform from BellSoft
- Chameleon-vision source code Clone via a git client or download as zip and extract the source code into a empty folder
For the co-processor(Linux system)
- Avahi Daemon:
sudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan
For the driver station
- Bonjour Download and install Bonjour from here
- VC++ Redistributable (Windows only) Download and install this
Importing to IDEA
We recommend the use of Intellij Idea for running the source-code
-
Import Project
-
Choose the path to
chameleon-serverinside the copy of Chameleon-Vision that you cloned or downloaded
- Import the project as a
Mavenproject
- Under
JDK for importerchoose the JDK 12 you downloaded earlier - Maven will automatically download the necessary dependencies
- Run
Mainundersrc/main/java/com/chameleonvision/
Authors
-
Sagi Frimer - initial work - websocket, settings manager, UI
-
Ori Agranat - main coder - project manager, vision loop, UI, websocket, networktables
-
Omer Zipory - developer - vision loop, websocket, networking, documentation, UI
-
Banks Troutman - developer - vision loop, websocket, networking, project structue
-
Matt Morley - developer - vision loop, project structue, documentation, solvePNP
Acknowledgments
-
WPILib - Specifically cscore, CameraServer, NTCore, and OpenCV.
-
Apache Commons - Specifically Commons Math, and Commons Lang
License
Usage of Chameleon Vision must fall under all terms of Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

