@@ -28,15 +28,17 @@ uint8_t code;
2828uint8_t label;
2929uint8_t control_type;
3030uint8_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;
3435
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 ;
4042
4143
4244float left, right, value;
@@ -51,6 +53,10 @@ float kp, ki, kd;
5153float x, y, theta;
5254
5355uint8_t servo_A, servo_B;
56+ float position_left, position_right;
57+
58+ int counter_version = 9 ;
59+ uint8_t version[3 ];
5460
5561
5662void setup (){
@@ -62,7 +68,7 @@ void setup(){
6268 line.begin ();
6369 tof.begin ();
6470
65- uint8_t version[ 3 ];
71+
6672 alvik.getVersion (version[0 ], version[1 ], version[2 ]);
6773 msg_size = packeter.packetC3B (0x7E , version[0 ], version[1 ], version[2 ]);
6874 alvik.serial ->write (packeter.msg ,msg_size);
@@ -77,6 +83,7 @@ void setup(){
7783 tsensor=millis ();
7884 timu=millis ();
7985 tack=millis ();
86+ tbehaviours=millis ();
8087}
8188
8289void loop (){
@@ -132,6 +139,14 @@ void loop(){
132139 }
133140 }
134141 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+
135150
136151 case ' S' :
137152 packeter.unpacketC2B (code,servo_A,servo_B);
@@ -181,6 +196,17 @@ void loop(){
181196 ack_check = false ;
182197 }
183198 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 ;
184210 }
185211 }
186212
@@ -205,7 +231,7 @@ void loop(){
205231 break ;
206232 case 3 :
207233 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 ());
209235 alvik.serial ->write (packeter.msg ,msg_size);
210236 }
211237 break ;
@@ -221,7 +247,7 @@ void loop(){
221247 }
222248
223249 // motors update & publish
224- if (millis ()-tmotor>20 ){
250+ if (millis ()-tmotor>= 20 ){
225251 tmotor=millis ();
226252 alvik.updateMotors ();
227253 alvik.updateKinematics ();
@@ -242,6 +268,12 @@ void loop(){
242268 // acknowledge
243269 if (millis ()-tack > 100 ){
244270 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+ }
245277 if (ack_check && alvik.isTargetReached ()){
246278 if (ack_required == MOVEMENT_ROTATE){
247279 msg_size = packeter.packetC1B (' x' , ' R' );
@@ -256,6 +288,11 @@ void loop(){
256288 alvik.serial ->write (packeter.msg , msg_size);
257289 }
258290
291+ if (millis ()-tbehaviours > 100 ){
292+ tbehaviours = millis ();
293+ alvik.updateBehaviours ();
294+ }
295+
259296 // imu update
260297 if (millis ()-timu>10 ){
261298 timu=millis ();
0 commit comments