band.cpp
Go to the documentation of this file.
00001 /****************************************************************
00002  *
00003  * Copyright (c) 2010
00004  *
00005  * Fraunhofer Institute for Manufacturing Engineering   
00006  * and Automation (IPA)
00007  *
00008  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00009  *
00010  * Project name: care-o-bot
00011  * ROS stack name: cob_driver
00012  * ROS package name: cob_light
00013  * Description: Switch robots led color by sending data to
00014  * the led-µC over serial connection.
00015  *                              
00016  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00017  *          
00018  * Author: Benjamin Maidel, email:benjamin.maidel@ipa.fraunhofer.de
00019  * Supervised by: Benjamin Maidel, email:benjamin.maidel@ipa.fraunhofer.de
00020  *
00021  * Date of creation: August 2012
00022  * ToDo:
00023  *
00024  * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00025  *
00026  * Redistribution and use in source and binary forms, with or without
00027  * modification, are permitted provided that the following conditions are met:
00028  *
00029  *     * Redistributions of source code must retain the above copyright
00030  *       notice, this list of conditions and the following disclaimer.
00031  *     * Redistributions in binary form must reproduce the above copyright
00032  *       notice, this list of conditions and the following disclaimer in the
00033  *       documentation and/or other materials provided with the distribution.
00034  *     * Neither the name of the Fraunhofer Institute for Manufacturing 
00035  *       Engineering and Automation (IPA) nor the names of its
00036  *       contributors may be used to endorse or promote products derived from
00037  *       this software without specific prior written permission.
00038  *
00039  * This program is free software: you can redistribute it and/or modify
00040  * it under the terms of the GNU Lesser General Public License LGPL as 
00041  * published by the Free Software Foundation, either version 3 of the 
00042  * License, or (at your option) any later version.
00043  * 
00044  * This program is distributed in the hope that it will be useful,
00045  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00046  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00047  * GNU Lesser General Public License LGPL for more details.
00048  * 
00049  * You should have received a copy of the GNU Lesser General Public 
00050  * License LGPL along with this program. 
00051  * If not, see <http://www.gnu.org/licenses/>.
00052  *
00053  ****************************************************************/
00054 
00055 #include "band.h"
00056 
00057 namespace mybeat
00058 {
00059 
00060 Band::Band(size_t size,double dropFactor)
00061  : m_size(size), m_dropFactor(dropFactor), m_allTimeMaximum(0.0)
00062 {
00063 }
00064 
00065 void Band::log(double value)
00066 {
00067     if(value > m_allTimeMaximum)
00068         m_allTimeMaximum=value;
00069 
00070      m_history.push_front(value);
00071 
00072      if(m_history.size() > m_size)
00073                 m_history.pop_back();
00074 }
00075 
00076 double Band::average()
00077 {
00078      double sum=0;
00079      for(unsigned int i = 0; i < m_history.size(); i++)
00080      {
00081         sum+=m_history[i];
00082      }
00083      return sum/m_history.size();
00084 }
00085 
00086 double Band::getAllTimeMaximum()
00087 {
00088     //With every call of this method we gradually lower the maximum to quickly adapt to changes in the input
00089     m_allTimeMaximum*=m_dropFactor;
00090     return m_allTimeMaximum;
00091 }
00092 
00093 double Band::getAllTimeMaximumRaw()
00094 {
00095     //This function is for display purpose only. No recalibration will be performed
00096     return m_allTimeMaximum;
00097 }
00098 
00099 void Band::resetMaximum()
00100 {
00101     m_allTimeMaximum=0;
00102 }
00103 
00104 std::deque<double> Band::getHistory()
00105 {
00106     return m_history;
00107 }
00108 
00109 double Band::getNewest()
00110 {
00111     return m_history.front();
00112 }
00113 
00114 double Band::getOldest()
00115 {
00116     return m_history.back();
00117 }
00118 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


cob_lightmode
Author(s): Benjamin Maidel
autogenerated on Thu Jan 17 2013 13:39:37