@@ -19,29 +19,38 @@ Arduino_AlvikCarrier::Arduino_AlvikCarrier(){
19
19
wire = new TwoWire (I2C_1_SDA, I2C_1_SCL);
20
20
21
21
// I2C external bus
22
- ext_wire = new TwoWire (I2C_2_SDA,I2C_2_SCL);
22
+ ext_wire = new TwoWire (I2C_2_SDA, I2C_2_SCL);
23
23
24
24
// uart to esp32
25
- serial = new HardwareSerial (UART_RX,UART_TX);
25
+ serial = new HardwareSerial (UART_RX, UART_TX);
26
26
27
27
// RGB leds
28
- led1 = new RGBled (LED_1_RED,LED_1_GREEN,LED_1_BLUE);
29
- led2 = new RGBled (LED_2_RED,LED_2_GREEN,LED_2_BLUE);
28
+ led1 = new RGBled (LED_1_RED, LED_1_GREEN, LED_1_BLUE);
29
+ led2 = new RGBled (LED_2_RED, LED_2_GREEN, LED_2_BLUE);
30
30
31
31
// motors
32
- motor_left = new DCmotor (MOTOR_LEFT_A,MOTOR_LEFT_A_CH, MOTOR_LEFT_B, MOTOR_LEFT_B_CH,MOTOR_LEFT_FLIP);
33
- motor_right = new DCmotor (MOTOR_RIGHT_A,MOTOR_RIGHT_A_CH,MOTOR_RIGHT_B,MOTOR_RIGHT_B_CH,MOTOR_RIGHT_FLIP);
32
+ motor_left = new DCmotor (MOTOR_LEFT_A, MOTOR_LEFT_A_CH, MOTOR_LEFT_B, MOTOR_LEFT_B_CH, MOTOR_LEFT_FLIP);
33
+ motor_right = new DCmotor (MOTOR_RIGHT_A, MOTOR_RIGHT_A_CH, MOTOR_RIGHT_B, MOTOR_RIGHT_B_CH, MOTOR_RIGHT_FLIP);
34
34
35
35
// encoders
36
- encoder_left = new Encoder (TIM3,ENC_LEFT_FLIP);
37
- encoder_right = new Encoder (TIM5,ENC_RIGHT_FLIP);
36
+ encoder_left = new Encoder (TIM3, ENC_LEFT_FLIP);
37
+ encoder_right = new Encoder (TIM5, ENC_RIGHT_FLIP);
38
38
39
39
// motor control
40
- motor_control_left = new MotorControl (motor_left,encoder_left,MOTOR_KP_DEFAULT,MOTOR_KI_DEFAULT,MOTOR_KD_DEFAULT,MOTOR_CONTROL_PERIOD);
41
- motor_control_right = new MotorControl (motor_right,encoder_right,MOTOR_KP_DEFAULT,MOTOR_KI_DEFAULT,MOTOR_KD_DEFAULT,MOTOR_CONTROL_PERIOD);
40
+ motor_control_left = new MotorControl (motor_left, encoder_left,
41
+ MOTOR_KP_DEFAULT, MOTOR_KI_DEFAULT, MOTOR_KD_DEFAULT,
42
+ MOTOR_CONTROL_PERIOD, CONTROL_MODE_LINEAR, MOTOR_CONTROL_STEP,
43
+ POSITION_KP_DEFAULT, POSITION_KI_DEFAULT, POSITION_KD_DEFAULT,
44
+ POSITION_CONTROL_PERIOD, POSITION_MAX_SPEED);
45
+
46
+ motor_control_right = new MotorControl (motor_right, encoder_right,
47
+ MOTOR_KP_DEFAULT, MOTOR_KI_DEFAULT, MOTOR_KD_DEFAULT,
48
+ MOTOR_CONTROL_PERIOD, CONTROL_MODE_LINEAR, MOTOR_CONTROL_STEP,
49
+ POSITION_KP_DEFAULT, POSITION_KI_DEFAULT, POSITION_KD_DEFAULT,
50
+ POSITION_CONTROL_PERIOD, POSITION_MAX_SPEED);
42
51
43
52
// color sensor
44
- apds9960 = new APDS9960 (*wire,APDS_INT);
53
+ apds9960 = new APDS9960 (*wire, APDS_INT);
45
54
46
55
// servo
47
56
servo_A = new Servo ();
@@ -57,16 +66,16 @@ Arduino_AlvikCarrier::Arduino_AlvikCarrier(){
57
66
imu = new LSM6DSOSensor (wire, LSM6DSO_I2C_ADD_L);
58
67
ipKnobs = &iKnobs;
59
68
imu_delta_time = MOTION_FX_ENGINE_DELTATIME;
60
- sample_to_discard= 0 ;
69
+ sample_to_discard = 0 ;
61
70
62
71
// version
63
72
version_high = VERSION_BYTE_HIGH;
64
73
version_mid = VERSION_BYTE_MID;
65
74
version_low = VERSION_BYTE_LOW;
66
75
67
76
// kinematics
68
- kinematics = new Kinematics (WHEEL_TRACK_MM,WHEEL_DIAMETER_MM);
69
- kinematics_movement= 0 ;
77
+ kinematics = new Kinematics (WHEEL_TRACK_MM, WHEEL_DIAMETER_MM);
78
+ kinematics_movement = 0 ;
70
79
71
80
}
72
81
@@ -125,9 +134,9 @@ int Arduino_AlvikCarrier::begin(){
125
134
}
126
135
127
136
void Arduino_AlvikCarrier::getVersion (uint8_t &high_byte, uint8_t &mid_byte, uint8_t &low_byte){
128
- high_byte= version_high;
129
- mid_byte= version_mid;
130
- low_byte= version_low;
137
+ high_byte = version_high;
138
+ mid_byte = version_mid;
139
+ low_byte = version_low;
131
140
}
132
141
133
142
@@ -136,7 +145,7 @@ void Arduino_AlvikCarrier::getVersion(uint8_t &high_byte, uint8_t &mid_byte, uin
136
145
/* *****************************************************************************************************/
137
146
138
147
int Arduino_AlvikCarrier::beginAPDS (){
139
- pinMode (APDS_LED,OUTPUT);
148
+ pinMode (APDS_LED, OUTPUT);
140
149
enableIlluminator ();
141
150
if (!apds9960->begin ()){
142
151
return ERROR_APDS;
@@ -150,13 +159,13 @@ void Arduino_AlvikCarrier::updateAPDS(){
150
159
}
151
160
// digitalWrite(APDS_LED,HIGH);
152
161
if (apds9960->colorAvailable ()){
153
- apds9960->readColor (bottom_red,bottom_green,bottom_blue,bottom_clear);
162
+ apds9960->readColor (bottom_red, bottom_green, bottom_blue, bottom_clear);
154
163
}
155
164
// digitalWrite(APDS_LED,LOW);
156
165
}
157
166
158
167
void Arduino_AlvikCarrier::setIlluminator (uint8_t value){
159
- digitalWrite (APDS_LED,value);
168
+ digitalWrite (APDS_LED, value);
160
169
}
161
170
162
171
void Arduino_AlvikCarrier::enableIlluminator (){
@@ -208,11 +217,11 @@ void Arduino_AlvikCarrier::setServoB(int position){
208
217
/* *****************************************************************************************************/
209
218
210
219
int Arduino_AlvikCarrier::beginI2Cselect (){
211
- pinMode (SELECT_I2C_BUS,OUTPUT);
220
+ pinMode (SELECT_I2C_BUS, OUTPUT);
212
221
}
213
222
214
223
void Arduino_AlvikCarrier::setExternalI2C (uint8_t state){
215
- digitalWrite (SELECT_I2C_BUS,state);
224
+ digitalWrite (SELECT_I2C_BUS, state);
216
225
}
217
226
218
227
void Arduino_AlvikCarrier::connectExternalI2C (){
@@ -348,14 +357,14 @@ void Arduino_AlvikCarrier::updateTouch(){
348
357
}
349
358
350
359
bool Arduino_AlvikCarrier::getAnyTouchPressed (){
351
- if (touch_sensor->touched (touch_status,TOUCH_PAD_GUARD)){
360
+ if (touch_sensor->touched (touch_status, TOUCH_PAD_GUARD)){
352
361
return true ;
353
362
}
354
363
return false ;
355
364
}
356
365
357
366
bool Arduino_AlvikCarrier::getTouchKey (const uint8_t key){
358
- if (touch_sensor->touched (touch_status,key)&&touch_sensor->touched (touch_status,TOUCH_PAD_GUARD)){
367
+ if (touch_sensor->touched (touch_status, key)&&touch_sensor->touched (touch_status, TOUCH_PAD_GUARD)){
359
368
return true ;
360
369
}
361
370
return false ;
@@ -411,23 +420,23 @@ bool Arduino_AlvikCarrier::getTouchDelete(){
411
420
/* *****************************************************************************************************/
412
421
413
422
int Arduino_AlvikCarrier::beginLeds (){
414
- pinMode (LED_BUILTIN,OUTPUT);
423
+ pinMode (LED_BUILTIN, OUTPUT);
415
424
// turn off leds
416
425
led1->clear ();
417
426
led2->clear ();
418
427
return 0 ;
419
428
}
420
429
421
430
void Arduino_AlvikCarrier::setLedBuiltin (const uint8_t value){
422
- digitalWrite (LED_BUILTIN,value);
431
+ digitalWrite (LED_BUILTIN, value);
423
432
}
424
433
425
434
void Arduino_AlvikCarrier::setLedLeft (const uint32_t color){
426
435
led1->set (color);
427
436
}
428
437
429
438
void Arduino_AlvikCarrier::setLedLeft (const uint32_t red, const uint32_t green, const uint32_t blue){
430
- led1->set (red,green,blue);
439
+ led1->set (red, green, blue);
431
440
}
432
441
433
442
void Arduino_AlvikCarrier::setLedLeftRed (const uint32_t red){
@@ -447,7 +456,7 @@ void Arduino_AlvikCarrier::setLedRight(const uint32_t color){
447
456
}
448
457
449
458
void Arduino_AlvikCarrier::setLedRight (const uint32_t red, const uint32_t green, const uint32_t blue){
450
- led2->set (red,green,blue);
459
+ led2->set (red, green, blue);
451
460
}
452
461
453
462
void Arduino_AlvikCarrier::setLedRightRed (const uint32_t red){
@@ -468,8 +477,8 @@ void Arduino_AlvikCarrier::setLeds(const uint32_t color){
468
477
}
469
478
470
479
void Arduino_AlvikCarrier::setLeds (const uint32_t red, const uint32_t green, const uint32_t blue){
471
- setLedLeft (red,green,blue);
472
- setLedRight (red,green,blue);
480
+ setLedLeft (red, green, blue);
481
+ setLedRight (red, green, blue);
473
482
}
474
483
475
484
void Arduino_AlvikCarrier::setAllLeds (const uint8_t value){
@@ -613,26 +622,26 @@ void Arduino_AlvikCarrier::errorLed(const int error_code){
613
622
614
623
void Arduino_AlvikCarrier::drive (const float linear, const float angular){
615
624
kinematics->forward (linear, angular);
616
- setRpm (kinematics->getLeftVelocity (),kinematics->getRightVelocity ());
625
+ setRpm (kinematics->getLeftVelocity (), kinematics->getRightVelocity ());
617
626
}
618
627
619
628
void Arduino_AlvikCarrier::rotate (const float angle){
620
- float initial_angle= kinematics->getTheta ();
621
- float final_angle= angle+initial_angle;
622
- float error= angle;
623
- unsigned long t= millis ();
629
+ float initial_angle = kinematics->getTheta ();
630
+ float final_angle = angle+initial_angle;
631
+ float error = angle;
632
+ unsigned long t = millis ();
624
633
while (abs (error)>2 ){
625
634
if (millis ()-t>20 ){
626
- t= millis ();
635
+ t = millis ();
627
636
updateMotors ();
628
637
kinematics->inverse (motor_control_left->getRPM (),motor_control_right->getRPM ());
629
638
kinematics->updatePose ();
630
- error= final_angle-kinematics->getTheta ();
639
+ error = final_angle-kinematics->getTheta ();
631
640
}
632
641
if (angle>0 ){
633
- drive (0 ,40 );
642
+ drive (0 , 40 );
634
643
}else {
635
- drive (0 ,-40 );
644
+ drive (0 , -40 );
636
645
}
637
646
}
638
647
drive (0 ,0 );
@@ -644,26 +653,26 @@ void Arduino_AlvikCarrier::rotate(const float angle){
644
653
645
654
646
655
void Arduino_AlvikCarrier::move (const float distance){
647
- float initial_travel= kinematics->getTravel ();
648
- float final_travel= abs (distance)+initial_travel;
649
- float error= abs (distance);
650
- unsigned long t= millis ();
656
+ float initial_travel = kinematics->getTravel ();
657
+ float final_travel = abs (distance)+initial_travel;
658
+ float error = abs (distance);
659
+ unsigned long t = millis ();
651
660
652
661
while (error>2 ){
653
662
if (millis ()-t>20 ){
654
- t= millis ();
663
+ t = millis ();
655
664
updateMotors ();
656
- kinematics->inverse (motor_control_left->getRPM (),motor_control_right->getRPM ());
665
+ kinematics->inverse (motor_control_left->getRPM (), motor_control_right->getRPM ());
657
666
kinematics->updatePose ();
658
- error= final_travel-kinematics->getTravel ();
667
+ error = final_travel-kinematics->getTravel ();
659
668
}
660
669
if (distance>0 ){
661
- drive (40 ,0 );
670
+ drive (40 , 0 );
662
671
}else {
663
- drive (-40 ,0 );
672
+ drive (-40 , 0 );
664
673
}
665
674
}
666
- drive (0 ,0 );
675
+ drive (0 , 0 );
667
676
updateMotors ();
668
677
motor_control_left->brake ();
669
678
motor_control_right->brake ();
@@ -673,7 +682,7 @@ void Arduino_AlvikCarrier::move(const float distance){
673
682
674
683
675
684
void Arduino_AlvikCarrier::updateKinematics (){
676
- kinematics->inverse (motor_control_left->getRPM (),motor_control_right->getRPM ());
685
+ kinematics->inverse (motor_control_left->getRPM (), motor_control_right->getRPM ());
677
686
kinematics->updatePose ();
678
687
if (kinematics_movement!=0 ){
679
688
// do controls
0 commit comments