转 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)启动成功效果



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

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