MAV'RIC
/home/travis/build/lis-epfl/MAVRIC_Library/control/unsupported/servos_mix_ywing.hpp
00001 /*******************************************************************************
00002  * Copyright (c) 2009-2016, MAV'RIC Development Team
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions are met:
00007  *
00008  * 1. Redistributions of source code must retain the above copyright notice,
00009  * this list of conditions and the following disclaimer.
00010  *
00011  * 2. Redistributions in binary form must reproduce the above copyright notice,
00012  * this list of conditions and the following disclaimer in the documentation
00013  * and/or other materials provided with the distribution.
00014  *
00015  * 3. Neither the name of the copyright holder nor the names of its contributors
00016  * may be used to endorse or promote products derived from this software without
00017  * specific prior written permission.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00020  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00021  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00022  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
00023  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00024  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00025  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00026  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00027  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00028  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00029  * POSSIBILITY OF SUCH DAMAGE.
00030  ******************************************************************************/
00031 
00032 /*******************************************************************************
00033  * \file servos_mix_ywing.hpp
00034  *
00035  * \author MAV'RIC Team
00036  * \author Julien Lecoeur
00037  * \author Basil Huber
00038  *
00039  * \brief Links between torque commands and servos PWM command for Ywing
00040  *
00041  ******************************************************************************/
00042 
00043 
00044 #ifndef TORQUE_CONTROLLER_YWING_HPP_
00045 #define TORQUE_CONTROLLER_YWING_HPP_
00046 
00047 #include "control/servos_mix.hpp"
00048 
00049 class Servos_mix_ywing: public Servos_mix
00050 {
00051 public:
00052 
00056     struct conf_t
00057     {
00058         flap_dir_t  flap_top_dir;       
00059         flap_dir_t  flap_right_dir;     
00060         flap_dir_t  flap_left_dir;      
00061         float       min_thrust;         
00062         float       max_thrust;         
00063         float       min_deflection;     
00064         float       max_deflection;     
00065     };
00066 
00067 
00071     struct args_t
00072     {
00073         Servo& servo_motor;
00074         Servo& servo_flap_top;
00075         Servo& servo_flap_right;
00076         Servo& servo_flap_left;
00077     };
00078 
00079     Servos_mix_ywing(args_t& args, const conf_t& config = default_config());
00080 
00081     virtual bool update();
00082 
00083 
00084     static inline conf_t default_config();
00085 
00086 private:
00087     torque_command_t torque_command_;
00088     thrust_command_t thrust_command_;
00089 
00090     flap_dir_t  flap_top_dir_;       
00091     flap_dir_t  flap_right_dir_;     
00092     flap_dir_t  flap_left_dir_;      
00093     float       min_thrust_;         
00094     float       max_thrust_;         
00095     float       min_deflection_;     
00096     float       max_deflection_;     
00097     Servo&      motor_;               
00098     Servo&      flap_top_;            
00099     Servo&      flap_right_;          
00100     Servo&      flap_left_;           
00101 };
00102 
00103 
00104 
00105 Servos_mix_ywing::conf_t Servos_mix_ywing::default_config()
00106 {
00107     conf_t conf;
00108     conf.flap_top_dir   = FLAP_INVERTED;
00109     conf.flap_right_dir = FLAP_INVERTED;
00110     conf.flap_left_dir  = FLAP_INVERTED;
00111     conf.min_thrust     = -0.9f;
00112     conf.max_thrust     = 1.0f;
00113     conf.min_deflection = -1.0f;
00114     conf.max_deflection = 1.0f;
00115 
00116     return conf;
00117 };
00118 
00119 #endif
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines