用自己的雷达进行Cartographer建图或仿真
首先需要進行Cartographer安裝以及雷達驅動安裝等準備工作, 直至我們能夠在雷達運行時找到發布LaserScan的Topic并獲取數據, 以開始下一步的建圖.
基本信息獲取
啟動雷達或gazebo, 在終端使用以下語句查看雷達輸出的Topic:
rostopic list;
此處本天河雷達的輸出topic為 /radar_real
使用以下語句打印當前雷達輸出:
rostopic echo /radar_real;
在打印信息中找到坐標系名字frame_id: “base_laser”,此處坐標系名字為 base_laser
lua文件修改
在(cartographer工作空間)/src/cartographer_ros/cartographer_ros/configuration_files中找到revo_lds.lua 文件, 復制一份, 改名為my_revo_lds.lua.
打開my_revo_lds.lua, 修改以下兩行為我們自己的坐標系名字:
launch文件修改
在(cartographer工作空間)/src/cartographer_ros/cartographer_ros/launch中找到demo_revo_lds.launch, 復制一份, 改名為my_demo_revo_lds.launch
修改以下內容:
運行與建圖
對修改后的工作空間, 在終端執行以下語句以重編譯:
//編譯cartographer工作空間
catkin_make_isolated --install --use-ninja
//刷新環境
source devel_isolated/setup.bash
運行時, 先運行雷達的相關topic, 保證雷達已有有效數據通過topic輸出后, 運行我們的新launch文件:
roslaunch cartographer_ros my_demo_revo_lds.launch
即可開始建圖.
地圖保存
打開另一個終端, 輸入以下語句:
//結束第一條軌跡,之后的數據不再添加.
rosservice call /finish_trajectory 0
//cartographer序列化當前狀態,形成pbstream文件
rosservice call /write_state "{filename: '${HOME}/Downloads/mymap.pbstream'}"
//transform pbstream to pgm and yaml
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=/home/kai/Downloads/mymap -pbstream_filename=/home/kai/Downloads/mymap.pbstream -resolution=0.05地址和文件名根據實際進行修改.
運行結果
純雷達建圖.
-
天河
在天河10Hz 2880點的雷達上, 建圖極易漂移, 無法完成建圖. 期間頻繁報 "Dropped 2770 earlier points."的警告, 該warning來自于:
range_data_collator.cc:76 LOG(WARNING) << “Dropped " << std::distance(ranges.begin(), overlap_begin) << " earlier points.”;
丟點數值常在2700左右變動, 接近于一幀. -
倍加福
在倍加福20Hz 3600點的雷達上, 無警告提示, 建圖順滑, 匹配準確, 旋轉魯棒性好, 建圖質量佳, 僅在特征不明顯的長走廊出現建圖尺度失真的共性問題. -
思嵐rplidar a2
在思嵐科技RPLIDAR-a2(10Hz 800點)上, 建圖順滑, 但限于雷達硬件, 旋轉速度不宜過快, 建圖過程應當盡量保持雷達速度平穩. [Topic Name: /scan; Frame Name: laser]
(a2驅動安裝傳送門: 只需關注其中rplida相關步驟)(鏈接教程勘誤: echo source時刪去那對雙引號) -
gazebo仿真
因為依然不是bag仿真, 上述設置/use_sim_time依然應該是false.
總結
以上是生活随笔為你收集整理的用自己的雷达进行Cartographer建图或仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7ie11调用java失败,win
- 下一篇: 排序算法:插入排序