Helicopter Pitch Model

Source Notebook

Model of a helicopter's pitch dynamics

Examples

Basic Examples (3) 

Retrieve the model:

In[1]:=
ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\)]
Out[1]=

The icon:

In[2]:=
ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\), "Icon"]
Out[2]=

The annotation:

In[3]:=
ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\), "Annotation"]
Out[3]=

Scope & Additional Elements (4) 

Available content elements:

In[4]:=
\!\(\*
TagBox[
RowBox[{"ResourceObject", "[", "\"\<Helicopter Pitch Model\>\"", "]"}],
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\)["ContentElements"]
Out[4]=

The available model types:

In[5]:=
ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\), "AvailableModelTypes"]
Out[5]=

The operating point:

In[6]:=
ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\), "OperatingPoint"]
Out[6]=

The parameters:

In[7]:=
ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\), "Parameters"]
Out[7]=

Analysis (5) 

The numerical model:

In[8]:=
helicopter = ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\)] /. ResourceData[\!\(\*
TagBox["\"\<Helicopter Pitch Model\>\"",
#& ,
BoxID -> "ResourceTag-Helicopter Pitch Model-Input",
AutoDelete->True]\), "Parameters"]
Out[8]=

It's unstable:

In[9]:=
StateResponse[{helicopter, {0, 0, 0.02}}, 0, {t, 0, 2}];
Table[Plot[\[ScriptS]\[ScriptR][[1]], {t, 0, 2}, Sequence[
  PlotLabel -> Part[\[ScriptS]\[ScriptR], 2], PlotRange -> All, ImageSize -> Small]], {\[ScriptS]\[ScriptR], ({%, {x, x', \[Theta], \[Theta]'}}\[Transpose])}]
Out[10]=

An LQ regulator controller that stabilizes the helicopter:

In[11]:=
cd = LQRegulatorGains[helicopter, {({
     {10^4, 0, 0, 0},
     {0, 10, 0, 0},
     {0, 0, 10^4, 0},
     {0, 0, 0, 1}
    }), {{10^3}}}, "Data"]
Out[11]=

The closed-loop system is stable:

In[12]:=
sr = StateResponse[{cd["ClosedLoopSystem"], {0, 0, 0.02}}, 0, {t, 0, 10}];
Table[Plot[\[ScriptS]\[ScriptR][[1]], {t, 0, 10}, Sequence[
  PlotLabel -> Part[\[ScriptS]\[ScriptR], 2], PlotRange -> All, ImageSize -> Small]], {\[ScriptS]\[ScriptR], ({%, {x, x', \[Theta], \[Theta]'}}\[Transpose])}]
Out[13]=

The control effort:

In[14]:=
OutputResponse[cd["ControllerModel"], Join[{0}, sr], {t, 0, 10}];
Plot[%, {t, 0, 6}, PlotRange -> All]
Out[15]=

Suba Thomas, "Helicopter Pitch Model" from the Wolfram Data Repository (2025)  

Data Resource History

Source Metadata

Publisher Information