Project

General

Profile

Revision 898

robot_main.c sends the raw sensor data for mapping points to USB. Commented out is untested code to send it over wireless and utilize the (deprecated?) odometry functions.

View differences:

robot_main.c
1
#include "dragonfly_lib.h"
2
#include "data_response.h"
1
#include <dragonfly_lib.h>
2
#include <wireless.h>
3 3
#include "smart_run_around_fsm.h"
4
//#include "odometry.h"
4 5

  
5
int main(void){
6
  wl_init(); 
7
  data_response_init();
8
  wl_token_ring_register();
9
  wl_token_ring_join();
10
  run_around_init();
11
  while(1) run_around_FSM();
12
   
13
  wl_terminate();
6
#define POLLING_INTERVAL 500	/* interval in ms to get sensor data */
7
#define MAP 1	// packet group for sending data points
8
#define POINT_RAW 1 // packet type for map data points w/ raw encoder data
9
#define POINT_ODO 2 // packet type for map data points w/ odometry data
10

  
11
int main(void)
12
{
13
    /* initialize components and join the token ring */
14
    //wl_init(); 
15
    //data_response_init();
16
    //wl_token_ring_register();
17
    //wl_token_ring_join();
18
    dragonfly_init(ALL_ON);
19
    run_around_init();
20
    //odometry_init();
21

  
22
    //int x, y; // use when sending odometry data
23
    //float theta;
24

  
25
    // use when sending raw encoder data
26
    int left_enc, right_enc, range1, range2, range3, range4, range5;
27
    
28
    int store[7];
29
    char send[8];   // for transmission
30

  
31
    while(1)
32
    {
33
	//wl_do();
34
	run_around_FSM();	/* traverse the environment and avoid obstacles ... */
35
	delay_ms(POLLING_INTERVAL);	/* until it's time to grab map data */
36
	//x = odometry_dx(); // use when sending odometry data
37
	//y = odometry_dy();
38
	//theta = odometry_angle();
39
	store[0] = encoder_get_dx(LEFT);    // left encoder distance
40
	store[1] = encoder_get_dx(RIGHT);   // right encoder distance
41
	store[2] = range_read_distance(IR1);	// IR1 range
42
	store[3] = range_read_distance(IR2);	// IR2 range
43
	store[4] = range_read_distance(IR3);	// IR3 range
44
	store[5] = range_read_distance(IR4);	// IR4 range
45
	store[6] = range_read_distance(IR5);	// IR5 range
46

  
47
	//send = (char) store;	// convert to chars for transmission
48
	// for (int i = 0; i < 7; i++)
49
	// {
50
	//     send[i] = (char) store[i];
51
	// }
52
	// send[7] = 0;
53

  
54
	// send point w/ raw encoder data
55
	// wl_send_global_packet(MAP, POINT_RAW, send, 7, 0);
56

  
57
	// send point w/ odometry data
58
	// wl_send_global_packet(MAP, POINT_ODO, send, 8, 0);
59
	
60
	// send raw encoder data point over serial as a string
61
	// send[7] = 0;
62
	// usb_puts(send);	// this is probably ugly, but I don't know any better
63
	
64
	// send raw encoder data point over serial as integers
65
	for (int i = 0; i < 7; i++)
66
	{
67
	    usb_puti(store[i]);
68
	}
69
	usb_putc("\n");
70
    }
71

  
72
    //wl_terminate();
73
    return 0;
14 74
}
75

  

Also available in: Unified diff