Scoutsim Todo

High-Level Current Goals

  • Smart Runaround Maze Exploration
  • Better sim control

Current Assignments

  • Priya
    • Make does not regenerate BehaviorList stuff if it already exists. Make it do that!
    • (DONE) Change @TODO and TODO to @todo
  • Alex
    • Make dumb run around smarter.
    • Code cleanup and documentation
    • Fix original maze_solve behavior
  • Hui Jun
    • Debugging maze solve behavior (driving, keeping track of position, and filling in adjacent cells only)
  • Zane
    • Work on filling in grid cells based on sonar, to merge with Hui Jin's driving code
  • Misty
    • Test paintboard and metal detector code

Upcoming Plans

  • (DONE) Metal Detecting Control Class
  • (DONE) Paint Dispensing Control Class
  • (DONE) Behavior for SURG demo
  • Create a few maze environments
  • More features for GUI
  • (DONE) Make clean for whole scout folder
  • Make runnable from any folder (currently you have to cd to scoutsim first)

High-level tasks (one per person)

  • (DONE)Fix how the scout moves in the simulator
    • Negative wheel velocities still move the scout forward!
  • Write a wireless node to simulate ACTUAL wireless protocols, and include an option for dropped messages or errors.
  • (DONE) Write the sonar simulator.
    • Don't forget to check collisions with other robots as well as walls!
  • (DONE) Write a sonar visualizer node which displays a circular chart of current sonar readings.
  • Create a more extensive Helper Class library
    • (DONE) Position and RungeKutta now moved into Helper Class
  • Create maze maps.
    • (DONE) Create a teleop button and a sonar visualize button.
  • Config files for the GUI to save and load scenarios
  • Visualize points more generally, not sonar-specific / listen on a topic
    • It would be nice to have a little API for visualizing a behavior's 2d pointcloud - could make debugging a lot of things easier.

General Things To Do

  • Sonar in libscout returns an int* which is annoying.
  • Periodically make sure that we have no warnings.
  • (DONE) Figure out/delete/use the "messages" folder.
    • Everything is now (should be) in the messages folder
  • Check getNumSubscribers in publishers to avoid doing extra work
    • Add noise
  • Get top-view scout images.
    • The images should be edited so that scout numbers (1-16) are prominently displayed on the robot.
    • Save into the scoutsim/images folder with appropriate names, and allow scoutsim to use these images.
  • Clean up code to follow coding guidelines! Add nice comments!
  • Using Scoutsim to visualize actual scout information (position, sonar readings, etc)

To revisit:

  • Should libscout be renamed?
  • We may want to avoid #defines. Revisit this discussion later.
  • Pre-commit hooks. I wrote one to help with my dealing with licensing info.


  • Test encoders on real scout
  • Remove old teleop and clean up scoutsim folder
  • CCW and CW are reversed, fix that.
  • Add wait() functionality to Behavior class (like I did to fix the sonar in maze solving)
  • Move other message/service definitions to the messages package
  • Edit makefile so that make clean / generate behavior lists runs more easily
  • Edit makefile so that we can make a single behavior at a time. (Mess with GLOB BEHAVIOR_FILES, etc)
  • Makefile-generated behavior list
  • Individual visualization control
  • Write a wall visualizer for scoutsim.
  • Write a better teleop node, remove the old teleop
  • Write a GUI for placing robots and selecting behaviors.
    • Doubles for dialog boxes input
    • Pause is buggy
  • Write a ghost scout library function.
  • Finish creating Control classes and make sure they take the scoutname parameter.