Project

General

Profile

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

diag_station_code_planning.docx (15.3 KB) Evan Mullinix, 04/13/2009 11:39 PM

server_station_communication.mm - Results of the Server/Station communication brainstorming 4/21/2009 (11 KB) Martin Herrmann, 04/21/2009 01:43 PM

server_station_communication.pdf - PDF export of the above mindmap (server/station communication brainstorming 4/21/2009) (313 KB) Martin Herrmann, 04/21/2009 01:44 PM