|
@@ -86,7 +86,7 @@ void viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
|
|
|
|
|
|
void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
|
|
|
{
|
|
|
- std::cout<<std::chrono::system_clock::now().time_since_epoch().count()/1000000<<" psycho."<<std::endl;
|
|
|
+// std::cout<<std::chrono::system_clock::now().time_since_epoch().count()/1000000<<" psycho."<<std::endl;
|
|
|
|
|
|
viewer.removeShape("car");
|
|
|
|
|
@@ -161,6 +161,9 @@ MainWindow::MainWindow(QWidget *parent) :
|
|
|
ModuleFun fun1 =std::bind(&MainWindow::UpdateNDTPos,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
|
|
|
mpandtpos = iv::modulecomm::RegisterRecvPlus("ndtpos",fun1);
|
|
|
|
|
|
+ ModuleFun fun2 =std::bind(&MainWindow::UpdatePCDMap,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5);
|
|
|
+ mpapcdmap = iv::modulecomm::RegisterRecvPlus("pcdmap",fun2);
|
|
|
+
|
|
|
mparelocate = iv::modulecomm::RegisterSend("relocate",10000,1);
|
|
|
|
|
|
connect(this,SIGNAL(ndtposupdate()),this,SLOT(onndtposupdate()));
|
|
@@ -175,6 +178,7 @@ MainWindow::~MainWindow()
|
|
|
mpthreadpcd->join();
|
|
|
iv::modulecomm::Unregister(mpandtpos);
|
|
|
iv::modulecomm::Unregister(mparelocate);
|
|
|
+ iv::modulecomm::Unregister(mpapcdmap);
|
|
|
delete ui;
|
|
|
}
|
|
|
|
|
@@ -199,6 +203,8 @@ void MainWindow::threadpcdview()
|
|
|
mpviewer->showCloud(point_cloud);
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
//This will only get called once
|
|
|
mpviewer->runOnVisualizationThreadOnce (viewerOneOff);
|
|
|
|
|
@@ -209,6 +215,23 @@ void MainWindow::threadpcdview()
|
|
|
|
|
|
while((!mpviewer->wasStopped()) && mbRun)
|
|
|
{
|
|
|
+
|
|
|
+ if(mbpcdmapupdate)
|
|
|
+ {
|
|
|
+ std::string strpcdmap;
|
|
|
+ mmutexpcdmap.lock();
|
|
|
+ strpcdmap = mstrpcdmappath;
|
|
|
+ mbpcdmapupdate = false;
|
|
|
+ mmutexpcdmap.unlock();
|
|
|
+
|
|
|
+ pcl::PointCloud<pcl::PointXYZI>::Ptr point_cloud2(
|
|
|
+ new pcl::PointCloud<pcl::PointXYZI>());
|
|
|
+
|
|
|
+ pcl::io::loadPCDFile<pcl::PointXYZI>(strpcdmap,*point_cloud2);
|
|
|
+ mpviewer->showCloud(point_cloud2);
|
|
|
+ std::cout<<" use new pcd map. path: "<<strpcdmap.data()<<std::endl;
|
|
|
+ }
|
|
|
+
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
|
|
|
|
|
}
|
|
@@ -351,3 +374,24 @@ void MainWindow::onndtposupdate()
|
|
|
mpLabelStatus->setText("NDT Update Time:" + QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz"));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+void MainWindow::UpdatePCDMap(const char *strdata, const unsigned int nSize, const unsigned int index, const QDateTime *dt, const char *strmemname)
|
|
|
+{
|
|
|
+ (void)index;
|
|
|
+ (void)dt;
|
|
|
+ (void)strmemname;
|
|
|
+ iv::ndt::pcdmap xpcdmap;
|
|
|
+ std::cout<<" update ndt map "<<std::endl;
|
|
|
+ if(xpcdmap.ParseFromArray(strdata,nSize))
|
|
|
+ {
|
|
|
+ mmutexpcdmap.lock();
|
|
|
+ mstrpcdmappath = xpcdmap.strpath();
|
|
|
+ mbpcdmapupdate = true;
|
|
|
+ mmutexpcdmap.unlock();
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ std::cout<<"UpdatePCDMap Fail."<<std::endl;
|
|
|
+ }
|
|
|
+}
|