assert1

Dependencies:   mbed X_NUCLEO_IHM02A1

Committer:
JimmyAREM
Date:
Sat Mar 30 15:10:23 2019 +0000
Revision:
3:06cbe2f6c494
Parent:
2:977799d72329
odo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pierr 2:977799d72329 1 #ifndef CHEMIN_H
Pierr 2:977799d72329 2 #define CHEMIN_H
Pierr 2:977799d72329 3 // C code to implement Priority Queue
Pierr 2:977799d72329 4 // using Linked List
Pierr 2:977799d72329 5 // https://www.geeksforgeeks.org/priority-queue-using-linked-list/
Pierr 2:977799d72329 6
Pierr 2:977799d72329 7 // C code for path fining
Pierr 2:977799d72329 8 // https://github.com/AtsushiSakai/PythonRobotics
Pierr 2:977799d72329 9
Pierr 2:977799d72329 10 //Exemple:
Pierr 2:977799d72329 11 /*
Pierr 2:977799d72329 12 int vitesse_deplacement = 200;
Pierr 2:977799d72329 13
Pierr 2:977799d72329 14 calc_distances(20,180,270,180); //x_départ , y_arrivée , x_arrivée, y_arrivée
Pierr 2:977799d72329 15 Node* commandes = (Node*)malloc(sizeof(Node));
Pierr 2:977799d72329 16 commandes = traduction_points_commandes(trouver_chemin(20,180,270,180));
Pierr 2:977799d72329 17 while(!isEmpty(&commandes)){
Pierr 2:977799d72329 18 int angle,distance_avancement_cm,_ = 0;
Pierr 2:977799d72329 19 peek(&commandes,&angle,&distance_avancement_cm,&_); //on recupere les infos du point
Pierr 2:977799d72329 20 pop(&commandes);
Pierr 2:977799d72329 21 printf("rotation %d, avancement de %d\n",angle,distance_avancement_cm);
Pierr 2:977799d72329 22 if(distance_avancement_cm != 0 && angle != 0) {
Pierr 2:977799d72329 23 test_ligne_droite(10*distance_avancement_cm, vitesse_deplacement);
Pierr 2:977799d72329 24 test_rotation_rel(angle,vitesse_deplacement);
Pierr 2:977799d72329 25 }
Pierr 2:977799d72329 26 }
Pierr 2:977799d72329 27 */
Pierr 2:977799d72329 28
Pierr 2:977799d72329 29
Pierr 2:977799d72329 30 #include <stdio.h>
Pierr 2:977799d72329 31 #include <stdlib.h>
Pierr 2:977799d72329 32 #include <time.h>
Pierr 2:977799d72329 33
Pierr 2:977799d72329 34
Pierr 2:977799d72329 35
Pierr 2:977799d72329 36
Pierr 2:977799d72329 37 // Node
Pierr 2:977799d72329 38 typedef struct node {
Pierr 2:977799d72329 39 int x;
Pierr 2:977799d72329 40 int y;
Pierr 2:977799d72329 41 int distance;
Pierr 2:977799d72329 42
Pierr 2:977799d72329 43 // Lower values indicate higher priority
Pierr 2:977799d72329 44 int priority;
Pierr 2:977799d72329 45
Pierr 2:977799d72329 46 struct node* next;
Pierr 2:977799d72329 47
Pierr 2:977799d72329 48 } Node;
Pierr 2:977799d72329 49
Pierr 2:977799d72329 50 // Function to Create A New Node
Pierr 2:977799d72329 51 Node* newNode(int x , int y, int distance, int p);
Pierr 2:977799d72329 52
Pierr 2:977799d72329 53 // Return the value at head
Pierr 2:977799d72329 54 void peek(Node** head, int*x, int*y, int*distance);
Pierr 2:977799d72329 55
Pierr 2:977799d72329 56 // Removes the element with the
Pierr 2:977799d72329 57 // highest priority form the list
Pierr 2:977799d72329 58 void pop(Node** head);
Pierr 2:977799d72329 59
Pierr 2:977799d72329 60 // Function to push according to priority
Pierr 2:977799d72329 61 void push(Node** head, int x, int y, int distance, int p);
Pierr 2:977799d72329 62
Pierr 2:977799d72329 63 // Function to check is list is empty
Pierr 2:977799d72329 64 int isEmpty(Node** head);
Pierr 2:977799d72329 65
Pierr 2:977799d72329 66
Pierr 2:977799d72329 67 void calc_distances(int ox, int oy, int gx , int gy); //ogigine, goal
Pierr 2:977799d72329 68
Pierr 2:977799d72329 69 Node* trouver_chemin(int ox, int oy, int gx , int gy); //retourne une suite de points , du point de départ au point d'arrivé en évitant les obstacles
Pierr 2:977799d72329 70
Pierr 2:977799d72329 71 Node* traduction_points_commandes(Node* pq);
Pierr 2:977799d72329 72
Pierr 2:977799d72329 73 void afficher_terrain();
Pierr 2:977799d72329 74 void afficher_terrain(Node* commandes);
Pierr 2:977799d72329 75
Pierr 2:977799d72329 76 int conversion_codage_angles(int o);
Pierr 2:977799d72329 77
Pierr 2:977799d72329 78
Pierr 2:977799d72329 79 void aller_a_point(int ox , int oy, int gx , int gy , int vitesse_deplacement = 100);
Pierr 2:977799d72329 80
Pierr 2:977799d72329 81 #endif
Pierr 2:977799d72329 82
Pierr 2:977799d72329 83