190605
Dependencies: WS2812 RemoteIR PixelArray Adafruit_GFX
Revision 112:744fef64b8ba, committed 2019-06-29
- Comitter:
- ssuda
- Date:
- Sat Jun 29 14:31:52 2019 +0000
- Parent:
- 111:dc3d8ba48f83
- Commit message:
- 19.6.29
Changed in this revision
| RemoteIR.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/RemoteIR.lib Thu Jun 13 02:55:34 2019 +0000 +++ b/RemoteIR.lib Sat Jun 29 14:31:52 2019 +0000 @@ -1,1 +1,1 @@ -https://os.mbed.com/teams/embedded1/code/RemoteIR/#3e732988bf3f +https://os.mbed.com/teams/embedded1/code/RemoteIR/#f67e514c52b3
--- a/main.cpp Thu Jun 13 02:55:34 2019 +0000
+++ b/main.cpp Sat Jun 29 14:31:52 2019 +0000
@@ -174,10 +174,10 @@
motor.cal_start = 0;
motor.cal_stop = 0;
- motor.kp = 10.0;
- motor.kd = 0.0;
-// motor.ki = 5000;
- motor.max = 125;
+ motor.kp = 12.9;
+ motor.kd = 2.0;
+ motor.ki = 6000;
+ motor.max = 180;
DataComm = 0;
@@ -288,7 +288,9 @@
}
void tr_ready(void){
-
+ unsigned int right_max = 0.8;
+ unsigned int left_max = 0.805;
+// unsigned int sub = 0.5;
while(1){
// read current IR 1 ~ IR 5
read_ir();
@@ -298,11 +300,17 @@
// get current position
get_pos();
- pc.printf("pos: %d\r\n", pos);
- pc.printf("on_line: %d\r\n\n", on_line);
-
- tracing_pid();
-
+ if(pos<1800){ //turn r
+ motor.speed_r(right_max);
+ motor.speed_l(left_max + 0.13);
+ }
+ else if(pos>2250){ //turn l
+ motor.speed_r(right_max + 0.18);
+ motor.speed_l(left_max - 0.1);
+ }
+ else{
+ tracing_pid();
+ }
}
}
@@ -392,9 +400,9 @@
last_proportional = proportional;
- int power_difference = proportional / motor.kp+ derivative * motor.kd;
+ int power_difference = proportional / motor.kp+ integral/motor.ki + derivative * motor.kd;
- const float std = 970.0;
+ const float std = 500.0;
if(power_difference > motor.max)
power_difference = motor.max;
@@ -403,12 +411,12 @@
power_difference = -motor.max;
// bot position: right
- if(power_difference > 15){ //0.1 + p_d/std
+ if(power_difference > 10){ //0.1 + p_d/std
motor.speed_r((motor.max + power_difference)/std);
motor.speed_l((motor.max - power_difference)/std + 0.005);
}
// bot position: left
- else if(power_difference < -15){
+ else if(power_difference < -10){
motor.speed_r((motor.max + power_difference)/std);
motor.speed_l((motor.max - power_difference)/std + 0.005);
}