##Borrar esta linea y dejar la siguiente que permite que ésta página sea pública #format inline_latex #acl BecariosGrupo:delete,read,write,admin All:read <> = Modelado del Quadrotor = <> La derivación de la dinámica no lineal es realizada en coordenadas inerciales NED y de cuerpo fijo. Denotemos con {$$$ e_N$$, $$$e_E$$, $$$e_D$$} los ejes inerciales, y con { $$$x_B$$ , $$$y_B$$ , $$$z_B$$ } a los ejes del cuerpo. Los ángulos de Euler de los ejes del cuerpo son { $$$\phi$$, $$$\theta$$, $$$\psi$$} con respecto a los ejes $$$e_N$$, $$$e_E$$ y $$$e_D$$ respectivamente, y son referidos como roll, pitch and yaw. Definamos a r como el vector de posición desde el origen inercial hacía el centro de gravedad del vehículo(CG), y dejemos que $$$\omega_B$$ sea definido como la velocidad angular en con respecto al eje de referencia del cuerpo. La dirección actual de la velocidad es referida como $$$e_v$$ en coordenadas inerciales. Los rotores, numerados 1-4, están montados sobre los ejes $$$x_B$$, $$$y_B$$, $$$-x_B$$ y $$$-y_B$$, respectivamente, con vectores de posición $$$r_i$$ con respecto a CG. Cada rotor produce un == Fuerza y Momento == $$$ \mathbf{F} = -D_B\cdot\vec{e_V} + mg\cdot\vec{e_D} + \sum\limits^{4}_{i=1}(-T_i\cdot\vec{z_B}-D_i\cdot\vec{e_V})$$ $$$ \mathbf{M} = \sum\limits_{i=1}^4[Q_i\cdot\vec{z_B} - R_i\cdot\vec{e_V} - D_i(\vec{r_i}\times\vec{e_V}) + T_i(\vec{r_i}\times\vec{z_B})]$$ $$$ \mathbf{F} = m\ddot{r} $$ $$$ \mathbf{M} = I \dot{\omega}_B + \omega_B \times I \omega_B $$ === Descripción === ==== Fuerza de Arrastre del Cuerpo ==== $$$ D_B = q_{\infty}SC_D $$ ==== Empuje ==== $$$ T_i \cong \mu_i\frac{K_\tau}{1+0.1s}$$ ==== Fuerza de arrastre sobre los rotores debido a la velocidad horizontal ==== $$$ D_i $$ ==== Momento de arrastre sobre el eje de rotación de los rotores ==== $$$ Q_i = K_{\tau}T_i $$ ==== Momento de Roll generado en los rotores por la velocidad ==== $$$ R_i $$ ==== Fuerza de arrastre en los rotores debido a la velocidad ==== $$$ D_i $$ ==== Empuje Total ==== $$$ T = \sum\limits_{i=1}^4{T_i} $$ == Aproximación de la Fuerza y el Momento == Suponiendo que el Cuadricóptero está en vuelo estacionario podemos despreciar $$$ D_B $$ y $$$ D_i $$. Con esto nos queda: === Fuerza === $$$ m\ddot{r} = \mathbf{F} = -R_{\psi}R_{\theta}R_{\phi}T\cdot\vec{z_B} + mg\cdot\vec{e_D}$$ Aproximando las matrices de rotación de los ángulos para ángulos pequeños, tenemos: $$$ -R_{\psi}R_{\theta}R_{\phi} = \left[\matrix{ 1 & \psi & \theta \cr \psi & 1 & \phi \cr \theta & -\phi & 1 }\right] $$ $$$ m\ddot{r} = \left[\matrix{ 1 & \psi & \theta \cr \psi & 1 & \phi \cr \theta & -\phi & 1 }\right]\left[\matrix{ 0 \cr 0 \cr -T }\right] + \left[\matrix{ 0 \cr 0 \cr mg }\right] $$ $$$ m\ddot{r} = \left[\matrix{ 0 & -\bar{T} & 0 \cr \bar{T} & 0 & 0 \cr 0 & 0 & 1 }\right]\left[\matrix{ \phi \cr \theta \cr T }\right] + \left[\matrix{ 0 \cr 0 \cr mg }\right] $$ === Momento === También podemos despreciar los momemtos de Rolling $$$ R_i $$ y $$$ \omega_B\times I\omega_B $$. El Torque nos queda: $$$ \mathbf{M} = I\dot{\omega}_B = \sum\limits_{i=1}^4[Q_i\cdot\vec{z_B} + T_i(\vec{r_i}\times\vec{z_B})] $$ $$$ \left[\matrix{ I_x\ddot{\phi} \cr I_y\ddot{\theta} \cr I_z\ddot{\psi} }\right] = \left[\matrix{ 0 & l & 0 & -l \cr l & 0 & -l & 0 \cr K_r & -K_r & K_r & -K_r }\right]\left[\matrix{ T_1 \cr T_2 \cr T_3 \cr T_4 }\right] $$ == Referencias == [[ http://www.eecs.berkeley.edu/~tomlin/papers/conferences/whjt05_iros.pdf | Multi-Agent Quadrotor Testbed Control Design: Integral Sliding Mode vs. Reinforcement Learning ]] [[ http://www.eecs.berkeley.edu/Programs/ugrad/superb/papers%202008/Katie%20Miller.pdf | Path Tracking Control for Quadrotor Helicopters ]] = Medición de los parámetros de la Planta = Para el diseño del controlador del quadricóptero resulta necesario realizar la medición de los distintos parámetros del modelo real. Los parámetros fundamentales son el peso, el momento de inercia, los empujes de los motores. == Empuje de los motores == Al momento de realizar esta medición poseíamos 2 motores rctimer 2830, 1 ESC rctimer de 30A, 1 ESC mystery de 30A, 1 hélice con paso normal y una hélice con paso pusher. Se realizó la medición del empuje de cada motor, con las distintas hélices y los dos controladores. Esta medición se hizo montando el motor sobre un peso de plomo, el cual se ponía sobre la balanza y luego se realizaron las curvas de transferencia entre PWM y fuerza de empuje. === Motor 1 === ==== RCTimer Normal ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || 41287|| || Fuerza || 0 || 55 || 100 || 145 || 185 || 230 || 270 || 320 || 360 || 400 || 440 || 490 || 540 || 600|| $$$F = 0.0154 * D - 35.83$$ ==== Mystery Pusher ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || 41287|| || Fuerza || 20 || 20 || 95 || 165 || 245 || 325 || 410 || 480 || 575 || 670 || 770 || 855 || 855 || 845|| $$$F = 0.0283 * D - 155$$ ==== RCTimer Pusher ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || 41287|| || Fuerza || 5 || 60 || 105 || 150 || 195 || 240 || 290 || 335 || 380 || 425 || 475 || 540 || 605 || 665|| $$$F = 0.017 * D - 45.4$$ ==== Mystery Normal ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || 41287|| || Fuerza || 5 || 5 || 80 || 150 || 225 || 300 || 380 || 460 || 545 || 640 || 730 || 790 || 760 || 760|| $$$F = 0.0267 * D - 156$$ {{attachment:Motor1.png | Motor1 | width=800}} === Motor 2 === ==== Mystery Normal ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || || Fuerza || 15 || 15 || 80 || 160 || 235 || 320 || 395 || 475 || 570 || 665 || 765 || 840 || 840 || $$$F = 0.028 * D - 167.7$$ ==== RCTimer Pusher ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || 41287 || || Fuerza || 10 || 65 || 110 || 155 || 200 || 245 || 295 || 345 || 395 || 435 || 490 || 560 || 605 || 660 || $$$F = 0.0168 * D - 34.1$$ ==== Mystery Pusher ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || || Fuerza || 5 || 5 || 80 || 155 || 245 || 335 || 425 || 535 || 655 || 795 || 905 || 1015 || 1015 || $$$F = 0.03523 * D - 231.7$$ ==== RCTimer Normal ==== || Duty || 2949 || 5898 || 8847 || 11796 || 14745 || 17694 || 20643 || 23592 || 26541 || 29491 || 32440 || 35389 || 38338 || 41287 || || Fuerza || 25 || 65 || 110 || 155 || 195 || 235 || 275 || 315 || 360 || 400 || 435 || 485 || 540 || 595 || $$$F = 0.015 * D - 23.47$$ {{attachment:Motor2.png | Motor2 | width=800 }} === Motor1, RCTimer, Pusher y Motor2, Mystery y Normal === {{attachment:Motor1vsMotor2.png | Motor1vsMotor2 | width=800 }} == Cálculo Aproximado de las constantes == === Cálculo de la constante de Inercia === $$$K_J = \frac{r}{J_T}$$ $$$J = \sum{m.r^2}$$ $$$J_T = 2(J_{motor} + J_{ESC} + J_{helice}) + J_{barra}$$ $$$J_{motor} = 52.{20,5}^2 [g.{cm}^2] = 21853 [g.{cm}^2]$$ $$$J_{ESC} = 32.{10}^2 [g.{cm}^2] = 3200 [g.{cm}^2]$$ $$$J_{helice} = 15.{20,5}^2 [g.{cm}^2] = 6303,75 [g.{cm}^2]$$ $$$J_{barra} = \frac{m.L^2}{12} = \frac{110.{51}^2}{12} [g.{cm}^2] = 23842,5 [g.{cm}^2]$$ $$$J_T = 86556 [g.{cm}^2] = 0.0086556 [Kg.{m}^2]$$ $$$\boxed{K_J = \frac{21}{86556}[\frac{1}{g.cm}]= 24.26174962[\frac{1}{Kg.m}]}$$ === Cálculo de la constante del Motor === Según las mediciones realizadas podemos aproximar estas constantes. $$$K_{MPusher} = \frac{\Delta_F}{\Delta_D} = \frac{40}{3000}\frac{g}{cuentas}$$ $$$K_{MNormal} = \frac{\Delta_F}{\Delta_D} = \frac{70}{3000}\frac{g}{cuentas}$$