CS50 - Software Design and Implementation - Spring 2012

The Sensor-Bot Group Final Project

Latest News & Announcements   Useful Material   Teams & Robot IPs   FAQs

There are no lectures during the last two weeks of the course. During this time you will be working in teams programming Gracia robots.

The project will pull on all the skills you have developed so far but will provide a set of new skills needed to do cross development and embedded systems programming and debugging. This completes the hackers toolkit that you can be proud of. We will do distributed programming using sockets, mutable threads for embedded Linux.

We have added a mote sensor to the bot that allows it to interact with a sensor network built across the CS department. We have also added a camera to the bot. You will write the controller that runs on your laptop and the server side on the rob - all in C and Linux. Once your ready your bot will go on a treasure hunt. The final task is the CS50 remote controlled bot race.

This web page contains resources and news affiliated with the final project. Please refer to this web page for announcements and clarifications as you develop your project.

Project Description

The Project Description page contains a high level overview of various aspects of the project, including introduction, goals, major system component decompositions, API functions, gradings and certain rules. Make sure you check it out and are familiar with all the information.


Project Milestones & Requirements

Kick off day - what you should do today?
1) get your bot;
2) review the material on the project web page;
3) set up a team meeting to discuss the design review, who is doing what, set up SVN, essentially, get organized;
4) check out what you need for your design review (see below).

From the introduction webpage: The project is made up of a small team (three or four people) and requires strong collaboration and a problem solving mindset to get the job done. The instructor will put the teams together with each member being responsible to deliver against a part of the overall system design, implementation, testing and integration.  The goals of this activity are to help you develop the confidence, skills, and habits necessary to write large computer programs while part of a multi-person team. You will become conversant in software engineering paradigms, and be exposed to various public-domain and open source tools that make the software development process easier. In addition, you will develop vital skills in self-directed learning, problem solving, and communication. The project will have a design and code review as well as the demo.

A project report that captures the design and implementation will be submitted as part of the assessment. The report should be 10 pages max, including

1) Thread design of client and server
2) Design Specs
3) Implementation Specs
4) GUI screen dump
5) Lesson learned

The project potion of the course grade is large: 35% of the overall grade.  We give the same grade for the project to all members of a team unless it is clear that people aren't equally pulling their weight. There has not been a year when we didn't give the same grade to all members of a team.

The following set of deadlines are important for the progress of the project. Please note that you need to provide documentation for the design and code reviews and the final project submission.

4 - 9 PM Monday May 21 design review. The project review should include requirements, Design Spec (inputs/outputs, data flow, data structures, pseudo-code) and functional decomposition. We are particularly interested in how the functions map to threads on the client (unix machine/laptop) and server (bot); we will discuss the threaded design in the review. We are also interested in who is doing what. The project review material is due 12AM midnight the day before review Send tarball documentation to cs50@cs.dartmouth.edu

4 - 9 PM Monday May 28 code review. The code review should include the Implementation Spec and whatever code is written up until the review point (please indicate the svn version for code review instead of sending all the code). The code review material is due 12 AM midnight the day before review. Send tarball of your source tree to cs50@cs.dartmouth.edu

4 - 8 PM Wednesday May 30 demo or die day. Demo of project.

24:00 hours Thursday May 31 project reports due.The report written in latex includes description of the project, the Design Spec, functional decomposition of the system, Implementation Spec, lessons learnt. The appendix includes a README indicating your submitted svn version and how to compile and run your code. All material should be signed into the teams cvs project page. The PDF of the project report should be sent to cs50@cs.dartmouth.edu

News and Announcements

May 23rd
Add FAQs section.

May 21st
Each team now has a SVN account set up, at https://svn.cs.dartmouth.edu/classes/cs50-S12/TeamName/

May 13th
Project teams are
announced , useful material links posted, and design review signup sheet is available.

May 12nd
Wireless IP addresses of six bots are now posted.

Demo Signup

Go here to sign your team up for a slot (it takes a few minutes and a manual refresh to see the changes on this page).


Code Review Signup

Go here to sign your team up for a slot (it takes a few minutes and a manual refresh to see the changes on this page).


Design Review Signup

Go here to sign your team up for a slot (it takes a few minutes and a manual refresh to see the changes on this page).


Useful Material

Link Notes
GTK Tutorial
Slides (including GDK)
GTK tutorial.
Acroname Garcia Website Acroname's website for the Garcia robot. See the lins in the upper right hand side of the page.
Portal Binary Portal base solution to test your robot.
Garcia Tutorial Introduction to Garcia robots slides (originally by Pan Wei).
Garcia Develeopment Tutorial Pan Wei's tutorial covering compiling for the Garcia and the APIs used to interact with it.
Garcia Sanity Check Document describing how to set up robot, ssh into it and run sample controller.


Project Teams


Groups Leader: Fanghao Chen
=========================

Group 1
Hongyu Chen
Robert L. Marchman
Matthew J. Diephuis
Monkruman B. St Jules

Group 2
Robin Wang
Chandrasekar Ramesh
Max N. Deibel

Group 3: BLISTERING BARNACLES
Chuanqi Sun
Scott L. Brookes
Justice Amoh Jr
Cooper S. Stimson

Group 4
Tianshun Miao
Michael C. Kwa
Graeson C. McMahon


Groups Leader: Lauren E. Litscher
=========================

Group 5: Segfault
Tucker Ward
Roger L. Melick
Graham B. Findlay
Kyle M. Lawson

Group 6: Fanghao Family
Adam Tong
Matthew Ge
Mehdi Oulmakki
Anup Dhamala

Group 7: DROP TABLE Groups
Matthew C. Digman
Michael A. Urbach
Diana L. Salsbury
Matthew S. McNierney


Groups Leader: Melissa S. Queen
=========================

Group 8: free (willy)
Shuyang Fang
Piotr Teterwak
Eugene E. Zheng
William D. Geoghegan III

Group 9: Garcia Can Socket
Samuel Tan Jun Jie
Randy X. Li
Yon Soo Park
Ethan M. Thomas

Group 10
Joseph T. Loftus
Elaine G. Levey
Tewende Anani Sawadogo
Andrew D. Pillsbury


Robot IPs

Black robot: 129.170.210.229 (Group1 & Group2)

Orange robot:129.170.210.231 (Group3 & Group4)

Blue robot: 129.170.210.228 (Group5 & Group6)

Red robot:129.170.210.230 (Group7 & Group8)

White robot:129.170.210.227 (Group9 & Group10)

Yellow robot:129.170.210.226

FAQs

Q: How could I run the command on garcia?
A: copy the binary say cs23Garcia_turn to /home/acroname/aBinary; type "./cs23Garcia_turn" to run the binary.

Q: How should I avoid overwritten problem between teams or with other shared teams?
A: It is OK you rename your binary file. Take group1 as example, I recommend the command guy name the binary as "group1_garcia_control" alike with the team name and component within the binary filename. It can easily solve the name conflict problem.

Q: Why robot is not working or cannot ssh or has any weird behavior?
A: Try to use a fully charged battery… Then physically connect using cable if problem still exists.

Q: How could I run the asf as daemon?
A: copy your asf to robot; do a ls -l to check if your asf is excutable; then follow the command in instrunction to run it.