For the robot this year, we have to use the accelerometers, gyro, and gear tooth sensors, if only for the fun of using them. I was thinking maybe next meeting (2007-09-19) we could add them onto the existing robot experimentally and start programming it a bit.

For example, we could add the facility to run in a perfectly straight line at an exactly constant speed as long as a certain button on the joystick is pressed by using the gyro to check and compensate for rotational error, and using the gear tooth sensors to compensate for speed error.

Or maybe we could implement collision detection using the accelerometers (this would be pretty hard, since how do you tell what's a collision and what's a quick stop).

We could implement bounce detection on the joysticks so things wouldn't be so jerky.

Maybe an emergency stop button that uses the accelerometers to compensate for the robot's momentum by canceling it out with force on the motors in the other direction.

Maybe a button to do a perfect 90° in-place turn by constantly integrating the gyro data until 90° is reached, while simultaneously using the accelerometers to make sure the robot doesn't move around too much (this last part would probably not work, since the accelerometers would always return some acceleration even if the turn is perfectly stationary).

Maybe even something as simple as using the front panel lights as a speedometer (this would of course be collected by integrating the accelerometer data).


Aleksey said...

Understand that the joystick should have a dead zone because very slight movements activate the spikes. It's almost impossible to calibrate it properly (considering there are no numerical outputs and we must rely on analog data which is not very clear) without said dead zone.

Preferably, I would desire the use of a computer for control. You are allows to use USB-based controllers, so if you can hack together some USB drivers, it just might work.

Ankur said...

I can do a dead zone easily. Writing USB drivers, on the other hand, is incredibly hard. I'd probably need a year of learning about the Windows kernel to be able to do anything at all.

Aleksey said...

A Linux kernel is fine too. I'll talk to you in maths on Monday about this.