Hello, my name is Victor Chien and I am a rising Senior attending Wilcox High School. I chose to attend this program because I believe it will offer me significant insight into the construction of complex circuitry and various CAD programs. I also want an in depth understanding of Microsoft Kinect’s 3D imaging/detection system and how I can apply this technology to robotics. My starter project is the Digital Name tag, which displays my name in several different intriguing light patterns (Name Tag). My main project, the Kinectobot, is a three wheeled robot controlled by a Microsoft Kinect sensor. I plan to use the Kinect’s point cloud technology to navigate the robot autonomously through difficult terrains. I also plan to use the Kinect’s body tracking technology to control the robot with my arms and hands.
Looking back at all I accomplished over these six weeks, I feels that I was able to gain a much deeper understanding of the role computers and various circuits play in a robot. I have some programming and mechanical experience, but very little electrical engineering exposure. Through my project, I explored many different aspects of electrical engineering. In order to safely power each of the circuits, I had to understand the importance of different voltage levels. Prior to this program, I foolishly thought I could use any battery to power a given electrical component. I was wrong. After burning out a raspberry pi and some motor controllers with a 12V battery pack, I came to realize the hard truth. In addition to understanding how delicate electrical components can be, I also learned to identify the different components on the circuits I used, such as regulators, potentiometers, jumpers, and capacitors. I had to fully understand how each part contributed to the functionality of the circuit as a whole in order to safely incorporate the circuit into the robot. Finally, I got the privilege to work with a raspberry pi computer and OpenCV. Learning these two things will be especially useful for my own engineering projects in the future.
For my next steps, I will continue hacking the Kinect sensor. I have so far gotten the imaging system set up on the Kinect using OpenCV and the Open Kinect Library. Setting up and implementing the Kinect point cloud and body tracking systems will be a long processes in themselves, but I will continue experimenting with it in order to explore 3D imaging technology in the field of robotics.
Final Project: KinectoBot – A three wheeled robot controlled by a Kinect sensor.
Final Project Documentation:
Bill Of Materials: BOM Link
Python Code: Code Link
Matter Control Settings for 3D Printer: MC Link
3D CAD STL Files:
My second milestone is to connect the different circuit components, such as the raspberry pi and the motor controller together and write a working program to control the robot with the arrow keys on my laptop. Through the completion of my second milestone, I learned how to use python and the command line to write programs on the raspberry pi. In order to control the robot, I wrote a program that takes in arrow key commands from the user to tell the robot which direction to run. I also learned how to use ssh to connect my laptop to the raspberry pi. With ssh, I am able to access the command line or terminal on the raspberry pi via wifi. In this way, I am able to remotely run a program on the raspberry pi from my laptop. Finally, I now understand how to use a motor controller. The motor controller receives signal from the raspberry pi to control the motors. It also powers the two motors with the 12V battery pack. I could not use the raspberry pi to directly power the two motors as they are designed to run off 12V. The raspberry pi can only handle a 5V power supply. Therefore, I have to use the motor controller to power the motors instead.
I faced a number of difficult problems when working on my second milestone. The first problems I faced were a result of my mistakes. I accidentally mixed two wires up and connected a 12V power source to a 5V input pin on two motor controllers, and burned them out as a result. In addition, my raspberry pi got fried as well due to some unknown cause. This was most likely cause by a loose wire short circuiting the raspberry pi circuit board. Through the smoke and disappointment, I learned the importance of keeping wires organized, the hard way. From then on, I decided to label my wires. I have always seen labeling as a menial task but now I see its true importance.
Another problem I faced was powering the raspberry pi from the 12V battery pack. Fortunately, the motor controller, which is able to handle 12V, has a 5V output pin ideally suited to power the raspberry pi. However, I discovered that whenever I finished running a program, the raspberry pi would reboot automatically, meaning I would have to reimplement ssh. After doing some research and making measurements with a voltmeter, I discovered that the reboot was due to fluctuations in the 5V output delivered by the motor controller. At first, this phenomena did not bother me, but as I began to run more and more test programs, the need to give the raspberry pi a more reliable, constant voltage began grew. To solve this issue, I connected the battery in parallel to the raspberry pi and the motor controller. I also had to convert the 12V battery source to a 5V with a buck converter in order to power the raspberry pi safely.
Video Milestone #2 :
My first milestone is to finish designing and constructing the chassis of the robot. To complete my first milestone, I had to learn many new skills. For instance, I had to learn how to use Google Sketchup to design the various parts of my robot. I printed a total of six parts – two wheels, two motor mounts, one caster wheel mount, and one raspberry pi mount. The design process, using Google Sketchup, was the most enjoyable part of my first milestone.
Google Sketchup was difficult to learn at first, but after I got used to the digital tools provided, I quickly became an expert. In addition to Google Sketchup, I also had to familiarize myself with MatterControl. This software essentially links my computer to a 3D printer. I had to determine the right settings for the printer and learn how to import my Google Sketchup design into the software. For instance, each plastic had a different temperature and heat bed setting. If the settings are wrong, the resulting print would warp. I ran into this problem a couple of times when I was printing my wheels. The wheels were distorted beyond practicality; the edges were sharp and uneven. In another instance, I forgot to add support to one of my motor mounts, resulting in a puddle of black mess.
The warping of the 3D printed parts were the least of my worries. The wheels I designed in Sketchup refused to come out round. Instead, they consisted of multiple straight edges to give the appearance of roundness. In order to make the wheels more circular and have more tractions, I decided to wrap a thick rubber band around the perimeter of the wheel. STL files of the 3D printed parts can be found above in the Project Documentation.
Video Milestone #1:
Completed Robot Chassis:
Google Sketchup Designs: CAD
Robot Chassis (completed):
Caster Wheel Mount:
Raspberry Pi Mount:
Starter Project: Digital Name Tag
For my starter project, I decided to make an electronic name tag that displays my name with LED light diodes. In this case, the name tag will display the name “VICO” since the breadboard is not long enough to display my entire name. This name tag consists of six main components: LED light diodes, power source, microcontroller, circuit board, resistor, and switch. The LED light diodes are soldered to the circuit board, spelling the name “VICO”. Then the power source, the switch, and the microcontroller are soldered into their designated positions. The name tag has four different functions. It can stay lit continuously, it can be lit from left to right repeatedly, it can start dim and then increase in brightness, and finally it can blink on and off.
Here is a link to the video of the starter project: