810:159:12, Fall 2006
Dr. Ben Schafer
316 ITTC Building
schafer@cs.uni.edu
273-2187
Time and Place: M 2:00-2:50, Wright 117, Additional time as determined by your team.
VERY Optional Text: Definitive Guide to LEGO Mindstorms e2, Dave Baum (ISBN 1-59059-063-5)
Class Directory: http://www.cs.uni.edu/~schafer/courses/159/ (Check here for announcements, assignments, and supplemental lab materials)
Class Mailing
List: 810-159-12@uni.edu
Introduction to Robotics is a laboratory based course that is offered as a follow-up to 810:161, Artificial Intelligence. It is designed to be a hands-on introduction to the the challenges of the construction and programming of a variety of robotic agents. It will also provide participants with a hands-on application of some of the Artificial Intelligence techniques studied in 810:161.
We will be using the Mindstorms robots produced by the LEGO Corporation and programming them using the leJOS language/operating system. Students will be divided into teams and complete a variety of robot construction and programming activities within the confines of these teams.
This course will be organized very differently from a traditional course that I might teach. While I have a list of things I want you to learn and experience this semester, I won't accomplish this by standing up front and throwing information at you. In this course, it is important that I move away from the "up front" position of a leader to an "at your side" position as an assistant. You will be responsible for a significant portion of your learning this semester, and it will be largely experiential learning. Each team will learn different things as you figure out how you want to solve a particular problem and what skills you need to learn and apply in order to accomplish this solution. Because of this, I may not always have the "right" answer to your questions because there may not be a right answer or, truth be told, I may not know it.
Meeting times/Attendance - Officially, this course meets once a week for one standard teaching "hour." After we get through the first week or two (when we will be first getting acclimated to the robotics equipment and the operating environment) most class meetings will consist of a brief group introduction to the next assignment, a chance for teams to "check off" previous assignments, and work time.
It is expected that you will be in the lab during the scheduled meeting each week. In fact, a portion of your grade for the robotics lab will depend on this (see section on "grading"). It is also expected that you will need to meet with your teammates several hours each week outside of this regularly scheduled meeting time. The specific time(s) that you set up to do this will be up to you and your teammates. A portion of your grade for the robotics lab will be based on a team evaluation completed at the end of the semester. Thus, it is important that you show up for your team meetings, or let your teammates know otherwise.
Equipment Access - In completing the robotics lab assignments you will spend a fair amount of time in the robotics lab itself (Wright 117). So that you may have access on your schedule rather than a lab monitor's schedule, each student will be issued two keys. The first gets you in the building itself, while the second gets you into room 117. You will be responsible for picking these keys up at the key shop (located in the northeast corner of the physical plant, across Hudson Road from the Redeker Complex) and returning them there at the end of the semester. Due to the amount of equipment in our lab, please make sure that you keep these keys secure and that doors get locked and closed when you leave the building.
Each team will be assigned a lockable storage space and several containers of equipment. You and your teammates are responsible for the equipment that you are issued. Any team failing to return equipment in reasonable condition (clean and working) at the end of the semester may be held financially responsible for replacement costs. While not required, each team may elect to purchase locks for its storage space, and keep all equipment locked when it is not in use. Because you are responsible for your equipment, it is suggested that all equipment remain in Wright Hall.
Each team will also be assigned a computer that they may use. This computer should contain all the software necessary to complete any assignments necessary for this course. Teams may feel free to install additional software as they see fit. The only thing that I ask is that you keep these files/programs well recorded so that you can clean the materials off the machines at the end of the semester. Computers are connected to the Internet, but they are not hooked up to the standard CNS computer network. Because of that, you do not have direct access to your lab directories, and all students logging on to the computer share a common desktop. Thus, any files saved on your machine are "publicly" accessible. It is suggested that each team use a floppy/ZIP disk so that files may be secured with your equipment.
The code you write for these labs will not compile on general CNS lab machines, thus you will either need to do all of your programming in the robotics lab, or you will need to install Java and the leJOS class libraries on a personal machine. If you want to try this, please talk with me. It isn't complicated, but there are a few "tricks" you need to perform.
Wright 117 is a semi-secure room. Other faculty members and students may be issued keys to this room and have 24 hour access. It is your responsibility to ensure that your physical and intellectual property are properly secured.
Over the course of the semester you will complete approximately eight assignments plus a final project. All robotics lab programming assignments should be completed as a team (see the section on "teamwork").
Prior to the assignment deadline your team will submit a variety of documentation. This will usually include electronically submitting the code used to program your robot, and a paper packet of documentation (see the robotics lab assignment collection policy page) which will include a specific, individualized writeup, as well as hard copies of your code.Shortly after the formal deadline for an assignment, I will ask each group to demonstrate their robot for me. This will typically include a formal demonstration that your robot meets the requirements of the assignment, and a short questioning period. Each member of the team should be prepared to answer questions about how the robot works and what alternatives might be considered. I will try to conduct these evaluations during the scheduled meeting time each week. However, if I am unable to get to each group, we will schedule a time for your team to meet with me individually and conduct this demonstration. Attendance at this demonstration is required. Failure to participate in your group's demonstration will result in the loss of points for this portion of the assignment.
Evaluation of both submitted materials and in-person responses will be based on completeness, accuracy, clarity, and quality of code submitted (both from a general programming perspective and from an AI perspective). Grading of each assignment will be split into two components:
Also, at the end of the semester, each student will complete as an individual a group evaluation form. In this form, you will have an opportunity to discuss with me whether your team was "functional" or not. These evaluations may be used as I consider final grades earned.
You are responsible for being familiar with the University’s Academic Ethics Policies (http://www.uni.edu/pres/policies/301.shtml).
You may think that the "Scholastic Conduct" section addressed in the main course syllabus no longer holds true when we are talking about the robotics lab. On the contrary, I think that it is absolutely valid. The only difference is that as you read that section the "individual" now refers to an individual team rather than an individual student. Thus, the statement "your final submission for assignments should be individual, original work..." is still valid.
You are encouraged to discuss solution strategies with your classmates, but you should be sharing strategies rather than code.
At the end of the semester, each student will complete a group evaluation form. Part of this form will be a section that asks you to indicate what percentage of the overall work each member of the team performed. I realize that it is impossible for each member to do an exactly equal portion of the work -- if you tell me that each person did exactly 33.3% of the work I will probably think you are lying to me! I realize that it is difficult, if not impossible, to keep everyone involved with every task.
You should feel free to coordinate the tasks that are part of each week's lab. For example, one person may coordinate construction/modification to the robot, another may lead the efforts to write the code, while the third may take charge of keeping documentation in order. Notice that I do not say that each person divides up the work and is responsible for that one component. Instead, each person takes charge of coordinating a particular task. Furthermore, it is probably best if you switch off who does what from assignment to assignment. While it might seem best in the short run to let the strongest coder do all of the programming of the robot, it will lead to very short sighted solutions and an immense lack of learning by the other members of the team. Recall that part of each assignment's grade is based on questions asked to random members of your team. While failure to adequately answer a question will hurt that individual's grade, it also will hurt the team's grade.
Also, I would be foolish if I don't think that conflicts sometimes come up in teamwork. They do, and they will. Most of the time these are short term things such as a disagreement over how to tackle a given problem, or a little bit of hard feelings when someone feels they are pulling more than their fair share of the load (or, believe it or not, feelings that they aren't being allowed to pull enough of the load). Often these kind of problems can be worked out by the team sitting down and calmly discussing what is going on. I encourage you to try to solve your problems internally.
However, I also ask that you don't let problems fester so that by the time I find out about them it is impossible to resolve the situation. If you are having problems with members of your team, please talk to me sooner rather than later.