Our project is a base and glove pair that triangulates the position of the glove in 3D space using ultrasonic pulses in order to use as a control system for the CU Snake Arm.
By having three points on a base, our system calculates position by the distance from each point on the base to the glove. These distances are found by the time it takes for the ultrasonic pulse to get to each point and multiplying by the speed of sound.
Then by sending position coordinates over the serial port, we are theoretically able to, and will eventually, control the arm using 3D reverse kinematics code that the CS subteam is working on. This code allows input in positions to be converted to motor commands that puts the arm into the desired position, with the "head" of the arm at the point corresponding to the glove's position. Our goal was just to track position and allow the program on the computer to calculate how to get to that position.
High Level Design Rationale We were talking to the team lead of CU Snake Arm, Tim Roberts, about ideas for the final project. We wanted to make something that would be useful for the team and started coming up with ideas. One idea we thought would be both useful and cool would be some sort of glove which would track position and control the Snake Arm. Tim said that they had the idea of using some sort of glove and had bought some glove at one point, but were not able to get it to work. He also did not know what happened to that glove, so we decided to make our own system for positioning. After talking to Bruce, he suggested using ultrasound in order to triangulate position.
So we set out to build the glove. One of the main reasons we chose this project was its potential for future expansion and improvements due to its association with the Snake Arm team. Plus, we thought it would be an interesting introduction to the world of positioning and ranging algorithms.
Any project involving wireless communication, as we found out, requires a lot of effort and even more patience. There ended up being a lot of noise that needed to be filtered out, and we ended up not having as free of a range of motion in the glove as we had hoped. Obviously, certain hardware limitations cannot be improved upon when stuck with the same parts. We continually made improvements in hardware and software configurations, but there was only so much we could do with the accuracy and range of the transducers we had. We even tried changing the transducers to the new 40 KHz variety, and while the improvement in range was finite, it still did not come close to getting rid of all the error. However, we deemed this error acceptable because of all the filtering (i.e. Kalman filtering) that is possible on the PC side, at which point the data is being managed by the CS subteam of CU Snake Arm.
We did not expect to have as much hardware tweaking as we did in this project. We expected most of the engineering work in this project to be software adjustments and debugging, but we ended up needing a lot of hardware to get a good signal into the MCU, which meant a lot of analog design, testing, and resistor swapping. Tuning the voltage comparator pots every time they were accidentally knocked out of place was quite a chore.
If we were to do the project again, we probably would find a way to make something that did not involve such incredible precision that ultrasonic positioning requires. When one millisecond's worth of difference in timing equals a 34-cm difference in distance, as it does with the speed of sound, the error we received was bound to occur. The Kalman filtering greatly improved our results, but perhaps triangulation using timing was not an ideal project idea.
But on the bright side, considering all the factors that were basically out to try to make us fail, including a room full of noise (the 476 lab itself) and transducers with limited range, we were still amazed at what we could build with the time and budget we had. With the Kalman filtering on the PC side, our data is definitely usable, and we plan on finalizing this design next semester by putting it onto a PCB, reducing the size of the glove by purchasing surface mount components, and fully incorporating it with the Snake Arm.