Skip to content

Commit 28a48de

Browse files
committed
Added timing messages to map maker
1 parent 32aea9a commit 28a48de

File tree

8 files changed

+59
-4
lines changed

8 files changed

+59
-4
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ link_directories(${catkin_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS} ${SUITESPARSE_LIBR
2828

2929
add_message_files(
3030
DIRECTORY msg
31-
FILES MapInfo.msg NetworkMapPoint.msg NetworkMeasurement.msg NetworkKeyFrame.msg NetworkMultiKeyFrame.msg NetworkOutlier.msg
31+
FILES MapInfo.msg MapMakerTiming.msg NetworkMapPoint.msg NetworkMeasurement.msg NetworkKeyFrame.msg NetworkMultiKeyFrame.msg NetworkOutlier.msg
3232
SystemInfo.msg TrackerTiming.msg TrackerState.msg
3333
)
3434

include/mcptam/MapMaker.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@ class MapMaker : public MapMakerClientBase, public MapMakerServerBase, protected
137137
//testing
138138
bool mbStopInit; ///< End of initialization phase requested
139139

140+
ros::Publisher mCreationTimingPub;
141+
ros::Publisher mLocalTimingPub;
142+
ros::Publisher mGlobalTimingPub;
143+
140144
};
141145

142146
#endif

msg/MapMakerTiming.msg

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Header header
2+
float32 elapsed
3+
int32 map_num_mkfs
4+
int32 map_num_points

msg/TrackerTiming.msg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@ float32 pose
1212
float32 depth
1313
float32 add
1414
float32 total
15+
int32 map_num_mkfs
16+
int32 map_num_points

src/MapMaker.cc

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,17 @@
4343
#include <mcptam/SmallBlurryImage.h>
4444
#include <mcptam/Map.h>
4545
#include <mcptam/BundleAdjusterBase.h>
46+
#include <mcptam/MapMakerTiming.h>
4647

4748
MapMaker::MapMaker(Map &map, TaylorCameraMap &cameras, BundleAdjusterBase &bundleAdjuster)
4849
: MapMakerBase(map, true)
4950
, MapMakerClientBase(map)
5051
, MapMakerServerBase(map, cameras, bundleAdjuster)
5152
{
53+
mCreationTimingPub = mNodeHandlePriv.advertise<mcptam::MapMakerTiming>("timing_mkf_creation", 1, true);
54+
mLocalTimingPub = mNodeHandlePriv.advertise<mcptam::MapMakerTiming>("timing_local_ba", 1,true);
55+
mGlobalTimingPub = mNodeHandlePriv.advertise<mcptam::MapMakerTiming>("timing_global_ba", 1,true);
56+
5257
Reset();
5358
start();
5459
}
@@ -189,9 +194,19 @@ void MapMaker::run()
189194
mBundleAdjuster.UseTukey((mState == MM_RUNNING && mMap.mlpMultiKeyFrames.size() > 2));
190195
mBundleAdjuster.UseTwoStep((mState == MM_RUNNING && mMap.mlpMultiKeyFrames.size() > 2));
191196

197+
mcptam::MapMakerTiming timingMsg;
198+
timingMsg.map_num_mkfs = mMap.mlpMultiKeyFrames.size();
199+
timingMsg.map_num_points = mMap.mlpPoints.size();
200+
201+
ros::Time start = ros::Time::now();
202+
192203
int nAccepted = mBundleAdjuster.BundleAdjustRecent(vOutliers);
193204
//mdMaxCov = mBundleAdjuster.GetMaxCov();
194205

206+
ros::Time nowTime = ros::Time::now();
207+
timingMsg.elapsed = (nowTime - start).toSec();
208+
timingMsg.header.stamp = nowTime;
209+
195210
ROS_DEBUG_STREAM("Accepted iterations: "<<nAccepted);
196211
ROS_DEBUG_STREAM("Number of outliers: "<<vOutliers.size());
197212
//ROS_DEBUG_STREAM("Max cov: "<<mdMaxCov);
@@ -210,6 +225,9 @@ void MapMaker::run()
210225
mnNumConsecutiveFailedBA = 0;
211226
HandleOutliers(vOutliers);
212227
PublishMapVisualization();
228+
229+
timingMsg.elapsed /= nAccepted;
230+
mLocalTimingPub.publish(timingMsg);
213231
}
214232
}
215233

@@ -233,7 +251,18 @@ void MapMaker::run()
233251
mBundleAdjuster.UseTukey(mState == MM_RUNNING && mMap.mlpMultiKeyFrames.size() > 2);
234252
mBundleAdjuster.UseTwoStep((mState == MM_RUNNING && mMap.mlpMultiKeyFrames.size() > 2));
235253

