激光3D地图的构建及定位SLAM
工作中利用velodyne點(diǎn)云及GNSS信息構(gòu)建高清三位地圖(能進(jìn)行從小到大地圖的精確拼接),并實(shí)現(xiàn)實(shí)時(shí)準(zhǔn)確定位(SLAM),在此記錄下自己的學(xué)習(xí)實(shí)現(xiàn)過程:
相關(guān)算法:HDL+GNSS+NDT
一、錄制相關(guān)區(qū)域帶有GNSS信息的bag(一個(gè)或多個(gè))
二、hdl_slam slam 構(gòu)圖
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軸旋轉(zhuǎn)180,同時(shí)z軸方向提高2m(依據(jù)采集數(shù)據(jù)的雷達(dá)與地面的距離而定)
2 把map繞z軸旋轉(zhuǎn)90,使車頭與朝向地圖上前進(jìn)的方向(依據(jù)車頭與地圖上車前進(jìn)的方向而定)
3 經(jīng)過上述3步,map已經(jīng)可以進(jìn)行ndt定位,運(yùn)行bag及ndt定位生成ndt與gnss的對應(yīng)點(diǎn)表(xyz值),點(diǎn)的軌跡必須是一條折線,直線不可
4 利用生成的點(diǎn)表(ndt\gnss)進(jìn)行再次轉(zhuǎn)換,使地圖方位與gps完全結(jié)合且方位一致
通過上述操作,可以把地圖轉(zhuǎn)換到gps坐標(biāo)系下(如果選擇本次bag第一幀gps作為原點(diǎn),則地圖的ndt原點(diǎn)與gps原點(diǎn)重合,
如果選擇某一給定gps坐標(biāo)作為原點(diǎn),如第一個(gè)bag第一幀的gps,則轉(zhuǎn)換完成后,則本地圖在第一個(gè)bag第一幀的gps為原點(diǎn)的坐標(biāo)系下,如果所有的submap都選擇同一gps原點(diǎn),則所有的submap在同一坐標(biāo)系下,從而完成地圖拼接)
?
四、效果圖
總結(jié)
以上是生活随笔為你收集整理的激光3D地图的构建及定位SLAM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue实现升序降序
- 下一篇: 微信支付SDK接入APP