docs: def get_obs_function(self):
          """
          Returns the observation function as nested dict in the case of table-
          type parameter and a nested structure in case of
          decision diagram parameter
  
          Example
          --------
          >>> reader = PomdpXReader('Test_PomdpX.xml')
          >>> reader.get_obs_function()
          [{'Var': 'obs_sensor',
                'Parent': ['action_rover', 'rover_1', 'rock_1'],
                'Type': 'TBL',
                'Parameter': [{'Instance': ['amw', '*', '*', '-'],
                               'ProbTable': ['1.0', '0.0']},
                           ...
                          ]
          }]
          """
          obs_function = []
          for variable in self.network.findall('ObsFunction'):
              for var in variable.findall('CondProb'):
                  cond_prob = defaultdict(list)
                  cond_prob['Var'] = var.find('Var').text
                  cond_prob['Parent'] = var.find('Parent').text.split()
                  if not var.find('Parameter').get('type'):
                      cond_prob['Type'] = 'TBL'
                  else:
                      cond_prob['Type'] = var.find('Parameter').get('type')
                  cond_prob['Parameter'] = self.get_parameter(var)
                  obs_function.append(cond_prob)
  
          return obs_function