使用SICK Toolbox 2解析激光雷达数据文件

时间:2017-05-22 04:41:28

标签: c++ parsing lidar

我正在使用这个开源软件与Sick Lidar Devices合作:

https://github.com/rhuitl/sicktoolbox/tree/master/trunk/c%2B%2B/drivers/lms5xx/sicklms5xx

以及提供有关数据信息的文档:

https://www.sick.com/media/docs/7/27/927/Technical_information_Telegram_Listing_Ranging_sensors_LMS1xx_LMS5xx_TiM5xx_NAV310_LD_OEM15xx_LD_LRS36xx_en_IM0045927.PDF

我正在尝试使用C ++实现来解析" CoLa B"来自SickLMS5xx的格式,在上述文档中提到。但是,这个工具箱似乎是为了直接处理设备而编写的,而不是从它输出的文件(就像我正在使用的那样)。

看来我可以使用SickLMS5xxMessage(ParseMessage()等)中的函数来实现我想要的。我做了一个主要的方法来交互这个类(和它的SickMessage()超类),如下所示:

#include <iostream>
#include <fstream>

#include <boost/thread/thread.hpp>

#include "SickLMS5xxMessage.cc"

void run() {
  SickLMS5xxMessage msg(uint8_t * const telegramFileBuffer[]);

  std::ifstream telegramFile("MMS21_01");
  if(telegramFile.is_open()) {
    uint8_t telegramFileBuffer[msg.GetMessageLength()];
    for(int i = 0; i < msg.GetMessageLength(); ++i) {
      telegramFile >> telegramFileBuffer[i];
    }
  }
  msg.Print();
}

int main (int argc, char** argv) {
  run();

  return (0);
}

但是它似乎没有正常工作,因为它无法识别SickLMS5xxMessage中的GetMessageLength()和Print()函数,并给出了一个未解决的方法错误?

也许这是我的C ++编码错误(因为我来自Java背景,所以C ++对我来说还是比较新的。)

任何帮助将不胜感激,谢谢:)

0 个答案:

没有答案