0% found this document useful (0 votes)
114 views6 pages

Modelo Matematico de Pendulo Invertido

pendulo invertido

Uploaded by

Jor Ge
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
114 views6 pages

Modelo Matematico de Pendulo Invertido

pendulo invertido

Uploaded by

Jor Ge
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Mathematical Model and Control Strategy

of a Two-wheeled Self-balancing Robot

Bernhard Mahler and Jan Haase


Institute of Computer Technology
Vienna University of Technology, Austria
Email: [email protected] / [email protected]
mH
AbstractIn this paper a control strategy and sensor concept mH
for a two-wheeled self-balancing robot is proposed. First a
mathematical model of the robot is derived using Lagrangian

mechanics. Based on the model a full state feedback controller, rH
in combination with two higher-level controls are deployed for l
y
stabilization and drive control. A gyroscope, an accelerometer and
rotational encoders are used for state determination, introducing
rL
a new method of measurement data fusion for the accelerometer z mL
mL r x
and the gyro by using a drift compensation controller. Further- s
more measurement proceedings for the model parameters of a
real prototype robot are suggested and the control for this robot
is designed. The proposed mathematical model, as well as the
Fig. 1. Structure and definitions of the mathematical model
control strategy are then verified by comparing the behavior of
the constructed robot with model simulations.

I. I NTRODUCTION [6], [7]. The majority of these studies have their individual
focus on trying to implement new control methods which have
For nearly two decades research and development of self- not been tested yet for self-balancing robots. For development
balancing vehicles is taking place. In 2001 the Segway, a self- of such a robot numerous further issues like motor drive and
balancing transportation system controlled by balance shift sensor characteristics also need to be considered in overall
of the driver, was introduced and got commercially available control design. Also the complexity of the control algorithms
[1]. It has been noticed by the broad public as a modern, is important for efficient implementation on small microcon-
futuristic vehicle. Although the Segway evolved over the last troller systems.
years as some kind of lifestyle product it was originally In this paper an in-depth overview, beginning with basic the-
designed as a serious transportation system in urban areas. oretical considerations and ending with a ready-to-implement
With the upcoming availability of low-cost, high performance control system, is given. In Section II a mathematical model is
MEMS sensor technology, the use of inertial sensors was derived, using Lagrangian mechanics. For stabilization a well-
no longer restricted to high end applications like avionics or proven linear state space control is used and for state variable
space missions and the self-balancing concept also arrived at acquisition a novel gyroscope-accelerometer sensor fusion
robotics. method is proposed in Section IV. The model parameters of
Even though a two-wheeled self-balancing robot is an inher- a real prototype robot are determined by using specifically
ently unstable system which needs to be stabilized by elec- designed measurement proceedings. The control is designed
tronic means, the two-wheeled movement can have also several in Section V based on these model parameters. Finally the
benefits. Because of the reduced wheel count the robot can control system is implemented in the prototype robot to verify
provide low footprints, compared to traditional systems and is the effectiveness and robustness of the control strategy and
also capable of turning around stationary for constricted area state variable acquisition.
applications. Equipped with loading platforms or manipulators
self-balancing robots, working in human controlled or even
completely autonomous operation, might be used in industrial II. M ATHEMATICAL M ODEL
autnomous transportations systems or warehouses in the future. A. Overview
From a more technical standpoint, a two-wheeled self-
balancing robot is representing a mobile inverted pendulum, A two-wheeled self-balancing robot usually consists of the
which is a classic problem in dynamics and control theory. two wheels connected to a body frame holding the motor drive,
One of the early day robots was Joe by Grasser et al., the power and control electronics as well as some kind of
which used state space control based on a linear model derived battery. In order to keep the robots behavior predictable by
with Newtonian mechanics [2]. In recent years intensive and analytical means some abstractions of reality have to be made.
diverse research is going on in this field and numerous robot Especially the nonuniformly distributed mass within the body
concepts and control strategies have been proposed, ranging has to be reduced to point masses.
from linear state space controllers with pole placement [2] Figure 1 shows the mechanical model of the robot used in
and LQR controller design [3], [4], to nonlinear and intelligent this paper. It consists of the two point masses mH and mL
control methods like sliding mode control [5] or fuzzy control connected to each other, having the distance l. The lower point

