The inspiration for this project came from our common interest in computer vision and in robotics. When we came together for Bitcamp we knew that we wanted to work in one or both of those objectives so we began sharing ideas and I pitched the idea to work with openCV since it has caught my attention with it's current popularity. Since computer vision is a very fresh and growing market we agreed to work using this idea and collaborated on creating an infrastructure that is built upon using openCV to give the user the ability to track any object as long as it is equipped with the specific tracking marker provided by us.
What it does
OpticTrace is a multi-purpose color tracking software that uses an openCV library in python in combination with Arduino powered servos in order to provide live tracking of objects in motion. Our current application of this software gives the user the ability to track any object as long as it is equipped with the specific tracking marker provided by us. This can be applied to different situation like having a football launcher that tracks your position in the distance to throw you the ball, or to possible mount a paintball/airsoft turret that can be used by both teams to defend objectives in the game and can be disabled by shooting a color switched located near the turret.
How we built it
We began with finding the proper way to approach openCV and how it can be applied to our original project idea. This idea was to have servo powered platforms that will rotate a camera to allow it to live track a moving object which was original intended to be a person. Later on we kept with the idea of using a servo powered platform but switch our detection to detect color which was more feasible since this is our first time working with CV.
Challenges we ran into
The initial challenge was to find the proper openCV program that can be downloaded and used to communicate with an servo motors through an Arduino. This took as a very long time since we could not find the proper library that would allow us to not only give commands to the servos to rotate an object to our desired position, but perform this these tasks in real-time while the object is still in the line of sight of our camera to be able to locate and track it.
Accomplishments that we're proud of
The accomplishment that we are most proud of, is being able to find a openCV library that's compatible for communicating with an Arduino in real-time. Most of us have had experience working with Arduino but no one has worked with being able to send live signals to the Arduino. Another accomplishment for us, was being able to build a functioning flexible base for our camera so it can freely rotate on both the x and y axis in order to provide more accurate object tracking.
What we learned
All of us learned a lot about how to send live signals to an Arduino (serially) and be able to communicate with it using python. We also learned the python library for openCV and its many application in object detection and tracking which can be used for future projects.
What's next for OpticTrace
Although the important framework behind our project is complete, our project has a variety of specific applications. In order to be able to perform the tasks for these application, there has to be other components that will have to be added on to our base. These components will perform using the same structure as the already build framework, but will perform specific tasks like launch a football or a projectile at a certain target for a certain amount of time, or a pressured sensitive button that will disable the object tracking for a certain duration of time.