E91 assignment 4


Task 1: Get started with Git.

From now on, source code will be distributed and turned in via Git. You have already given me SSH public keys, so you have access to the git server. Now, create (or, append to it if it exists) a file named ~/.ssh/config with the lines

Host gitrepos
     HostName automata.swarthmore.edu
     User gitolite

Now, make sure that the git software is installed (package git-core via MacPorts or apt-get). Now, at the terminal, navigate to the directory where you want your code to live, and then type

git clone gitrepos:e91-public e91
cd e91
git remote add private gitrepos:e91-user1-user2
git checkout -b turnin
git push -u private turnin

...where user1 and user2 are the Swarthmore email user names of the group members, in alphabetical order. The first line grabs the starter code from the server. The third line adds your own group's repository as a remote. Next, we create a branch called turnin, and finally, we populate the new group repository with the starter code.

At this point, add in your code from assignment 3, by copying in the code to the e91/python/assignment3 directory. Now, from the terminal, we navigate to the e91/python directory, and type

git checkout turnin
git add assignment3
git commit -m "your commit message here"
git push private turnin

The first line is probably a no-op since you were almost certainly already on the turnin branch, but it might be necessary in the future if you switch branches. The second and third lines add the changes and stage them for upload to the remote repository, and the fourth one actually uploads the changes.

In the future, when you need to get updates to the starter code, you can do so by typing

git checkout master
git pull
git checkout turnin
git merge master

Merges are likely to be straightforward as long as you don't make any changes to the code in the e91/python/common directory. This is not prohibited, but might make merging difficult.

Git is a complex system, with lots to learn. I recommend spending some time with this Git cheatsheet which defines lots of the concepts and actions graphically. Email the mailing list if you get stuck or confused!

Task 2: Step on a box (continued)

Copy your assignment 3 code into the e91/python/assignment4 directory, and modify your program to be run such that it accepts four command-line arguments x0 x1 x2 y, where

All measurements should be expressed in meters (and remember, your robot should be defined at roughly human scale). See the documentation on sys.argv for information on how to handle command-line arguments if you've never done so before.

I expect your program to be able to handle some variety of box positions and heights. Special recognition will be given to the group that can step the highest and furthest relative to their robot's overall dimensions.

Task 3: do other cool stuff

Take this project a step (pun intended) further. Ideas:

I want to see something that demonstrates a deeper understanding of the concepts we've been talking about in class.

What to turn in

Webpage. Movies. Be prepared to discuss in class. You know the drill.

Also, I expect to be able to check out the turnin branch of your group's repository and see four subdirectories: assignment1 through assignment4, each with the code you wrote for that week's assignment.



Back to E91 home page