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