PhD Log
PhD log Pierre-Nicolay
Plan (cut in weeks)
s1. Investigate best algorithms based on next meeting.
s2. Play with the algorithms (change gains etc) + start implementation of mppi.
s3. Implementation by first looking at all the git available (python or c++) try them out. + Implementation of ref paper (PILCO, (lots of repo), drl (ignasio’s code available?), probabilistic model predictive control)
s4. Read about mppi, stochastic optimal control for derivation of algorithm, fully understand all the detail of the entire derivation to understand the hypothesis, if we can better performances by relaxing the hypothesis etc.
s5. Visit at rovco.
s6. Report on visit at rovco, feedback and learning about the experience.
s7. Continue activites from week s2 to s4 + trying best algo on bluerov. Integration of the controller in the main code etc.
s8. Continue activites from week s2 to s4.
s9. Continue activites from week s2 to s4.
s10. Start trials of MPPI on real robot (bluerov).
s11. Start trials of PILCO, DRL, PMPC on bluerov.
s12. Same as s3, s10-11.
s13. Same as s3, s10-11.
Feeling like I can’t correctly estimate the time needed for every task and some will require way more time than estimated. It feels more like an ordered list of tasks.
Calendar notes
week | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday |
---|---|---|---|---|---|---|---|
s1 | 31/09/2020 | 01/09/2020 | 02/09/2020 | 03/09/2020 | 04/09/2020 | 05/09/2020 | 06/09/2020 |
Created log for the PhD. | Flat application. Meeting with rovco. Filled in risk assesment. | Enrollment for next academic year. Reading path integral control PhD thesis | explored gits (1)[https://github.com/LemonPi/pytorch_mppi], (2)[https://github.com/ferreirafabio/mppi_pendulum] for MPPI, keep reading the thesis. | Keep reading thesis, I have serious lack of knowledge in stochastic calculus. | |||
s2 | 07/09/2020 | 08/09/2020 | 09/09/2020 | 10/09/2020 | 11/09/2020 | 12/09/2020 | 13/09/2020 |
s3 | 14/09/2020 | 15/09/2020 | 16/09/2020 | 17/09/2020 | 18/09/2020 | 19/09/2020 | 20/09/2020 |
s4 | 21/09/2020 | 22/09/2020 | 23/09/2020 | 24/09/2020 | 25/09/2020 | 26/09/2020 | 27/09/2020 |
Rovco - | - | ||||||
s5 | 28/09/2020 | 29/09/2020 | 30/09/2020 | 01/10/2020 | 02/10/2020 | 03/10/2020 | 04/10/2020 |
- | - | Rovco | |||||
s6 | 05/10/2020 | 06/10/2020 | 07/10/2020 | 08/10/2020 | 09/10/2020 | 10/10/2020 | 11/10/2020 |
s7 | 12/10/2020 | 13/10/2020 | 14/10/2020 | 15/10/2020 | 16/10/2020 | 17/10/2020 | 18/10/2020 |
s8 | 19/10/2020 | 20/10/2020 | 21/10/2020 | 22/10/2020 | 23/10/2020 | 24/10/2020 | 25/10/2020 |
s9 | 26/10/2020 | 27/10/2020 | 28/10/2020 | 29/10/2020 | 30/10/2020 | 31/10/2020 | 01/11/2020 |
s10 | 02/11/2020 | 03/11/2020 | 04/11/2020 | 05/11/2020 | 06/11/2020 | 07/11/2020 | 08/11/2020 |
s11 | 09/11/2020 | 10/11/2020 | 11/11/2020 | 12/11/2020 | 13/11/2020 | 14/11/2020 | 15/11/2020 |
s12 | 16/11/2020 | 17/11/2020 | 18/11/2020 | 19/11/2020 | 20/11/2020 | 21/11/2020 | 22/11/2020 |
s13 | 23/11/2020 | 24/11/2020 | 25/11/2020 | 26/11/2020 | 27/11/2020 | 28/11/2020 | 29/11/2020 |
s14 | 30/11/2020 | 01/12/2020 | 02/12/2020 | 03/12/2020 | 04/12/2020 | 05/12/2020 | 06/12/2020 |
s15 | 07/12/2020 | 08/12/2020 | 09/12/2020 | 10/12/2020 | 11/12/2020 | 12/12/2020 | 13/12/2020 |
s16 | 14/12/2020 | 15/12/2020 | 16/12/2020 | 17/12/2020 | 18/12/2020 | 19/12/2020 | 20/12/2020 |
s17 | 21/12/2020 | 22/12/2020 | 23/12/2020 | 24/12/2020 | 25/12/2020 | 26/12/2020 | 27/12/2020 |
UUV_sim controllers.
AUV Geometric Tracking Controller git
- input: Position estimate, forward velocity, reference position, desired position. p and d gains.
- output: Control law.
- model parameters: None.
PID kind of controller.
Control loop
- Generates a reference message, don’t know why as the ref is already given. Need further investigation.
- Generates a error message.
- As in 2D geomectric tracing, Computes the error on roll, pitch and yaw from the error vector.
- PID controller for roll pitch yaw and surge.
- The controller uses “fin angles”, have to figure out what it is.
Example:
Not working yet. Don’t know why. Had to set multiple ros parameters as they weren’t working out of the box. The parameters seem set but the vehicle is not moving. Need to investigate. Start with the published messages to the thruster manager!
- Had to set roll gains (p_roll, d_roll), pitch gains (p_pitch, d_pitch), yaw gains (p_yaw, d_yaw).
- Had to set max_fin_angle > 0.
Model-based Feedback Linearization Controller. git
From Thor T. Fossen 2001 Handbook of Marine Craft Hydrodynamics and Motion Control
- input: pid gains.
- output: control law
- model parameters: Mass, volume, fluid density, gravity, linear damping, forward speed, quad_damping. M_total.
Control loop:
First generates a control law from a PID controller (\(U\_{pid}\)). Updates damping and Coriolis forces. computes resting forces. (I guess it assumes a uniform mass distribution, need to read the reference paper.) \(\tau = M.a + C.v + D.v + resting\_forces\) Sends the control law \(U\_{pid} + \tau\)
Example:
Note:
- Need to run this controller with disturbances.
Non-model-based sliding mode controller. git
- input: Kp, Kd, Ki and slope.
- output: control law.
- model parameters: none.
Control loop:
- Computes time step.
- Compute sliding surface with error vector.
- Computes the different variables of the algorithm
- \(S_d = S(t_0)e^{-K(t-t_0)}\) even is the ref paper state: \(S_d = S(t_0)e^{-K(t)}\)
- \(S_{n} = S - S_{d} = S_{q}\) where \(S_{q}\) is the name in the ref paper and \(S\) is the sliding surface defined by \(S = \dot{\tilde{\eta}} - \alpha \tilde{\eta}\) where \(\tilde{\eta}\) is the error of the robot state with respect to the desired state.
- computes the sliding integral term.
- \[S_{r} = S_{q} + K_{i} \int_{0}^{t}sign(S_{q})d\sigma\]
- Final control law: \(\tau_{\eta} = -K_{d} S_{r}\)
Examples:
Notes:
Need to understand the algorithm better. Understand the concept of sliding mode controller. Need to understand the model free derivation of the controller and how the algorithm handles the change of controller and the induced chattering effect. (Seems to be done with an exponential transformation).
This seems to work well and is supposed to handle noise and disturbance by construction. Need to test this with different noise sources.
Model-based Sliding Mode Controller. git
Can’t find the reference paper.
- input: Lambda, rho_constant, k, c, adapt_slope, rho_0, drift_prevent, integral term, adaptive bounds, ctrl_eq, ctrl_lin, constant_boumd, ctrl_robust.
- output:
- model parameters: vehicle velocity, vehicle rotBtoI, compute_froces (sum of the force acting on the vehicle).
Input description:
- lambad coefficients: Lambda coefficients for the error dynamics.
- rho_constant.
- k: used as linear control gain.
- c
- adapt_slope
- rho_0
- drift_prevent
- eneable_integral_term: Enables integral term in the sliding surface.
- adaptive_bounds: adaptive uncertainty upper bound for robust control.
- constant_bound: constant uncertainty upper bound for robust control.
- ctrl_eq: equivalent control term.
- ctrl_lin: linear control term.
- ctrl_robust: robust control term.
Control loop:
- computes the timestep.
- computes integral term.
- get error vector.
- estimate acceleration.
- compute forces the would generate such acceleration (give the equivalent contorl) \(f_eq = ctrl_eq*eq_force\)
- computes the linear control \(f_lin = -K*S\) Where S is the sliding surface.
- computes bound on uncertainties. Rho_total
- computes adaptation law. Rho_adapt
- computes robust controls. f_robust (uses rho adapt but still blury to me)
- \[\tau = f_eq + ctrl_lin f_lin + ctrl_robust f_robust\]
Examples
Notes:
Difficult to understand the code and the variables when no ref paper is given. Ask for help.
Nonlinear PID controller with acceleration feedback. git
- input: Hm (feedback acceleration gain), Kp, Ki, Kd
- output:
- model parameters: everything to compute the acc, coriolis, damping, restoring and M_total.
Control loop:
- Computes the acceleration resulting from the last control forces. \(acc\)
- compute acceleration feedback \(U_{acc} = hm*acc\)
- PID control law.
- send \(U_{PID} - U_{acc} + restoring\_forces\)
Examples
Notes:
PD controller with compensation of restoring forces. git
- input: Kp, Kd
- output:
- model parameters: everything to compute the acc, coriolis, damping, restoring and M_total.
Control loop:
- same as PID without the integral gain.
- computes restoring forces.
- Control law \(\tau = Kp*e + kd*\dot{e} + restoring\_forces\)
Examples
Notes:
PID controller. git
- input: Gains
- output:
- model parameters: None
Control loop:
Simple PID controller.
Examples
Singularity-free tracking controller. git
- input: Kd, Lambda, c
- output:
- model parameters: damping, coriolis, restoring, Mtotal.
Control loop:
Gonna investigate it if we judge this to be useful.
Examples
Notes:
The vehicle is shaking a lot. Is it useful to investigate it more?
Under actuated PID controller. git
absrtarct class
Leave a comment
Your email address will not be published. Required fields are marked *