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.
src/main_controller.cpp@3:35deb5c21b33, 2018-11-26 (annotated)
- Committer:
- rwgriffithv
- Date:
- Mon Nov 26 23:50:58 2018 +0000
- Revision:
- 3:35deb5c21b33
- Parent:
- 1:6f18bb7a77a5
pid controller updated
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dionigi | 1:6f18bb7a77a5 | 1 | #include <string> |
| dionigi | 1:6f18bb7a77a5 | 2 | |
| dionigi | 1:6f18bb7a77a5 | 3 | #include "main_controller.h" |
| dionigi | 1:6f18bb7a77a5 | 4 | #include "pid_controller.h" |
| dionigi | 1:6f18bb7a77a5 | 5 | |
| dionigi | 1:6f18bb7a77a5 | 6 | MainController::MainController() { |
| dionigi | 1:6f18bb7a77a5 | 7 | m_pid = new PIDController; |
| dionigi | 1:6f18bb7a77a5 | 8 | } |
| dionigi | 1:6f18bb7a77a5 | 9 | |
| dionigi | 1:6f18bb7a77a5 | 10 | MainController::~MainController() { |
| dionigi | 1:6f18bb7a77a5 | 11 | delete m_pid; |
| dionigi | 1:6f18bb7a77a5 | 12 | } |
| dionigi | 1:6f18bb7a77a5 | 13 | |
| dionigi | 1:6f18bb7a77a5 | 14 | /*** |
| dionigi | 1:6f18bb7a77a5 | 15 | * Assignment 3 |
| dionigi | 1:6f18bb7a77a5 | 16 | * |
| dionigi | 1:6f18bb7a77a5 | 17 | * Implement PID! Most of this work is done in "pid_controller". |
| dionigi | 1:6f18bb7a77a5 | 18 | ***/ |
| dionigi | 1:6f18bb7a77a5 | 19 | void MainController::update() { |
| dionigi | 1:6f18bb7a77a5 | 20 | // Update PID controller. This is the function you should be |
| dionigi | 1:6f18bb7a77a5 | 21 | // calling every systick. |
| dionigi | 1:6f18bb7a77a5 | 22 | m_pid->update(); |
| dionigi | 1:6f18bb7a77a5 | 23 | } |
| dionigi | 1:6f18bb7a77a5 | 24 | |
| dionigi | 1:6f18bb7a77a5 | 25 | /*** |
| dionigi | 1:6f18bb7a77a5 | 26 | * Assignment 3: Part 1 |
| dionigi | 1:6f18bb7a77a5 | 27 | * |
| dionigi | 1:6f18bb7a77a5 | 28 | * Get your mouse driving straight. |
| dionigi | 1:6f18bb7a77a5 | 29 | ***/ |
| dionigi | 1:6f18bb7a77a5 | 30 | void MainController::driveStraight() { |
| dionigi | 1:6f18bb7a77a5 | 31 | /** |
| dionigi | 1:6f18bb7a77a5 | 32 | * Set an X goal and W goal correctly! This is discussed in the lecture slides. |
| dionigi | 1:6f18bb7a77a5 | 33 | * For help, see example code: pid/drive-straight.cpp |
| dionigi | 1:6f18bb7a77a5 | 34 | **/ |
| rwgriffithv | 3:35deb5c21b33 | 35 | m_pid->set_goal_x(3600); |
| rwgriffithv | 3:35deb5c21b33 | 36 | m_pid->set_goal_w(0); |
| dionigi | 1:6f18bb7a77a5 | 37 | pc.printf("Driving straight\n"); |
| rwgriffithv | 3:35deb5c21b33 | 38 | while(!m_pid->is_done()); |
| dionigi | 1:6f18bb7a77a5 | 39 | } |
| dionigi | 1:6f18bb7a77a5 | 40 | |
| dionigi | 1:6f18bb7a77a5 | 41 | /*** |
| dionigi | 1:6f18bb7a77a5 | 42 | * Assignment 3: Part 2 |
| dionigi | 1:6f18bb7a77a5 | 43 | * |
| dionigi | 1:6f18bb7a77a5 | 44 | * Get your mouse to turn, and drive a specific distance. |
| dionigi | 1:6f18bb7a77a5 | 45 | ***/ |
| dionigi | 1:6f18bb7a77a5 | 46 | void MainController::turn(int deg) { |
| rwgriffithv | 3:35deb5c21b33 | 47 | m_pid->set_goal_x(0); |
| rwgriffithv | 3:35deb5c21b33 | 48 | m_pid->set_goal_w(4.65*deg); |
| dionigi | 1:6f18bb7a77a5 | 49 | pc.printf("Turning %d degrees\n", deg); |
| rwgriffithv | 3:35deb5c21b33 | 50 | while(!m_pid->is_done()); |
| dionigi | 1:6f18bb7a77a5 | 51 | } |
| dionigi | 1:6f18bb7a77a5 | 52 | |
| dionigi | 1:6f18bb7a77a5 | 53 | void MainController::moveCells(float n) { |
| dionigi | 1:6f18bb7a77a5 | 54 | /** |
| dionigi | 1:6f18bb7a77a5 | 55 | * For help, see example code: pid/full.cpp |
| dionigi | 1:6f18bb7a77a5 | 56 | **/ |
| dionigi | 1:6f18bb7a77a5 | 57 | pc.printf("Moving %d cells\n", n); |
| dionigi | 1:6f18bb7a77a5 | 58 | } |
