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.
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