I am glad you guys have similar idea of sharing information. I would go further to also share methodologies of how we did things such as source control, information sharing and other knowledge. It is always intriguing to learn how things are done differently and learn from it.
This is the first year our team uses C++. We have an ambition that we will develop a common robot task library that enables code reuse year after year instead of debugging similar yet different code over and over again. Therefore, we have put extraordinary effort in refactoring the code as generic as possible. As a result of developing this library, we also put in place a debugging infrastructure based on real time tracing. We would like to share this with other teams and receive feedback on how to improve this library. Since this is our first attempt, the library is in its infancy. There are a lot of functions we would like to add but aren't there yet. Currently, the library has the following support:
- Tri-zone support for analog inputs: generating events when sensor value crosses some thresholds.
- Event notification for digitial inputs: generating events when a digital input changes state.
- Event notification for joystick buttons: generate one-shot event when a joystick button changes state.
- Generic state machine: implementing a non-blocking state machine that allows other code to run while the state machine is waiting.
- Event sub-system: implementing non-blocking waitable events for use by the state machines.
- Accelerometer module: allows it to be used as a distance sensor for PID control.
- Generic drive module: allows a event driven non-blocking drive subsystem.
- Timer module: implements a timer callback mechanism.
- Two variable PID control system: allowing PID to control drive and turn at the same time.
- Debug tracing subsystem: allows code tracing of individual classes and modules during the debugging process.
Our source control site can be found at:
http://proj.titanrobotics.net/hg/Frc/2010/code
Comments and feedbacks are welcome.