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.