话不多说,先上错误显示:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
是不是有点熟悉的味道?熟悉的气息?
为了这个错误调试了挺久的,快把人逼疯了,这个问题出现在调用COccupancyGridMap2D或者CObservationRange的insertObservation成员函数,一开始就怀疑是其他程序限制了内存分配,或者是函数指针参数传入等等其他问题,就是没有怀疑自己用法的问题,最后才发现原因是:
在调用insertObservation成员函数的时候,mrpt会根据你的地图分辨率自动分配相应的栅格,而我传入的坐标值是以毫米为单位,而mrpt的地图一般都是米为单位,这就是问题的关键,导致mrpt分配的地图过于庞大,导致arm板的内存无法满足,从而导致内存分配不足。细节!!!!细节!!!!
过年了,又发现并解决了一个bug,真开心!坚持上班到12号,真开心!o(╥﹏╥)o