@@ -39,6 +39,8 @@ FusionTracker::FusionTracker(
3939 ros_image_updated_(false )
4040{
4141 gaussian_joint_tracker_ = rotary_tracker_factory ();
42+ i_t = 0 ;
43+ j_t = 0 ;
4244}
4345
4446void FusionTracker::initialize (const std::vector<State>& initial_states)
@@ -124,7 +126,7 @@ void FusionTracker::run_visual_tracker()
124126 while (running_)
125127 {
126128 // continue only if there is a new image available
127- usleep (10 );
129+ usleep (100 );
128130 {
129131 std::lock_guard<std::mutex> lock (image_obsrvs_mutex_);
130132 if (!ros_image_updated_)
@@ -166,8 +168,8 @@ void FusionTracker::run_visual_tracker()
166168 belief_entry);
167169 if (belief_index < 0 )
168170 {
169- std::cout << " belief_index < 0: " << belief_index << std::endl;
170-
171+ // no belief found, put back extracted beliefs from local to global
172+ // buffer
171173 std::lock_guard<std::mutex> belief_buffer_lock (
172174 joints_obsrv_belief_buffer_mutex_);
173175 while (joints_obsrv_belief_buffer_local.size () > 0 )
@@ -179,15 +181,6 @@ void FusionTracker::run_visual_tracker()
179181 continue ;
180182 }
181183
182-
183- // // just some print -----------------------------------------------------
184- // static ros::Time last_image_stamp;
185- // ros::Duration delta = ros_image_.header.stamp - last_image_stamp;
186- // last_image_stamp = ros_image_.header.stamp;
187- // std::cout << "time difference between processed images: " << delta <<
188- // std::endl;
189- // // ---------------------------------------------------------------------
190-
191184 // #3
192185 auto mean = get_state_from_belief (belief_entry);
193186 auto cov_sqrt = get_covariance_sqrt_from_belief (belief_entry);
@@ -244,6 +237,7 @@ void FusionTracker::run_visual_tracker()
244237 joints_obsrv_belief_buffer_local.pop_front ();
245238 }
246239
240+ // add back joint observations after belief index
247241 while (joints_obsrv_belief_buffer_local.size () > 0 )
248242 {
249243 joints_obsrvs_buffer_.push_front (
@@ -261,8 +255,6 @@ void FusionTracker::run_visual_tracker()
261255 if (entry.timestamp < prev.timestamp )
262256 {
263257 PV (entry.timestamp - prev.timestamp );
264- PV (entry.obsrv );
265- PV (prev.obsrv );
266258 PInfo (" constructed queue is wrong" );
267259 }
268260
@@ -300,12 +292,35 @@ int FusionTracker::find_belief_entry(const std::deque<JointsBeliefEntry>& queue,
300292 index++;
301293 }
302294
303- std::cout.precision (20 );
304-
305- std::cout << " could not find a matching belief for time stamp "
306- << timestamp << std::endl;
307- std::cout << " latest belief: " << max << std::endl;
308- std::cout << " oldest belief: " << min << std::endl;
295+ if (i_t > j_t )
296+ {
297+ std::cout << " >>>>>>>>> " ;
298+ }
299+ else
300+ {
301+
302+ std::cout << " <<<<<<<<< " ;
303+
304+ }
305+ std::cout << " Waiting for processed joint observation beliefs. "
306+ << " Unprocessed observations: " << joints_obsrvs_buffer_.size ()
307+ << " ("
308+ << " image t: " << i_t << " , joints t: " << j_t << " ; diff: "
309+ << i_t - j_t
310+ << " )"
311+ << std::endl;
312+ // std::cout.precision(20);
313+ // std::cout << "could not find a matching belief for time stamp "
314+ // << timestamp << " (delta: " << timestamp - max << ")" << std::endl;
315+ // std::cout << "latest processed obsrv: " << max << std::endl;
316+ // std::cout << "oldest processed obsrv: " << min << std::endl;
317+ // std::cout << "unprocessed obsrvs size: " << joints_obsrvs_buffer_.size()
318+ // << ", processed buffer size: " << queue.size() << std::endl;
319+ // if (joints_obsrvs_buffer_.size())
320+ // {
321+ // std::cout << "joints_obsrvs_buffer_.back().timestamp" <<
322+ // joints_obsrvs_buffer_.back().timestamp << std::endl;
323+ // }
309324
310325 return -1 ;
311326}
@@ -413,6 +428,7 @@ void FusionTracker::joints_obsrv_callback(
413428 ROS_WARN (" Obsrv buffer max size reached." );
414429 joints_obsrvs_buffer_.pop_front ();
415430 }
431+ j_t = entry.timestamp ;
416432}
417433
418434void FusionTracker::image_obsrv_callback (const sensor_msgs::Image& ros_image)
@@ -423,6 +439,9 @@ void FusionTracker::image_obsrv_callback(const sensor_msgs::Image& ros_image)
423439 ros_image_ = ros_image;
424440 ros_image_.header .stamp .fromSec (
425441 ros_image_.header .stamp .toSec () - camera_delay_);
442+
443+ std::lock_guard<std::mutex> lock_joint_obsrv (joints_obsrv_buffer_mutex_);
444+ i_t = ros_image_.header .stamp .toSec ();
426445}
427446
428447}
0 commit comments