Project

General

Profile

Statistics
| Revision:

root / branches / simulator / projects / simulator / Rangefinder_with_noise.c @ 1003

History | View | Annotate | Download (966 Bytes)

1
 /**
2
 * @file rangefinder_with_noise.c
3
 * @author Colony Project
4
 *
5
 * @brief Returns rangefinder units with noise given distance in cm.
6
 *
7
 * Adds a random, normal amount of noise to a rangefinder
8
 * value given in cm. Returns approximate IR units .
9
 **/
10

    
11

    
12
double get_rangefinder(double dist_in_cm)
13
{
14
        double cm, IR, noise;
15
        // gauss_init(1, 0); // Params are chaos scalar and seed
16

    
17
        // noise = gauss_noise(void); // Gives ther noise
18

    
19
        cm = dist_in_cm; // Enter value between 7 and 18 for accurate results
20

    
21
        IR = 15.4005 * cm; // 15.4005 is an experimental value
22
        
23

    
24
        /*  Rangefinder is good for values between 7 and 18.
25
        *        3 < cm < 7 AND 18 < cm < 22 are significantly more erroneous.
26
        *        cm < 3 and cm > 22, rangefinder reports -1
27
        */
28
        if ( cm < 3 || cm > 22 )
29
        {
30
                return -1;
31
        }
32
        else if( cm < 7 || cm > 18 )
33
        {
34
                gauss_init(2, 0);
35
                noise = gauss_noise();
36
                return IR + noise;
37
        }
38
        else 
39
        {
40
                gauss_init(1, 0);
41
                noise = gauss_noise();
42
                return IR + noise;
43
        }
44
  
45
}