前一段进行了激光雷达的三维建图,主要两步先是从三维点云转换为二维点云,然后利用二维点云进行建图。
第一次根据大佬的教程(见下面链接)全部走了一遍 还挺顺利,基本没遇到什么问题直接就能够建图,当时对办公室进行了一个简单的手持雷达建图,同时也对整个建图过程录了全部数据,后面庆幸自己当时录了数据。
链接: link.
链接: link.
后续中间有段时间转做聚类了,然后顺带也将激光雷达安装在了车上,可是在装在车上后重新做实际建图时遇到了各种各样的问题。
- pointcloud_to_laserscan使用过程中问题
在进行三维转二维的时候,发现rviz中没有报错,但是感觉好像没有转换的样子,很莫名其妙,包括重新做了一遍整个程序还是一样的问题,最后才发现是它是转换了,但是只转换了很小的一块,下图白色那一个圆圈位置。
后来半吊子查看代码感觉可能是因为最开始办公室环境比较小,后续在外界环境比较广阔,点云数量多,单线程处理不过来的原因,需要把launch文件中的最后进行更改为多线程
concurrency_level: 2
修改完后就能正常进行三维转二维了。(此处无图)
- hector_slam使用期间遇到的问题
在进行建图过程中,发现rviz中无法坐标显示,Global Status 显示Fixed Frame [map] does not exit,如下图所示。
后续通过回放之前自己录的数据包和后续的状态中的rqt_tf_tree进行比对,发现后续的状态少了右边这一部分
于是在hector_slam的launch文件中增加了scanmatcher的广播。
<node pkg="tf" type="static_transform_publisher" name="map_scanmatcher_broadcaster" args="0.0 0.0 0.0 0 0 0.0 /map /scanmatcher_frame 10"/>
增加广播后rviz的Global Status 不再报错,但是仍旧没有地图,在终端报了“lookupTransform base_link to /rslidar timed out. Cloud not transform laser scan into base_frame”的问题
需要在launch文件中增加base_link to laser的坐标转换
<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.0 0.0 0.0 0.0 0.0 0.0 base_link rslidar 100"/>
加入后即可正常转换并建图
写在最后:
虽然经过一番瞎操作能够实现,但是对于同一个程序没有动过最开始可以建图,过了一段就不能建图了这点还是没搞明白。
感觉有可能是因为中间我尝试过amcl定位导致坐标系被混淆了?
需要探索的路还很长啊