if (!observation_list_.empty() ) { list<Observation>::iterator obs_it = observation_list_.begin(); // if keeping observations for no time, only keep one observation
// observation_keep_time_ 就是参数 observation_persistence if (observation_keep_time_ == ros::Duration(0.0)) { observation_list_.erase(++obs_it, observation_list_.end()); return; } // or loop through the observations to see which ones are stale for ( obs_it = observation_list_.begin(); obs_it != observation_list_.end(); ++obs_it ) { Observation& obs = *obs_it; // if observation is out of date, remove it and those follow from the list // kinetic: ros::Duration time_diff = last_updated_ - pcl_conversions::fromPCL(obs.cloud_->header).stamp; if ((last_updated_ - obs.cloud_->header.stamp) > observation_keep_time_) { observation_list_.erase(obs_it, observation_list_.end()); return; } } }