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.
|