User:Garycookejr/robotCar

Write problem/project Goal
Build an autonomous toy car.

My First Task
Study other AUVSI projects. Test out programming the Arduino. Examine a working toy car.

Summary of actual work over first weekend
Instead of studying other AUVSI projects, I studied another kind of project that utilizes the Arduino. I didn't get to test out programming the Arduino or examine a working toy car.

Week1 Narrative
I read about this project. I was also able to make sense of an Arduino program uploaded onto that page.

My Second Task
I will test out programming the Arduino to control something simple relative to the autonomous car, such as the steering.

Summary of actual work over second weekend
I worked with the Xbox Kinect on my computer and found out that the color-coded display window is not detecting heat, but distance.

Week2 Narrative
I had my mom walk back and forth in the room and noticed that she turned from blue to green to yellow to orange to red as she walked further away and the opposite as she walked closer. At first I thought it might still be detecting heat since she was in the kitchen, but the color of everything in the kitchen became cooler as I moved the Kinect closer to it, which confirmed that the colors represent distance, not heat. I did not do any programming with the Arduino, but I think this new information may aid in the program that will link the Arduino to the Kinect.

My Third task
I will look up other autonomous vehicle projects that used the Kinect and study how they implemented it, i.e., whether it was physically or wirelessly connected to the vehicle it was operating, whether it was used to map out the vehicle's environment before or during operation, and whether the color-coded distance sensing was integral to the program running the vehicle.

Summary of actual work over third weekend
I downloaded four Software Development Kits and was able to get a live three-dimensional streaming from the Xbox Kinect.

Week3 Narrative
I tried to figure out how to map the room with the Kinect. I searched the Internet for ideas and found this page, which mentioned a 3D-mapping software called Kintinuous, which "virtually translates and allows the surface to 'fall out' into a large global map," creating a "highly dense map of the observed environment." Upon further investigation, however, I found that Kintinuous is not a program for sale or for download. I looked at this page and found out about the Robot Operating System and Python programming. I downloaded four Software Development Kits including CL NUI, Open Kinect, ROS, and Kinect for Windows. I had trouble finding anything useful at all on any of the SDKs other than Microsoft's Kinect for Windows, so I explored that one the most in-depth. It has many different applications for use with the Kinect including Color, Depth, Depth with Color, Facial Tracking, and Skeleton Tracking. I was able to connect the Kinect Explorer app, which combines most features of the other apps, with the Kinect Studio, where I got it to stream through the live 3D video.

My Fourth task
My last task is going to be figuring out how to create a 3D map of an environment utilizing the Kinect and linking it to the Arduino.

Summary of actual work over fourth weekend
I attempted to find a way to get the Kinect connected to the Arduino by exploring sample programs in the Microsoft Kinect for Windows SDK.

Week4 Narrative
I explored the Kinect sample programs in an effort to find a way to connect the Kinect to the Arduino. I chose the KinectDepthViewer sample program since it has the most to do with our project. I thought about these possible solutions for connecting the Kinect to the Arduino: (1) the Arduino needs to be added into the Kinect program in a way such that the Kinect recognizes the Arduino; (2) the Kinect has to be recognized by an Arduino program; (3) both the Kinect and Arduino need separate programs, and the Kinect program feeds information into the Arduino program to run the car; (4) the Kinect and Arduino programs feed information into another program that uses them both to make decisions. I also found certain methods and variables in the sample Kinect program that would need to be made visible to the Arduino program, such as "private void ConvertDepthFrame," "private void DepthImageReady," "outputBitmap," "tooNearDepth," "tooFarDepth," and "unknownDepth."

Complete Team Page
Team Page