root / scout / scoutsim / src / noise_gen.cpp @ 3a73516c
History  View  Annotate  Download (2.01 KB)
1 
/**


2 
* Copyright (c) 2011 Colony Project

3 
*

4 
* Permission is hereby granted, free of charge, to any person

5 
* obtaining a copy of this software and associated documentation

6 
* files (the "Software"), to deal in the Software without

7 
* restriction, including without limitation the rights to use,

8 
* copy, modify, merge, publish, distribute, sublicense, and/or sell

9 
* copies of the Software, and to permit persons to whom the

10 
* Software is furnished to do so, subject to the following

11 
* conditions:

12 
*

13 
* The above copyright notice and this permission notice shall be

14 
* included in all copies or substantial portions of the Software.

15 
*

16 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

17 
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES

18 
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

19 
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

20 
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

21 
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

22 
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

23 
* OTHER DEALINGS IN THE SOFTWARE.

24 
**/

25  
26 
/**

27 
* @file noise_gen.c

28 
* @brief Contains functions that generate noise for scoutsim sensor data

29 
*

30 
* @ingroup scoutsim

31 
*

32 
* Uses central limit theorem to generate gaussian noise.

33 
*

34 
* @author Colony Project, CMU Robotics Club

35 
* @author Priyanka Deo

36 
* @{

37 
**/

38  
39 
#include "noise_gen.h" 
40 
#include <stdio.h> 
41  
42 
int main()

43 
{ 
44 
printf("%f \n", add_gaussian_noise(5, 2)); 
45 
printf("%f \n", add_gaussian_noise(5, 2)); 
46 
printf("%f \n", add_gaussian_noise(5, 2)); 
47 
printf("%f \n", add_gaussian_noise(5, 2)); 
48 
printf("%f \n", add_gaussian_noise(5, 2)); 
49 
} 
50  
51 
float add_gaussian_noise(float reading, float max_dev) 
52 
{ 
53 
float unit_normal = get_unit_normal_random();

54 
return reading + max_dev*unit_normal;

55 
} 
56  
57 
float get_unit_normal_random()

58 
{ 
59 
int n=5; 
60 
float sum;

61  
62 
for(int i=0; i<n; i++) 
63 
{ 
64 
sum += rand()/double(RAND_MAX);

65 
printf("%f \t", sum);

66 
} 
67  
68 
sum = (float)n/2.0; 
69 
sum *= 2.0/(float)n; 
70 
return sum;

71 
} 
72  
73 
/** @} */
