Lidar RPLidar A2M8 - Testing program on L476RG

Committer:
villemejane
Date:
Sun Dec 12 12:36:57 2021 +0000
Revision:
1:cce1f1fab87f
Parent:
0:b57a1ecda8dd
RP Lidar Testing program

Who changed what in which revision?

UserRevisionLine numberNew 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 1:cce1f1fab87f 63 void findMax(int *int_data, int angle_min, int angle_max, 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__ */