Q:
How to compile Mobile-C?
Mobile-C is compiled as a dynamic libary.
Mobile-C is distributed as C++ source code. It needs to be compiled into a
dynamic library to be used.
Mobile-C has dependancies
Before compiling Mobile-C, three dependancies must be enabled in Ch:
-
A C/C++ compiler must be enabled in Ch. Instructions on how to set up the compiler
can be found in Section 1.1 of the ChSDK guide located in CHHOME/docs/chsdk.pdf.
Demo code to test if the compiler is properly working can be found in
CHHOME/demos/SDK/chapters/
-
Embedded Ch must be installed. To check that Embedded Ch is properly working,
demo code can be found in the CHHOME/demos/embedch/ directory.
-
CMake must be installed and the path to its /bin directory must be added
to the Ch environment variable '_path'. Instructions on how to perform this
step can be found in the Mobile-C documentation, Chapter 2. To test if
this step has been performed properly, restart Ch, type 'cmake'
from a Ch command shell and make sure the command is recorgnized.
These three dependanices must be working before
the Mobile-C library is compiled.
Instructions to Compile Mobile-C
Instructions on how to compile Mobile-C can be found in the MOBILEC/docs/mobilec.pdf
file, Chapter 2.
Demo code
Together with the library, demo code is compiled to demonstrate the functionalities
Mobile-C. Compiled demo code is located in MOBILEC/build/demos/, where
MOBILEC/build/ is the build directory.
Q:
What's difference between Mobile-C from other mobile agent platforms?
Mobile-C is designed for real-time applications.
Most other mobile agent platforms are written in Java to support mobile code written in Java. Unlike Java-based platforms,
with underministic garbage collection.
Mobile-C is time deterministic for real-time applications
without garbage collection.
Mobile-C is designed for easy interface with hardware.
Mobile-C is written in C and it supports mobile code in C/C++.
Because both agent platform and mobile code
are written in C, it is especially appealing for applications such as
robotics and sensor network that need to interface with hardware.
To the best of our knowledge, Mobile-C is the only actively maintained
agent platform that supports mobile agents written in C/C++.
It can be easily integrated with applications written in C/C++.
Mobile-C is designed for power-sensitive applications.
For some applications such as sensor network,
communication typically consumes more battery power than computation.
To minimize the agent code, Mobile-C does not use bytecode
which usually takes more space than the original source code.
To reduce the communication, Mobile-C also supports
incremental computing for mobile agents.
Mobile-C is designed for resource constrained applications.
Although Mobile-C is a general agent platform,
it is specially developed for mechatronic and embedded systems
to support code mobility. In comparison with other mobile agent platforms,
Mobile-C has a smaller footprint. For example, for an agent printing
the message "Hello, World", the memory usage in Mobile-C is 100 times
less than that in JADE, a Java-based mobile agent platform.
Q:
What's difference for performance between Mobile-C and JADE?
This study
indicates that
the performance for agent migration in Mobile-C is about two times faster than JADE for
different numbers of agencies and different numbers of agent teams. Furthermore, there are
many inherent differences in the design of the architecture of the two agent platforms.
For instance,
- JADE and JADE agents are all written in Java, whereas the Mobile-C agency
framework is a library written in C and the agents are written in C/C++.
- The Mobile-C platform is suitable for embedded and real-time systems,
whereas the JADE platform is designed for IT applications.
- The JADE agency framework requires one agency to be designated the central
main agency, known as the "Main Container" in order for the entire framework to
function. In Mobile-C, each agency is a strict peer and the framework is fully
decentralized.
-
Mobile-C has a smaller footprint. For example, for an agent printing
the message "Hello, World", the memory usage in Mobile-C is 100 times
less than that in JADE.
Q: Where can Mobile-C be applied?
Mobile-C can be used to support the code mobility of networked systems, especially intelligent mechatronic and embedded systems. It can be found in many applications including
Intelligent monitoring
Autonomous mobile robotic systems
Sensor network
Intelligent sensor fusion
Adaptive control
Predictive maintenance
Intelligent transportation systems
Q: Is there a limit in the number of agents for an agency?
No.
Q: Can an agent communicate with other agents in a different agency?
Yes.
Q: Does Mobile-C use peer-to-peer communication?
Yes.
An agency in Mobile-C can communicate with different agencies. An agent can communicate with
different agents and agencies.
Q: The demos run fine on the localhost, but the client cannot connect to the server when using multiple hosts. What's wrong?
There are several possibilities which may cause this behaviour.
- More often than not, firewalls on the server side prevent connections to non-standard ports.
Check your firewall software to make sure that the Mobile-C ports are open. Standard Mobile-C
ports are 5050, 5051, 5052, 5053, etc. depending on how many agencies
will be running on a host. Occasionally, ports 5125, 5126, etc. are also used.
- Ensure that the destination host and port in the agent xml file is correct.
- Check the server and client agency code to ensure that the ports and destination addresses
are correct.
Q:
Is Mobile-C open source?
Yes.
Mobile-C is open source. You are welcome to contribute to the development of Mobile-C.