Software Code for POMDP File Creator Tool (PCMRPP)
This is the code for the PCMRPP software package which implements an algorithm for automatically creating POMDP file for mobile robot path planning in a two-robot scenario. The Partially Observable Markov Decision Process (POMDP), a mathematical framework for decision-making in uncertain environments suffers from the curse of dimensionality. The POMDP model is made of three matrices - State Transition Matrix (T), Observation Matrix (O) and Reward Matrix (R). For a simplest case of two mobile robots moving in a bounded field, the number of states can easily cross 1000 leading to huge sizes of these matrices. The sizes of these matrices are of the order of square of no. of states. Even though the matrices are sparse, manually creating the high-dimension matrices is a cumbersome and sometimes even impossible task. For accurately defining the states and observations in discrete space, the size of POMDP model becomes very big. Creating such a file manually involves meticulously formulating the probabilities of huge number of state Transitions and Observations. The PCMRPP (POMDP file Creator for Mobile Robot Path Planning) is a novel algorithm to programmatically generate the POMDP model. This is implemented in C on Linux. This version is limited to only two mobile robots moving in an open 2D space with possibility of collision between them. The software creates a pomdp file which can be passed through a pomdp solver (e.g. APPL Toolkit - https://bigbird.comp.nus.edu.sg/pmwiki/farm/appl/). The resultant policy file either in the form of a graph or a set of alpha vectors is used by an executioner program running on-board the robot to generate the optimum robot path. The PCMRPP allows control of the sizes and the sparseness of the matrices to achieve trade-off between time complexity and the level of robustness of the POMDP solution. This is done by controlling the spread of the probability distribution of the state transition and the granularity of discretization of the components of the state. Refer to the figures included in the uploaded data set files to get more clarity on this.
Steps to reproduce
The software is built in Code Blocks 20.03 using gcc 9.3.0 and tested on Linux LTS 20.04 environment. Building executable from source : gcc -o pcmrpp pomdpV9-1.h utility.c pomdpCreateV9-1.c -lm Running the software package : ./pcmrpp -v [0...4] -o [FILE] OPTIONS - -v : verbosity level of messages- 0 Least verbose crisp messages - the execution will be faster 4 Highest level of verbosity - the execution will be slower -o : output pomdp filename. No assumption on the extension. The name will be taken as it is. -h : Help about options Configurability : Following parameters can be configured via the header file pomdpV9-1.h Descritisation levels of angles alpha and theta (Refer the documentation for the context of these angles) #define N_DIV 8 //e.g. with this value, the angle will be descrtised to nearest multiple of 360/8 i.e. 45. If the angles alpha and theta need different descritisation levels then following two lines will achieve that. #define ALPHA_MAX N_DIV #define THETA_MAX N_DIV Following lines decide descritisation levels of other state parameters - #define R1SPEED_MAX 3 #define R2SPEED_MAX 3 #define PROXIMITY_MAX 2 #define ACTION_MAX 6 The number of states and number of Observations would be same and equal to product of discrete levels of the 5 parameters-ALPHA_MAX, THETA_MAX, R!SPEED_MAX, R2SPEED_MAX, PROXIMITY_MAX. The size of Transition Matrix would be STATES_MAX * STATES_MAX * ACTIONS_MAX. The size of Observation Matrix would be STATES_MAX * OBSERVATIONS_MAX * ACTIONS_MAX. The following line decides the span of probability distribution of Observations. #define MAX_OBS 10 e.g. MAX_OBS value of 10 indicates that the probability of the robot getting an observation on taking an action in a state is distributed across ten observations. This controls the sparseness of the O matrix and in turn controls the number of alpha vectors generated by the pomdp solver. Higher the number of alpha vectors higher time of computation during execution because the belief state will have large number of entries and dot prodyuct of the belief satate vector with alpha vector will take time. MAX_OBS value of 1 indicates state and observation is same which means it is MDP and no more partially observable.