Ignore:
Timestamp:
08/29/12 16:52:52 (12 years ago)
Author:
wcaarls
Message:

Updated extremum_seeking to revision 1017

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/extremum_seeking/esc_nn/src/nn_esc_2d.cpp

    r5 r13  
    2020        ddelta1_ = 0;
    2121        ddelta2_ = 0;
    22         ddelta2_ = 0;
     22        ddelta3_ = 0;
    2323        delta_ = 0;
    2424        B_ = 0;
     
    5151        monitor_vals.push_back(min_peak_);
    5252        monitor_vals.push_back(w_switch_);
     53        monitor_vals.push_back(yr_+ddelta1_);
     54        monitor_vals.push_back(yr_+ddelta2_);
     55        monitor_vals.push_back(yr_+ddelta3_);
     56        monitor_vals.push_back(yr_+delta_);
    5357
    5458        return monitor_vals;
     
    6165        monitor_names.push_back("minimum peak detector output");
    6266        monitor_names.push_back("w switch value");
     67        monitor_names.push_back("threshold value 1");
     68        monitor_names.push_back("threshold value 2");
     69        monitor_names.push_back("threshold value 3");
     70        monitor_names.push_back("threshold value 4");
    6371
    6472        return monitor_names;
     
    7583        ddelta1_ = ddelta1;
    7684        ddelta2_ = ddelta2;
    77         ddelta2_ = ddelta3;
     85        ddelta3_ = ddelta3;
    7886        delta_ = delta;
    7987        period_ = period;
    8088        w_switch_old_ = 0;
    8189        a_switch1_old_ = A_;
    82         a_switch2_old_ = A_;
     90        a_switch2_old_ = 0;
    8391        a_switch3_old_ = 0;
    8492        vel_ref_.resize(2);
     
    99107
    100108        if(!min_peak_detect_init_){
    101                 yr_ = obj_val;
     109                min_peak_ = obj_val;
     110                yr_ = min_peak_;
    102111                min_peak_detect_init_ = true;
    103112        }
    104113
    105114        double e = yr_ - obj_val;
    106         vel_ref_[1] = aSwitch1(e)+aSwitch2(e);
    107         vel_ref_[0] = aSwitch2(e)+aSwitch3(e);
    108         min_peak_ = minPeakDetect(-e);
    109         w_switch_ = wSwitch(-e);
     115        double s[3];
     116        s[0] = aSwitch1(e);
     117        s[1] = aSwitch2(e);
     118        s[2] = aSwitch3(e);
     119
     120        vel_ref_[1] = s[0]+s[1];
     121        vel_ref_[0] = s[1]+s[2];
     122
     123        min_peak_ = minPeakDetect(e);
     124        w_switch_ = wSwitch(e);
    110125        yr_ = yr_ + (w_switch_+min_peak_)*period_;
     126
    111127        return vel_ref_;
    112128}
    113 double NNESC2D::wSwitch(double e_minus){
    114         if(e_minus<-delta_){
     129double NNESC2D::wSwitch(double e){
     130        if(e>delta_){
    115131                w_switch_old_ = 0;
    116132                return 0;
    117133        }
    118         else if(e_minus>delta_){
     134        else if(e<-delta_){
    119135                w_switch_old_ = B_;
    120136                return B_;
     
    125141}
    126142
    127 double NNESC2D::minPeakDetect(double e_minus){
    128         if(e_minus>0)
     143double NNESC2D::minPeakDetect(double e){
     144        if(e<=0)
    129145                return 0;
    130146        else
     
    146162
    147163double NNESC2D::aSwitch2(double e){
     164
    148165        if( e < -ddelta2_ ){
    149                 a_switch2_old_ = 0;
    150                 return 0;
    151         }
    152         else if(e>ddelta2_){
    153166                a_switch2_old_ = A_;
    154167                return A_;
     168
     169        }
     170        else if(e>ddelta2_){
     171                a_switch2_old_ = 0;
     172                return 0;
    155173        }
    156174        else
     
    170188                return a_switch3_old_;
    171189}
     190
     191void NNESC2D::reset(){
     192        w_switch_old_ = 0;
     193        a_switch1_old_ = A_;
     194        a_switch2_old_ = 0;
     195        a_switch3_old_ = 0;
     196        vel_ref_.resize(2);
     197        vel_ref_[0] = 0;
     198        vel_ref_[1] = 0;
     199        yr_ = 0;
     200        min_peak_ = 0;
     201        w_switch_ = 0;
     202        min_peak_detect_init_ = false;
     203        initialized_ = true;
     204}
Note: See TracChangeset for help on using the changeset viewer.