]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.cpp
Don't use too short speed measurements for quantizer learning
[r2c2.git] / source / libr2c2 / train.cpp
index 00730c8e15e08fd048b35b137d51c7adcac51d91..ba1a861b9e24ec75f14a91049d8d3a76b54fc29f 100644 (file)
@@ -583,6 +583,7 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt)
                (*i)->tick(t, dt);
        controller->tick(dt);
        float speed = controller->get_speed();
+       bool moving = speed>0;
 
        if(controller->get_reverse()!=reverse)
        {
@@ -609,7 +610,7 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt)
                speed = speed_quantizer->get_speed(current_speed_step);
        }
 
-       if(speed)
+       if(moving)
        {
                if(!active)
                        set_active(true);
@@ -762,7 +763,7 @@ void Train::block_state_changed(Block &block, Block::State state)
                        // Compute speed and update related state
                        float travel_time_secs = (Time::now()-last_entry_time)/Time::sec;
 
-                       if(pure_speed && speed_quantizer && current_speed_step>0)
+                       if(pure_speed && speed_quantizer && current_speed_step>0 && travel_time_secs>=2)
                                speed_quantizer->learn(current_speed_step, travel_dist/travel_time_secs, travel_time_secs);
 
                        travel_dist = 0;