RtabmapThread: UserData events are added to next node created instead of the last node created (same as rtabmap_ros UserData service)

This commit is contained in:
matlabbe
2017-10-24 19:53:40 +02:00
parent 6b9d4fe7c5
commit 6cee1d9ee6
3 changed files with 23 additions and 36 deletions

View File

@@ -65,28 +65,6 @@ public:
this->unregisterFromEventsManager();
}
protected:
virtual bool handleEvent(UEvent * event)
{
if(event->getClassName().compare("UserDataEvent") == 0)
{
UserDataEvent * rtabmapEvent = (UserDataEvent *)event;
// convert userData to wifi levels
if(!rtabmapEvent->data().empty())
{
UASSERT(rtabmapEvent->data().type() == CV_64FC1 &&
rtabmapEvent->data().cols == 2 &&
rtabmapEvent->data().rows == 1);
// format [int level, double stamp]
int level = rtabmapEvent->data().at<double>(0);
double stamp = rtabmapEvent->data().at<double>(1);
wifiLevels_.insert(std::make_pair(stamp, level));
}
}
return MapBuilder::handleEvent(event);
}
protected slots:
virtual void processStatistics(const rtabmap::Statistics & stats)
{
@@ -106,6 +84,18 @@ protected slots:
{
// Sort stamps by stamps->id
nodeStamps.insert(std::make_pair(iter->second.getStamp(), iter->first));
if(!iter->second.sensorData().userDataRaw().empty())
{
UASSERT(iter->second.sensorData().userDataRaw().type() == CV_64FC1 &&
iter->second.sensorData().userDataRaw().cols == 2 &&
iter->second.sensorData().userDataRaw().rows == 1);
// format [int level, double stamp]
int level = iter->second.sensorData().userDataRaw().at<double>(0);
double stamp = iter->second.sensorData().userDataRaw().at<double>(1);
wifiLevels_.insert(std::make_pair(stamp, level));
}
}
int id = 0;