GIMnet is a communication infrastructure designed for robotics applications. Basically, the system is a remote process communication implementation, which additionally functions as a base architecture for the software system.
The hubs are the backbone of the network. A program called GIMnetAP performs the tasks of a hub. It only runs on Linux, and it is the only part of the infrastructure that is fully platform dependent. The design of GIMnet allows scaling from a single local hub up to a large network of interconnected hubs. This hub network forms a Virtual Private Network, and the only requirement is that one of the hubs has one TCP port open for connections. The other advantage of this type of "ad-hoc" topology is the scalability and extendability of the system.
The software modules in the above figure can be considered clients for the hub. The modules are separate processes running anywhere in the network. When connecting to the hub, the modules register their name and receive an ID, both of which can be later used to address the module. The Generic Intelligent Machine Interface (GIMI) can be considered an application layer, which provides an easily accessible API for the module developers. GIMI encapsulates the network so that the developers do not need to know the underlying structure; they only use the simple function interface. It also implements some important functions which are required by almost all modules.
Main features of GIMnet
- Distributed name and ID service
- Unicast, multicast, broadcast
- Synchronized and unsynchronized data transmission
- Automatic hub-to-hub and client-to-hub reconnect
- Service registration, subscription and listing
- Application level ping