From 7bc92f3e7e92570fa85ad0618eac755b58357759 Mon Sep 17 00:00:00 2001 From: Lakshu Periakaruppan Date: Tue, 7 Apr 2020 16:09:03 -0400 Subject: [PATCH] Plant state space model Put plant state space model in Simulink --- .gitignore | 4 ++++ PlantModel.m | 52 ++++++++++++++++++++++++++++++++++++++++++++++ PlantModelSim.slx | Bin 0 -> 21488 bytes 3 files changed, 56 insertions(+) create mode 100644 .gitignore create mode 100644 PlantModel.m create mode 100644 PlantModelSim.slx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..926ed9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.slxc +*.slx.autosave +*.asv +slprj diff --git a/PlantModel.m b/PlantModel.m new file mode 100644 index 0000000..2fbf2aa --- /dev/null +++ b/PlantModel.m @@ -0,0 +1,52 @@ +%Parameters source: https://sal.aalto.fi/publications/pdf-files/eluu11_public.pdf +g=9.81; +m = .468; +Ix = 4.856*10^-3; +Iy = 4.856*10^-3; +Iz = 8.801*10^-3; + +%State Space Source: https://arxiv.org/ftp/arxiv/papers/1908/1908.07401.pdf +%X' = Ax+Bu +%y = Cx+Du + +%Inputs: +%U1: Total Upward Force on the quad rotor along z-axis +%U2: Pitch Torque (about x-axis) +%U3: Roll Torque (about y-axis) +%U4: Yaw Torque (about z-axis) +A = [0 0 0 1 0 0 0 0 0 0 0 0;... + 0 0 0 0 1 0 0 0 0 0 0 0;... + 0 0 0 0 0 1 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 -g 0 0 0 0;... + 0 0 0 0 0 0 g 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 1 0 0;... + 0 0 0 0 0 0 0 0 0 0 1 0;... + 0 0 0 0 0 0 0 0 0 0 0 1;... + 0 0 0 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 0 0 0 0 0 0]; + +%Note: In paper, 1/m is in wrong spot +B = [0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 1/m 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 0 0 0;... + 0 1/Ix 0 0;... + 0 0 1/Iy 0;... + 0 0 0 1/Iz]; +C = [1 0 0 0 0 0 0 0 0 0 0 0;... + 0 1 0 0 0 0 0 0 0 0 0 0;... + 0 0 1 0 0 0 0 0 0 0 0 0;... + 0 0 0 0 0 0 1 0 0 0 0 0;... + 0 0 0 0 0 0 0 1 0 0 0 0;... + 0 0 0 0 0 0 0 0 1 0 0 0] +D = zeros(6,4) + + + diff --git a/PlantModelSim.slx b/PlantModelSim.slx new file mode 100644 index 0000000000000000000000000000000000000000..f085c7c21593da21508418713140f13f504f4d6b GIT binary patch literal 21488 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 literal 0 HcmV?d00001