Simulator

Design

  • Core - Kersing
    • map_parser.h and related classes
  • Simulator - Anant
    • File menu: load, run, stop, quit
    • toolbar (top): play, pause, stop, fast-forward, reverse, speed (slider), record (?)
    • Connect path and pause for 16 ms such that we have 24 frames/s
  • MapEditor - Sam
    • File menu: open, save as, save, quit
    • Edit menu: add/remove obstacle
    • Help menu: about map editor
    • toolbox (located on RHS,drag-and-drop): terrain, obstacles, special markers (e.g. waypoints), robot config (e.g. location, direction)

Progress

  • Using XML to represent map information.
  • Implemented map file parsing and dumping environment to file and associated classes, e.g. environment, obstacle, point, and etc. — Kersing 3/3 10:26 PM
  • Functional editor — Sam 3/??
  • Functional simulator using Lua — Anant spring break
  • Begin Integrating editor and simulator into main app — Kersing 4/3

Schedule

  • Simulator
    • GUI to real world coordinate conversion
    • Sensor Class, subclasses of lidar and camera
    • getData for sensors, takes circle
    • Simulator main loop: enqueue AI instructions, animation function pulls instructions from queue
class Sensor{
  void getData(int x, int y, int radius);
};
  • Editor
    • convert XML real world to GUI coordinates, i.e. util::convertToReal(double guiX, double guiY, double** x, double** y)

Concerns

  • Compatibility between machines; possible solution is to compile related classes into libraries
    • Can't believe Visual C++ isn't installed with Visual Studio 2008 in ELL computers - working on it 3/9
  • Efficiency
    • map<int,list<point» vs. list<obstacle*>, i.e. drawing obstacles - dependent on widgets available in GTK - possibly animation(?) - efficiency for checking existence of obstacle at a location

Note: Some little notes about STL. If you're not using the hashing function(aka. the max and min of the first int do not differ greatly), ( map<int, list <point> > ) essentially is the same as ( vector <list <point> >(MAX_SIZE) ). And if I remember correctly, vector has a way higher performance than map(map is a heap < pair <int, Object> >). If only visiting in one direction, list is slightly better than vector(a lot better if you want to insert element in the middle), although the difference can be omitted. — Richard.
Further reference to STL: http://www.sgi.com/tech/stl/

* Mouse interactions - for drag and drop
*

Resource

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License