RP Lidar A2M8
rplidar.h@0:9803ade33ac3, 2021-12-14 (annotated)
- Committer:
- villemejane
- Date:
- Tue Dec 14 15:01:18 2021 +0000
- Revision:
- 0:9803ade33ac3
RP Lidar A2M8
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
villemejane | 0:9803ade33ac3 | 1 | /****************************************************************************/ |
villemejane | 0:9803ade33ac3 | 2 | /* LIDAR RPLidar A2M8 module library */ |
villemejane | 0:9803ade33ac3 | 3 | /****************************************************************************/ |
villemejane | 0:9803ade33ac3 | 4 | /* LEnsE / Julien VILLEMEJANE / Institut d'Optique Graduate School */ |
villemejane | 0:9803ade33ac3 | 5 | /****************************************************************************/ |
villemejane | 0:9803ade33ac3 | 6 | /* Library - rplidar.h file */ |
villemejane | 0:9803ade33ac3 | 7 | /****************************************************************************/ |
villemejane | 0:9803ade33ac3 | 8 | /* Tested on Nucleo-L476RG / 4th nov 2021 */ |
villemejane | 0:9803ade33ac3 | 9 | /****************************************************************************/ |
villemejane | 0:9803ade33ac3 | 10 | |
villemejane | 0:9803ade33ac3 | 11 | #ifndef __include_rplidar_h__ |
villemejane | 0:9803ade33ac3 | 12 | #define __include_rplidar_h__ |
villemejane | 0:9803ade33ac3 | 13 | |
villemejane | 0:9803ade33ac3 | 14 | #include "mbed.h" |
villemejane | 0:9803ade33ac3 | 15 | #define LIDAR_MODE_STOP 0x25 |
villemejane | 0:9803ade33ac3 | 16 | #define LIDAR_MODE_RESET 0x40 |
villemejane | 0:9803ade33ac3 | 17 | #define LIDAR_MODE_SCAN 0x20 |
villemejane | 0:9803ade33ac3 | 18 | #define LIDAR_MODE_FORCE 0x21 |
villemejane | 0:9803ade33ac3 | 19 | #define LIDAR_MODE_INFO 0x50 |
villemejane | 0:9803ade33ac3 | 20 | #define LIDAR_MODE_HEALTH 0x52 |
villemejane | 0:9803ade33ac3 | 21 | #define LIDAR_MODE_RATE 0x59 |
villemejane | 0:9803ade33ac3 | 22 | |
villemejane | 0:9803ade33ac3 | 23 | #define NB_BYTE_INFO_REQ 7 |
villemejane | 0:9803ade33ac3 | 24 | #define NB_BYTE_INFO_RESP 20 |
villemejane | 0:9803ade33ac3 | 25 | #define NB_BYTE_RATE_REQ 7 |
villemejane | 0:9803ade33ac3 | 26 | #define NB_BYTE_RATE_RESP 4 |
villemejane | 0:9803ade33ac3 | 27 | #define NB_BYTE_HEALTH_REQ 7 |
villemejane | 0:9803ade33ac3 | 28 | #define NB_BYTE_HEALTH_RESP 3 |
villemejane | 0:9803ade33ac3 | 29 | #define NB_BYTE_FORCE_REQ 7 |
villemejane | 0:9803ade33ac3 | 30 | #define NB_BYTE_FORCE_RESP 5 |
villemejane | 0:9803ade33ac3 | 31 | #define NB_BYTE_SCAN_REQ 7 |
villemejane | 0:9803ade33ac3 | 32 | |
villemejane | 0:9803ade33ac3 | 33 | // Fonction d'initialisation du Lidar |
villemejane | 0:9803ade33ac3 | 34 | void initLidar(void); |
villemejane | 0:9803ade33ac3 | 35 | // Fonction de test du Lidar |
villemejane | 0:9803ade33ac3 | 36 | void testLidar(); |
villemejane | 0:9803ade33ac3 | 37 | // Variables du Lidar |
villemejane | 0:9803ade33ac3 | 38 | |
villemejane | 0:9803ade33ac3 | 39 | extern char pc_debug_data[128]; |
villemejane | 0:9803ade33ac3 | 40 | extern Serial debug_pc; |
villemejane | 0:9803ade33ac3 | 41 | extern int data_nb; |
villemejane | 0:9803ade33ac3 | 42 | extern int data_scan_nb; |
villemejane | 0:9803ade33ac3 | 43 | extern char received_data[]; |
villemejane | 0:9803ade33ac3 | 44 | extern char mode; |
villemejane | 0:9803ade33ac3 | 45 | extern char scan_ok; |
villemejane | 0:9803ade33ac3 | 46 | extern int distance_scan[]; |
villemejane | 0:9803ade33ac3 | 47 | extern int distance_scan_old[]; |
villemejane | 0:9803ade33ac3 | 48 | extern char tour_ok; |
villemejane | 0:9803ade33ac3 | 49 | extern char trame_ok; |
villemejane | 0:9803ade33ac3 | 50 | extern struct lidar_data ld_current; |
villemejane | 0:9803ade33ac3 | 51 | // Lidar |
villemejane | 0:9803ade33ac3 | 52 | extern Serial lidar; |
villemejane | 0:9803ade33ac3 | 53 | extern PwmOut lidar_ct; |
villemejane | 0:9803ade33ac3 | 54 | |
villemejane | 0:9803ade33ac3 | 55 | /* Data Structure of lidar */ |
villemejane | 0:9803ade33ac3 | 56 | struct lidar_data{ |
villemejane | 0:9803ade33ac3 | 57 | int quality; |
villemejane | 0:9803ade33ac3 | 58 | int angle; |
villemejane | 0:9803ade33ac3 | 59 | int distance; |
villemejane | 0:9803ade33ac3 | 60 | }; |
villemejane | 0:9803ade33ac3 | 61 | |
villemejane | 0:9803ade33ac3 | 62 | /*********************************************************************** GENERAL FUNCTIONS */ |
villemejane | 0:9803ade33ac3 | 63 | |
villemejane | 0:9803ade33ac3 | 64 | /** Print int value and its name |
villemejane | 0:9803ade33ac3 | 65 | */ |
villemejane | 0:9803ade33ac3 | 66 | void print_int(const char *name, int ki); |
villemejane | 0:9803ade33ac3 | 67 | /** Print data from serial communication |
villemejane | 0:9803ade33ac3 | 68 | */ |
villemejane | 0:9803ade33ac3 | 69 | void print_data(const char *name, char *datai, int sizedata); |
villemejane | 0:9803ade33ac3 | 70 | /** Wait seconds |
villemejane | 0:9803ade33ac3 | 71 | */ |
villemejane | 0:9803ade33ac3 | 72 | void wait_s(float sec); |
villemejane | 0:9803ade33ac3 | 73 | |
villemejane | 0:9803ade33ac3 | 74 | /** Find max in an integer array |
villemejane | 0:9803ade33ac3 | 75 | */ |
villemejane | 0:9803ade33ac3 | 76 | void findMax(int *int_data, int angle_min, int angle_max, int *value, int *indice); |
villemejane | 0:9803ade33ac3 | 77 | |
villemejane | 0:9803ade33ac3 | 78 | /************************************************************************* LIDAR FUNCTIONS */ |
villemejane | 0:9803ade33ac3 | 79 | |
villemejane | 0:9803ade33ac3 | 80 | /** IT_lidar |
villemejane | 0:9803ade33ac3 | 81 | interrupt function on serial receiving |
villemejane | 0:9803ade33ac3 | 82 | */ |
villemejane | 0:9803ade33ac3 | 83 | void IT_lidar(void); |
villemejane | 0:9803ade33ac3 | 84 | |
villemejane | 0:9803ade33ac3 | 85 | /** Reset request |
villemejane | 0:9803ade33ac3 | 86 | send command to core reset of the lidar |
villemejane | 0:9803ade33ac3 | 87 | this action took 2ms |
villemejane | 0:9803ade33ac3 | 88 | */ |
villemejane | 0:9803ade33ac3 | 89 | void sendResetReq(void); |
villemejane | 0:9803ade33ac3 | 90 | |
villemejane | 0:9803ade33ac3 | 91 | /** Health request |
villemejane | 0:9803ade33ac3 | 92 | get device health information |
villemejane | 0:9803ade33ac3 | 93 | */ |
villemejane | 0:9803ade33ac3 | 94 | void getHealthLidar(void); |
villemejane | 0:9803ade33ac3 | 95 | |
villemejane | 0:9803ade33ac3 | 96 | /** Info request |
villemejane | 0:9803ade33ac3 | 97 | get device information |
villemejane | 0:9803ade33ac3 | 98 | model / firmware _ LSB / MSB / Hardware / SerialNumber (15 octets) |
villemejane | 0:9803ade33ac3 | 99 | */ |
villemejane | 0:9803ade33ac3 | 100 | void getInfoLidar(void); |
villemejane | 0:9803ade33ac3 | 101 | |
villemejane | 0:9803ade33ac3 | 102 | /** Sample Rate |
villemejane | 0:9803ade33ac3 | 103 | get sample rate |
villemejane | 0:9803ade33ac3 | 104 | */ |
villemejane | 0:9803ade33ac3 | 105 | void getSampleRate(void); |
villemejane | 0:9803ade33ac3 | 106 | |
villemejane | 0:9803ade33ac3 | 107 | /** Start Scan |
villemejane | 0:9803ade33ac3 | 108 | start standard scan |
villemejane | 0:9803ade33ac3 | 109 | */ |
villemejane | 0:9803ade33ac3 | 110 | void startScan(void); |
villemejane | 0:9803ade33ac3 | 111 | |
villemejane | 0:9803ade33ac3 | 112 | /** Stop Scan |
villemejane | 0:9803ade33ac3 | 113 | stop standard scan |
villemejane | 0:9803ade33ac3 | 114 | */ |
villemejane | 0:9803ade33ac3 | 115 | void stopScan(void); |
villemejane | 0:9803ade33ac3 | 116 | |
villemejane | 0:9803ade33ac3 | 117 | #endif /* #ifndef __include_rplidar_h__ */ |