激光3D地图的构建及定位SLAM

时间:2024-05-20 16:55:40

工作中利用velodyne点云及GNSS信息构建高清三位地图(能进行从小到大地图的精确拼接),并实现实时准确定位(SLAM),在此记录下自己的学习实现过程:

相关算法:HDL+GNSS+NDT

一、录制相关区域带有GNSS信息的bag(一个或多个)

二、hdl_slam slam 构图

1、rosparam set use_sim_time true

2、roslaunch hdl_graph_slam hdl_graph_slam_ford.launch points_topic:=/points_raw enable_gps:=false

   roslaunch hdl_graph_slam hdl_graph_slam_ford.launch points_topic:=/points_raw enable_gps:=true

3、watch(optional)
   roscd hdl_graph_slam/rviz
   rviz -d hdl_graph_slam.rviz

4、play bag
rosbag play --clock hdl_400.bag
rosrun hdl_graph_slam bag_player.py /media/huafy/workdisk/home/huafy/Download_Bags/2019-06-28-14-27-21_NO_GPS.bag

5、save map
   rosservice call /hdl_graph_slam/save_map "resolution: 0.05
   destination: '/home/huafy/.ros/generate_map/graph_slam_submap_2019-xx-xx_xxxxxx.pcd'"
(分两行输入,中间加回车)

 

三、后期处理

1 把map绕x轴旋转180,同时z轴方向提高2m(依据采集数据的雷达与地面的距离而定)

2 把map绕z轴旋转90,使车头与朝向地图上前进的方向(依据车头与地图上车前进的方向而定)

3 经过上述3步,map已经可以进行ndt定位,运行bag及ndt定位生成ndt与gnss的对应点表(xyz值),点的轨迹必须是一条折线,直线不可

4 利用生成的点表(ndt\gnss)进行再次转换,使地图方位与gps完全结合且方位一致

通过上述操作,可以把地图转换到gps坐标系下(如果选择本次bag第一帧gps作为原点,则地图的ndt原点与gps原点重合,
如果选择某一给定gps坐标作为原点,如第一个bag第一帧的gps,则转换完成后,则本地图在第一个bag第一帧的gps为原点的坐标系下,如果所有的submap都选择同一gps原点,则所有的submap在同一坐标系下,从而完成地图拼接)

 

四、效果图

激光3D地图的构建及定位SLAM

激光3D地图的构建及定位SLAM

激光3D地图的构建及定位SLAM