# Chameleon-Vision

[![CircleCI](https://img.shields.io/circleci/build/github/Chameleon-Vision/chameleon-vision/dev?label=dev&logo=name)](https://circleci.com/gh/Chameleon-Vision/workflows/chameleon-vision/tree/dev)
[![CircleCI](https://img.shields.io/circleci/build/github/Chameleon-Vision/chameleon-vision/master?label=master&logo=name)](https://circleci.com/gh/Chameleon-Vision/workflows/chameleon-vision/tree/master)

Chameleon Vision is free open-source software for FRC teams to use for vision proccesing on their robots.

## Getting started

See Deployment for notes on how to deploy the project on a live system.

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.  
(Coming soon!)  

### Prerequisites
---
#### For the co-processor

- Java 12 Runtime (See Deployment - Software)
- Avahi Daemon

#### For the driver station

- Bonjour


## Deployment
Deploying is as simple as uploading the chameleon-vision-1.xx.jar file to your target device.  
Run the program with `java -jar chameleon-vision-1.xx.jar`

## Software

### Java 12 
Follow the correct instructions for your platform from [BellSoft](https://bell-sw.com/pages/liberica_install_guide-12.0.2/)

### Avahi Daemon (Linux systems)
`sudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan`

### Bonjour (Windows Systems)
Download and install Bonjour [from here](https://support.apple.com/kb/DL999?locale=en_US)

## Hardware

### ARM Co-processors
Currently only Raspberry Pi 3 or 4 models with at least 1GB of RAM are tested and supported.  
Additional ARM-based single board computers (Odroid, Nvidia Jetson, etc.) will be supported in the near future.


### x86 Computers
Currently any 64-Bit devices (Windows, Linux and Mac OS) are supported.  
32 Bit devices are not supported.

## Authors

*  **Sagi Frimer** - *initial work* - websocket, settings manager, UI

*  **Ori Agranat** - *main coder* - vision loop, UI, websocket, networktables

*  **Omer Zipory** - *developer* - vision loop, websocket, networking

*  **Banks Troutman** - *developer* - vision loop, websocket, networking

*  **Matt Morley** - *developer* - documentation


## Acknowledgments

* [WPILib](https://github.com/wpilibsuite) - Specifically [cscore](https://github.com/wpilibsuite/allwpilib/tree/master/cscore), [CameraServer](https://github.com/wpilibsuite/allwpilib/tree/master/cameraserver), [NTCore](https://github.com/wpilibsuite/allwpilib/tree/master/ntcore), and [OpenCV](https://github.com/wpilibsuite/thirdparty-opencv). 

* [Apache Commons](https://commons.apache.org/) - Specifically [Commons Math](https://commons.apache.org/proper/commons-math/), and [Commons Lang](https://commons.apache.org/proper/commons-lang/)

* [Javalin](https://javalin.io/)

* [Spring Framework](https://spring.io/)

* [JSON](https://json.org)

* [Google](https://github.com/google) - Specifically [Gson](https://github.com/google/gson)

## License  
Usage of Chameleon Vision must fall under all terms of [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode)
