pf_pdf.h
Go to the documentation of this file.
00001 /*
00002  *  Player - One Hell of a Robot Server
00003  *  Copyright (C) 2000  Brian Gerkey   &  Kasper Stoy
00004  *                      gerkey@usc.edu    kaspers@robotics.usc.edu
00005  *
00006  *  This library is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU Lesser General Public
00008  *  License as published by the Free Software Foundation; either
00009  *  version 2.1 of the License, or (at your option) any later version.
00010  *
00011  *  This library is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  *  Lesser General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU Lesser General Public
00017  *  License along with this library; if not, write to the Free Software
00018  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019  *
00020  */
00021 /**************************************************************************
00022  * Desc: Useful pdf functions
00023  * Author: Andrew Howard
00024  * Date: 10 Dec 2002
00025  * CVS: $Id: pf_pdf.h 6345 2008-04-17 01:36:39Z gerkey $
00026  *************************************************************************/
00027 
00028 #ifndef PF_PDF_H
00029 #define PF_PDF_H
00030 
00031 #include "nav2d_localizer/pf_vector.h"
00032 
00033 //#include <gsl/gsl_rng.h>
00034 //#include <gsl/gsl_randist.h>
00035 
00036 #ifdef __cplusplus
00037 extern "C" {
00038 #endif
00039 
00040 /**************************************************************************
00041  * Gaussian
00042  *************************************************************************/
00043 
00044 // Gaussian PDF info
00045 typedef struct
00046 {
00047   // Mean, covariance and inverse covariance
00048   pf_vector_t x;
00049   pf_matrix_t cx;
00050   //pf_matrix_t cxi;
00051   double cxdet;
00052 
00053   // Decomposed covariance matrix (rotation * diagonal)
00054   pf_matrix_t cr;
00055   pf_vector_t cd;
00056 
00057   // A random number generator
00058   //gsl_rng *rng;
00059 
00060 } pf_pdf_gaussian_t;
00061 
00062 
00063 // Create a gaussian pdf
00064 pf_pdf_gaussian_t *pf_pdf_gaussian_alloc(pf_vector_t x, pf_matrix_t cx);
00065 
00066 // Destroy the pdf
00067 void pf_pdf_gaussian_free(pf_pdf_gaussian_t *pdf);
00068 
00069 // Compute the value of the pdf at some point [z].
00070 //double pf_pdf_gaussian_value(pf_pdf_gaussian_t *pdf, pf_vector_t z);
00071 
00072 // Draw randomly from a zero-mean Gaussian distribution, with standard
00073 // deviation sigma.
00074 // We use the polar form of the Box-Muller transformation, explained here:
00075 //   http://www.taygeta.com/random/gaussian.html
00076 double pf_ran_gaussian(double sigma);
00077 
00078 // Generate a sample from the the pdf.
00079 pf_vector_t pf_pdf_gaussian_sample(pf_pdf_gaussian_t *pdf);
00080 
00081 
00082 #if 0
00083 
00084 /**************************************************************************
00085  * Discrete
00086  *************************************************************************/
00087 
00088 // Discrete PDF info
00089 typedef struct
00090 {
00091   // The list of discrete probs
00092   int prob_count;
00093   double *probs;
00094 
00095   // A random number generator
00096   gsl_rng *rng;
00097 
00098   // The discrete prob generator
00099   gsl_ran_discrete_t *ran;
00100 
00101 } pf_pdf_discrete_t;
00102 
00103 
00104 // Create a discrete pdf
00105 pf_pdf_discrete_t *pf_pdf_discrete_alloc(int count, double *probs);
00106 
00107 // Destroy the pdf
00108 void pf_pdf_discrete_free(pf_pdf_discrete_t *pdf);
00109 
00110 // Compute the value of the probability of some element [i]
00111 double pf_pdf_discrete_value(pf_pdf_discrete_t *pdf, int i);
00112 
00113 // Generate a sample from the the pdf.
00114 int pf_pdf_discrete_sample(pf_pdf_discrete_t *pdf);
00115 #endif
00116 
00117 #ifdef __cplusplus
00118 }
00119 #endif
00120 
00121 #endif


nav2d_localizer
Author(s): Sebastian Kasperski
autogenerated on Sun Apr 2 2017 04:05:16