978-1-4799-0224-8/13/$31.00 2013 IEEE 4198


mass mL represents the motor drive and the upper point mass I RM LM
mH represents the rest of the body frame. the two mass system
is rotatable connected to the wheels at the lower mass point. M D , D
The moment of inertia of the wheels JW is also taken into U
account.

B. Equations of Motion Fig. 2. Equivalent circuit diagram of the motor dive


The equations of motion of the robot can be systematically 
obtained by using Lagrangian mechanics. With regard to the d (mH + mL ) r2 + JR (g v) sin()
measurement based determination, the moved distance s of = +
dt l ((mH + mL ) r2 + JR mH r2 cos2 ())
the lower point mass and the bodys pitch angle are used 
as generalized coordinates q1 and q2 in terms of Lagrangian (MD + c ) r cv v r2 c v cos()
(12)
formalism. l ((mH + mL ) r2 + JR mH r2 cos2 ())
The position of the two point masses from a stationary

((MD + c ) r c v) (mH + mL ) r2 + JR
reference system as shown in Figure 1 can be described by
the two position vectors mH l2 r ((mH + mL ) r2 + JR mH r2 cos2 ())
T dv (MD + c ) r2 cos()
rH = [s + l sin(), 0, l cos()] (1) =
dt l ((mH + mL ) r2 + JR mH r2 cos2 ())
T
rL = [s, 0, 0] (2) (l r mH (g v) sin() + k v) r cos()
+ (13)
With the identities v = s and = , the kinetic energy of l ((mH + mL ) r2 + JR mH r2 cos2 ())
the two masses and the wheels are given by the equations (3), (MD + c ) r cv v r2 c v
(4), and (5). (mH + mL ) r2 + JR mH r2 cos2 ()
1 1
TH = mH rTH rH = mH (v 2 + 2 l v cos() + l2 2 ) (3) C. Drive system
2 2
1 1 Several drive systems can be used for a self-balancing
TL = mL rTL rL = mL v 2 (4) robot. A very simple system - in terms of driver complexity
2 2 - would be two brushed permanent-magnet DC-motors with
1 1  v 2
TR = JR R 2
= JR (5) the wheels attached through appropriate gearboxes. The use
2 2 r of brushless DC-motors - geared or dircetly attached to the
Assuming that the potential energy of the mass points is zero wheels - would also be possible. More complex electronics
for y = 0, the total potential energy of the two masses mH with space vector control of the brushless DC-motors would
and mL is be needed for slow speeds and standstill of the robot. Another
V = mH g l cos() (6) suitable method especially for smaller robots would be the use
of stepper motors directly attached to the wheels.
In the mathematical model of the robot a velocity dependant For brushed permanent-magnet DC-motors a simple electronic
rolling friction of the wheels, as well as a rotational friction, model can be used. Figure 2 shows the equivalent circuit dia-
proportional to the angular velocity of the motor drive, are gram of the motor drive. In this model the armature resistance
also taken into account. These dissipative processes can be RM and inductance LM , together with a motor torque constant
described as Rayleighs dissipation function of the following kM are used to describe the drives dynamics. The equation
form [10]: of state for the motor current can be written as
1 X 1
 v 2  di 1  v 
D= 2
ci qi = 2
cv v + c (7) = uM RM i kM (14)
2 i 2 r dt LM r
and is linked to the mechanical state equations (12) and (13)
The drive torque, which is trying to twist the wheels against by using the relationship
the body, can be described as external force of the mechanical
system. The generalized external forces can be written as: MD = kM i (15)
Equations (11), (12), (13), and (14) are representing the
= MD (8)
complete nonlinear system state model of the robot and can
MD be used for simulation and control design.
v = FD = (9)
r
III. C ONTROL S TRATEGY
With the use of the Lagrangian L = T V and Lagranges
equation [10], The self-balancing robot is a variation of an inverted
pendulum, which is a classic problem in dynamics and control
d L L R
+ = i (10) theory. The control strategy proposed in this paper is a state
dt qi qi qi space control combined with two higher level control loops for
the nonlinear equations of motion for the robot (11), (12), and speed and differential speed of the two wheels. The differential
(13) can be obtained. speed control is needed for turning maneuvers and driving
d along curves. Figure 3 shows the control scheme of the robot.
= (11)
dt

