Create a LtiSystem object for the spacecraft dynamics using 
  Clohessy-Wiltshire-Hill (CWH) dynamics
  =============================================================================
 
  Constructs a LtiSystem object for the discrete-time linear time-invariant
  dynamics of an approaching spacecraft (the deputy) relative to a target (the
  chief).
  
  In addition, you can provide:
  - an input space for the control inputs are the components of the external
    force vector, i.e. the thruster control input.  
  - an additive Gaussian noise process noise vector that represents the
    uncertainty in the model due to external forces on the spacecraft not
    captured in the linearized model.  
  - Other parameters relevant to the Clohessy-Wiltshire-Hill (CWH) dynamics in
    the form of a struct (see Notes) 
 
  The continuous-time is given in (1),(2) of
       K. Lesser, M. Oishi, and R. S. Erwin, "Stochastic Reachability for
       Control of Spacecraft Relative Motion", in Proceedings of IEEE
       Conference on Decision and Control, 2013. 
  Alternatively, see 
    - Curtis, Howard D. Orbital mechanics for engineering students.
      Butterworth-Heinemann, 2013, Section 7.4
 
  The state of the system is [position in x, position in y, position in z,
  velocity in x, velocity in y, and velocity in z].
 
  Usage:
  ------
 
  % Create a LtiSystem for the CWH dynamics using the parameters given in Lesser
  % et. al, CDC 2013 paper.
 
  sys = getCwhLtiSystem(4, Polyhedron('lb', -0.01*ones(2,1), ...
            'ub',  0.01*ones(2,1)), RandomVector('Gaussian', zeros(4,1), ...
            diag([1e-4, 1e-4, 5e-8, 5e-8])));
 
  % Create a LtiSystem for the uncontrolled 6D CWH dynamics
  sys = getCwhLtiSystem(6);
 
  % Create a LtiSystem for the uncontrolled 4D CWH dynamics
  sys = getCwhLtiSystem(4, Polyhedron(), RandomVector('Gaussian',zeros(4,1), ...
            diag([1e-4, 1e-4, 5e-8, 5e-8])));
 
  % Create a LtiSystem for the controlled 6D CWH dynamics
  sys = getCwhLtiSystem(6, ...
            Polyhedron('lb',-0.01*ones(3,1),'ub', 0.01*ones(3,1)), ...
            RandomVector('Gaussian', zeros(6,1), ...
                  diag([1e-4, 1e-4, 1e-4, 5e-8, 5e-8, 5e-8])));
 
  See also CwhSystemParameters 
 
  to change the default CWH parameter values
 
  =============================================================================
  
  sys = getCwhLtiSystem(dim);
  sys = getCwhLtiSystem(dim, user_params);
  sys = getCwhLtiSystem(dim, user_params, Name, Value);
 
  Inputs:
  -------
    dim         - Dimension of the CWH dynamics of interest (Needs to be 4 or 6)
    input_space - (Optional) Input space for the spacecraft (Polytope)
                  [Provide an empty polyhedron to create an uncontrolled but
                   perturbed system]
    disturbance - (Optional) Stochastic disturbance object describing the
                  disturbance affecting the dynamics
    user_params - (Optional) User parameter struct that gives as a name-value
                  pair different parameters affecting the dynamics.  Possible
                  values that may be adjusted are --- sampling_period,
                  orbital_radius, grav_constant, celes_mass, chief_mass,
                  orbit_ang_vel, disc_orbit_dist 
                  [If empty, default values are set.]
 
  Outputs:
  --------
    sys         - LtiSystem object describing the CWH dynamics
 
  Notes:
  ------
  * This code and the parameters were obtained from Lesser's repeatability code
    for the 2013 CDC paper.
  * The default parameters for the CWH system dynamics are:
        sampling period              = 20 s
        orbital radius               = 850 + 6378.1 m
        gravitational constant       = 6.673e-11
        celestial body mass          = 5.9472e24 kg
        gravitational body           = grav_constant * celes_mass / 1e6
        orbital angular velocity     = sqrt(grav_body / orbital_radius^3)
        chief mass                   = 300 kg
        discretized orbital distance = orbit_ang_vel * sampling_period rad
 
  =============================================================================
 
    This function is part of the Stochastic Reachability Toolbox.
    License for the use of this function is given in
         https://sreachtools.github.io/license/