Make sure that cruise controller designs are consistent throughout text [intro, linsys, statefbk, xferfcns, pid, robperf]

Issue #13 resolved
Richard Murray repo owner created an issue

In commit 8ef21ed, Karl changed the controller parameters for the cruise control system. At some point we need to go through and make sure that all of the controllers we are using are roughly consistent through this running example. (See comments in 06e0df8)

Comments (13)

  1. Richard Murray reporter

    Specific instances that need to be fixed:

    • Ch 2 exercises (principles/exercises/cruisecon.tex): parameter value don't match baseline
    • Ch 6 example (LinearSystems/cruise-linear.tex): add units to parameter values
  2. Richard Murray reporter

    Karl and I looked through this and there are lots of inconsistencies in parameters. Karl will clean up.

    We should use 30 m/sec as the nominal speed (highway driving). This will make it consistent with the vehicle steering high speed condition.

  3. Richard Murray reporter

    E-mail to Karl on 26 May and Karl’s responses on 27 May:

    As I have been going through the book, I have been trying to check on the consistency of the running examples. I noticed that in the cruise control system the parameters that we use in Figure 1.11 are different than elsewhere in the text:

    * The default conditions for standard cruise control examples are v_ref = 20 m/s, 4th gear, and a 4 degree uphill slope at t = 5 seconds.

    * In Chapter 1, Figure 1.11 we show the effect of a downhill slope of 1 degree, causing the speed to increase, as an example of robustness. We use vehicle masses that range from 1,000 kg to 3,000 kg. I played with this a bit and it turns out that the system is pretty brittle: changing the slope to 2 degrees causes the system to stop working (because we don’t have any braking capability in the mode => we hit a saturation and the car can’t slow down enough).

    What I think would be better is to stick with an uphill slope of 4 degrees and limit the range from 1200 kg to 2000 kg (25% variation off of the nominal value of 1600 kg).


    * Also, I’ve been putting together some Jupyter notebooks for Python implementations of the running examples. I’m thinking these might be useful to post on the web at some point, so that people can play with parameters and see what changes. One nice thing about Jupyter notebooks is that all of the code is in a single place and the code is editable within the Jupyter web browser interface. See the attached PDF file, which was generated with the Python control toolbox via Jupyter.

    I like the Juputer example, you may know that we have a Julia control toolbox as well

    Let me know if you think it is OK to change the plots for Figure 1.11. The new plot is shown in the PDF file below (in Section 1.3.1).


  4. Richard Murray reporter

    17 Jun comments from Karl (see also attached document):

    Second paragraph. Suggest we delet full in "A full nonlinear model" we are neglecting a lot of things in the model, like tires etc.

    State Feedback and PI control. There is a bit of confusion since we are mixing stuff from different chapters. We do both state feedback (SF or SFBK), state feedback with integral action (SFI or SFBKI) and PI control. I suggest that we clarify this for by explicitely writing what we do perhaps by the following paragraph before the Section 1.1 Process Model.

    "The process model is presented in Section 1.1, a controller based on state feedback is discussed in Section 1.2 where we also add integral action to the controller. In Section 1.3 we explore the behavior with PI control including the effect of actuator saturation and how it is avoided by windup protection."

  5. Richard Murray reporter

    Issues above addressed in latest version of the Python notebook. Final step is to map the Python version of the example back into the main text.

  6. Richard Murray reporter

    The cruise control examples throughout the book have been set up to match the Jupyter notebook example. Commit 1fd240b has all of the changes.

  7. Log in to comment