4199
State space control estimation structure. The acquisition of the necessary state
kT variables for the robot is covered in section IV.

vSET i C. Motor dynamics simplification


PI uL
Robot The motor current dynamics will usually be significantly
vd, SET uR v faster than the rest of the mechanical system. Controller design
PI vd
will result in a low feedback coefficient for the motor current,
so the impact of the motor current on the system will be low.
Using the limit of the function LM /RM 0 equation (14)
can be rewritten as the algebraic equation
1  v 
Fig. 3. Basic control scheme for the self-balancing robot i= u kM (18)
RM r

A. Linearization reducing the order of the dynamic system by the motor current.
So including the motors current in state space control is not
In order to use linear control techniques, the mathematical needed in most cases and therefore measurement of the motor
model of the robot needs to be linearized at its upper rest current can be neglected.
position. The system state functions (11), (12), (13), and (14)
have the form x = f (x, u), where the vector x represents the
state variables (, , v, i) and the vector u represents the input D. Speed and Steering Control
signal (uM ).
In most scenarios drive speed and direction is commanded
By linearizing the system, an equivalent linear model (16) can
by some kind of higher-level or manual control. With the
be obtained,
full state feedback applied, the robot will stay in an upright
x = A[x x0 ] + B[u u0 ] position and control deviation will be reduced but not brought
(16) zero. In order to achieve the set speed and direction two PI-
y = C[x x0 ] + D[u u0 ]
controllers on top of the state feedback are applied, as also
where the matrices A, B, C, D result from the Jacobians of the shown in Figure 3.
nonlinear state functions evaluated at the upper rest position Steering of the robot is done by controlling the differential
of the robot (0 = 0 = v0 = i0 = uM,0 = 0). speed of the two wheels. Beside the control of driving turns,
this is also necessary for driving straight ahead. In this case
B. State Space Control although the same voltage is applied to both motors they will
typically run at slight different speeds leading the robot to
Without any kind of control mechanism the robot shows drive unwanted curves.
inherently unstable behavior, because its center of mass
is above its pivot point. This can also be examined by
determining the eigenvalues of the system matix A in (16). E. Curve radius
As long as the upper mass mH is different from zero the
In automotive engineering a common way of describing
system matrix has eigenvalues with positive real part and so
turns is the curve radius. For software implementation a
the system is unstable.
relationship between the wheels speed difference and the curve
A common method for stabilizing such a system is the use of
radius is useful. Assuming the robot is driving along a curve
a state space control. For stabilizing the robot in an upright
with the radius rc and the right wheel is at the inside of the
position, full state feedback is used in this paper to place
curve and the two wheels having the distance b, the angular
the closed loop poles, corresponding to eigenvalues of the
velocity around the centre of the curve is then given by
system at desired locations in the s-plane. Full state feedback
is accomplished by weighted feedback of the state variables v vl vr
x as shown in the following equation. c = = b
= b
(19)
rc rc + 2 rc 2

u = r kT x = r (k + k + kv v + ki i) (17) Using (19) and the relationships vl = v + vd /2 and vr =


For determination of the appropriate weighting coefficients of v vd /2 the curve radius can be expressed by
the feedback vector k either manual pole placement by using b (vl + vr ) v
Ackermanns formula [11] or methods of the LQR (linear rc = =b (20)
quadratic regulator) design can be used. Placing the poles of 2 (vr vl ) vd
the system to a more left position on the s-plane will result
in faster response of the system, but also higher values of the IV. S ENSORICAL S TATE ACQUISITION
weighting coefficients which will lead the motor voltage to its
range limits. For implementation of the full feedback state space control,
One major downside of full state feedback control is, that all described in section III, the acquisition of the state variables
state variables of a system have to be measured or at least (body pitch angle , pitch angular velocity , linear velocity
derived from measured variables using some kind of state v, and motor current i) of the robot is needed.

4200
v

Sensor
az

I
ay

d
ax
PI DT1 DT1
Sensor model

ax
a x d/dt
dv/dt

Fig. 5. Scheme for pitch angle determination


Fig. 4. Position of the accelerometer inside the robot

A. Motor current D. Pitch angle - Sensor fusion


