Diagnostic Station¶
Purpose: Design and build a station to test basic robot functions.
Functionality¶
- Functions To Be Tested
- Maintain a database of statistics for each each robot (automatically updated)
- Interactive mode/automatic mode
- Partial tests possible (e. g. only motors, or only rangefinder 3)
Equipment¶
- Dragonfly board
- Dynamos (encoders)
- IBOM
- Turntable
- Moving wall
Communication¶
Further steps¶
- Test/Fix (2)
- Present (MoM) (5/6/09)
TODO¶
Bugs¶
- Sometimes, the encoder readings are all over the place. Note that the error is usually symmetric (e.g. encoder0 positive, encoder1 negative), so it may be a an error in transmission (?).
Station/Robot communication¶
- define a channel and a PAN (and use it on both the robot and the station)
- in robot.c:station_robot_receive: if an unhandled message is received (default: clause), signal an error (possibly: send a message via USB, turn the orbs red, wait 1 second). This should probably be a function error(char *message) or something like that.
- different group for commands and requests, maybe also for done/data
- add message type to reply packets so a reply to one packet will not be interpreted as reply to a different packet
- signal an error condition to the user if the robot receives an unknown command
Dump functions¶
- Handle timeouts
- Add functionality for resetting the encoders
- Add another mode to control hardware (e. g. robot motors)
Tests¶
Misc¶
- Implement simultaneous robot/server communication
- e. g. stop
- Periodic callback function (wl_do style)?
Possible Enhancements¶
Functionality¶
- Incorporate a charging station into the diagnostic station
- More measurements, see Functions To Be Tested
- Power robot from wall
- Add a calibration mode for BOM positions
- Comm test: packet loss rate (quality of the wireless link)
encoders. - LCD Feedback
- introduce wall_position_t etc.
- Add a maximum retry count for timeouts
- Encoder test: use the robot_set_motors_time function. This is not easy because we will need a longer timeout (depending on the value!)
- Encoder test: instead of waiting a fixed time after turning the motors off, wait until the wheels are not moving any more, using the station's