Difference between revisions of "Controllers"
Jump to navigation
Jump to search
Line 41: | Line 41: | ||
*δ<sub>c</sub> is the angle the front wheel would be at in the next timestep if the wheel spins at speed ̇δ during the current timestep. | *δ<sub>c</sub> is the angle the front wheel would be at in the next timestep if the wheel spins at speed ̇δ during the current timestep. | ||
*In other words, the Euler Integrator integrates ̇δ<sub>d</sub> to find δ<sub>c</sub>. Specifically: | *In other words, the Euler Integrator integrates ̇δ<sub>d</sub> to find δ<sub>c</sub>. Specifically: | ||
− | <math>\delta_c = \delta + \delta \cdot | + | <math>\delta_c = \delta + \delta \cdot t_{step}</math> |
*See [https://en.wikipedia.org/wiki/Euler_method this page] for more info on Euler Integrators | *See [https://en.wikipedia.org/wiki/Euler_method this page] for more info on Euler Integrators | ||
Revision as of 02:15, 12 April 2019
Contents
Intro
- The control algorithms on our bicycle are separated into three cascaded controllers. The output of one controller is input to another controller.
- In order from high level to low level:
- Navigation controller, which tries to follow a desired path
- Balance controller, which tries to achieve a desired lean angle (φd) and desired steer angle (δd). For straight line balance (no navigation), this controller attempts to achieve φd = 0 and δd = 0. In this position, the bicycle is balanced (upright and steered straight ahead).
- Front motor controller, which controls front wheel angle (δ).
- Using cascaded controllers allows us to develop each controller semi-independently.
Front Motor Controller
- The front motor controller works to minimize the angle between the current steer angle (δ) and the commanded steer angle (δc).
- Currently (Spring 2018), the front motor controller is PD (Proportional-Derivative) controller. Specifically:
- total_error is converted into a direction (DIR) and a magnitude (motor_output).
Balance Controller
- The balance controller attempts to achieve a desired lean angle (φd) and steer angle (δd). In navigation mode, the navigation algorithm sets φd and δd.
- In addition to the desired state (φdd, δd), the balance controller takes as input current lean angle (φ), lean angle rate (φ), and steer angle (δ). The balance controller outputs a steer angle rate (δ).
- Currently (Spring 2018), the balance controller is the linear controller:
- In navigation mode, φd ≠ 0 and δd ≠ 0.
- Thus, the balance controller tries to minimize the three terms in above.
- If φ − φd = 0 the current lean angle (φ) equals the desired lean angle (φd).
In other words, the bicycle has achieved the desired lean angle.
- Similarly, if δ − δd = 0, the bicycle has achieved the desired steer angle. Still, the bicycle should not wobble: φ'= 0.
Balance Only
- For balance only, φd=0, δd=0. The balance controller reduces to:
- In balance only mode, the balance controller tries to minimize the sum of the three terms above.
- The first term includes lean angle (φ): if φ = 0, the bike should be upright.
- The second term includes lean angle rate (φ'): if φ'= 0, the bike should not wobble.
- The third term includes steer angle (δ): if δ = 0, the bike should be steered straight ahead.
- If all three of these terms equal 0, the bike is balanced.
Euler Integrator
- Connects the balance controller and the front motor controller.
- Takes, as input, the steer angular rate (δd) commanded by the balance controller.
- Outputs a steer angle (δc). δc is input to the front motor PD controller.
- Our embedded code runs in discrete timesteps (about 0.01s each).
- δc is the angle the front wheel would be at in the next timestep if the wheel spins at speed ̇δ during the current timestep.
- In other words, the Euler Integrator integrates ̇δd to find δc. Specifically:
- See this page for more info on Euler Integrators
Steady Lean Angle Calculation
- The balance controller takes as input a desired steer angle (δd) and a desired lean angle (φd).
- Somehow, the desired steer angle (δd) from the navigation algorithm must generate both a desired steer angle (δd) and desired lean angle
(φd).
- If the bicycle is in a steady turn, it must be both leaned and steered.
- Thus, t oachieve a given steer angle, the bicycle must also achieve a corresponding lean angle.
- We use the equation below to calculate a lean angle (φd) given a steer angle (δd).
- This equation relates lean (φ) and steer (δ) in steady state:
φd = δdv2/(lg)