Especially when highly dynamic behavior is demanded
from the robot, including the motors current into the control The main factor for stabilization of the robot is a depend-
strategy can be reasonable. Measuring the motor current can able, noisefree pitch angle signal. The pitch angle typically
be accomplished with shunt resistors. If potential-free mea- has the highest weighting factor in state feedback.
surement is needed - especially when bridged motor drivers Direct angular measurement with an accelerometer sensor is
are used - also hall-effect based current sensors are available. relying on vertical gravity. During acceleration maneuvers of
Due to the use of motor bridge drivers the current of each the robot, horizontal acceleration and gravitational acceleration
motor will be measured separately. Under normal operating will add vectorially, resulting in wrong angular outputs. An-
conditions (v >> vd ) the two motors will run at approximately other method would be the integration of the angular velocity
equal speeds and so from a stabilization standpoint the two signal from the gyroscope over time. The unavoidable offset
motors can be considered as one unit. The motor current input in the gyro signal leads to a drift in the angle signal and makes
for the controller can therefore be calculated as the sum of the this approach unusable.
two individual motor currents. In practice the acquisition of the pitch angle can be done by
combination of the two sensors, benefitting from the drift free
angular signal of the accelerometer as well as the noiseless,
B. Angular velocity acceleration uninfluenced angular signal of the gyroscope.
These kind of approach is also called sensor fusion and
One of the key factors for stabilization is the accurate different implementations such as the use of IIR filters [8]
measurement of the angular pitch velocity . The measurement or the Kalman filter [9] exist. The method proposed in this
of the angular velocity can be done with a gyroscopic sensor paper is based on drift compensation of the angular signal
attached to the body. A large variety of highly integrated by comparing the output of the accelerometer sensor with the
MEMS-based gyroscopic sensors are available. One mayor output of a mathematical sensor model.
quality feature of the sensor, especially needed for use in The position of the accelerometer inside the body of the robot
a self-balancing robot, is the insensitiveness against linear is shown in Figure 4. The acceleration e ax along the sensors
accelerations. x-axis is given by

C. Velocity ax = g sin() + v cos() + d ,


e (23)
The linear velocity v of the robot can be obtained form
angular pitch velocity and the angular velocity of the two
motor drives D,l and D,r using where d is the distance of the sensor from the wheel axle.
As shown in Figure 5, the measured value from the ac-
  celerometer ax is compared to the calculated value from the
D,l + D,r sensor model e ax . Any drift in the angle signal , due to
v = (D + ) r = + r. (21)
2 integration of the angular velocity signal , leads to a deviation
between ax and e ax , which is compensated via the PI-controller.
For steering control the difference speed vd is given by For a precise calculation of e ax also the time derivatives of
and v are needed. They can either be obtained through
vd = (D,l D,r ) r. (22) state estimation, based on the model of the robot, or through
derivative filters as shown in Figure 5.
Depending on the motor type, the motor speed D can be Adjusting the response speed of the drift compensation control
measured with a rotary encoder attached to the motor shaft (for loop is critical for proper angle determination. If the speed is
brushed DC-motors) or the drive speed is directly available chosen too fast, noise from the accelerometer is fed through the
from the motor control unit (for brushless DC-motors with angle signal. If the speed is too slow, drift from the gyroscope
space vector control or stepper motors). will not be compensated properly.

4201
state vector x = [D , i]T and the input vector u = [uM ] the
motor/wheel system is given by the matrices
" #
JcR kM  
JR 0
A= and B = 1 (25)
LkM
M
RM
LR LM

The distance of the two masses l cannot be measured by


