by Antonio Franchi and Paolo Stegagno
Web site (UTF-8 encoding).
MIP is a C++ software aimed to develop control and estimation robotics algorithms. A good level of modularity, the use of abstracted low-level robot interfaces and the fact that a different instance of the same MIP executable controls each robot guaranties software reusability
and easiness of embedding
MIP provides both an inter-robot and an intra-robot IP-based communication module. They are first mandatory for multi-robot applications and for splitted istantiations of the robot control process.
MIP has the following Components :
- Baselib, basic library for general purpuse and robotics functionalities, e.g., pose, laser scan, IP communication, class serialization, multithreading, file managment, user option managment, etc...
- Algorithms, class collection of robotics algorithms, e.g., geometric and sensor data processing (Voronoi diagrams, feature extraction,...), estimate (Kalman filetring, particle filtering,...), control (trajectory control, obstacle avoidance,...).
- Resources, classes derived from the Resource class providing interface modules respect to the hardware or the MIP platform facilities (motors, sensors, communication modules, keyboard, logging/tracing, 2D/3D display,...).
- Tasks, classes derived from the Task class which actualy perform the robot activities that must be execute in parallel, glueing algorithms and resources. Example of activities are: tracking, deployment, target navigation, mutual localization, entrapment, exploration,... Each task is a finite state machine that uses the algorithms and the resources to gain its objective. A task can benefit of outputs or provide inputs from/to other concurrent scheduled tasks. The inter-task data exchange pass through the resources, for this reason the resources are also a shared memory for tasks.
- Main, main of the program. Here is created and launched the Scheduler. The scheduler executes ciclically a list of task, checking the timing correctness and managing the frequency of execution, as requested from every task. The Scheduler is not preemptive.
A MIP program acts, in general, in the following way:
- The scheduler instantiates resources needed by the tasks (specified in a configuration file).
- The scheduler executes cyclically the tasks.
- Some task gets sensorial and communication data provided by the resources, processes them by mean the algorithms.
- Some task uses the resources to interact with the uman operator , e.g.,a visual feedback or a keyboard input.
- Some task executes the control law sending commands to the resources, e.g, to the motor module.
Here is block scheme of MIP:
block scheme of MIP
MIP has been used for the following works:
Let MIP_HOME be the absolute path of the directory in wich you want to download MIP.
Checkout the MIP project from the labrob repository:
$ svn co svn://labrob.diag.uniroma1.it/software/MIP/trunk MIP_HOME
Note: You must be an authorized user, ask to the project owners to obtain a user.
Follow this tutorial to build MIP.
Follow this tutorial to run MIP.
Follow this tutorial to run MIP Examples.
Follow this tutorial to create and run a MIP custom test.
Follow this tutorial to create a plugin for MIP. In a plugin you can:
- define your own general purpose baselib and algorithms
- define your own resources as derived from the basic resources in MIP
- define your own tasks
- define your own tests
- User Manual, intended for the audience that want to use the software to perform simulations and experiments with already implemented control laws and algorithms
Follow these istructions to handle the KheperaIII robot in a skillful manner:
Follow these istructions to build MIP for ARM architecture:
These additional istructions explans how to build csm (The Canonical Scan Matcher, http://www.cds.caltech.edu/~andrea/research/sw/csm.html) for ARM architecture and how use it with KheperaIII robot: