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!
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.
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.
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.