I just took a "Robot Building Lab" at grad school and we played with Handyboard robots (programmed in Interactive C or
RoboJDE(Java), as well as the RCX robots with Lejos.
Check out the course website:
http://plan.cs.drexel.edu/courses/robotlab/ it may give you some ideas to code.
Here's a quick summary of each lab:
lab 2: part A: build a differential drive robot, and demonstrate the motion capabilities of the robot (go forward, left, right, reverse, etc)
part B: use a reflection sensor to determine when you're on top of a piece of paper and when you're not. Write a program that goes forward until it finds a definite change in color (going from paper to carpet and vice versa) and stop.
lab 3: Add two light sensors to the robot:
If there's more light on the left, it should go left.
If there's more light on the right, it should go right.
If there's more light in the center, it shoudl go straight.
If it can't find a light -- it should wander aimlessly til it finds one.
(My cat was a big fan of this lab -- she loves attacking flashlights) lab 4: Add bumpers to the robot
The robot should follow the light but if it bumps into an object it should avoid it, then resume following the light. If it runs over a piece of paper it should avoid it, then resume following the light.
lab 6a: Add kinematics to the robot (
this is built into lejos api)
write a program that constantly spits out the robot's position (x, y, theta) while it wanders around and avoids obstacles.
lab 6b: Add inverse kinematics to the robot
write a program so that a robot will go to a particular waypoint.
i.e. it starts at 0,0 make it go to (15,30)
If it bumps into an obstacle it should avoid it then recalculate how to get to the goal waypoint.
lab 7: Add sonar to the robot with a servo motor so it can sweep the sonar from side to side (
not sure if this is a standard Mindstorm sensor)
Do the same as 6b, but detect obstacles with the sonar instead of just bumping into them.
undergraduate final: Use the sonar to develop a map of the world the robot sees. Write a planning algorithm that will navigate around several obstacles and reach a goal poing.
graduate final: Given a series of doors, mount the sonar on the side of the RCX. And use particle filtering to do localization.
Basically -- say there are a set of 3 doors along the wall.
After the robot sees one door, he should know that he's located after one of those 3 doors, after seeing two doors, he should know he's located after the 2nd or 3rd door. If he doesn't see any doors after that, he should know he's located after the 3rd door.
Anyway -- dunno if those give you any ideas, but it was a neat class and adding onto the labs like that helped to understand the capabilities of the robot as well as how to balance multiple behaviors.
I'm thinking of writing a JavaRanch Journal article about RoboJDE vs LeJOS... what do you think?