* Rebase solvePNP on master * added 3D tab minimap and csv reader * More solvePNP * Create draw pipe for pnp data * SolvePNP piping work * Move sorting into solvepnppipe * Create calibration pipeline * Update CalibrateSolvePNPPipeline.java * add camera tilt angle * Add calibration slider and snapshot button to 3D view * Mirror updates in the socket handler * add 3d calibration mode to the pipeline manager * created calibration functions in ui and backend * Start plumbing calibration * Add snapshot and other handling to the RequestHandler * added select resolution before starting calibration * Rename solvePNPPipe to bounding box solve pnp pipe * Update BoundingBoxSolvePNPPipe.java * Add Mat serializer and CameraCalibrationConfig * Begun calibration saving, fixed UI/Backend snapshot count mismatch * Add (unplumbed) option to set checkerboard size This will allow users to change the units their calibration is in * Create chessboard.png * Fix calibration NPE * changed string serialization to a json send * bug fixed cancellation button * Fix spelling of snapshot in 3d.vue * Plumb resolution change * Set resolution during config, start on config serialization * Update .gitignore * Config fixes * Start transition away from cvpipeline3d * fix NPE on uncalibrated cameras * clear list on fail * Fix video mode index error * ignore getters in camera calibration config * Create json constructor for jsonmat * get solvePNP mostly returning sane values * Fix solvePNP bug and add unit test * FIx calibration mat truncation * added capture amount model upload and minimap data * Standardize on meters in calibration and bounding box * fix json out of bounds and handle null calibration more gracefully * don't put text on calibrate image, go back to inches * convert distance to meters this means calibration will need to be in inches * Actually save raw contor * Update GroupContoursPipe.java * Add all calibration return to camera capture * hard code 2019 target * bugfixed draw2d added fail calib popup, merge end and cancel added the res index to the calib start * Clarify error message and draw more fancy rectangles * Cleanup memory in solvepnp * re did minimap component * fix npe if left/right is null * remove references to 2d * try-catch running the current pipeline * Add method to find corners using the harris corner detector * Possibly fix left/right missmatch * Fix 3D Tab error * FIx file permissions, mat serializer adjustments * fixed mini map for field coordinates * mini map changes fov * Update SolvePNPPipe.java * get rid of target corners * some memory leak fixes * fixed mini map location * added position under minimap * changed player fov look * put all targets in the web send * re did target send to ui added target tables, bugfix calibration * fixed y position * Add tilt angle to capture properties * maybe fix y axis in minimap * Add square size to onCalibrationEnding * Possibly add square size to UI * fix NPE with pitch * Fix bug with sending multiple targets * Only instantiate 3d stuff if we are in 3d mode * Fix array list exceptions * Fix bug in sort contors list was truncated too early * added download chess, tilt setting and ordinal tilt, * added square size connection * removed unused code * Update pom version to 2.1-RELEASE * Send camera calibrations to UI * Stream pose list to a LIst * Only stream necessary parts of the aux list entry * Make broadcastMessage synchronized to prevent ConcurrentModificationExceptions * added fps counter changed squaresize steps bug fixes in tables * bugfix camera settings cam wont change Authored-by: oriagranat9 <oriagranat9@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

