-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomeback.js
80 lines (64 loc) · 1.81 KB
/
comeback.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
var sphero = require("sphero")
orb = sphero("/dev/tty.Sphero-YRW-AMP-SPP");
const defaultSpheroColor = "lightskyblue";
const dangerSpheroColor = "darkred";
const calmSpheroColor = "mediumseagreen";
orb.connect(function() {
var already_odo_init = false;
var already_backed = false;
var odo_bgn_x = 0;
var odo_bgn_y = 0;
function changeDangerColor() {
orb.color(dangerSpheroColor);
setTimeout(function() {
orb.color(defaultSpheroColor);
}, 1000);
};
function changeCalmColor() {
orb.color(calmSpheroColor);
setTimeout(function() {
orb.color(defaultSpheroColor);
}, 1000);
};
function back2me(dist_x, dist_y) {
already_backed = true;
console.log("back2me");
console.log("dist_x:", dist_x);
console.log("dist_y:", dist_y);
var diff_x = odo_bgn_x-dist_x;
var diff_y = odo_bgn_y-dist_y;
deg_rad = Math.atan2(diff_y, diff_x);
deg_ang = deg_rad/(Math.PI/180);
if(deg_ang < 0) {
deg_ang = 360+deg_ang;
}
console.log(deg_ang);
orb.roll(120, deg_ang);
changeCalmColor();
};
function prepare4back(data) {
console.log("prepare4back");
prepare_x = parseInt(data.xOdometer.value);
prepare_y = parseInt(data.yOdometer.value);
console.log("prepare_x:", prepare_x);
console.log("prepare_y:", prepare_y);
if(!already_odo_init) {
odo_bgn_x = prepare_x;
odo_bgn_y = prepare_y;
already_odo_init = true;
}
setTimeout(function() {
if(!already_backed) {
back2me(prepare_x, prepare_y);
}
}, 10000);
};
orb.color(defaultSpheroColor);
orb.detectCollisions();
orb.streamOdometer();
orb.streamOdometer.sps = 1;
orb.on("collision", changeDangerColor);
orb.on("odometer", function(data) {
prepare4back(data); // NO need for calling this after back2me
});
});