CS4610: LAB 5

This final lab is intended to draw together the different capabilities you studied in the prior labs. Undergrad groups will compete in an object collection task. Grad groups will select and implement an algorithm of interest from the recent literature. All groups will have the option to use additional hardware and software.

The Lab Tarball

We have prepared an archive file of sourcecode that you may use in this lab. Follow similar instructions as for lab 4 to download, unpack, build, and flash (all on the panda). Make sure that the unpacked lab5 directory is a sibling to your existing lab? directories that were unpacked from the prior lab tarballs.

If you are running the panda headless, use the following command to download a copy of the lab tarball:

> wget http://www.ccs.neu.edu/course/cs4610/LAB5/lab5.tar.gz

This code includes solutions to labs 3 and 4 in the file ohmm/Grasp.java, or you may use your own solution instead if you prefer. As usual, you can view javadoc for the OHMM library online here.

We ask you not to modify the files you unpack from the lab tarball. You will write code that refers to these files and that links to their generated libraries. Please do not work directly in the provided files, in part because we will likely be posting updates to the lab tarball.

Prepare Your SVN Repository

  1. Follow similar instructions as for lab 2 to make a checkout of your group svn repository on your panda as a sibling directory to the lab5 directory you unpacked from the lab tarball.

  2. Change directory so that you are in the base directory of your svn repository checkout (i.e. you are in the g? root directory of the svn checkout), then run the commands

    > mkdir lab5
    > d=../lab5/src/host/ohmm
    > cp $d/makefile $d/run-class ./lab5/
    > cp $d/makefile-lab ./lab5/makefile.project
    > sed -e "s/package ohmm/package lab5/" < $d/OHMMShellDemo.java > ./lab5/OHMMShellDemo.java
    > sed -e "s/package ohmm/package lab5/" < $d/CvDemo.java > ./lab5/CvDemo.java
    > svn add lab5
    > svn commit -m "added lab5 skeleton"
    

    This sets up the directory g?/lab5 in the SVN repository in which you will write all code for this lab. The makefile should not need to be modified: it is pre-configured to find the OHMM Interface library in ../../lab5/src/host/ohmm. It also will automatically compile all .java files you create in the same directory.

Optional Hardware

We will make the following optional hardware available upon request:

Optional Software

We will make the following optional software available upon request:

We ask you not to modify the files we provide for the optional software for similar reasons as for the lab tarball.

Object Collection (Undergrad Final Challenge)

All undergrad groups will compete in a “final challenge” that integrates the capabilities you have developed over the course of the term in the context of an object collection task. We will provide a “challenge course” with the following characteristics:

The challenge course will be made available for testing during at least two lab periods prior to the final due date of this assignment. We will also try to make the course available for additional testing time, to be announced.

Each group will have a total of 10 minutes to compete on the due date of the assignment. During this time you may alternate as many times as you like between the following two phases:

  1. Calibration: you may do whatever you like in this phase, subject to the constraints that at the end of the calibration phase

  2. Run: you may not interact with the robot in any way during this phase, except for specific “helps” as described below. The robot must act on its own to attempt to move as many of the objects as possible to goal zones, which are defined as the free spaces in the map within 30cm of each of the two vertical external boundaries (i.e. the two course boundaries parallel to the world axis).

    Each run phase ends either when you decide, when your 10 minute time period expires, when all of the objects have been moved to goal zones, or (at the discretion of the course staff) when any rule is violated. You will accrue 10 points for each object in a goal zone at the end of each run phase. If all of the objects are in a goal zone at the end of a run phase, they will be manually reset to their original positions during the next calibration phase.

    During a run phase all your code must run autonomously (no human intervention) on the panda (no external processing except for optional, and encouraged, debug interfaces which may receive information from the robot but may not send anything back).

    You may help the robot during a run phase by verbally declaring “HELP”. You may then interact with the robot in whatever way you like for up to 15 seconds provided that no object moves from outside to inside a goal zone or more than 30cm from its location at the start of the help. Five points will be subtracted from your score for each such “help”. The subtraction will be done at the end of each run phase, with the constraint that you cannot lose more points than you gained in the phase. (Too many helps during one run cannot affect points accrued in either past or future run.)

You are free to use any sourcecode you like as part of your solution, subject to the course policy on use of 3rd-party code. Specifically, for this assignment, you may use

Please do not copy and paste significant chunks of code from the lab tarball or from requested optional software that we provide you. Rather, call the code in its original place. This will be important in the event that we need to provide updates.

Grad Student Project

Graduate student projects must identify an algorithm or task that has recently (loosely speaking, last 10–15y) been considered in the literature and implement on or adapt it to our robot. Thus, you should be thinking about work in the areas of mobile manipulation, perception, wheeled robots, differential drive, etc.

You may use existing reference code in your implementation, but you must clearly cite the original authors, as always. You may also implement an alternate algorithm that achieves a similar task to one recently considered in the literature.

All your code must run autonomously (no human intervention) on the panda (no external processing except for optional, and encouraged, debug interfaces which may receive information from the robot but may not send anything back). Exceptions to these requirements may be made by discussing with course staff at the time of your proposal.

Possible example projects:

There are five components to the grad student project:

  1. Proposal — Please prepare a 1–2 page document identifying your proposed project. Commit it to SVN and submit it as you would other homework assignments by the due date (for the proposal) listed on the schedule. The proposal document should cite one or more key papers from the recent literature in the area and briefly summarize the core task and/or algorithm which will be the subject of the project. Please outline any modifications to the task or algorithm that you think will help fit it to the capabilities of our robot.
  2. Implementation — You will implement some version of the proposed algorithm and/or task using the course robot and the available optional hardware and software. Consider this carefully, as it will likely mean you will have to adapt or simplify the original algorithm or task to fit the cababilities of our robots. Like all labs, you will hand this code in on the final due date.
  3. Presentation — You will do a 20 minute group presentation in class describing the task and/or algorithm you have selected. Please make sure all group members have some participation (talking) in the presentation. You should explicitly describe the related work you have found on the problem in the literature. Please prepare some form of graphics to accompany the presentation, such as a video of the algorithm in action, or even just a diagram drawn on the board. Keep in mind that in 20 minutes we do not expect to see deep technical details, but we do want to see a good basic overview of the area of research you are considering, presented in a way that should be understandable to all participants in the course.
  4. Demonstration — Like all labs, you will demonstrate your system on the final due date.
  5. Report — Please prepare a 2—10 page report documenting your project, to be submitted along with your final code. This must include

Grading

You will be asked to demonstrate your code for the course staff in lab on the due date for this assignment. We will try out code; mainly want to see that your code works and is as bug-free as possible.

You will hand in your code (and written work) following the instructions on the assignments page by 11:59pm on the due date(s) for this assignment listed on the schedule. We will consider the code completeness, lack of bugs, architecture and organization, documentation, syntactic style, and efficiency, in that order of priority. You must also clearly document, both in your README and in code comments, the contributions of each group member. We want to see roughly equal contributions from each member. If so, the same grade will be assigned to all group members. If not, we will adjust the grades accordingly.

For undergrads, 30% of your grade for the lab will be based on the observed behavior, and the remaining 70% of your grade will be based on your code. For grad students, 30% will be based on the observed behavior, 20% will be based on the written proposal, presentation, and final report, and the remaining 50% will be based on your code.