Proposal for Restructuring of RHexLib Source Tree

Several weeks ago, UlucSaranli put together a new directory structure for the RHexLib sources. I am paraphrasing and extending the points he brought up in his e-mail, UlucDirRestructureEmail.

The main advantages of the new structure are:

  • The core library is modified to include no robot-specific code
  • Multiple robot trees can coexist for heterogeneous robots (id est, RHex and RiSE)
  • New robots can be easily added at later dates, without modifying other trees
  • Logical locations exist for addition of new code
  • Incorporates the HWClass changes described in RHexLibHardwareRedesign

It will take a bit of work to put these changes into effect. The tasks that need to be done (to be checked off as they are done):

  • initial version done - Reorganize source tree and revise Makefile system
  • done, assigned to AlRizzi - Remove ModeSupervisor's dependance on CalibMachine and SitMachine
  • partially done - Sort files into appropriate directories when needed

Proposed Directory Structure: Notations are made on any entries which may be new or need clarification.

  • Libraries/ - Robot independent libraries
    • lib/ - symlinks to various libraries
    • include/ - symlinks to various include directories
    • RHexLib/ - Robot independent core components of RHexLib
      • include/
      • base/
      • libutils/ - RHexLib utilities such as ConfigFile etc.
      • libclient/ - Collection of tools for remote clients
      • tools/
      • doc/ - doxygen based core RHexLib documentation
      • examples/
    • VisLib/ - Clark's soon-to-be-released vision library
      • include/
      • examples/
      • lib/ - lib directory separate from ../lib because of plugins
      • src/
        • plugins/
    • GUILib/ - Common library for user interface design (PanelManager etc.)
    • SimLib/ - simulation library, wrapped around Arachi DE
    • flame/ - Runtime GUI design components
    • fltk/ - GUI toolkit used in most of our interfaces
  • RHex/
    • doc/ - doxygen based documentation for all RHex specific components
    • lib/ - Symlinks to all RHex specific libraries
    • include/ - Symlinks to RHex specific include directories
    • Simulation/
      • SimSect++/ - RHex's legacy simulation code
      • RHexSimLib/ - version for use with simulation code using Arachi
    • RobotCode/
      • Hardware/ - hardware sources are completely separate from core
        • include/ - common inludes for all instantiations (interface definitions etc.)
        • CommonHW/ - common components (board access classes etc.)
        • ResearchHW/ - hardware instantiation for the research RHex
        • RuggedHW/ - hardware instantiation for the rugged RHex
        • SimSectHW/ - hardware instantiation for the legacy simulated RHex
        • RHexSimHW/ - to be done: hardware instantiation for Arachi based RHex simulation.
      • BehaviorLib/
        • modules/ - Library of RHex specific modules
        • modes/ - Library of RHex specific modes
        • include/ - common includes for RHex modules and modes
      • CalibTools/
      • TestTools/
    • OCUCode/
      • RHexGUI/ - RHex GUI executable
      • RuggedGUI/ - Rugged GUI executable
      • LogGUI/ - Old logging GUI
      • CLI/ - Command line tools
      • SWRILogger/ - Compact and fully featured logger executable
    • VisionCode/ - plugins/executables for VisLib specific to RHex
    • EmbeddedCode/ - Repository for embedded microcontroller code
      • RhIO/
    • SWRI/ - Operational executables
      • Operator/ - OCU executable and scripts
      • Supervisor/ - Robot executable and scripts
      • Config/ - Configuration RC files
  • RiSE/
    • lib/
    • include/
    • Simulation/
      • RiSESimLib/ - RiSE will only use the Arachi simulation environment
    • RobotCode/
      • Hardware/ - hardware is separated from core library
        • include/
        • CommonHW/
        • RiSEHW/
        • RiSESimHW/ - virtual hardware for use with simulation environment
      • BehaviorLib/ - RiSE specific modes and modules
        • modules/
        • modes/
        • include/
      • CalibTools/
      • TestTools/
    • OCUCode/
      • RiSEGUI/
      • LogGUI/
      • CLI/
    • VisionCode/ - code for use with early vision system on RiSE
    • EmbeddedCode/ - code for all our MCU's and other embedded components
    • SWRI/
      • Operator/
      • Supervisor/
      • Config/

-- ClarkHaynes? - 29 Sep 2003

 
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback