File tree Expand file tree Collapse file tree 3 files changed +42
-3
lines changed Expand file tree Collapse file tree 3 files changed +42
-3
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ unsigned long ttask=0;
7
7
uint8_t task=0 ;
8
8
9
9
void setup () {
10
+ Serial.begin (115200 );
10
11
alvik.begin ();
11
12
ttask=millis ();
12
13
tmotor=millis ();
@@ -17,13 +18,21 @@ void loop() {
17
18
if (millis ()-tmotor>20 ){
18
19
tmotor=millis ();
19
20
alvik.updateMotors ();
21
+ alvik.kinematics ->updatePose (alvik.motor_control_left ->getTravel (), alvik.motor_control_right ->getTravel ());
22
+ Serial.print (" \t " );
23
+ Serial.print (alvik.kinematics ->getDeltaX ());
24
+ Serial.print (" \t " );
25
+ Serial.print (alvik.kinematics ->getDeltaY ());
26
+ Serial.print (" \t " );
27
+ Serial.print (alvik.kinematics ->getTheta ());
28
+ Serial.print (" \n " );
20
29
}
21
30
22
31
if (millis ()-ttask>2000 ){
23
32
ttask=millis ();
24
33
switch (task){
25
34
case 0 :
26
- alvik.drive (0 , 90 );
35
+ alvik.drive (50 , 0 );
27
36
break ;
28
37
case 1 :
29
38
alvik.drive (0 ,0 );
@@ -40,4 +49,5 @@ void loop() {
40
49
task=0 ;
41
50
}
42
51
}
52
+
43
53
}
Original file line number Diff line number Diff line change @@ -606,7 +606,35 @@ void Arduino_Alvik_Firmware::errorLed(const int error_code){
606
606
}
607
607
608
608
609
+
610
+ /* *****************************************************************************************************/
611
+ /* Kinematics */
612
+ /* *****************************************************************************************************/
613
+
609
614
void Arduino_Alvik_Firmware::drive (const float linear, const float angular){
610
615
kinematics->forward (linear, angular);
611
616
setRpm (kinematics->getLeftVelocity (),kinematics->getRightVelocity ());
612
617
}
618
+
619
+ void Arduino_Alvik_Firmware::rotate (const float angle){
620
+ float initial_angle=kinematics->getTheta ();
621
+ float error=angle-initial_angle;
622
+ unsigned long t=millis ();
623
+ while (abs (error)>0 ){
624
+ if (millis ()-t>20 ){
625
+ t=millis ();
626
+ updateMotors ();
627
+ }
628
+ if (error>0 ){
629
+ drive (0 ,90 );
630
+ }else {
631
+ drive (0 ,-90 );
632
+ }
633
+ kinematics->updatePose (motor_control_left->getTravel (),motor_control_right->getTravel ());
634
+ error=kinematics->getTheta ()-initial_angle;
635
+ Serial.println (error);
636
+ }
637
+ drive (0 ,0 );
638
+ updateMotors ();
639
+ }
640
+
Original file line number Diff line number Diff line change @@ -75,11 +75,11 @@ class Arduino_Alvik_Firmware{
75
75
uint8_t version_mid;
76
76
uint8_t version_low;
77
77
78
- Kinematics * kinematics;
79
78
80
79
81
80
public:
82
-
81
+ Kinematics * kinematics;
82
+
83
83
MotorControl * motor_control_right;
84
84
MotorControl * motor_control_left;
85
85
@@ -203,6 +203,7 @@ class Arduino_Alvik_Firmware{
203
203
// Kinematics
204
204
void drive (const float linear, const float angular);
205
205
206
+ void rotate (const float angle);
206
207
207
208
208
209
You can’t perform that action at this time.
0 commit comments