using a ruler because the real mass is nonuniformly distributed
in the body making it difficult to determine where the upper
mass point actually is. The method suggested is to consider
the robot as pendulum. By linearizing the pendulums state
equations at its lower rest point, the autonomous system is
given by  
0 1
A = g 0 (26)
l
Fig. 6. Prototype of the robot with optional Smartphone control
T
with the state vector x = [, ] . On stimulation this system
is showing undampened oscillation with an angular frequency
V. E XPERIMENTAL R ESULTS of r
g
A. Prototype robot 0 = (27)
l
A prototype robot was developed at Technical University
of Vienna. Figure 6 shows a photo of the robot. It can The angular frequency is only dependant on the length of
be controlled either with a commercially available model the pendulum. By letting the robot swing while hanging
sports radio control or with a Smartphone via Bluetooth. Two downwards (without the wheels) the effective pendulum length
ultrasonic distance sensors in the head of the robot can be used l of the body can be calculated by measuring the angular
for collision avoidance or rudimental autonomous operation. velocity of the oscillation.
The body is built up out of two aluminum sheets, joint The isolated determination of the missing parameters mH ,
together with aluminum tubes. The robot is equipped with mL , and cv by measurement is difficult due to heavy coupling
two 12V brushed permanent-magnet DC-motors with attached of these parameters. Measuring the total mass mH + mL is
gearboxes. The motors have a no-load speed of about 500RPM trivial. The best way found to determine mass distribution and
and a stall torque of about 0.6Nm (both on the wheel side of cv is to record the dampened swinging of the robot, while
the gearbox). Two encoders for rotational speed measurement hanging downwards with the wheels rolling on two wooden
are directly attached to the motor shafts. The encoders have a strips and the motors blocked. The recorded angle and angular
resolution of 64CPR resulting in 1200CPR for the wheels. velocity waveforms are then matched with the ones form a
The electronics is located in the middle part of the body. simulated model trying to find the best fitting combination of
One PCB contains the motor drivers as well as a DC/DC the parameters.
converter for power supply. Also two hall effect based current TABLE I. D ETERMINED MODEL PARAMETERS OF THE ROBOT
sensors are integrated on the power PCB. The other PCB
holds the microcontroller with peripherals, the gyroscope and Parameter Value
the accelerometer as well as the Bluetooth module and USB Body (Pendulum-)length l 0.147 m
Wheel radius r 0.056 m
in-system-programming circuitry. A 12V rechargeable battery Upper mass mH 1.1 kg
pack is placed in the upper part of the body. Lower mass mL 0.7 kg
3
Moment of inertia wheels JR 2.2 10 kgm2
B. Model parameters Torque coefficient motor kM 0.167 N m/A
Armature resistance motor RM 1.26
In order to design the control of the robot in a deterministic Armature inductance motor LM 25 mH
sort of way, the parameters of the mathematical model need Rotational friction coefficient c 2.6 103 N ms/rad
Rolling friction coefficient cv 2 N s/m
to be determined. Nearly every parameter (except the total
mass) can be calculated from measurements using the onboard
sensors.
The static drive parameters RM , kM , and c can be obtained C. Pitch angle tracking
by measuring the motor current and rotational speed at dif-
ferent voltages with no load and utilizing equation (14) as As stated in the previous section, reliable determination of
well as the equilibrium torque relationship (24) under static the robots pitch angle is essential for proper stabilization, so
conditions. special attention in designing the drift compensation controller
MD = kM i = c D (24) is recommended. When linearizing the control path in Figure
5 only the integrator remains. As there is no limiting factor for
The dynamic drive parameters LM and JR can be obtained by the controller output, the response time of the closed control
matching the measured step response of the motor current and loop can be set at any speed in principle.
the rotational speed with the responses of a simulated linear Designing the controller for a rise time of 1s at maximum
model of the free running motor/wheel combination. With the overshooting of 10%, led to a good tradeoff between noise

4202
[]
2

[uM ] V
90
0

-2
45
20
compensated 10

[]
uncompensated
0 0
0 2 4 6 8 10 12 14 16 -10
[t] s
-20
1
Fig. 7. Compensation of the angle drift caused by gyro offset 0.5

