Dynamic Model
Coordinates System
In this project, we make use of a world frame \({W}\) with orthonormal basis \({\mathbf{x}_W, \mathbf{y}_W, \mathbf{z}_W}\) represented in world coordinates and a body frame \({B}\) with orthonormal basis \({\mathbf{x}_B, \mathbf{y}_B, \mathbf{z}_B}\) also represented in world coordinates.
Fig.1 coordinates
Single Rotor Model
We model the single rotor thrust \(f\) and drag torque \(\tau\) as ploynomials of the motor input \(u\) as
where the coefficients \(k_j^f\) and \(k_j^\tau\) are identified by running a single motor with a propller on a load cell and measuring the resulting forces and moments.The motor input \(u \in (0,1)\).
Additionally, we model the dynamic of the single rotor thrusts as first order systems
where the coefficient \(\alpha_{\mathrm{mot}}\) is also obtained through identification.
Quadcopter Model
[] provides a more accurate dynamic description.
where, \(\tau_g\) is torques from the propellers , \(\mathbf{D}=diag(d_x,d_y,d_z)\) is a constant diagonal matrix formed by the rotor-drag coefficients, \(\mathbf{A}\) and \(\mathbf{B}\) are constant matrices.
However, in most quadcopter simulations, the model is simplified to
If you need to add resistance, you can refer to Gazebo’s Adding Stroke Resistance
However, these items are omitted in most simulators.To add resistance, please refer to the addition of wind resistance in Gazebo.
where \(\mathbf{J}\) is the inertia matrix