2022.3.14
今天进行数据格式的转换,主要是将自定义的PointCloud2类型转换为PCL的PointXYZI类型(在此基础上实现了泛型转换,支持了全部的PCL点云类型)。 这里是初步测试,用原生的PCLPointXYZI类型输出的点云大小,表明转换正常,明天尝试初步渲染,进一步测试转换效果。
2022.3.15
今天在昨天的基础之上,添加了pcl的相关渲染,进行了数据的测试,发现可以成功渲染出数据的图象,这意味着数据的转换是没有问题的。不过这也给我接下来的工作引出了其他问题,我这里的点云是转成了XYZ类型,而实际数据提供的是XYZIR类型,而在RVIZ中根据这些信息还可以渲染出颜色,经过研究,我发现只有I可能与颜色有关,我需要研究如何根据反射强度(I),去转换出每个点的颜色。其次,如何高效存储实时的点云数据也是一个问题,这关乎到点云的渲染以及最后整个模型图的绘制。最后还要加上IMU的数据来实现镜头的移动,还有路径信息将路径渲染出来,不过这些都是后面才考虑的工作。 值得高兴的是这证明了前面的一系列工作都没问题,接下来就是根据现在的情况构思一下新的设计了。
2022.3.16
由于虚拟机配置不够,经常出现卡死的情况,于是决定将项目开发搬到服务器上,又花了不少时间配置了服务器,启用了远程桌面,测试了运行效果。 然后构思点云数据和IMU数据的存储,这里还是要先弄明白该怎么用这些数据,才能下手去做。不过目前还没有什么头绪,需要再研究一下pcl的相关函数。
2022.3.17
回看前面对IMU数据的分析,坐标对应着相机位置的移动,而四元数对应着相机位置的旋转,我将学习一下四元数教程,从而利用IMU的数据实现相机模拟小车的移动。
2022.3.18
完成了对四元数的初步学习,并结合IMU的数据进行了初步分析,接下来要完成对相机相关参数的学习,尝试相机模拟。
2022.3.19
对相机相关参数进行学习,调用IMU数据设置相机变量位置时,可能是由于获取和设置频率过高,导致段错误。进一步测试发现,是多线程导致的问题,解决这一bug后,打算初步渲染一下相机位置,但设置相机变换速度过快会导致频闪的问题,经过多次调试,发现频闪并不是因为相机变换速度过快,而是因为函数调用过快导致的数据出错,修正之后频闪问题解决。
2022.3.20
成功用相机模拟了小车位置,但发现重复播放的问题(相机在一定范围内循环多次),最初以为是中间过程赋值出现问题,多次调试后发现问题出在IMU的数据上,订阅的内容是IMU/PATH,这其实是一段时间的小车路径,导致了所谓的数据重复问题。经过测试消息的时间戳,发现其不能作为“最新”数据的依据,这意味着消息头的数据均不能作为“最新”数据的依据,需要解决从路径中提取小车最新位置的问题,才能解决数据重复的问题。
|