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