Final Project for Autonomous Multiagent Systems (G22.3033-012)


Your final programming project is to create an entry in the end-of-class RoboCup tournament to be held on Tuesday, December 18th. By default, your task will be to create a full team of 11 agents. You will be provided with code that parses the server messages, handles the timing issues, and builds up a world model, but provides no behaviors.

If you prefer, you may instead propose a variation on this task. For instance, you may want to start with an existing team and build a coach agent to control its behavior. Or you may choose to start from scratch and build a team entirely on your own. The instructor will do his best to provide you with the appropriate code to allow you to get to your proposed starting point. Expectations will be commensurate with the starting point you choose, so feel free to follow your interests.

You may work as an individual or as a team of at most 2 people. 2-person teams should only turn in one submission for each portion of the assignment (including final report). Expectations will be higher for 2-person teams.

The schedule is as follows.

  • October 30th. Submit a proposal (ASCII, email) including:
  • Team members
  • Proposed starting point. That is, in the ideal case, what code would be provided to you? (No guarantees you'll get what you ask for.)
  • Language(s) you expect to use
  • What you plan to do and how you plan to do it. Be specific regarding what aspects of the complete task you plan to focus on most.
  • What you hope to show in your progress report (see below)
  • November 20th. Submit a progress report including:
  • A brief description of what you've accomplished so far
  • A logfile demonstrating your progress (preferably showing a whole team on the field doing something).
  • A re-evaluation of what you plan to do and how you plan to do it.
  • A team-name for your team in the tournament.
  • Binaries with instructions on how to run your team (as a README file).
  • To turn in your log files and source code, copy them to the directory /home/agents/handin/progress/username where username is your username.
  • December 10th. Submit a preliminary executable to make sure the instructor can run it on the class machines. The start script should take the name of the machine running the server as an argument. Submit it with a README to the directory /home/agents/handin/final/username where username is your username. You may replace this executable (see next due date). If you think your team may need more than one machine, please prepare scripts to start on multiple machines and indicated this clearly in your README file.

  • December 14th. Submit your final executable to run in the tournament.

  • December 18th. Tournament! Also turn in:
  • Your source code and executable
  • A logfile of your team playing against itself or any other opponent.
  • A detailed written report describing how your team is constructed, what it does, its merits, and its deficincies. As much as possible, you should relate your approach to the readings from throughout the course. View this report as a term paper. It is in place of a final exam and will be a large factor in your final grade for the project and for the course.
  • Doing well in the tournament will count in your favor. But not doing well won't count against you.

  • Code

    Some code is now available on the class machines at /usr/local/agents/src/classcpp.tar.gz and /usr/local/agents/src/
    You may use it for the purposes of this class only (if at some point you want to use it for other purposes, please ask permission). Please do not distribute it to anyone outside of the class.
  • The java code comes with javadoc pages that should be self-explanatory. It has been generously provided by Klaus Dorer, creator of the Magma Freiburg and then Living Systems teams. Please try it out ASAP and report any problems you might have on the class mailing list.

    Some hints from Klaus:
    It may be helpful if you tell the students that the class is the best point to start with. It contains the parameters for the server (which they have to change). And it contains a method actionSelection, which is called whenever the agent has received a sense_body to decide on the next step.

  • To get the C++ code to work, take the following steps:
    % cp /usr/local/agents/src/classcpp.tar.gz ~/
    % cd ~/
    % tar -xzf classcpp.tar.gz
    % cd /home/cN/scratch/[username]   (where N is the number of the class machine you're on)
                        (if it's not there, you may have to make the [username] subdirectory)
    % ~/classcpp/player/configure
    % gmake depend
    % gmake
    At that point, if you start the server, you should be able to get a player going by typing
    % ./start
    The above sequence does an out-of-directory build. Your source code is in ~/classcpp, but you run locally in the scratch directory. Remember that any changes you make to the .conf files in this directory will not be saved in your source code directory.

    There is a README file in classcpp/player/README. That should tell you how to access the world model and use the simple behaviors that exist. Behaviors for assignment 2 (shooting and passing) are included.

    If you run into any problems, please report them on the class mailing list.

  • [Back to Department Homepage]

    Page maintained by Peter Stone
    Questions? Send me mail