コード例 #1
0
        /// <summary>
        /// Providing conversrion for the single stream constructor
        /// </summary>
        /// <param name="dataStream"></param>
        /// <returns></returns>
        private static List <VelodyneDataStream> ToDataStreamList(VelodyneDataStream dataStream)
        {
            List <VelodyneDataStream> velodyneDataStreams = new List <VelodyneDataStream>();

            velodyneDataStreams.Add(dataStream);
            return(velodyneDataStreams);
        }
コード例 #2
0
        private void dataStreamList_DoubleClick(object sender, EventArgs e)
        {
            DataStream dataStream = (DataStream)dataStreamList.SelectedItem;

            if (dataStream.DataLines.Count == 0)
            {
                Logger.WriteLineWarning("No file for " + dataStream.ShortName);
                MessageBox.Show("No file for " + dataStream.ShortName, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (dataStreamList.SelectedItem is VideoDataStream)
            {
                VideoDataStream videoDataStream = dataStreamList.SelectedItem as VideoDataStream;
                VideoStreamWnd  wnd             = new VideoStreamWnd(videoDataStream, Logger);
                wnd.MdiParent = this.MdiParent;
                wnd.Show();
            }
            else if (dataStreamList.SelectedItem is ImageDataStream)
            {
                ImageDataStream imageDataStream = dataStreamList.SelectedItem as ImageDataStream;
                ImageStreamWnd  wnd             = new ImageStreamWnd(imageDataStream, Logger);
                wnd.MdiParent = this.MdiParent;
                wnd.Show();
            }
            else if (dataStreamList.SelectedItem is VelodyneDataStream)
            {
                VelodyneDataStream velodyneDataStream = dataStreamList.SelectedItem as VelodyneDataStream;
                if (velodyneDataStream.HasIndexedFiles() == false)
                {
                    DialogResult result = MessageBox.Show("No index file for " + dataStream.ShortName + "! Do you want to create index file?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (result == DialogResult.No)
                    {
                        return;
                    }
                    ConvertVelodyneDataStream(velodyneDataStream);
                }
                else
                {
                    VelodyneStreamWnd wnd = new VelodyneStreamWnd(velodyneDataStream, Logger);
                    wnd.MdiParent = this.MdiParent;
                    wnd.Show();
                }
            }
            else if (dataStreamList.SelectedItem is GPSDataStream)
            {
                GPSDataStream    gpsDataStream = dataStreamList.SelectedItem as GPSDataStream;
                GPSDataStreamWnd wnd           = new GPSDataStreamWnd(gpsDataStream, Logger);
                wnd.MdiParent = this.MdiParent;
                wnd.Show();
            }
        }
コード例 #3
0
        /// <summary>
        /// Convert Velodyne data stream into internal format
        /// </summary>
        /// <param name="velodyneDataStream"></param>
        private void ConvertVelodyneDataStream(VelodyneDataStream velodyneDataStream)
        {
            MainForm       form = (MainForm)this.MdiParent;
            ProgressBarWnd wnd  = new ProgressBarWnd();

            wnd.Text = "Conversion: " + velodyneDataStream.ShortName;

            // create multiple logger
            List <ILogger> loggers = new List <ILogger>();

            loggers.Add(Logger);
            loggers.Add(wnd);
            MultipleLogger logger = new MultipleLogger(loggers);


            wnd.Worker.DoWork += delegate(object senderWorker, DoWorkEventArgs eWorker)
            {
                foreach (VelodyneDataLine dataLine in velodyneDataStream.DataLines)
                {
                    VelodyneConverter converter = VelodyneConverter.Create(form.Project.Folder + "\\" + velodyneDataStream.SubFolder + "\\" + dataLine.PcapLocation);

                    converter.ProgressReport += delegate(object senderReport, ProgressReportEventArgs argsReport)
                    {
                        logger.WriteLineInfo(argsReport.CurrentDataTime.ToString("yyy-MM-dd hh:mm:ss") + " " + argsReport.ReadBytes / 1000000 + " MB " + argsReport.Precentage.ToString("0.00") + "%" + Environment.NewLine);
                        logger.WriteProgress(argsReport.Precentage);
                    };

                    try
                    {
                        converter.Convert(wnd.CancelTokenSource.Token);
                    }
                    catch (OperationCanceledException)
                    {
                        // TODO: clean up files!
                    }
                    catch (Exception ex)
                    {
                        logger.WriteLineInfo("Error occured: " + ex.Message);
                    }
                }
            };

            wnd.Worker.RunWorkerCompleted += delegate(object senderWorker, RunWorkerCompletedEventArgs eWorker)
            {
                logger.WriteLineInfo("Conversion done.");
                logger.WriteProgress(100);
            };

            wnd.ShowDialog();
        }
コード例 #4
0
        public static Project Load(String folder, ILogger logger = null, CancellationToken cancelletionToken = default(CancellationToken))
        {
            var     stream    = File.OpenRead(folder + "\\" + MetadataFolder + "\\project.bin");
            var     formatter = new BinaryFormatter();
            Project project   = (Project)formatter.Deserialize(stream);

            stream.Close();

            project.Folder = folder;
            project.CreateFolderIfNotExists(MetadataFolder);
            project.CreateFolderIfNotExists(GeorefFolder);
            project.CreateFolderIfNotExists(LiDARFrameFolder);

            // update transformation matrices for sensors
            foreach (DataStream dataStream in project.DataStreams)
            {
                cancelletionToken.ThrowIfCancellationRequested();

                if (dataStream is VelodyneDataStream)
                {
                    var filePath = folder + "\\" + GeorefFolder + "\\" + dataStream.ShortName + "_Tp.txt";
                    if (File.Exists(filePath))
                    {
                        VelodyneDataStream velodyneDataStream = dataStream as VelodyneDataStream;

                        CsvReader reader = new CsvReader(filePath, false);
                        var       Tp     = reader.ToMatrix();
                        velodyneDataStream.Tp = Tp;
                        logger?.WriteLineInfo(dataStream.ShortName + ": sensor-platform transformation matrix file is loaded!");
                    }
                    else
                    {
                        logger?.WriteLineWarning(dataStream.ShortName + ": sensor-platform transformation matrix file does not exist: " + filePath);
                    }
                }
            }

            return(project);
        }
コード例 #5
0
 public VeloFeature(VelodyneDataStream dataStream) : this()
 {
     this.DataStream = dataStream;
 }
コード例 #6
0
 public VelodyneStreamWnd(VelodyneDataStream dataStream, ILogger logger) : this(ToDataStreamList(dataStream), logger)
 {
 }