[v] m/s
0
-0.5
reduction and drift compensation, for the prototype robot.
Figure 7 shows the angle obtained through integration of the -1
0 1 2 3 4 5 6 7 8
angular velocity measured by the gyroscope with and without [t] s
drift compensation when tilting the robot by 90 degrees.
Fig. 8. Simulation and measured step response of stabilized robot
D. State space controller design
Evaluating the linearized robot model (16) with the deter- of 2m/s in about 1s, and also strong manual disturbance or
mined model parameters from Table 1 gives the system matrix uneven terrain (e.g. lawn) are handled without problems. So
the deployed control strategy can also be used in applications
0 1 0 0 where high dynamics and robust behavior is required.
119.1 0.4206 17.22 27.01 For further improvement of the driving dynamics the impact of
A = 7.699 0.0457 2.244 2.938 . (28)
driving curves on the stabilization process is beeing analyzed.
0 6.68 119.3 50.4 Therefore a more sophisticated model is needed, which also
The system matrix has the eigenvalues 1 = 29.1 + j5.06, takes upright rotations of the robot and movement in three-
2 = 29.1 j5.06, 3 = 3.25, and 4 = 8.38, with 4 dimensional space into account. Another starting point for
being unstable. improvements would be the capability of the robot on adapting
State space controller design was done by manual pole place- to different payloads for transporting goods. Such an adaptive
ment. Main goal of the controller design was to stabilize the control could maybe implemented by some higher level fuzzy
robot, changing the overall system dynamics was not intended logic, adjusting the state control parameters.
at this point. Placing the poles at
R EFERENCES
p1 = 30s1 ; p2 = 30s1 ; p3 = 6s1 ; p4 = 3s1
(29) [1] Segway Inc. Website. [Online]. Available: http://www.segway.com/
led to satisfying results in terms of stabillity and response [2] F. Grasser, et al., JOE: a mobile, inverted pendulum, IEEE Transactions
on Industrial Electronics, vol. 49, pp. 107-114, Feb. 2002.
time with the prototype robot. Using Ackermanns formula
the following feedback weighting coefficients were obtained: [3] V. Kongratana, et al., Servo State Feedback Control of the Self Balanc-
ing Robot using MATLAB, 12th International Conference on Control,
k = 15.3; k = 1.49; kv = 6.33; ki = 0.4 (30) Automation and Systems (ICCAS), pp. 414-417, Oct. 2012.
[4] K. Peng, et al., Dynamic Model and Balancing Control for Two-
Figure 8 finally shows the response of the stabilized prototype Wheeled Self-Balancing Mobile Robot on the Slopes, 10th World
robot on a step sequence, compared to the model simulation. Congress on Intelligent Control and Automation (WCICA), pp. 3681-
3685, Jul. 2012.
It should be noted, that there are some oscillations occuring on
[5] F. Dai, et al., Development of a Coaxial Self-Balancing Robot Based on
the prototype robot after sudden changes of direction. This is Sliding Mode Control, International Conference on Mechatronics and
caused by backlash of the gearboxes, which is also bringing the Automation (ICMA), pp. 1241-1246, Aug. 2012.
robot to continuously slight oscillations during standstill. The [6] C.-H. Huang, et al., Velocity control realisation for a self-balancing
deviations occouring between 3s and 5s are mainly caused by transporter, IET Control Theory & Applications, vol. 5, issue 13, pp.
nonlinear friction and slipping effects between floor and tire 1551-1560, Feb. 2011.
after drive reverse, which are not taken into account by the [7] J. Wu, W. Zhang, Design of Fuzzy Logic Controller for Two-wheeled
mathematical model. Self-balancing Robot, 6th International Forum on Strategic Technology
(IFOST), vol. 2, pp. 1266-1270, 2011.
[8] H.-W. Lee, Optimal posture of Mobile Inverted Pendulum using a single
VI. C ONCLUSION gyroscope and tilt sensor, ICROS-SICE International Joint Conference,
pp. 865-870, Aug 2009.
In this paper a mathematical model and control strategy
for a self-balancing robot was proposed. Despite the large [9] H.-J. Lee, S. Jung, Gyro Sensor Drift Compensation by Kalman Filter to
Control a Mobile Inverted Pendulum Robot System, IEEE International
number of model parameters, the output of the simulated Conference on Industrial Technology, pp. 1-6, 2009.
model corresponds fairly well with the measured results of the [10] L. Meirovitch, Methods of Analytical Dynamics, pp. 72-91, New
real robot, as shown exemplarily in Figure 8. This indicates York: McGraw-Hill, 1970.
that the model proposed is capable of describing the robots [11] J. Ackermann, Der Entwurf linearer Regelungssysteme im Zustand-
dynamic behavior in an appropriate way. sraum, Regelungstechnik, vol. 20, pp. 297-300, 1972, in German.
The prototype robot is able to accelerate to its maximum speed

4203

Powered by TCPDF (www.tcpdf.org)

You might also like