PhD Log

6 minute read

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 *

Loading...