@@ -28,15 +28,17 @@ uint8_t code;
28
28
uint8_t label;
29
29
uint8_t control_type;
30
30
uint8_t msg_size;
31
- uint8_t ack_required=0 ;
32
- bool ack_check=false ;
33
- uint8_t ack_code=0 ;
31
+ uint8_t ack_required = 0 ;
32
+ bool ack_check = false ;
33
+ uint8_t ack_code = 0 ;
34
+ uint8_t behaviours;
34
35
35
- unsigned long tmotor=0 ;
36
- unsigned long tsend=0 ;
37
- unsigned long tsensor=0 ;
38
- unsigned long timu=0 ;
39
- unsigned long tack=0 ;
36
+ unsigned long tmotor = 0 ;
37
+ unsigned long tsend = 0 ;
38
+ unsigned long tsensor = 0 ;
39
+ unsigned long timu = 0 ;
40
+ unsigned long tack = 0 ;
41
+ unsigned long tbehaviours = 0 ;
40
42
41
43
42
44
float left, right, value;
@@ -51,6 +53,10 @@ float kp, ki, kd;
51
53
float x, y, theta;
52
54
53
55
uint8_t servo_A, servo_B;
56
+ float position_left, position_right;
57
+
58
+ int counter_version = 9 ;
59
+ uint8_t version[3 ];
54
60
55
61
56
62
void setup (){
@@ -62,7 +68,7 @@ void setup(){
62
68
line.begin ();
63
69
tof.begin ();
64
70
65
- uint8_t version[ 3 ];
71
+
66
72
alvik.getVersion (version[0 ], version[1 ], version[2 ]);
67
73
msg_size = packeter.packetC3B (0x7E , version[0 ], version[1 ], version[2 ]);
68
74
alvik.serial ->write (packeter.msg ,msg_size);
@@ -77,6 +83,7 @@ void setup(){
77
83
tsensor=millis ();
78
84
timu=millis ();
79
85
tack=millis ();
86
+ tbehaviours=millis ();
80
87
}
81
88
82
89
void loop (){
@@ -132,6 +139,14 @@ void loop(){
132
139
}
133
140
}
134
141
break ;
142
+
143
+
144
+ case ' A' :
145
+ packeter.unpacketC2F (code,position_left, position_right);
146
+ alvik.disableKinematicsMovement ();
147
+ alvik.setPosition (position_left, position_right);
148
+ break ;
149
+
135
150
136
151
case ' S' :
137
152
packeter.unpacketC2B (code,servo_A,servo_B);
@@ -181,6 +196,17 @@ void loop(){
181
196
ack_check = false ;
182
197
}
183
198
break ;
199
+
200
+ case ' B' :
201
+ packeter.unpacketC1B (code, behaviours);
202
+ switch (behaviours){
203
+ case 1 :
204
+ alvik.setBehaviour (LIFT_ILLUMINATOR, true );
205
+ break ;
206
+ default :
207
+ alvik.setBehaviour (ALL_BEHAVIOURS, false );
208
+ }
209
+ break ;
184
210
}
185
211
}
186
212
@@ -205,7 +231,7 @@ void loop(){
205
231
break ;
206
232
case 3 :
207
233
if (tof.update_rois ()){
208
- msg_size = packeter.packetC7I (' f' , tof.getLeft (), tof.getCenterLeft (), tof.getCenter (), tof.getCenterRight (), tof.getRight (), tof.get_min_range_top_mm (), tof.get_max_range_bottom_mm ());
234
+ msg_size = packeter.packetC7I (' f' , tof.getLeft (), tof.getCenterLeft (), tof.getCenter (), tof.getCenterRight (), tof.getRight (), tof.getTop (), tof.getBottom ());
209
235
alvik.serial ->write (packeter.msg ,msg_size);
210
236
}
211
237
break ;
@@ -221,7 +247,7 @@ void loop(){
221
247
}
222
248
223
249
// motors update & publish
224
- if (millis ()-tmotor>20 ){
250
+ if (millis ()-tmotor>= 20 ){
225
251
tmotor=millis ();
226
252
alvik.updateMotors ();
227
253
alvik.updateKinematics ();
@@ -242,6 +268,12 @@ void loop(){
242
268
// acknowledge
243
269
if (millis ()-tack > 100 ){
244
270
tack = millis ();
271
+ if (counter_version>0 ){
272
+ counter_version--;
273
+ alvik.getVersion (version[0 ], version[1 ], version[2 ]);
274
+ msg_size = packeter.packetC3B (0x7E , version[0 ], version[1 ], version[2 ]);
275
+ alvik.serial ->write (packeter.msg ,msg_size);
276
+ }
245
277
if (ack_check && alvik.isTargetReached ()){
246
278
if (ack_required == MOVEMENT_ROTATE){
247
279
msg_size = packeter.packetC1B (' x' , ' R' );
@@ -256,6 +288,11 @@ void loop(){
256
288
alvik.serial ->write (packeter.msg , msg_size);
257
289
}
258
290
291
+ if (millis ()-tbehaviours > 100 ){
292
+ tbehaviours = millis ();
293
+ alvik.updateBehaviours ();
294
+ }
295
+
259
296
// imu update
260
297
if (millis ()-timu>10 ){
261
298
timu=millis ();
0 commit comments