(续前)
七、地图概述
将带有相应转换的扫描加在一起,可以创建一个整体的扫描地图
在接下来的练习中,转换信息来自于模拟器的真实值,因此地图将是完美的(除非扫描记录和转换之间有高延迟)
SLAM(同时定位与测绘)可以利用扫描匹配转换的输出来替代模拟器的真实值转换

在模拟器中移动汽车

在本练习将学习如何制作点云地图,熟悉运行和控制Carla模拟器,同时与地图代码并行。首先运行./run_carla.sh,以后台模式单独启动Carla模拟器;然后运行 ./cloud_mapper启动地图代码,它将可视化模拟汽车的位置,并对环境进行3D扫描。对于第一个任务,启动cloud_mapper程序,并使用下面列出的键来控制模拟的汽车。汽车有一条绿色的线延伸出来,代表汽车的设置转向角度。
控制汽车
手动控制模拟汽车。PCL在其查看器窗口中有一个侦听器。首先单击视图窗口来激活键盘监听器,然后可以使用以下键来激活汽车。注意,只是轻按键。
油门(UP 键)
每一次轻击将增加油门功率。三次按压就有很大的油门功率。
反转/停止(Down 键)
只要轻轻一击,就会停止汽车;如果汽车在行驶,就会将油门重置为零。如果汽车不是在移动状态,它将应用油门在反方向。
转向(Left/Right 键)
点击这些键可以逐渐改变转向角度。在上图中,在红框前面挤出的绿线代表转向值,它的终止点将依据当前值左右移动。
中央摄影机(a)
按此键可使相机对焦,以获得汽车的自上而下视图。
旋转相机(按鼠标左键拖动)
镜头平移(按鼠标中键并拖动)
变焦(按鼠标滚动)

红色的盒子是车,转向角度是绿色的线延伸到车的前面。扫描结果是蓝点云。
绘制地图
该模拟器使用虚拟激光雷达不断扫描环境,可以选择自定义其设置。每次汽车移动多少米,经过多少时间,扫描结果就会被添加到整体收集的点云地图中。目前,扫描结果与汽车在同一局部参考系,意味着它们也将以原点(0,0)为中心,汽车的角度从x轴的0度开始。当驾驶模拟器时,注意因为不正确的旋转,扫描结果会堆叠在一起。本练习制作地图部分的任务就是纠正扫描转换:使用输入位姿信息传入lidar->Listen()函数。位姿变量包含由模拟器提供的汽车定位和方向的真实值。使用transform3D将输入姿态转换为4 x 4矩阵。然后将变换矩阵与扫描点的位置向量相乘,完成校正。修正之后,就可以创建如下图所示的精确点云图了。作为最后一步,使用体素过滤器Voxel filter 过滤整个点云,和之前的练习中所做的那样。这确保了整个地图的分辨率是一致的,有助于防止在以后使用它进行扫描匹配时再次过滤它。通过按键盘上的s键保存地图为my_map.pcd。

驾驶在一个闭环创建的点云地图。点云图约28MB,由895018个点组成。
八、绘制地图---代码
#include <carla/client/Client.h>
#include <carla/client/ActorBlueprint.h>
#include <carla/client/BlueprintLibrary.h>
#include <carla/client/Map.h>
#include <carla/geom/Location.h>
#include <carla/geom/Transform.h>
#include <carla/client/Sensor.h>
#include <carla/sensor/data/LidarMeasurement.h>
#include <thread>
#include <carla/client/Vehicle.h>
//pcl code
//#include "render/render.h"
namespace cc = carla::client;
names

本文档详细介绍了如何在CARLA模拟器中使用点云数据创建精确的地图。通过控制模拟车辆,收集激光雷达扫描数据,并结合车辆的实时位姿信息,校正点云数据的坐标,最终生成并保存为点云地图。文章还提供了关键代码片段,展示了如何处理和可视化这些数据。
最低0.47元/天 解锁文章
9274

被折叠的 条评论
为什么被折叠?



