2-wheel Inverted Pendulum control program

Dependencies:   AsyncSerial Lib_DFPlayerMini Lib_MPU9250_SPI mbed

Committer:
bluefish
Date:
Wed May 02 10:57:10 2018 +0000
Revision:
7:77174a098e6f
Parent:
6:a5f674c2f262
for peshala project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bluefish 0:c86a79c8b787 1 #ifndef __DEFINES_H__
bluefish 0:c86a79c8b787 2 #define __DEFINES_H__
bluefish 0:c86a79c8b787 3
bluefish 0:c86a79c8b787 4 #include "mbed.h"
bluefish 0:c86a79c8b787 5 #include "AsyncSerial.hpp"
bluefish 0:c86a79c8b787 6
bluefish 6:a5f674c2f262 7 #include "Lib_DFPlayerMini.h"
bluefish 6:a5f674c2f262 8 #include "Lib_MPU9250.h"
bluefish 6:a5f674c2f262 9 #include "filter_func.h"
bluefish 0:c86a79c8b787 10
bluefish 7:77174a098e6f 11 // compile option
bluefish 7:77174a098e6f 12 //#define USE_SERIAL_DEBUG
bluefish 7:77174a098e6f 13 #define USE_LED_DEBUG
bluefish 6:a5f674c2f262 14 #define USE_FILESYSTEM
bluefish 7:77174a098e6f 15 #define USE_FIRST_IMU
bluefish 7:77174a098e6f 16 #define USE_SECOND_IMU
bluefish 7:77174a098e6f 17 #define USE_MOTOR_CONTROL
bluefish 7:77174a098e6f 18 #define USE_STEER_CONTROL
bluefish 0:c86a79c8b787 19
bluefish 0:c86a79c8b787 20 #ifdef USE_SERIAL_DEBUG
bluefish 0:c86a79c8b787 21 #define DEBUG_BAUDRATE 115200
bluefish 0:c86a79c8b787 22 AsyncSerial usb_serial( USBTX, USBRX );
bluefish 0:c86a79c8b787 23 #endif
bluefish 0:c86a79c8b787 24
bluefish 0:c86a79c8b787 25 #ifdef USE_LED_DEBUG
bluefish 0:c86a79c8b787 26 DigitalOut myled[4] = { LED1, LED2, LED3, LED4 };
bluefish 0:c86a79c8b787 27 #endif
bluefish 0:c86a79c8b787 28
bluefish 0:c86a79c8b787 29 #define PROCESS_INTERVAL_SEC (0.01f)
bluefish 0:c86a79c8b787 30
bluefish 0:c86a79c8b787 31 #define CAN_RX (p30)
bluefish 0:c86a79c8b787 32 #define CAN_TX (p29)
bluefish 0:c86a79c8b787 33
bluefish 6:a5f674c2f262 34 #define MPU9250_CS (p7)
bluefish 6:a5f674c2f262 35 #define MPU9250_MOSI (p11)
bluefish 6:a5f674c2f262 36 #define MPU9250_MISO (p12)
bluefish 6:a5f674c2f262 37 #define MPU9250_SCK (p13)
bluefish 6:a5f674c2f262 38 #define MPU9250_INT (p8)
bluefish 0:c86a79c8b787 39
bluefish 6:a5f674c2f262 40 #define MPU9250_SDA (p9)
bluefish 6:a5f674c2f262 41 #define MPU9250_SCL (p10)
bluefish 0:c86a79c8b787 42
bluefish 6:a5f674c2f262 43 #define DFPLAYER_RX (p27)
bluefish 6:a5f674c2f262 44 #define DFPLAYER_TX (p28)
bluefish 6:a5f674c2f262 45 #define DFPLAYER_BUSY (p18)
bluefish 2:9c83de2d33ca 46
bluefish 0:c86a79c8b787 47 #define NEOPIXEL_DOUT (p21)
bluefish 0:c86a79c8b787 48
bluefish 0:c86a79c8b787 49 #define DEVID_LEFT (0x01)
bluefish 0:c86a79c8b787 50 #define DEVID_RIGHT (0x04)
bluefish 0:c86a79c8b787 51
bluefish 0:c86a79c8b787 52 typedef struct _STRUCTSENSOR{
bluefish 0:c86a79c8b787 53 float acc[3];
bluefish 0:c86a79c8b787 54 float gyro[3];
bluefish 0:c86a79c8b787 55 float mag[3];
bluefish 0:c86a79c8b787 56 } STRUCTSENSOR;
bluefish 0:c86a79c8b787 57
bluefish 0:c86a79c8b787 58 typedef struct _STRUCTPOSTURE{
bluefish 0:c86a79c8b787 59 float angle;
bluefish 2:9c83de2d33ca 60 float angle_vel;
bluefish 0:c86a79c8b787 61 float wheel[2];
bluefish 0:c86a79c8b787 62 float wheel_vec[2];
bluefish 0:c86a79c8b787 63 } STRUCTPOSTURE;
bluefish 0:c86a79c8b787 64
bluefish 0:c86a79c8b787 65 typedef struct _STRUCTCONRTOLPARAM{
bluefish 7:77174a098e6f 66 float K_angle;
bluefish 7:77174a098e6f 67 float K_angle_vel;
bluefish 7:77174a098e6f 68 float K_wheel;
bluefish 7:77174a098e6f 69 float K_wheel_vel;
bluefish 7:77174a098e6f 70 float K_rot_vel;
bluefish 7:77174a098e6f 71 float K_trans_vel;
bluefish 7:77174a098e6f 72 float C_max_angle;
bluefish 7:77174a098e6f 73 float C_offset_angle;
bluefish 0:c86a79c8b787 74 } STRUCTCONRTOLPARAM;
bluefish 0:c86a79c8b787 75
bluefish 7:77174a098e6f 76 typedef struct _STRUCTGAMEPAD{
bluefish 7:77174a098e6f 77 float x_raw;
bluefish 7:77174a098e6f 78 float y_raw;
bluefish 7:77174a098e6f 79 float x_filtered;
bluefish 7:77174a098e6f 80 float y_filtered;
bluefish 7:77174a098e6f 81 float C_dead_angle;
bluefish 7:77174a098e6f 82 float C_max_angle;
bluefish 7:77174a098e6f 83 } STRUCTGAMEPAD;
bluefish 7:77174a098e6f 84
bluefish 6:a5f674c2f262 85 extern STRUCTSENSOR sensor_vehicle;
bluefish 6:a5f674c2f262 86 extern STRUCTSENSOR sensor_interface;
bluefish 0:c86a79c8b787 87 extern STRUCTPOSTURE posture;
bluefish 0:c86a79c8b787 88 extern STRUCTCONRTOLPARAM control;
bluefish 7:77174a098e6f 89 extern STRUCTGAMEPAD pad;
bluefish 7:77174a098e6f 90
bluefish 0:c86a79c8b787 91
bluefish 0:c86a79c8b787 92 //extern Ticker tic_sen_ctrl;
bluefish 0:c86a79c8b787 93 //extern CAN can_driver;
bluefish 0:c86a79c8b787 94 //extern MPU9250 imu;
bluefish 0:c86a79c8b787 95 //extern DFPlayerMini player;
bluefish 0:c86a79c8b787 96
bluefish 0:c86a79c8b787 97 #endif