Line data Source code
1 : /* 2 : This program is free software: you can redistribute it and/or modify 3 : it under the terms of the GNU General Public License as published by 4 : the Free Software Foundation, either version 3 of the License, or 5 : (at your option) any later version. 6 : 7 : This program is distributed in the hope that it will be useful, 8 : but WITHOUT ANY WARRANTY; without even the implied warranty of 9 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 : GNU General Public License for more details. 11 : 12 : You should have received a copy of the GNU General Public License 13 : along with this program. If not, see <http://www.gnu.org/licenses/>. 14 : */ 15 : /* 16 : multicopter simulator class 17 : */ 18 : 19 : #pragma once 20 : 21 : #include "SIM_Aircraft.h" 22 : #include "SIM_Motor.h" 23 : #include "SIM_Frame.h" 24 : 25 : namespace SITL { 26 : 27 : /* 28 : a multicopter simulator 29 : */ 30 : class MultiCopter : public Aircraft { 31 : public: 32 : MultiCopter(const char *frame_str); 33 : 34 : ~MultiCopter() { 35 : delete frame; 36 : } 37 : 38 : /* update model by one time step */ 39 : void update(const struct sitl_input &input) override; 40 : 41 : /* static object creator */ 42 909 : static Aircraft *create(const char *frame_str) { 43 909 : return NEW_NOTHROW MultiCopter(frame_str); 44 : } 45 : 46 : protected: 47 : // calculate rotational and linear accelerations 48 : void calculate_forces(const struct sitl_input &input, Vector3f &rot_accel, Vector3f &body_accel); 49 : Frame *frame; 50 : void update_battery() override; 51 : }; 52 : 53 : }