As electrical engineers, we always need to CAD our projects in school. However, CADing a electric circuit often takes hours, especially complicated ones. Circuit Leap should be easy to use. It would be able to understand what different hand gestures mean and be able to make sophisticated circuits, such as making inductors, resistors, power source or in parallel or in series.
What it does
The leap motion takes information on 1) location and 2) gesture of your hand. The coordinates of your hand will correspond to the interface, which is, where your element is will depend on where your hand is in real life. And the gesture of your hand would correspond to different things:
Keytap - capacitor Swipe - Power source CIrcle -- inductor Screentap - Resistor
A pinch -- select an element A pinch again -- deselect it
When you make two pinches, the elements would join together
We also take into account of the fact that you would want to join the elements in series or in parallel, therefore it is also important to take into account of whether the leftend or the right end of the element. This is achieved by allowing the leap motion to identify which hand you are using -- using the left hand would select the element's left end node, while using the right hand would select the element's right end node.
How I built it
The program is seperated into two parts. First to translate hand gestures into commands. Second is to translate commands into animation. We built the program in Unity through C#. In short, the program essentially loop through a list of gestures that the user might do and then translates it to the suitable element to display on the laptop.
Challenges I ran into
The biggest challenge we faced was to learn everything from scratch. Although most of us are experienced in python, to achieve better graphical quality, we chose the harder C# script in Unity because -- where's the fun without the challenge? We also have a lot of difficulty understanding how Leap Motion can become compatible with Unity.
Also, we over-estimated the accuracy of the leap motion. Although the leap motion gives very accurate feedback on the xy plane, the z-axis is relatively less accurate, and hence it is very difficult for the leap motion to sense taps and pinches.
Accomplishments that I'm proud of
1) Our program specified 8 locations in which the user can choose from using their hands. When users are moving their hands around, the program will automatically choose the location for you.
2) We successfully displayed png documents of circuit elements on the screen -- with reference to the different hand gestures assigned to it. A swipe would give your a power source, while a circle would give you a inductor.
What I learned
1) We have learnt more about game development and C# programming.
2) This program is relatively larger than what we had to write before, hence it is a very good experience for us.
3) By using the leap motion, we also get to understand the advantages and limitations of the latest technologies.
What's next for CircuitLeaps
The next step for Circuit Leaps is first to fix the coordinates system. The Leap Motion and Unity have different coordinates, and due to time limitations, we could not fix it on time. However, the demo showed that users can use their hands to pinpoint specifically at a square on interface, and hence fixing the coordinates system would help a lot on making it a reality.
We would also like to test the program's ability to connect two elements together. The back-end logic right now is to identify the coordinates of the midpoints of the left and right edge of the picture and when the program receive two sets of coordinates, a drawline function is called (built in in unity) and a line would connect the two elements)
Circuit Leap should also be able to handle more kinds of circuit elements.