RP Lidar A2M8

Committer:
villemejane
Date:
Tue Dec 14 15:01:18 2021 +0000
Revision:
0:9803ade33ac3
RP Lidar A2M8

Who changed what in which revision?

UserRevisionLine numberNew 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__ */