WOLFRAM SYSTEM MODELER
VerticalMotionVertical motion of quadrotor system in 3DOF, constrained in z axis |
SystemModel["Aircraft.Examples.VerticalMotion"]
This model presents a quadrotor with 3 Degrees of Freedom (DoF), each controlled by an individual PID controller. The objective for the quadcopter is to track the reference attitude and altitude. The refereence signals are set to move the quadcopter upwards then tilt at the top before returning to the initial position.
To constraint the quadrotor in z direction a prismatic is used, also a sphericalJoint is added to make sure that the origin of frame_a and the origin of frame_b coincide. It likes that the quadrotor is connected to a vertical extendable rod, therefore, it is allowed to move in z direction and do roll and pitch motion while it wont move in x and y direction and nore have a yaw motion.
The 3 DOF hover experiment provides a simplified test bed for understanding and developing control laws related to the flight dynamics and control of vehicles with vertical lift-off. Using this model, PID controller gains for altitude and attitude can be easily determined, thanks to the removal of coupling between roll and pitch angles with the x and y positions.
Following plots show the response of the quadrotor to the height, pitch and roll commands.
propGainRollPID |
Value: 10 Type: Real Description: Gain of controller (PIDRoll.k) (hoverController.propGainRollPID) |
---|---|
intTimeConstRollPID |
Value: 100 Type: Time (s) Description: Time constant of Integrator block (PIDRoll.Ti) (hoverController.intTimeConstRollPID) |
derTimeConstRollPID |
Value: 0.1 Type: Time (s) Description: Time constant of Derivative block (PIDRoll.Td) (hoverController.derTimeConstRollPID) |
propGainPitchPID |
Value: 10 Type: Real Description: Gain of controller (PIDPitch.k) (hoverController.propGainPitchPID) |
intTimeConstPitchPID |
Value: 100 Type: Time (s) Description: Time constant of Integrator block (PIDPitch.Ti) (hoverController.intTimeConstPitchPID) |
derTimeConstPitchPID |
Value: 0.1 Type: Time (s) Description: Time constant of Derivative block (PIDPitch.Td) (hoverController.derTimeConstPitchPID) |
propGainYawPID |
Value: 100 Type: Real Description: Gain of controller (PIDYaw.k) (hoverController.propGainYawPID) |
intTimeConstYawPID |
Value: 20 Type: Time (s) Description: Time constant of Integrator block (PIDYaw.Ti) (hoverController.intTimeConstYawPID) |
derTimeConstYawPID |
Value: 0.1 Type: Time (s) Description: Time constant of Derivative block (PIDYaw.Td) (hoverController.derTimeConstYawPID) |
propGainZPID |
Value: 50 Type: Real Description: Gain of controller (PIDHeight.k) (hoverController.propGainHeightPID) |
intGainZPID |
Value: 2 Type: Time (s) Description: Time constant of Integrator block (PIDHeight.Ti) (hoverController.intGainHeightPID) |
derGainZPID |
Value: 0.1 Type: Time (s) Description: Time constant of Derivative block (PIDHeight.Td) (hoverController.derGainHeightPID) |
hoverController |
Type: HoverPID Description: Attitude controller |
|
---|---|---|
rollRef |
Type: Trapezoid Description: Reference roll angle command |
|
pitchRef |
Type: Trapezoid Description: Reference pitch angle command |
|
zRef |
Type: TimeTable Description: Reference z position (height) command |
|
quadrotor |
Type: Quadrotor Description: Quadrotor movement is restricted to three degrees of freedom (DOF) |
|
world |
Type: World Description: World coordinate system used in aircraft libray |
|
degToRadRoll |
Type: From_deg Description: Convert from degree to radian |
|
degToRadPitch |
Type: From_deg Description: Convert from degree to radian |
|
degToRadYaw |
Type: From_deg Description: Convert from degree to radian |
|
yawRef |
Type: Constant Description: Generate constant signal of type Real |
|
Constraint |
Type: Prismatic Description: Consraint the quadrotor to the vertical translation only |
|
Center |
Type: Fixed Description: Fixed to the origin |
|
sphericalJoint |
Type: Spherical Description: Spherical joint |