|
Major Features:
A Short List of Major Features
The motivation behind the Mobile-C Library is to provide mobility and
communications to low level programs written in C/C++. Programs written in a low
level language, such as C/C++, have the distinct advantage of low level hardware
access, such as memory manipulation. This makes C/C++ a suitable language for
controlling low level hardware, such as mobile robots, robotic arms, or other
electro-mechanical devices.
Mobile-C has been designed to help facilitate a number of aspects necessary for
low level, cooperative software agents to function. Features and API exists to
facilitate several primary aspects of software agents: Mobility, communications,
synchronization/timing, mature and widely used agent language, and a small
footprint.
- Ease of agent migration
Mobile-C is designed such that Mobile-C agents are highly mobile. By this, we
mean that
- the API and process to migrate an agent is straightforward and easy to use,
- the overhead for migrating an agent is low
- the speed at which migration happens is fast
- Various API exist to help the agent access data from previous tasks
- Standardized FIPA-ACL agent communication
The Mobile-C library supports FIPA-ACL compliant agent messages. Mobile-C agents
may use these messeges to communicate with each other, as well as with agents
from other FIPA compliant agent systems, such as JADE.
- Agent-agent and agent-agency synchronization
Since Mobile-C was designed with machine control and hardware access in mind,
numerous synchronization methods have been implemented to coordinate agents and
agencies. The following synchronization paradigms have been implemented:
- Mutex
- Condition Variable
- Semaphore
- Barrier
- Mobile agent code execution with Ch, a C/C++ interpreter
Mobile-C agents are executed in an embedded C interpreter, known as Embedded-Ch.
The Ch interpreter supports an augmented C language known as Ch. Ch is a
superset of ANSI C99, and contains some aspects of C++, as well as other
features. Furthermore, the Embedded-Ch interpreter has its own robust and
complete API for manipulating interpreters, which may be used to perform various
tasks such as retrieve and set variables or call functions. Ch is also
cross-platform, allowing Mobile-C agents to run on numerous systems and
operating systems.
Embedded Ch has an additional feature in which the interpreted C program can call
low level memory and hardware access functions. This is necessary for tasks such
as robot control, sensor data acquisition, etc.
- Small footprint
Since Mobile-C was designed with hardware access in mind, it features a very
small footprint suitable for small, embedded systems, such as the Gumstix
tiny-computer platform and K-Team Khepera mobile robots. Typically, a statically
compiled Mobile-C program with all features enabled will be about 500 KB, and
the runtime memory usage may be custom tuned to less than 6 MB.
|