254+
mcptam::MapMakerTiming timingMsg;
255+
timingMsg.map_num_mkfs = mMap.mlpMultiKeyFrames.size();
256+
timingMsg.map_num_points = mMap.mlpPoints.size();
257+
258+
ros::Time start = ros::Time::now();
259+
236260
int nAccepted = mBundleAdjuster.BundleAdjustAll(vOutliers);
261+
262+
ros::Time nowTime = ros::Time::now();
263+
timingMsg.elapsed = (nowTime - start).toSec();
264+
timingMsg.header.stamp = nowTime;
265+
237266
mdMaxCov = mBundleAdjuster.GetMaxCov();
238267

239268
ROS_DEBUG_STREAM("Accepted iterations: "<<nAccepted);
@@ -255,6 +284,9 @@ void MapMaker::run()
255284
HandleOutliers(vOutliers);
256285
PublishMapVisualization();
257286

287+
timingMsg.elapsed /= nAccepted;
288+
mGlobalTimingPub.publish(timingMsg);
289+
258290
if(mState == MM_INITIALIZING && (mdMaxCov < MapMakerServerBase::sdInitCovThresh || mbStopInit))
259291
{
260292
ROS_INFO_STREAM("INITIALIZING, Max cov "<<mdMaxCov<<" below threshold "<<MapMakerServerBase::sdInitCovThresh<<", switching to MM_RUNNING");
@@ -401,6 +433,12 @@ void MapMaker::AddMultiKeyFrameFromTopOfQueue()
401433
}
402434
*/
403435

436+
mcptam::MapMakerTiming timingMsg;
437+
timingMsg.map_num_mkfs = mMap.mlpMultiKeyFrames.size();
438+
timingMsg.map_num_points = mMap.mlpPoints.size();
439+
440+
ros::Time start = ros::Time::now();
441+
404442
if(mState == MM_RUNNING)
405443
{
406444
if(pMKF->NoImages()) // leftovers from Tracker, don't bother adding these
@@ -427,6 +465,11 @@ void MapMaker::AddMultiKeyFrameFromTopOfQueue()
427465
mMap.MoveDeletedMultiKeyFramesToTrash();
428466
}
429467

468+
ros::Time nowTime = ros::Time::now();
469+
timingMsg.elapsed = (nowTime - start).toSec();
470+
timingMsg.header.stamp = nowTime;
471+
mCreationTimingPub.publish(timingMsg);
472+
430473
lock.lock();
431474
mqpMultiKeyFramesFromTracker.pop_front();
432475
lock.unlock();

src/MapMakerBase.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ void MapMakerBase::PublishMapPoints()
369369
pointMsg->height = 1;
370370
pointMsg->is_dense = false;
371371

372-
#if ROS_VERSION_MINIMUM(1, 9, 54) // Hydro or above, uses new PCL library
372+
#if ROS_VERSION_MINIMUM(1, 9, 56) // Hydro or above, uses new PCL library
373373
pointMsg->header.stamp = ros::Time::now().toNSec();
374374
#else
375375
pointMsg->header.stamp = ros::Time::now();

src/SystemFrontendBase.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ void SystemFrontendBase::PublishSmallImage()
331331
pointMsg->height = 1;
332332
pointMsg->is_dense = false;
333333

334-
#if ROS_VERSION_MINIMUM(1, 9, 54) // Hydro or above, uses new PCL library
334+
#if ROS_VERSION_MINIMUM(1, 9, 56) // Hydro or above, uses new PCL library
335335
pointMsg->header.stamp = timestamp.toNSec();
336336
#else
337337
pointMsg->header.stamp = timestamp;

src/Tracker.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ Tracker::Tracker(Map &map, MapMakerClientBase &mapmaker, TaylorCameraMap &camera
114114
ROS_DEBUG("Tracker: In constructor, done");
115115

116116
maskPub = mNodeHandlePrivate.advertise<sensor_msgs::Image>("mask", 1);
117-
timingPub = mNodeHandlePrivate.advertise<mcptam::TrackerTiming>("timing", 1);
117+
timingPub = mNodeHandlePrivate.advertise<mcptam::TrackerTiming>("timing_tracker", 1);
118118
}
119119

120120
Tracker::~Tracker()
@@ -511,6 +511,8 @@ void Tracker::TrackFrame(ImageBWMap& imFrames, ros::Time timestamp, bool bDraw)
511511
}
512512

513513
timingMsg.total = (ros::WallTime::now() - startTimeTotal).toSec();
514+
timingMsg.map_num_points = mMap.mlpPoints.size();
515+
timingMsg.map_num_mkfs = mMap.mlpMultiKeyFrames.size();
514516
timingMsg.header.stamp = ros::Time::now();
515517
timingPub.publish(timingMsg);
516518
}

0 commit comments

Comments
 (0)