Autonomous automobile guidance and trajectory-tracking
11366478 · 2022-06-21
Assignee
Inventors
Cpc classification
B60W2050/0008
PERFORMING OPERATIONS; TRANSPORTING
B60W40/103
PERFORMING OPERATIONS; TRANSPORTING
B60W60/001
PERFORMING OPERATIONS; TRANSPORTING
B60W2050/0012
PERFORMING OPERATIONS; TRANSPORTING
International classification
Abstract
Systems, methods, and computer program products for autonomous car-like ground vehicle guidance and trajectory tracking control. A multi-loop 3DOF trajectory linearization controller provides guidance to a vehicle having nonlinear rigid-body dynamics with nonlinear tire traction force, nonlinear drag forces and actuator dynamics. The controller may be based on a closed-loop PD-eigenvalue assignment and a singular perturbation (time-scale separation) theory for exponential stability, and controls the longitudinal velocity and steering angle simultaneously to follow a feasible guidance trajectory. A line-of-sight based pure-pursuit guidance controller may generate a 3DOF spatial trajectory that is provided to the 3DOF controller to enable target pursuit and path-following/trajectory-tracking. The resulting combination may provide a 3DOF motion control system with integrated simultaneous steering and speed control for automobile and car-like mobile robot target pursuit and trajectory-tracking.
Claims
1. A method of automatically guiding and controlling a car-like ground vehicle, the method comprising: receiving a position command signal indicative of a guidance trajectory for the car-like ground vehicle at a guidance controller including a first open-loop nominal controller and a first closed-loop tracking error controller; receiving a position measurement signal indicative of a position of the car-like ground vehicle at the guidance controller; determining, by the first open-loop nominal controller, a nominal velocity signal based on the position command signal; determining, by the first closed-loop tracking error controller, a velocity control signal based on a difference between the position command signal and the position measurement signal; determining, by the guidance controller, a velocity command signal based on the nominal velocity signal and the velocity control signal; determining, by the guidance controller, a drive command signal based on the velocity command signal; and transmitting the drive command signal to a drive actuator of the car-like ground vehicle.
2. The method of claim 1 wherein the velocity control signal includes a lateral velocity control signal, and further comprising: determining a yaw control signal based on a longitudinal component of the nominal velocity signal and the lateral velocity control signal; and transmitting the yaw control signal to a steering controller.
3. The method of claim 1 wherein the velocity command signal includes a longitudinal velocity command signal, and determining the drive command signal comprises: determining the difference between a longitudinal velocity measurement signal and the longitudinal velocity command signal to generate a longitudinal velocity error signal; determining, by a second closed-loop tracking error controller of the guidance controller, a longitudinal force control signal based on the longitudinal velocity error signal; and determining the drive command signal based on the longitudinal force control signal.
4. The method of claim 3 wherein determining the drive command signal further comprises: determining, by a second open-loop nominal controller, a nominal force signal; and determining the drive command signal based on the nominal force signal and a tire traction force model.
5. The method of claim 4 further comprising: determining a nominal drive signal based on the nominal force signal; determining a nominal yaw signal based on the nominal force signal; receiving the nominal yaw signal at a steering controller including a third open-loop nominal controller; determining, by the third open-loop nominal controller, a nominal yaw angular rate signal based on the nominal yaw signal; and determining, by the steering controller, a steering angle command signal based on the nominal yaw angular rate signal.
6. The method of claim 5 wherein the steering controller further includes a third closed loop tracking error controller, and further comprising: receiving a yaw tracking error signal at the third closed loop tracking error controller; determining, by the third closed loop tracking error controller, a yaw angular rate control signal based on the yaw tracking error signal; and determining, by the steering controller, the steering angle command signal based on the yaw angular rate control signal.
7. The method of claim 6 wherein the steering controller includes a fourth closed-loop tracking error controller and fourth open-loop nominal controller, and determining the steering angle command signal comprises: receiving, at the steering controller, a yaw angular rate measurement signal; determining a yaw angular rate command signal based on the difference between the nominal yaw angular rate signal and the yaw angular rate control signal; determining a yaw angular rate error signal based on the difference between the yaw angular rate command signal and the yaw angular rate measurement signal; determining, by the fourth closed-loop tracking error controller, a body torque control signal based on the yaw angular rate error signal; determining, by the fourth open-loop nominal controller, a nominal body torque signal; and determining the steering angle command signal as a sum of the body torque control signal and the nominal body torque signal.
8. The method of claim 1 further comprising: defining the guidance trajectory as a trajectory that leads from a current position of the car-like ground vehicle to a target on a mission trajectory within a domain of attraction of the guidance controller; and determining the position command signal based on the position of the target relative to the current position of the car-like ground vehicle.
9. The method of claim 8 wherein determining the position command signal includes: receiving a target relative position signal; determining, based on the target relative position signal, a range distance vector from the car-like ground vehicle to the target, the range distance vector defining a distance and a b-frame line-of-sight angle between the car-like ground vehicle and the target; receiving a sensed yaw angle; determining a longitudinal component of the range distance vector based on the b-frame line-of-sight angle; determining a guidance angle based on the b-frame line-of-sight angle and the sensed yaw angle; determining a guidance velocity in the b-frame based on the longitudinal component of the range distance vector; and generating the position command signal in an n-frame based on the guidance angle and the guidance velocity.
10. A controller for automatically guiding and controlling a car-like ground vehicle, the controller comprising: one or more processors; and a memory in communication with the one or more processors and storing program code that, when executed by at least one of the one or more processors, causes the controller to: receive a position command signal indicative of a guidance trajectory for the car-like ground vehicle; receive a position measurement signal indicative of a position of the car-like ground vehicle; determine a nominal velocity signal based on the position command signal; determine a velocity control signal based on a difference between the position command signal and the position measurement signal; determine a velocity command signal based on the nominal velocity signal and the velocity control signal; determine a drive command signal based on the velocity command signal; and transmit the drive command signal to a drive actuator of the car-like ground vehicle.
11. The controller of claim 10 wherein the velocity control signal includes a lateral velocity control signal and the program code further causes the controller to: determine a yaw control signal based on a longitudinal component of the nominal velocity signal and the lateral velocity control signal; and transmit the yaw control signal to a steering controller.
12. The controller of claim 10 wherein the velocity command signal includes a longitudinal velocity command signal, and the program code causes the controller to determine the drive command signal by: determining the difference between a longitudinal velocity measurement signal and the longitudinal velocity command signal to generate a longitudinal velocity error signal; determining a longitudinal force control signal based on the longitudinal velocity error signal; and determining the drive command signal based on the longitudinal force control signal.
13. The controller of claim 12 wherein the program code causes the controller to determine the drive command signal by: determining a nominal force signal; and determining the drive command signal based on the nominal force signal and a tire traction force model.
14. The controller of claim 13 wherein the program code further causes the controller to: determine a nominal drive signal based on the nominal force signal; determine a nominal yaw signal based on the nominal force signal; determine a nominal yaw angular rate signal based on the nominal yaw signal; and determine a steering angle command signal based on the nominal yaw angular rate signal.
15. The controller of claim 14 wherein the program code further causes the controller to: determine a yaw angular rate control signal based on a yaw tracking error signal; and determine the steering angle command signal based on the yaw angular rate control signal.
16. The controller of claim 15 wherein the program code causes the controller to determine the steering angle command signal by: receiving a yaw angular rate measurement signal; determining a yaw angular rate command signal based on the difference between the nominal yaw angular rate signal and the yaw angular rate control signal; determining a yaw angular rate error signal based on the difference between the yaw angular rate command signal and the yaw angular rate measurement signal; determining a body torque control signal based on the yaw angular rate error signal; determining a nominal body torque signal; and determining the steering angle command signal as a sum of the body torque control signal and the nominal body torque signal.
17. The controller of claim 10 wherein the program code further causes the controller to: define the guidance trajectory as a trajectory that leads from a current position of the car-like ground vehicle to a target on a mission trajectory within a domain of attraction of the controller; and determine the position command signal based on the position of the target relative to the current position of the car-like ground vehicle.
18. The controller of claim 17 wherein the program code causes the controller to determine the position command signal by: receiving a target relative position signal; determining, based on the target relative position signal, a range distance vector from the car-like ground vehicle to the target, the range distance vector defining a distance and a b-frame line-of-sight angle between the car-like ground vehicle and the target; receiving a sensed yaw angle; determining a longitudinal component of the range distance vector based on the b-frame line-of-sight angle; determining a guidance angle based on the b-frame line-of-sight angle and the sensed yaw angle; determining a guidance velocity in the b-frame based on the longitudinal component of the range distance vector; and generating the position command signal in an n-frame based on the guidance angle and the guidance velocity.
19. A computer program product for automatically guiding and controlling a car-like ground vehicle, the computer program product comprising: a non-transitory computer readable storage medium containing program code that, when executed by one or more processors, causes the one or more processors to: receive a position command signal indicative of a guidance trajectory for the car-like ground vehicle; receive a position measurement signal indicative of a position of the car-like ground vehicle; determine a nominal velocity signal based on the position command signal; determine a velocity control signal based on a difference between the position command signal and the position measurement signal; determine a velocity command signal based on the nominal velocity signal and the velocity control signal; determine a drive command signal based on the velocity command signal; and transmit the drive command signal to a drive actuator of the car-like ground vehicle.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments of the invention and, together with the general description of the invention given above, and the detailed description of the embodiments given below, serve to explain the embodiments of the invention.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(34)
(35)
(36)
DETAILED DESCRIPTION
(37) Embodiments of the invention include control systems for autonomous car-like ground vehicles that provide vehicle motion control with three degrees of freedom (3DOF). 3DOF vehicle motion control faces several challenges. For example, the vehicle rigid-body, tire traction force, and the various drag force models are highly nonlinear. Another challenge is that, even though the vehicle dynamics may be treated as time invariant, the tracking error dynamics along a time-dependent trajectory are typically time-varying. Moreover, car-like ground vehicles are subject to nonholonomic kinematic constraints, which further necessitates time-varying and non-smooth guidance and control algorithms.
(38) 3DOF motion control may be categorized as path-following and trajectory-tracking. Path-following only requires the vehicle to follow a specified path without time constraints. Thus, path-following controller systems only need to deal with vehicle kinematics. In contrast, trajectory-tracking control systems require the vehicle to traverse a prescribed path with a given velocity. Trajectory-tracking is more challenging than path-following because the vehicle dynamics must be considered in addition to vehicle kinematics. Embodiments of the invention address these problems using 3DOF motion control for nonholonomic ground vehicle trajectory-tracking with nonlinear vehicle and force models.
(39) It is typically desirable to control the translational and rotational motions of the vehicle simultaneously. However, the vehicle dynamics of translational and rotational motions are highly coupled and nonlinear, which creates additional challenges for the control system. Moreover, even though the vehicle dynamics may be time invariant, the trajectory of the vehicle is time varying, which means the tracking error dynamics are also time varying.
(40) Embodiments of the invention use Trajectory Linearization Control (TLC) to address the challenges of the nonholonomic ground vehicle trajectory-tracking control problem. TLC provides a nonlinear time-varying controller that combines nonlinear dynamic inversion with linear time-varying feedback stabilization. A TLC based controller can be viewed as the gain-scheduling controller that is designed at each point on the trajectory to provide robust stability.
(41) Referring now to
(42) A multi-loop trajectory-tracking TLC for vehicles without nonholonomic constraints may be modified to handle car-like vehicles by decoupling the position error in a body-fixed frame of reference rather than in an inertial frame of reference. This feature may enable the vehicle control system to handle a nonholonomic constraint on the lateral motion of the vehicle. The vehicle control systems disclosed herein may have applications to any type of vehicle where controllability is different along each body axis.
(43)
(44) The nb-frame may be parallel to the n-frame but with an origin O.sub.nb at center of the gravity (CG) of the vehicle. For the b-frame, the origin O.sub.b may also be fixed at the CG of the vehicle, with x.sub.b pointing forward along the longitudinal axis of the vehicle, y.sub.b pointing to the starboard side of the vehicle, and z.sub.b pointing down. As depicted in
(45) In the below descriptions of car-like ground vehicle trajectory-tracking, some assumptions may be made to simplify analysis of the motion of the vehicle. These assumptions may include that the vehicle is a rigid-body, that the weight of the vehicle is equally distributed between each of the four wheels, and that the vehicle is driving on a level and smooth road. These simplifications may allow pitching and rolling motions to be ignored, and longitudinal lateral motion control to be combined with steering control. Due to the nonholonomic constraint of the car-like ground vehicle, lateral force is assumed to not generate lateral acceleration. Rather, lateral acceleration is assumed to be solely a result of rotational motion.
(46) In view of the above constraints, the state space equations may be directly simplified from six degrees-of-freedom (6DOF) rigid body equations of motion to 3DOF equations of motion using the following equations:
(47) Translational Kinematics:
(48)
where S.sub.ψ=sin ψ and C.sub.ψ=cos ψ.
Translational Dynamics:
(49)
Rotational Kinematics:
{dot over (ψ)}=r (Eqn. 3)
Rotational Dynamics:
(50)
where F=[F.sub.x F.sub.y].sup.T is the body frame force, N.sub.m is the yaw moment, m is the total mass of the vehicle, and I.sub.zz is the moment of inertia about the Z.sub.b-axis.
(51) The total longitudinal force F.sub.x and lateral force F.sub.y may be written as:
F.sub.x=F.sub.xtf cos(δ)+F.sub.xtr−F.sub.ytf sin(δ)+F.sub.rr+F.sub.aero+F.sub.B
F.sub.y=F.sub.xtf sin(δ)+F.sub.ytf cos(δ)+F.sub.ytr+F.sub.yst (Eqn. 5)
where F.sub.rr=−C.sub.rrmgsgn(u) is the rolling resistance;
(52)
is the longitudinal aerodynamic drag force; F.sub.B=δ.sub.BF.sub.B,max is the braking force; F.sub.xt and F.sub.yt are longitudinal and lateral tire traction forces, respectively; F.sub.yst is the tire lateral stiction force; and the subscripts f and r indicate the force in question is associated with the front axle or the rear axle, respectively.
(53) For wheeled car-like ground vehicles, the propulsion and control forces and the steering moment may be effected by the traction forces of the tires. Because of the highly nonlinear behavior of these traction forces, tire traction force modeling can be a significant and difficult challenge in designing car-like ground vehicle control systems.
(54) In an embodiment of the invention, the longitudinal tire traction force may be defined as:
F.sub.xtr=F.sub.xtf=½C.sub.αα(u,ω.sub.w) (Eqn. 6)
where C.sub.α is the 4-wheel total tire stiffness coefficient, and α is the longitudinal slip angle. The longitudinal slip angle α may be defined as:
(55)
where R.sub.eff and ω.sub.w are the effective radius and angular speed of the wheel, respectively. To apply the controller for reverse driving, a negative sign may be added to each of the braking and acceleration equations defining the function α(u, ω.sub.w).
(56) The lateral tire traction force at the front and rear axles may be defined, respectively, as:
F.sub.ytf=½C.sub.β(δ−β),F.sub.ytr=C.sub.β(−β) (Eqn. 8)
where β defines the tire sideslip angle, δ is vehicle steering angle, and C.sub.β is the vehicle total cornering stiffness. In an embodiment of the invention, it may be assumed that no lateral tire skidding occurs. Under this assumption, the lateral force F.sub.y cannot generate lateral displacement, thereby imposing a nonholonomic constraint.
(57) The yaw moment may be defined as:
(58)
where l.sub.f and l.sub.r are the longitudinal distance of the front and rear axle to the center of gravity. As with Eqn. 7, for reverse driving, a negative sign may be added to Eqn. 9.
(59) Drive actuators for automobiles and other car-like ground vehicles typically include either an internal combustion engine plus mechanical brakes, or an electrical motor with regenerative braking and mechanical brakes. Steering actuators are typically either hydraulic or electric servos. For purposes of clarity, embodiments of the invention are described below as using an armature DC motor as the drive actuator, and a servo motor as the steering actuator. However, the invention is not limited to the use of any particular type of actuator for the drive actuator or the steering actuator.
(60) An armature-controlled DC motor may be modeled by the following first-order linear ordinary differential equation:
(61)
where F.sub.xL is the longitudinal load force, R.sub.α is the electrical resistance of the armature, J.sub.m is the effective moment of inertia of the drive train about the motor shaft, B.sub.n is the effective torsional viscous friction coefficient of the drive train about the motor shaft, K.sub.m is motor electro-mechanical constant, and R.sub.eff is the effective radius of the tire.
(62) The dynamics of the steering servo may be modeled by the following transfer function:
(63)
where ω.sub.ns is the bandwidth of the servo motor.
(64) The nonlinear trajectory-tracking problem may be formulated as a stabilization problem in the tracking error coordinate. This may reveal that the tracking error dynamics are time-varying for time-varying nominal trajectories, even if the vehicle dynamics are time-invariant. Thus, the TLC architecture may provide a solution to this problem formulation for trajectory-tracking.
(65) The response of nonlinear vehicle dynamics to control input signals may be defined by:
{dot over (ξ)}(t)=f(ξ(t),μt(t)),η(t)=h(ξ(t),μ(t)) (Eqn. 12)
where ξ(t)∈R.sup.n, μ(t)∈R.sup.l, η(t)∈R.sup.m are the state, input, and output of the vehicle dynamics, control actuators, and navigation sensors, respectively. The mappings h(⋅): R.sup.n×R.sup.l.fwdarw.R.sup.n and f(⋅): R.sup.n×R.sup.l.fwdarw.R.sup.n may be bounded with uniformly bounded and continuous Jacobians. Letting
{dot over (
and defining the respective tracking errors and error control as:
{tilde over (ξ)}(t)=ξ(t)−
may allow the tracking error dynamics to be written as:
{dot over ({tilde over (ξ)})}=f(
{tilde over (η)}=h(
where
(66) The tracking error dynamics defined by Eqn. 14 may be nonlinear and time-varying, which can be linearized along the nominal trajectories to obtain:
x=A(t)x+B(t)u,y=C(t)x+D(t)u (Eqn. 16)
Where x≈{tilde over (ξ)}, y≈{tilde over (η)} and
(67)
The linearized tracking error dynamics defined by Eqn. 15 may be stabilized by applying the linear time-varying control algorithm u=K(t)x. The TLC may thereby combine nonlinear inversion and linear time-varying feedback stabilization. Since the stabilization is exponential, this may provide robust stability in the presence of regular and singular perturbations. As described below, a 3DOF controller for a nonholonomic ground vehicle may be implemented using the TLC control algorithms presented above.
(68)
(69) Strictly speaking, vehicle dynamics may refer to the physical properties of the vehicle, represented by Eqns. 2 and 4, which result from the mass of the vehicle, and the distribution of that mass in the vehicle. Vehicle kinematics, represented by Eqns. 1 and 3, are geometric properties of the vehicle that constrain the dynamics of the vehicle. Together, Eqns. 1-4 are known as the Equations of Motion, which may be categorically referred to as the vehicle dynamics, and are accounted for by the vehicle dynamics module 332. The control actuators, such as the motor and steering system, represented by Eqns. 10a and 10b, are actuators that overcome the vehicle's dynamics, thereby enabling the vehicle to move and maneuver. The tires are control effectors that transfer actuator forces and torques to the vehicle body, thereby allowing the vehicle to accelerate and turn.
(70) In the below description of the trajectory-tracking controller 300, the subscript sim may be used to identify variables and/or signals associated with the simulated or actual vehicle state, the subscript sen may be used to identify variables and/or signals associated with sensed information or the simulated vehicle states passed through navigation sensors, the subscript nom may be used to identify variables and/or signals associated with a nominal signal, the subscript ctrl may be used to identify variables and/or signals associated with the output of the feedback controllers 314, 316, 324, 326, the subscript err may be used to identify variables and/or signals associated with the tracking error, and the subscript com may be used to identify variables and/or signals associated with the controller command signal.
(71) The dynamic pseudo-inverse of the corresponding equations of motion may be used to generate the nominal control signals, and the feedback controllers 314, 316, 324, 326 may be Proportional-Integral (PI) controllers that are used to stabilize the tracking error in each loop. The guidance outer loop may receive a position command signal P.sub.com from a trajectory generator (not shown) and a position measurement signal P.sub.sen from the navigation system 328, and use these signals to determine the velocity control signal V.sub.ctrl for the guidance inner loop. The guidance inner loop may receive a velocity command signal V.sub.com from the guidance outer loop and a velocity measurement signal V.sub.sen, and use these signals to determine a velocity error signal V.sub.err.
(72) The velocity control signal V.sub.ctrl may be a vector signal including a longitudinal velocity control signal V.sub.x,ctrl and a lateral velocity control signal V.sub.y,ctrl in the b-frame, the velocity command signal V.sub.com may be a vector signal including a longitudinal velocity command signal V.sub.x,com and a lateral velocity control signal V.sub.y,com in the b-frame, the velocity measurement signal V.sub.sen, may be a vector signal including a longitudinal velocity measurement signal V.sub.x,sen and a lateral velocity measurement signal V.sub.x,sen in the b-frame, and the velocity error signal V.sub.err may be a vector signal including a longitudinal velocity error signal V.sub.x,err and a lateral velocity error signal V.sub.y,err in the b-frame.
(73) The force control signal F.sub.ctrl for the guidance loop control allocation may be determined based on the velocity error signal V.sub.err. The velocity command signal V.sub.com may be the sum of a nominal velocity signal V.sub.nom and the velocity control signal V.sub.ctrl, as provided by:
V.sub.com=V.sub.nom+V.sub.ctrl
(74) The longitudinal velocity error signal V.sub.x,err may equal the difference between the longitudinal velocity command signal V.sub.x,com and the longitudinal velocity measurement signal V.sub.x,sen as provided by:
V.sub.x,err=V.sub.x,com−V.sub.x,sen
(75) The guidance allocation unit may determine the drive command signal δ.sub.T,com, which may correspond to a throttle position of an internal combustion engine or the voltage of an armature controlled DC motor, based on a force command signal F.sub.com and the yaw command signal ψ.sub.com. The force command signal F.sub.com may be a sum of a nominal force signal F.sub.nom and the force control signal F.sub.ctrl, as provide by:
F.sub.com=F.sub.nom+F.sub.ctrl
(76) One advantageous feature of the TLC trajectory tracking controller depicted in
(77) The nominal velocity V.sub.nom signal in the b-frame may be determined by inverting Eqn. 1 to produce:
V.sub.nom=B.sub.1.sup.−1(ψ.sub.nom){dot over (P)}.sub.nom (Eqn. 18)
where B.sub.1.sup.−1(ψ.sub.nom) is the matrix in Eqn. 1 with replaced by its nominal value ψ.sub.nom. Here the nominal yaw signal ψ.sub.nom may be defined as described below, and {dot over (P)}.sub.nom may be determined from position command signal by a pseudo-differentiator of the form:
(78)
A position tracking error P.sub.err=P.sub.sen−P.sub.com may be defined by decoupling the tracking error dynamics in the b-frame, rather than in the n-frame, to account for the nonholonomic constraint on the lateral motion of the vehicle. Referring to
R.sub.b.sup.−1=−B.sub.1.sup.−1(ψ.sub.sen)P.sub.err
The linearized error dynamics may then be given by:
(79)
(80) The PI control algorithm may be given as:
V.sub.ctrl=−K.sub.P1R.sub.b−K.sub.I1∫.sub.0.sup.tR.sub.b(τ)dτ (Eqn. 21)
where the PI gain matrices are given by:
(81)
in which A.sub.i,k=diag[−a.sub.i1k−a.sub.i2k], i=1, 2, 3, 4 and k=1, 2 are time-varying controller parameters which are synthesized from the desired closed-loop dynamic, and α.sub.ij1 is provided by:
a.sub.ij1=2ζ.sub.ijω.sub.n,i,j,a.sub.ij2=ω.sub.n,i,j.sup.2 (Eqn. 23)
where ω.sub.n,i,j is the desired natural frequency, ζ.sub.ij is the desired constant damping ratio of the desired dynamics, j=1, 2 for the x and y channel, and i=1, 2 for the two guidance loops. The output of the guidance outer loop may combine the output of the nominal controller 306 and the output of the feedback controller 314 to generate the velocity command signal
V.sub.com=V.sub.nomV.sub.ctrl.
(82) The guidance inner loop may receive the velocity command signal K.sub.com from the guidance outer loop and velocity measurement signal V.sub.sen from the navigation system 328 to determine the force command signal F.sub.com the for the guidance loop control allocation. The nominal force signal F.sub.nom may be determined using the translational dynamics Eqn. 2 to produce:
F.sub.nom=m[{dot over (V)}.sub.nom−A.sub.2(r.sub.nom)V.sub.nom] (Eqn. 24)
Where {dot over (V)}.sub.nom=[{dot over (u)}.sub.nom {dot over (v)}.sub.nom].sup.T may be determined by passing the output of the guidance outer loop nominal controller 306 V.sub.nom, through a pseudo-differentiator. The velocity tracking error Vern may be received by the guidance outer loop feedback controller 314 and defined as V.sub.err=V.sub.sen−V.sub.nom.
(83) The linearized error dynamics of the body velocity are given by:
(84)
where A.sub.2(⋅) corresponds to the matrix of Eqn. 2. The guidance inner loop feedback controller 316 may determine a force control signal F.sub.ctrl defined by:
F.sub.ctrl=−K.sub.P2V.sub.err−K.sub.I1∫.sub.0.sup.tV.sub.err(τ)dτ (Eqn. 26)
The body velocity PI parameters may be given as:
(85)
As described above, in a car-like ground vehicle that is nonholonomic, a lateral force in the b-frame does not generate lateral displacement, i.e., the tires do not slide relative to the pavement. Thus, it may only be necessary to use an x-channel based on F.sub.nom and F.sub.ctrl to control the drive actuator. The lateral position error may be corrected by the yaw angle ψ, as described in more detail below.
(86) The guidance controller 302 may determine the drive command signal δ.sub.T,com and the yaw command signal ψ.sub.com. Under the rigid body and level ground assumptions, the rotational motion may depend solely on the yaw angle ψ. Thus, the roll angle ϕ and pitch angle θ may either be constrained to zero or treated as disturbances. The longitudinal force F.sub.x (e.g., as characterized by a longitudinal force control signal F.sub.x,ctrl) may be used to determine a drive control signal δ.sub.T,ctrl. The drive control signal δ.sub.T,ctrl may be summed with a nominal drive signal δ.sub.T,nom to produce the drive command signal δ.sub.T,com, which for a drive actuator comprising a DC motor, may correspond to the voltage applied to the DC motor.
(87) For a drive actuator comprising a DC motor in which δ.sub.T=E.sub.m, the voltage applied to the DC motor may be determined by inverting Eqn. 10 to produce:
(88)
where ω.sub.m,nom is determined from the nominal angular speed of the wheel ω.sub.w,nom. The nominal angular speed of the wheel ω.sub.w,nom may be determined by inverting Eqn. 6 with the nonlinear tire traction force model of Eqn. 7, and {dot over (ω)}.sub.m,nom may be determined by passing ω.sub.m,nom through a pseudo-differentiator.
(89) Referring again to
ψ=χ−β
where χ is the course angle of the vehicle and β is the sideslip angle of the vehicle. The nominal course angle χ.sub.nom may be defined as:
(90)
Because β can make the dynamic inverse unstable, it may be excluded from the nominal dynamic inverse, e.g., by setting β.sub.nom=0, so that ψ.sub.nom=χ.sub.nom. By allowing the feedback controller to manage β, the yaw control signal may be defined as:
(91)
where V.sub.ctrl is a second channel of V.sub.ctrl output from the guidance outer loop feedback controller 314 which may be received by the guidance control allocation module 312. Thus:
ψ.sub.com=ψ.sub.nom+ψ.sub.ctrl
(92) The outer loop of the steering controller 304 may receive the yaw command signal ψ.sub.com from the guidance controller 302 and the yaw measurement signal ψ.sub.sen from the navigation system 328, and determine the body angular rate command signal for the inner loop based thereon. The nominal yaw angular rate signal r.sub.nom may be determined by inverting Eqn. 3, which yields:
r.sub.nom={dot over (ψ)}.sub.nom (Eqn. 30)
Where {dot over (ψ)}.sub.nom is determined by passing O.sub.nom through a pseudo-differentiator. The tracking error control algorithm for this loop may be provided by:
r.sub.ctrl=K.sub.P3ψ.sub.err−K.sub.I3∫.sub.0.sup.tψ.sub.err(τ)dτ (Eqn. 31)
where the yaw tracking error signal ψ.sub.err=ψ.sub.sen−ψ.sub.com, the control gains are given as
K.sub.P3=a.sub.331,K.sub.I3=a.sub.332 (Eqn. 32)
and the yaw angular rate command signal r.sub.com output by the steering outer loop nominal controller 318 is the sum of the nominal yaw angular rate r.sub.nom and the yaw angular rate control signal r.sub.ctrl:
r.sub.com=r.sub.nom+r.sub.ctrl
(93) The steering inner loop may receive the body yaw angular rate command signal r.sub.com from the steering outer loop feedback controller 324 and the yaw angular rate measurement signal r.sub.sen from the navigation system 328, and determine a yaw angular rate error signal r.sub.err based on the difference between the signals. The steering inner loop feedback controller 326 may then determine a nominal body torque signal N.sub.m,nom based the yaw angular rate error signal r.sub.err.
(94) To this end, inverting Eqn. 4 may result in a nominal body torque of:
N.sub.m,nom=I.sub.zz{dot over (r)}.sub.nom (Eqn. 33)
where {dot over (r)}.sub.nom, is determined by passing r.sub.nom through a pseudo-differentiator, e.g., the steering outer loop feedback controller 324. The nominal body torque signal N.sub.m,com=N.sub.m,nom+N.sub.m,ctrl may thereby be determined based on the yaw command signal ψ.sub.com received from the guidance controller 302 and the yaw measurement signal ψ.sub.sen received from the navigation system 328. The steering controller 304 may determine the body torque command signal N.sub.m,com based on the body torque control signal N.sub.m,ctrl and the nominal body torque signal N.sub.m,nom, e.g., by summing the signals so that N.sub.n,com=N.sub.m,ctrl+N.sub.m,nom. The steering control allocation module 322 may then determine the steering drive command signal δ.sub.S,com based on the body torque command signal N.sub.m,com.
(95) The PI control algorithm for the inner loop may be defined by:
N.sub.m.sub.
where the body angular rate tracking error is r.sub.err=r.sub.sen−r.sub.nom, the control gains are given by:
K.sub.P4=I.sub.zza.sub.431,K.sub.I4=a.sub.432 (Eqn. 35)
and the output of the steering inner loop is N.sub.m.sub.
(96) The steering control allocation module 322 may be used to allocate the moment command signal to steering angle and further determine the steering angle command signal δ.sub.S,com. The steering angle command signal δ.sub.S,com may be determined by inverting Eqn. 10 to produce:
(97)
(98)
(99) One type of pure pursuit guidance determines a circumferential arc that joins the current position of the vehicle and a target point in front of the vehicle on the nominal path. The vehicle then follows the arc as it moves forward towards the nominal path. However, arc based pure pursuit guidance systems do not consider the speed of the vehicle, and may therefore not be suitable for trajectory-tracking in car-like ground based vehicles.
(100) Another type of pure pursuit guidance that has been used for aircraft pursuit aligns the velocity vector of the pursuing vehicle with the line-of-sight joining the vehicle with a real or virtual target. A normal acceleration command signal is generated and converted into an attitude command signal for maneuvering the aircraft. Unlike aircraft, which enjoy full 6DOF motion, car-like ground vehicles are subject to a nonholonomic motion constraint because lateral force cannot generate lateral acceleration. Thus, conventional aircraft line-of-sight pure pursuit guidance, which generates a normal acceleration command signal, cannot be used to directly guide a car-like ground vehicle. Embodiments of the invention overcome this issue by generating a feasible n-frame position trajectory for the tracking controller.
(101) To this end, a modified line-of-sight pure pursuit guidance system may be configured to operate with car-like ground vehicle trajectory-tracking guidance. This may be accomplished by applying line-of-sight pure pursuit guidance to trajectory-tracking instead of path-following for a nonlinear, nonholonomic, car-like vehicle, decoupling the line-of-sight into heading and speed guidance control in the body frame to overcome the lateral nonholonomic constraint, and generating a guidance trajectory in the inertial frame for the 3DOF inertial position trajectory controller instead of generating an acceleration command signal.
(102) Referring now to
(103) In the following description of an exemplary line-of-sight pure pursuit guidance system, it is assumed that the pursuing vehicle's maneuverability is at least as good as the target vehicle, and the road conditions are ideal. The line-of-sight pure pursuit guidance trajectory generator may have multiple objectives. These objectives may include: acquire a line-of-sight vector in the b-frame; align the velocity vector with the line-of-sight vector; keep a safety longitudinal distance between the chasing vehicle and the target; and generate a nominal guidance trajectory P.sub.g in the Cartesian n-frame. The nominal guidance trajectory P.sub.g may be provided to the trajectory-tracking controller 300 as the position command signal P.sub.com.
(104) The n-frame line-of-sight angle α.sub.LOS may be defined as:
(105)
where [P.sub.x.sub.
(106) Let
R=[P.sub.x.sub.
be the range vector in the n-frame. The objective of line-of-sight pure pursuit guidance may be to align the velocity vector with the line-of-sight vector so that the following equation is satisfied:
V×R=0.Math.α.sub.LOS−χ.sub.g=0 (Eqn. 38)
where the subscript g indicates the variable is a guidance signal.
(107)
(108) The line-of-sight seeker module 700 may be configured to determine the line-of-sight vector in the b-frame by acquiring the b-frame line-of-sight angle γ with respect to the longitudinal axis x.sub.b, and to determine the longitudinal down-range distance R.sub.bx. The line-of-sight in the n-frame may be determined using Eqn. 37. The b-frame line-of-sight angle γ may be determined as:
γ=α.sub.LOS−ψ.sub.sen
where ψ.sub.sen is the current instant navigation sensor sensed yaw angle. The down-range vector R.sub.b in the b-frame may be given by:
(109)
be the range between the pursuing vehicle and the target, R.sub.bx=R.sub.b cos γ and R.sub.by=R.sub.b sin γ may provide a range projection to the x.sub.b and y.sub.b coordinate axes, respectively, to define a longitudinal component (R.sub.bx) and a lateral component (R.sub.by) of the range distance vector in the b-frame, where γ is the angle between the line-of-sight vector and longitudinal axis X.sub.b, P.sub.x,tgt and P.sub.y,tgt are the x and y coordinates of the target indicated by the target relative position signal P.sub.tgt, and P.sub.x and P.sub.y are the x and y coordinates of the pursuing vehicle indicated by the position measurement signal P.sub.sen. Although the above equations may define the functionality of the line-of-sight guidance seeker, embodiments of the invention may include line-of-sight seekers that determine the range vector and line-of-sight relative to the b-frame without requiring knowledge of the target relative position in the n-frame. For example, the line-of-sight seeker may include one or more of a camera, infrared camera, sonar, radar, and/or lidar.
(110) The heading guidance module 701 may be configured to align the velocity vector with the line-of-sight vector. The nominal vehicle sideslip angle β.sub.nom may be managed by the feedback controller. This may allow the nominal vehicle sideslip angle β.sub.nom to be set to zero in the trajectory controller. Hence, β.sub.g may be zero in the guidance trajectory generator 502, in which case χ.sub.g=ψ.sub.g, based on ψ=χ−β. Eqn. 38 may then be rewritten as:
γ=α.sub.LOS−ψ.sub.g=0, as t.fwdarw.∞ (Eqn. 39)
Thus, the heading guidance objective is to exponentially stabilize γ=0 using the guidance angle ψ.sub.g as a virtual control, for which a Proportional-Integral-Derivative (PID) guidance controller may be employed to provide:
r.sub.g=K.sub.I1∫.sub.0.sup.tγ(τ)dt+K.sub.P1γ+K.sub.D1{dot over (γ)}
ψ.sub.g=∫.sub.0.sup.tr.sub.g(τ)dτ (Eqn. 40)
The PID gains may be determined using a linear time-invariant controller design technique based on the equivalent closed loop system shown in
(111) The speed guidance module 702 may be used to maintain a safe longitudinal distance between the pursuing vehicle and the target. To this end, a distance error may be defined as R.sub.err=R.sub.bx−R.sub.set, where R.sub.set is the safe longitudinal distance setting. In general, R.sub.set=τ|V.sub.x| may be a velocity dependent parameter, where τ is an appropriate response time of the controller.
(112) A PID controller 705 may be employed to exponentially stabilize R.sub.err.fwdarw.0 as t.fwdarw.∞ by determining a guidance velocity u.sub.g as follows:
u.sub.g=K.sub.I2∫.sub.0.sup.t{circumflex over (R)}.sub.err(τ)dt+K.sub.P2{circumflex over (R)}.sub.err+K.sub.D2{dot over (R)}.sub.err (Eqn. 41)
where {circumflex over (R)}.sub.err(τ)=sat.sub.R.sub.
(113)
The limit R.sub.err,max may be chosen to limit the maximum guidance acceleration {dot over (u)}.sub.g due to large range errors, together with an integrator anti-wind up scheme.
(114) The trajectory synthesizer module 703 may be used to construct the nominal guidance trajectory P.sub.g in the n-frame using the outputs of the heading guidance module 701 and speed guidance module 702 as follows
{dot over (P)}.sub.x.sub.
{dot over (P)}.sub.y.sub.
û.sub.g=sat.sub.u.sub.
P.sub.x.sub.
P.sub.y.sub.
where v.sub.g is vehicle lateral velocity in the b-frame. Because the side slip angle β.sub.g=0, v.sub.g=0. The term u.sub.max define the maximum speed of the car taking into account skidding prevention, which can be adaptively set in real time based on the operating and pavement conditions.
(115)
(116)
(117) The line-of-sight pure pursuit guidance controller described above may be used for pursuing an uncooperative target without a road constraint. However, the controller can also be used for cooperative pursuing, where the target broadcasts its coordinate P.sub.tgt to the pursuer. For neutral pursuit, such as lane keeping, the seeker may designate a virtual target in front of the vehicle, e.g., a point on the center of the lane as depicted in
(118)
Experimental Results—Trajectory-Tracking Controller
(119) To focus on the motion control issues, and to facilitate validation of the controller design, a 3DOF trajectory-tracking controller was designed for a ⅙ scale DC motor driven car with regenerating braking and servo motor driven steering. The controller for 3DOF car receives a position trajectory command signal, and determines the corresponding voltages for the motor and the steering servo.
(120) TABLE-US-00001 TABLE I Vehicle Modeling Parameters for Test Radio Controlled Vehicle Symbol Parameter Value Units R.sub.eff Effective wheel radius 0.0725 m L Length of the longitudinal axle 0.7 m w Width of the vehicle track 0.35 m m Total mass 4.76 kg I.sub.zz Moment of inertia about z-axis 0.0687 kg .Math. m.sup.2 C.sub.α Total longitudinal tire stiffness 400 N/rad C.sub.rr Total tire rolling resistance 0.02 C.sub.β Total cornering stiffness 150 N/rad J.sub.m Motor moment of inertia 5.4e.sup.−5 kg .Math. m.sup.2 B.sub.m Motor viscous friction constant 0.5e.sup.−5 Nm/rad K.sub.m Motor KM constant 5.15e.sup.−3 N .Math. m/A R.sub.a Total armature resistance 0.2 Ω N Gear Ratio 1:20
(121) MATLAB® and Simulink®, which are computer applications for data analysis and simulation available from Mathworks, Inc. of Natick, Mass., United States, were used to model the trajectory-tracking controller 300. Using the system parameters in Table I, a vehicle rigid-body model was built using Eqns. 1-4, and a tire traction force model was built using Eqns. 5-7 along with various nonlinear drag forces and actuator models as given by Eqns. 9 and 10. The system parameters in Table I are based on a Traxxas® radio controlled “Monster Truck”, which was used as a test vehicle and can be obtained from the Traxxas corporation of McKinney, Tex., United States. The Monster Truck was classified as a 1/10-scale by the manufacturer, but it was about ⅙ of a passenger car, and was treated as a ⅙-scaled car for scaling test speed performance. The scenarios tested included scenarios where the objective was to follow a desired trajectory and maintain a desired velocity. Saturation requirements of |δ|≤30° and |u|≤7 m/s were also imposed on the trajectory-tracking controller 300.
(122) The controller parameters used in the simulations are shown in Table II. The nominal controller bandwidth, i.e. the natural frequency ω.sub.n in the pseudo-differentiators, was set based on the maximum response time of the corresponding actuators or maximum allowable bandwidth by the operational requirements. The closed-loop bandwidth, i.e. the natural frequency ω.sub.n for each closed-loop eigenvalue, was initially set to one third of the bandwidth of the immediate inner loop. All damping ratios were initially set to 0.7. The parameters were then tuned for most desirable performances and transient behaviors.
(123) TABLE-US-00002 TABLE II 3DOF Motion Controller Coefficients Guid. Guid. Steering Steering Outer Loop Inner Loop Outer Loop Inner Loop Nominal Controller ζ 1.4 1.4 1.4 1.4 ω.sub.n 9 9 14 14 Feedback Controller ζ [0.7 2.1] [0.7 1.4] 0.7 0.7 ω.sub.n [3 0.9] [16 4*] 5 17
(124)
(125)
(126) The b-frame error is the projection of P.sub.err onto the b-frame.
(127) In general, higher speed may cause larger lateral tracking errors at turns.
(128) Hardware implementation and testing has been performed using the above described model vehicle. The controller parameters and a test case of tracking a figure-8 trajectory is shown below in Table III and
(129) Embodiments of the invention described above include a 3DOF trajectory-tracking controller design for a nonlinear, nonholonomic, car-like ground vehicle using TLC. The simulation results show that the vehicle can track a feasible trajectory with good performance. This is believed to be the first TLC controller for nonholonomic vehicle trajectory-tracking. The experimental results demonstrate a TLC controller that provides an effective alternative to MPC and other car controllers. The performance of the TLC controller may be further improved by considering sensor errors, dynamics, and noise; the deformable connection between the vehicle body and wheels; and the rolling and pitching motions, tire skidding and vehicle stability.
Experimental Results for Line-of-Sight Pure Pursuit Guidance
(130) A line-of-sight pure pursuit guidance controller in accordance with the above description was implemented and simulated using MATLAB/Simulink. The ⅙-scale Traxxas remotely-controlled model car described above was used to gather experimental data with the line-of-sight pure pursuit guidance controller. The parameters used in the speed guidance controller were ζ=0.7, ω.sub.nx=3 rad/sec, and ω.sub.ny=5.5 rad/sec. Additional parameters used to obtain the experimental results are shown in Table II.
(131) TABLE-US-00003 TABLE II PID Parameters for LOS PPG Test Radio Controlled Vehicle Module K.sub.p K.sub.i K.sub.D Heading 0.4909 0.7 0 Driving 0.15 0.0056 0
(132)
(133)
(134)
(135) Referring now to
(136) The processor 3202 may include one or more devices selected from microprocessors, micro-controllers, digital signal processors, microcomputers, central processing units, field programmable gate arrays, programmable logic devices, state machines, logic circuits, analog circuits, digital circuits, or any other devices that manipulate signals (analog or digital) based on operational instructions that are stored in the memory 3204. Memory 3204 may include a single memory device or a plurality of memory devices including but not limited to read-only memory (ROM), random access memory (RAM), volatile memory, non-volatile memory, static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, cache memory, or any other device capable of storing information. The memory 3204 may also include data storage devices such as a hard drive, optical drive, tape drive, non-volatile solid state device, or any other device capable of storing information. A database 3214 may reside in memory 3204, and may be used to collect and organize data used by the various systems and modules described herein.
(137) Processor 3202 may operate under the control of an operating system 3216 that resides in memory 3204. The operating system 3216 may manage computer resources so that computer program code embodied as one or more computer software applications, such as application 3218 residing in memory 3204, may have instructions executed by the processor 3202. The operating system 3216 may be a real-time operating system that process data as it comes in with little or no buffer delays, and that has well-defined and consistent time constraints. In an alternative embodiment, the processor 3202 may execute the applications 3218 directly, in which case the operating system 3216 may be omitted. One or more data structures 3220 may also reside in memory 3204, and may be used by the processor 3202, operating system 3216, and/or application 3218 to store and/or manipulate data.
(138) The I/O interface 3206 may provide a machine interface that operatively couples the processor 3202 to other devices and systems, such as the network 3212 and/or external resource 3210. The application 3218 may thereby work cooperatively with the network 3212 and/or external resource 3210 by communicating via the I/O interface 3206 to provide the various features, functions, and/or modules comprising embodiments of the invention. The application 3218 may also have program code that is executed by one or more external resources 3210, or otherwise rely on functions and/or signals provided by other system or network components external to the computer system 3200. Indeed, given the nearly endless hardware and software configurations possible, persons having ordinary skill in the art will understand that embodiments of the invention may include applications that are located externally to the computer system 3200, distributed among multiple computers or other external resources 3210, or provided by computing resources (hardware and software) that are provided as a service over the network 3212, such as a cloud computing service.
(139) The HMI 3208 may be operatively coupled to the processor 3202 of computer system 3200 to allow a user to interact directly with the computer system 3200. The HMI 3208 may include video and/or alphanumeric displays, a touch screen, a speaker, and any other suitable audio and visual indicators capable of providing information to the user. The HMI 3208 may also include input devices and controls such as an alphanumeric keyboard, a pointing device, keypads, pushbuttons, control knobs, microphones, etc., capable of accepting commands or input from the user and transmitting the entered input to the processor 3202.
(140) In general, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions, or a subset thereof, may be referred to herein as “computer program code,” or simply “program code.” Program code typically comprises computer-readable instructions that are resident at various times in various memory and storage devices in a computer and that, when read and executed by one or more processors in a computer, cause that computer to perform the operations necessary to execute operations and/or elements embodying the various aspects of the embodiments of the invention. Computer-readable program instructions for carrying out operations of the embodiments of the invention may be, for example, assembly language or either source code or object code written in any combination of one or more programming languages.
(141) Various program code described herein may be identified based upon the application within which it is implemented in specific embodiments of the invention. However, it should be appreciated that any particular program nomenclature which follows is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. Furthermore, given the generally endless number of manners in which computer programs may be organized into routines, procedures, methods, modules, objects, and the like, as well as the various manners in which program functionality may be allocated among various software layers that are resident within a typical computer (e.g., operating systems, libraries, API's, applications, applets, web based services, etc.), it should be appreciated that the embodiments of the invention are not limited to the specific organization and allocation of program functionality described herein.
(142) The program code embodied in any of the applications/modules described herein is capable of being individually or collectively distributed as a program product in a variety of different forms. In particular, the program code may be distributed using a computer-readable storage medium having computer-readable program instructions thereon for causing a processor to carry out aspects of the embodiments of the invention.
(143) Computer-readable storage media, which is inherently non-transitory, may include volatile and non-volatile, and removable and non-removable tangible media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Computer-readable storage media may further include RAM, ROM, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other solid state memory technology, portable compact disc read-only memory (CD-ROM), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and which can be read by a computer. A computer-readable storage medium should not be construed as transitory signals per se (e.g., radio waves or other propagating electromagnetic waves, electromagnetic waves propagating through a transmission media such as a waveguide, or electrical signals transmitted through a wire). Computer-readable program instructions may be downloaded to a computer, another type of programmable data processing apparatus, or another device from a computer-readable storage medium or to an external computer or external storage device via a network.
(144) Computer-readable program instructions stored in a computer-readable medium may be used to direct a computer, other types of programmable data processing apparatuses, or other devices to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions that implement the functions, acts, and/or operations specified in the flow-charts, sequence diagrams, and/or block diagrams. The computer program instructions may be provided to one or more processors of a general purpose computer, a special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the one or more processors, cause a series of computations to be performed to implement the functions, acts, and/or operations specified in the flow-charts, sequence diagrams, and/or block diagrams.
(145) In certain alternative embodiments, the functions, acts, and/or operations specified in the flow-charts, sequence diagrams, and/or block diagrams may be re-ordered, processed serially, and/or processed concurrently consistent with embodiments of the invention. Moreover, any of the flow-charts, sequence diagrams, and/or block diagrams may include more or fewer blocks than those illustrated consistent with embodiments of the invention.
(146) The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the embodiments of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, actions, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, actions, steps, operations, elements, components, and/or groups thereof. Furthermore, to the extent that the terms “includes”, “having”, “has”, “with”, “comprised of”, or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising”.
(147) While all of the invention has been illustrated by a description of various embodiments and while these embodiments have been described in considerable detail, it is not the intention of the Applicant to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. The invention in its broader aspects is therefore not limited to the specific details, representative apparatus and method, and illustrative examples shown and described. Accordingly, departures may be made from such details without departing from the spirit or scope of the Applicant's general inventive concept.