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/
- 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
- 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
- CalibTools/
- TestTools/
- OCUCode/
- 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