轉 lego-loam在Ubuntu16.04下安裝、跑包及實時建圖

lego-loam在Ubuntu16.04下安裝、跑包及實時建圖

標籤: 自動駕駛

0 前言

lego-loam是由Tixiao Shan and Brendan Englot在論文:

LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain

中提出,該方法是基於loam,其主要內容在論文摘要中已經說明,內容如下:

我們提出了LeGO-LOAM,它是一種輕量級和地面優化的激光雷達里程計和建圖方法,用於實時估計地面車輛的六自由度姿態。LeGO-LOAM是輕量級的,因爲它可以在低功耗嵌入式系統上實現實時姿態估計。LeGO-LOAM經過地面優化,因爲它在分割和優化步驟中利用了地面的約束。我們首先應用點雲分割來濾除噪聲,並進行特徵提取,以獲得獨特的平面和邊緣特徵。然後,採用兩步Levenberg-Marquardt優化方法,使用平面和邊緣特徵來解決連續掃描中六個自由度變換的不同分量。我們使用地面車輛從可變地形環境中收集的數據集,比較LeGO-LOAM與最先進的LOAM方法的性能,結果表明LeGO-LOAM在減少計算開銷的情況下實現了相似或更好的精度。爲了消除由漂移引起的姿態估計誤差,我們還將LeGO-LOAM集成到SLAM框架中,並用KITTI數據集進行了測試。

本博客主要是安裝該方法,並進行數據包測試,最後利用手頭的velodyne16線激光雷達進行實時建圖。

1 lego-loam安裝

博主的安裝環境爲Ubuntu16.04+ROS(kinetic)+ pcl1.9
1.1 安裝依賴
1)gtsam (Georgia Tech Smoothing and Mapping library, 4.0.0-alpha2)

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake ..
sudo make install

1.2 安裝lego-loam

cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1

注:catkin_make後面的-j1是首次編譯時生成相關消息類型的,後續編譯可以不加。

2 lego-loam跑包測試

1)啓動lego-loam
roslaunch lego_loam run.launch
注:要cd到安裝包下面並添加環境如:

cd catkin_ws
source devel/setup.bash

最後使用以下命令啓動lego-loam

roslaunch lego_loam run.launch

2)播放數據包

rosbag play yourbag.bag --clock --topic /velodyne_points /imu/data

注:yourbag.bag爲自己錄製的數據包。/imu/data是可選的,沒有也沒關係。我就沒有這勞什子,跑的效果還行。
3 lego-loam實時建圖
1)首先要修改run.launch,修改後爲:

<launch>
    
    <!--- Sim Time -->
    <param name="/use_sim_time" value="false" />

    <!--- Run Rviz-->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam_bor)/launch/test.rviz" />

    <!--- TF -->
    <node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" />
    <node pkg="tf" type="static_transform_publisher" name="camera_to_base_link" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" />
    <!--- 根據雷達和小車相對位置確定 -->
    <node pkg="tf" type="static_transform_publisher" name="base_link_to_velodyne" args="0 0 0 0 0 0      /base_link  /velodyne 10" />  
    <!--- LeGO-LOAM    
    <arg name="rosbag"  default=""/>
    <arg name="imu_topic" default="/imu/data"/>
    <arg name="lidar_topic" default="/velodyne_points"/>
    --> 
    <rosparam file="$(find lego_loam_bor)/config/loam_config.yaml" command="load"/>

    <node pkg="lego_loam_bor" type="lego_loam_bor"    name="lego_loam_bor"    output="screen" >
<!--
       <remap from="/lidar_points" to="$(arg lidar_topic)"/>
       <remap from="/imu/data" to="$(arg imu_topic)"/>
       <param name="rosbag"      value="$(arg rosbag)" type="string" />
       <param name="imu_topic"   value="$(arg imu_topic)" type="string" />
       <param name="lidar_topic" value="$(arg lidar_topic)" type="string" />

       <remap from="/imu/data" to="/imu"/>
--> 
       <remap from="/lidar_points" to="/velodyne_points"/>

    </node>

</launch>

2)啓動velodyne16激光雷達

roslaunch velodyne_pointcloud VLP16_points.launch calibration:=/home/tl/VLP16.yaml

注:velodyn激光雷達使用請參考如下博客:
https://blog.csdn.net/zbr794866300/article/details/99305864

3)啓動lego-loam

roslaunch lego_loam run.launch

4)啓動成功效果



至此,大功告成!
如果有問題,可以一起交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章