Time is good

Dependencies:   RoboClaw mbed

Fork of Robot2016_2-0 by ARES

Committer:
IceTeam
Date:
Wed Jan 20 18:39:31 2016 +0000
Revision:
26:b6e59194efba
Parent:
23:3a34b8b70da6
Ca marche pas trop trop mal, on a toujours l'erreur sur le d?placement, mais au moins ?a peut vaguement se d?placer;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sype 0:ad9600df4a70 1 #include "Odometry.h"
IceTeam 17:e32b4b54fc04 2 /** Dependencies :
IceTeam 17:e32b4b54fc04 3 Map/Point.h
IceTeam 17:e32b4b54fc04 4 Map/define.h
IceTeam 17:e32b4b54fc04 5 Map/Obstacles/Obstacle.h
IceTeam 19:b2f3757fd7ee 6
IceTeam 19:b2f3757fd7ee 7 Test en cours :
IceTeam 19:b2f3757fd7ee 8 * Un obstacle seulement
IceTeam 19:b2f3757fd7ee 9 * Radius du robot réduit à 1 (defines.cpp)
IceTeam 19:b2f3757fd7ee 10 * Nombreux
IceTeam 17:e32b4b54fc04 11 */
IceTeam 13:5355aed288b0 12 #include "Map/Map.h"
sype 0:ad9600df4a70 13
sype 0:ad9600df4a70 14 #define dt 10000
sype 10:ae3178aa94e9 15 #define ATTENTE 0
sype 10:ae3178aa94e9 16 #define GO 1
sype 10:ae3178aa94e9 17 #define STOP 2
sype 0:ad9600df4a70 18
sype 10:ae3178aa94e9 19 InterruptIn mybutton(USER_BUTTON);
sype 10:ae3178aa94e9 20 DigitalIn button(USER_BUTTON);
sype 2:abdf8c6823a1 21 DigitalOut led(LED1);
sype 0:ad9600df4a70 22 Ticker ticker;
sype 10:ae3178aa94e9 23 //Serial pc(USBTX, USBRX);
sype 10:ae3178aa94e9 24 Serial pc(PA_9, PA_10);
IceTeam 21:077bc7634b90 25 Serial logger (PA_9, PA_10);
sype 10:ae3178aa94e9 26 RoboClaw roboclaw(460800, PA_11, PA_12);
sype 10:ae3178aa94e9 27 Odometry odo(63.2, 63.3, 252, 4096, roboclaw);
sype 10:ae3178aa94e9 28
sype 10:ae3178aa94e9 29 int i = 0;
sype 0:ad9600df4a70 30
sype 0:ad9600df4a70 31 void update_main(void);
sype 2:abdf8c6823a1 32 void init(void);
sype 10:ae3178aa94e9 33 void pressed(void);
sype 10:ae3178aa94e9 34 void unpressed(void);
sype 0:ad9600df4a70 35
IceTeam 9:e39b218ab20d 36 /** Debut du programme */
sype 0:ad9600df4a70 37 int main(void)
sype 10:ae3178aa94e9 38 {
sype 10:ae3178aa94e9 39 double angle_v = 2*PI/5;
sype 10:ae3178aa94e9 40 double distance_v = 200.0;
IceTeam 13:5355aed288b0 41 std::vector<SimplePoint> path;
IceTeam 13:5355aed288b0 42 Map map;
IceTeam 13:5355aed288b0 43
sype 2:abdf8c6823a1 44 init();
IceTeam 18:0f1fefe78266 45 //Construction des obstacles
IceTeam 17:e32b4b54fc04 46 map.build();
IceTeam 26:b6e59194efba 47 map.AStar(odo.getX(), odo.getY(), 1400, 1000, 100);
IceTeam 14:a394e27b8cb2 48 path = map.path;
IceTeam 14:a394e27b8cb2 49
IceTeam 18:0f1fefe78266 50 for(int i=0; i<path.size();i++) {
IceTeam 13:5355aed288b0 51 odo.GotoXYT(path[i].x, path[i].y, 0);
IceTeam 18:0f1fefe78266 52 }
IceTeam 13:5355aed288b0 53
IceTeam 26:b6e59194efba 54
IceTeam 26:b6e59194efba 55 map.AStar(odo.getX(), odo.getY(), 200, 1000, 100);
IceTeam 26:b6e59194efba 56 path = map.path;
IceTeam 26:b6e59194efba 57
IceTeam 26:b6e59194efba 58 for(int i=0; i<path.size();i++) {
IceTeam 26:b6e59194efba 59 odo.GotoXYT(path[i].x, path[i].y, PI);
IceTeam 26:b6e59194efba 60 }
IceTeam 26:b6e59194efba 61
IceTeam 13:5355aed288b0 62 //odo.GotoXYT(500, 50, 0);
sype 10:ae3178aa94e9 63 //odo.GotoXYT(200, 0, 0);
sype 10:ae3178aa94e9 64 //odo.GotoXYT(0, 0, 0);
sype 10:ae3178aa94e9 65
sype 10:ae3178aa94e9 66 //odo.GotoThet(-PI/2);
sype 10:ae3178aa94e9 67 wait(2000);
sype 10:ae3178aa94e9 68 //odo.GotoXYT(2250,500,0);
sype 2:abdf8c6823a1 69 while(1);
sype 2:abdf8c6823a1 70 }
sype 2:abdf8c6823a1 71
sype 2:abdf8c6823a1 72 void init(void)
sype 0:ad9600df4a70 73 {
sype 10:ae3178aa94e9 74 pc.baud(9600);
sype 2:abdf8c6823a1 75 pc.printf("Hello from main !\n\r");
sype 10:ae3178aa94e9 76 wait_ms(500);
sype 10:ae3178aa94e9 77
IceTeam 26:b6e59194efba 78 odo.setPos(0, 1000, 0);
sype 2:abdf8c6823a1 79 roboclaw.ForwardM1(ADR, 0);
sype 2:abdf8c6823a1 80 roboclaw.ForwardM2(ADR, 0);
sype 10:ae3178aa94e9 81
sype 10:ae3178aa94e9 82 while(button);
sype 10:ae3178aa94e9 83 wait(1);
sype 10:ae3178aa94e9 84 mybutton.fall(&pressed);
sype 10:ae3178aa94e9 85 mybutton.rise(&unpressed);
sype 0:ad9600df4a70 86 ticker.attach_us(&update_main,dt); // 100 Hz
sype 0:ad9600df4a70 87 }
sype 0:ad9600df4a70 88
sype 0:ad9600df4a70 89 void update_main(void)
sype 0:ad9600df4a70 90 {
sype 0:ad9600df4a70 91 odo.update_odo();
sype 10:ae3178aa94e9 92 //pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", odo.getX(), odo.getY(), odo.getTheta()*180/PI);
sype 2:abdf8c6823a1 93 //if(pc.readable()) if(pc.getc()=='l') led = !led;
sype 0:ad9600df4a70 94 }
sype 10:ae3178aa94e9 95
sype 10:ae3178aa94e9 96 void pressed(void)
sype 10:ae3178aa94e9 97 {
sype 10:ae3178aa94e9 98 if(i==0) {
sype 10:ae3178aa94e9 99 roboclaw.ForwardM1(ADR, 0);
sype 10:ae3178aa94e9 100 roboclaw.ForwardM2(ADR, 0);
sype 10:ae3178aa94e9 101 //pc.printf("X : %3.2f\tY : %3.2f\tTheta : %3.2f\n\r", odo.getX(), odo.getY(), odo.getTheta()*180/PI);
sype 10:ae3178aa94e9 102 i++;
sype 10:ae3178aa94e9 103 }
sype 10:ae3178aa94e9 104 }
sype 10:ae3178aa94e9 105
sype 10:ae3178aa94e9 106 void unpressed(void)
sype 10:ae3178aa94e9 107 {
sype 10:ae3178aa94e9 108 if(i==1) {
sype 10:ae3178aa94e9 109 i--;
sype 10:ae3178aa94e9 110 }
sype 10:ae3178aa94e9 111 }