Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos Motor LSM9DS1_Library_cal X_NUCLEO_53L0A1
RobotController.h@11:531208aca075, 2019-04-23 (annotated)
- Committer:
- rpatelpj
- Date:
- Tue Apr 23 19:56:39 2019 +0000
- Revision:
- 11:531208aca075
- Parent:
- 8:bfa4bf23522c
- Child:
- 14:0e6b26c1a7c5
Remove HALLFX_ENCODER lib, create and implement Encoder class, include Imu lib, implement RobotController angular position tracking and destructor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rpatelpj | 3:1dce1ba5b8bd | 1 | #ifndef ROBOT_CONTROLLER_H |
rpatelpj | 3:1dce1ba5b8bd | 2 | #define ROBOT_CONTROLLER_H |
rpatelpj | 3:1dce1ba5b8bd | 3 | |
rpatelpj | 8:bfa4bf23522c | 4 | #include "globals.h" |
rpatelpj | 3:1dce1ba5b8bd | 5 | #include "Motor.h" |
rpatelpj | 11:531208aca075 | 6 | #include "Encoder.h" |
rpatelpj | 11:531208aca075 | 7 | #include "LSM9DS1.h" |
rpatelpj | 8:bfa4bf23522c | 8 | #include "XNucleo53L0A1.h" |
rpatelpj | 8:bfa4bf23522c | 9 | |
rpatelpj | 8:bfa4bf23522c | 10 | #define COUNTPERIN 75.029 ///< Encoder counts 192 every 65 mm of wheel rotation |
rpatelpj | 8:bfa4bf23522c | 11 | #define COUNTPERDEG 1.21 ///< Encoder counts 2.42 every 1 deg of body rotation |
rpatelpj | 3:1dce1ba5b8bd | 12 | |
rpatelpj | 3:1dce1ba5b8bd | 13 | /** |
rpatelpj | 5:77c6821ae418 | 14 | * Robot Controller class. |
rpatelpj | 3:1dce1ba5b8bd | 15 | */ |
rpatelpj | 3:1dce1ba5b8bd | 16 | class RobotController { |
rpatelpj | 3:1dce1ba5b8bd | 17 | public: |
rpatelpj | 3:1dce1ba5b8bd | 18 | /** |
rpatelpj | 11:531208aca075 | 19 | * Robot Controller constructor. |
rpatelpj | 5:77c6821ae418 | 20 | * @param leftWheelPwm mbed pin transmitting speed to left motor driver |
rpatelpj | 5:77c6821ae418 | 21 | * @param leftWheelFwd mbed pin transmitting forward direction to left motor driver |
rpatelpj | 5:77c6821ae418 | 22 | * @param leftWheelRev mbed pin transmitting reverse direction to left motor driver |
rpatelpj | 5:77c6821ae418 | 23 | * @param rightWheelPwm mbed pin transmitting speed to right motor driver |
rpatelpj | 5:77c6821ae418 | 24 | * @param rightWheelFwd mbed pin transmitting forward direction to right motor driver |
rpatelpj | 5:77c6821ae418 | 25 | * @param rightWheelRev mbed pin transmitting reverse direction to right motor driver |
rpatelpj | 8:bfa4bf23522c | 26 | * @param leftEncoder mbed pin receiving rotation count from left encoder |
rpatelpj | 8:bfa4bf23522c | 27 | * @param rightEncoder mbed pin receiving rotation count from right encoder |
rpatelpj | 11:531208aca075 | 28 | * @param imuSda mbed pin for imu I2C data line |
rpatelpj | 11:531208aca075 | 29 | * @param imuScl mbed pin for imu I2C clock line |
rpatelpj | 5:77c6821ae418 | 30 | */ |
rpatelpj | 5:77c6821ae418 | 31 | RobotController(PinName leftWheelPwm, PinName leftWheelFwd, |
rpatelpj | 5:77c6821ae418 | 32 | PinName leftWheelRev, PinName rightWheelPwm, PinName rightWheelFwd, |
rpatelpj | 11:531208aca075 | 33 | PinName rightWheelRev, PinName leftEncoder, PinName rightEncoder, |
rpatelpj | 11:531208aca075 | 34 | PinName imuSda, PinName imuScl); |
rpatelpj | 11:531208aca075 | 35 | |
rpatelpj | 11:531208aca075 | 36 | /** |
rpatelpj | 11:531208aca075 | 37 | * Robot Controller destructor. |
rpatelpj | 11:531208aca075 | 38 | */ |
rpatelpj | 11:531208aca075 | 39 | ~RobotController(); |
rpatelpj | 11:531208aca075 | 40 | |
rpatelpj | 5:77c6821ae418 | 41 | /** |
rpatelpj | 3:1dce1ba5b8bd | 42 | * Detect obstacles in 360-degree field of view around the robot. |
rpatelpj | 3:1dce1ba5b8bd | 43 | */ |
rpatelpj | 8:bfa4bf23522c | 44 | void detectObstacles(); |
rpatelpj | 3:1dce1ba5b8bd | 45 | |
rpatelpj | 3:1dce1ba5b8bd | 46 | /** |
rpatelpj | 3:1dce1ba5b8bd | 47 | * Follow trajectory set by user in C# GUI. |
rpatelpj | 3:1dce1ba5b8bd | 48 | */ |
rpatelpj | 8:bfa4bf23522c | 49 | void followTrajectory(); |
rpatelpj | 5:77c6821ae418 | 50 | |
rpatelpj | 5:77c6821ae418 | 51 | private: |
rpatelpj | 5:77c6821ae418 | 52 | Motor leftWheel; |
rpatelpj | 5:77c6821ae418 | 53 | Motor rightWheel; |
rpatelpj | 11:531208aca075 | 54 | Encoder leftEncoder; |
rpatelpj | 11:531208aca075 | 55 | Encoder rightEncoder; |
rpatelpj | 11:531208aca075 | 56 | LSM9DS1 imu; |
rpatelpj | 11:531208aca075 | 57 | Timer t; |
rpatelpj | 11:531208aca075 | 58 | float w1; |
rpatelpj | 11:531208aca075 | 59 | float w2; |
rpatelpj | 11:531208aca075 | 60 | float t1; |
rpatelpj | 11:531208aca075 | 61 | float t2; |
rpatelpj | 3:1dce1ba5b8bd | 62 | }; |
rpatelpj | 3:1dce1ba5b8bd | 63 | |
rpatelpj | 3:1dce1ba5b8bd | 64 | #endif /* ROBOT_CONTROLLER_H */ |