RHexLib Development
 Overview | Publications | Movies | People | Platforms

RHexLib is the second generation architecture for RHex's control software. It is completely written in C++, with the principal emphasis on modularity, in an attempt to coordinate and ease development of RHex controllers by a large number of people.

Currently, RHexLib runs under QNX real time operating system with full functionality and under Linux in virtual hardware emulation mode. It is still in its prototype stage and is not fully tested. However, all the functionality in the first generation software and some extentions are already in place and working.

More information on RHexLib, including documentation, the latest version and installation instructions can be found here (password protected).

Here is a summary of important RHexLib features:

  • Module based architecture. Modules are entities encapsulating periodic tasks such as reading the encoders, local PD control loops etc. RHexLib's Module Manager provides a simple but effective scheduling facility for such tasks.
  • A base module library including modules for interfacing to encoders, achieving feedback position and velocity control, reading PWM inputs, accessing R/C inputs, data logging, automation tools for batch experiments and more.
  • RHex controller library with basic behaviors and tools such as leg calibration module, standing and sitting controllers, open-loop walking.
  • A State Machine toolbox. All higher level controllers, including walking, standing and sitting are implemented state machine formalism with explicitly defined states, event and transitions.
  • An abstract Hardware class to transparently interface different RHex versions and simulation engines.
  • A Virtual Hardware emulation library. Through the abstract Hardware class, this library provides configurable emulation for motors, R/C inputs, and many other hardware components, making the offline design and testing of controllers possible.

Here is what we plan to incorporate sometime in the future:

  • Multi-threaded Module Manager.
  • Wireless network support and remote data logging
  • A SimSect Hardware library for simulated testing of controllers on SimSect.


Created by Uluc Saranli, 2001