Sille Van Landschoot
/
RacingRobotsLib
Racing Robots Session
Fork of racing_robots by
Revision 7:a72215b1910b, committed 2015-02-25
- Comitter:
- pcordemans
- Date:
- Wed Feb 25 15:56:14 2015 +0000
- Parent:
- 6:0dc4e4225881
- Child:
- 8:c5dccd557aab
- Commit message:
- PID works, updated the comments
Changed in this revision
robot_logic.cpp | Show annotated file Show diff for this revision Revisions of this file |
robot_logic.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/robot_logic.cpp Wed Feb 25 09:10:13 2015 +0000 +++ b/robot_logic.cpp Wed Feb 25 15:56:14 2015 +0000 @@ -3,8 +3,8 @@ // Some defines #define MAX_SPEED 100 #define MAX_SENSOR 100 -#define MAX_REAL_SPEED 0.3 -#define MAX 0.3 +#define MAX_REAL_SPEED 0.75 + #define MIN 0 // Static scope variables @@ -22,7 +22,7 @@ void drive(int speed) { if (speed > MAX_SPEED || speed < -MAX_SPEED) { - printf("[ERROR] Drive speed out of range"); + error("Speed out of range"); return; } @@ -40,7 +40,7 @@ void turn(int turnspeed) { if (turnspeed > MAX_SPEED || turnspeed < -MAX_SPEED) { - error("Speed out of range"); + error("Turn out of range"); return; } internal_turnspeed = turnspeed; @@ -89,14 +89,10 @@ int pid_turn(int line_position) { - float right; - float left; - float derivative, proportional, integral = 0; float power; - float speed = internal_speed; - proportional = line_position; + proportional = line_position / 100.0; // Compute the derivative derivative = line_position - internal_previous_pos_of_line; @@ -110,12 +106,14 @@ // Compute the power power = (proportional * (internal_p) ) + (integral*(internal_i)) + (derivative*(internal_d)) ; - return power; + power = power * MAX_SPEED; + if (power < -MAX_SPEED) + power = -MAX_SPEED; + else if (power > MAX_SPEED) + power = MAX_SPEED; + return power ; } -/** - *Show speed, turn and sensor data - */ void show_stats(void) { m3pi.cls(); // Clear display
--- a/robot_logic.h Wed Feb 25 09:10:13 2015 +0000 +++ b/robot_logic.h Wed Feb 25 15:56:14 2015 +0000 @@ -46,7 +46,7 @@ /** * Calibrate the line follow sensors. - * Take note that the pololu should be placed over the line + * Take note that the robot should be placed over the line * before this function is called and that it will rotate to * both sides. */ @@ -72,7 +72,7 @@ void pid_init(int p, int i, int d); /** - * Determine PID turnspeed with which the pololu should + * Determine PID turnspeed with which the robot should * turn to follow the line at the given position. * * @param line_position The position of the line in a range of [-100, +100] @@ -98,6 +98,7 @@ * Turn on, off or toggle a specific LED * @param i the LED number LED_0 .. LED_7 * @param state the LED state LED_ON, LED_OFF, LED_TOGGLE + * @example led(LED_0, LED_ON); turns LED 0 on. */ void led(LedIndex i, LedState state);