The following challenges are for new people who want to join the IARC software team. Basically if you can solve one of these problems, you'll show that you're dedicated and knowledgeable enough to join our team. You are encouraged to form teams, get to know people, and help other people out.

Before beginning one of the challenges you might want to brush up on your programming skills or learn the Python or C++ languages if you don't know them already. Here are some ideas to warm-up:

  • If you've had limited programming experience, start with the non-programmers tutorial for python or take a look at one of our intro C++ books from the RAS library.
  • If you're a pretty good programmer and don't know Python already check out the Python Tutorial or Python Links to learn how to code in python.
  • Once your ready to start coding, Take a look at the InstallGuide
  • Gook luck and have fun!

Get Fuzzy

Difficulty: 4 Fun: 6 Learning: 7 Utility: 8

We will probably use some kind of local network to transmit data between our base station and the helicopter. A good question to ask is what happens if this link fails? One solution is to use a backup communication device. We actually happen to have such a device that can send and receive data over a serial port at 9600 baud. As you can imagine this channel will have limited throughput to transfer vital data through. Your job is to decide which packets are necessary to keep the vehicle alive and the base station informed and also to keep the system as transparent as possible (we should use network data when it is available and serial port data when it is not).

What you will need:

  • Our source code
  • A MaxStream wireless modem
  • Two computers to talk between

What you will learn: After completing this you'll know how to use IceStorm to send and receive data between programs. Also you'll learn how to set up our local network for the helicopter.

Helicopter Sim

Difficulty: 6 Fun: 9 Learning: 5 Utility: 5

Blender is a 3-D graphics package that also happens to have a game engine that is fairly easy to use. For this project you should create a 3-D model of our helicopter and the test site in Blender. Next a good goal might be to map keyboard commands to basic vehicle movement. Try to detect collisions between the helicopter and various objects using some kind of bounding shape around the vehicle. Finally you should replace the keyboard commands with input from a Python script that receives commands over the network so that we can tie it in with the rest of our code.

What you will need:

  • Blender 2.43 or later
  • Our source code

What you will learn: After completing this you'll know how to use IceStorm to send data between programs. Also you'll have basically built a good chunk of the graphical user interface for our system.

Medic!

Difficulty: 9 Fun: 5 Learning: 8 Utility: 9

As you can imagine, reliability is very important for an autonomous helicopter. For this reason we need some way to monitor program state and power cycle hardware or software if it fails. Your job is to add some code to each program that we currently run that will periodically send a packet to a health monitor. Introduce some subtle bugs into programs and see if the health monitor can restore system functionality gracefully. You might also experiment with error logging and unit tests to help make our code bulletproof.

What you will need:

  • Our source code

What you will learn: After completing this you'll know how to use IceStorm to send data between programs and understand our software infrastructure VERY well. If you can accomplish this task you'll be a good candidate for a software lead for any of our robotics competitions in 2008.