• ubuntu18.04 安装HBA


    HBA是一个激光点云层级式的全局优化的程序,他的论文题目是:HBA: A Globally Consistent and Efficient Large-Scale LiDAR Mapping Module,对应的github地址是:HKU-Mars-Lab · GitHub

    学习本博客,可以学到gtsam安装,cmake高版本安装,ceres2.2.0的安装,以及一个HBA编译问题的解决,最后把HBA给编译成功.

    (0)当遇到libqwayland-egl.so 文件不存在的问题

    当遇到这个问题的时候:

    The imported target "Qt5::Gui" references the file

    "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqwayland-egl.so"

    but this file does not exist.

    文件夹中不存在 libqwayland-egl.so 这个库文件,执行下面语句就可以消除该错误:

    sudo apt install qtwayland5

    (1)安装gtsam

    1.首先安装 依赖

    1. sudo apt-get install libtbb-dev
    2. sudo apt-get install libeigen3-dev

    2.然后下载源代码

    git clone https://bitbucket.org/gtborg/gtsam.git

    3.编译安装

    1. cd gtsam
    2. mkdir build && cd build
    3. cmake ..
    4. make
    5. sudo make install

    (2)安装cmake 大于3.10版本

    安装ceres的时候,必须要求cmake在3.16-3.28之间,但是ros的cmake是3.10版本,因此需要单独安装cmake。参考网上教程可以发现,很多cmake安装 的第一行命令中,有autoremove,这是一个天坑安装cmake的方法,因为它会直接把ros给卸载了。

    正确的安装方法如下:

    1.下载cmake-3.18.5.tar.gz

    Index of /files/v3.18

    2. 解压并进入目录中

    1. tar -xf cmake-3.18.5.tar.gz
    2. cd cmake-3.18.5/

    3.执行配置、编译和安装命令

    1. ./configure --prefix=/usr/local/cmake
    2. make
    3. sudo make install

    5.设置软连接

    ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
    

    如果执行上述命令报“ln: failed to create symbolic link ‘/usr/bin/cmake’: File exists”错误,显示已有软连接(‘/usr/bin/cmake’),则执行如下命令删除软链接(软连接’/usr/bin/cmake’仅为示例,请用户以实际情况为准):

    rm -rf /usr/bin/cmake

    6.检查cmake的版本

    cmake --version

    详细可参考 :ubuntu18.04安装cmake3.12.0步骤_ubuntu安装cmake3.12-CSDN博客

    (3)安装ceres2.2.0

    1.下载

    GitHub - ceres-solver/ceres-solver: A large scale non-linear optimization library

    2.安装官网教程

    官网:Installation — Ceres Solver

    2.1首先配置环境

    1. sudo apt-get install libgoogle-glog-dev libgflags-dev
    2. # Use ATLAS for BLAS & LAPACK
    3. sudo apt-get install libatlas-base-dev
    4. # Eigen3
    5. sudo apt-get install libeigen3-dev
    6. # SuiteSparse (optional)
    7. sudo apt-get install libsuitesparse-dev

    2.2然后构建和编译以及安装

    1. tar zxf ceres-solver-2.2.0.tar.gz
    2. mkdir ceres-bin
    3. cd ceres-bin
    4. cmake ../ceres-solver-2.2.0
    5. make -j3
    6. make test
    7. # Optionally install Ceres, it can also be exported using CMake which
    8. # allows Ceres to be used without requiring installation, see the documentation
    9. # for the EXPORT_BUILD_DIR option for more information.
    10. make install

    2.3最后可以用一个例子进行测试

    bin/simple_bundle_adjuster ../ceres-solver-2.2.0/data/problem-16-22106-pre.txt
    

    这样就安装好了ceres2.2.0

    (4)解决编译问题typedef struct LZ4_stream_t LZ4_stream_t’

    在ceres也通过编译之后,会遇到:

    /usr/include/lz4.h:196:57: error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’

    这时候使用

    1. sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
    2. sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4hc.h.bak
    3. sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
    4. sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h

    (5)编译HBA程序

    然后进入HBA的ws环境,进行catkin_make就可以编译成功.

    (6)HBA运行park数据

    1.下载数据和了解数据格式

    首先下载github HBA工程中,提供的park和kitt7数据,加起来大约2G。

    然后解压。以park数据为例子,目录结构是:

    park

             -pcd

                     -0.pcd

                     -1.pcd

              -pose.json

    其中pose.json中,每一行是按照 tx ty tz qw qx qy qz来排列的。

    2.修改hba.launch的文件中对应的参数

    要想使用hba进行优化,首先需要修改hba.launch文件中的文件夹路径和文件名的控制值

    1. <launch>
    2. <node pkg="hba" type="hba" name="hba" output="screen">
    3. <param name="data_path" type="string" value="/home/zhu/park/"/>
    4. <param name="total_layer_num" type="int" value="3"/>
    5. <param name="pcd_name_fill_num" type="int" value="0"/> <!--set 5 for kitti07 and 0 for park-->
    6. <param name="thread_num" type="int" value="16"/>
    7. </node>
    8. <arg name="rviz" default="0"/>
    9. <group if="$(arg rviz)">
    10. <node launch-prefix="nice" pkg="rviz" type="rviz" name="rviz"
    11. args="-d $(find hba)/rviz_cfg/rosbag.rviz" />
    12. </group>
    13. </launch>

    注意:

    1.修改:data_path 就是park数据集的文件根目录, 在这里我的路径是/home/zhu/park/,

    2.修改:pcd_name_fill_num 的value设置为0,表示没有格式控制,否则需要提供00000.pcd这样的命名格式。

    3.修改visualize.launch中的参数的值

    同样的也对visualize.launch 这两个位置进行修改。

    1. <launch>
    2. <node pkg="hba" type="visualize_map" name="visualize_map" output="screen">
    3. <param name="file_path" type="string"
    4. value="/home/zhu/park/"/>
    5. <param name="downsample_size" type="double" value="0.1"/>
    6. <param name="pcd_name_fill_num" type="int" value="0"/> <!--set 5 for kitti07 and 0 for park-->
    7. <param name="marker_size" type="double" value="0.5"/>
    8. </node>
    9. <arg name="rviz" default="1"/>
    10. <group if="$(arg rviz)">
    11. <node launch-prefix="nice" pkg="rviz" type="rviz" name="rviz"
    12. args="-d $(find hba)/rviz_cfg/rosbag.rviz" />
    13. </group>
    14. </launch>

    3.开始进行hba优化

    roslaunch hba hba.launch

    执行情况如下图:

    执行结果最终保存出来了优化后的位姿,从截图上可以看出优化了3407个位姿。值得注意的是,执行完后,它写出的pose.json把park数据集目录下的pose.json给覆盖了,这有点猝不及防。

    4.显示出来

    roslaunch hba visualize.launch

    就是把park数据集,按照优化后的pose.json中的位姿和 pcd中的文件,按照visualize.launch中的分辨率进行降采样,然后显示出来。

    最后显示的结果是:

    可以看到,周围的建筑物边缘对的并不齐,所以HBA还是有优化改进的空间。

    显示路径

  • 相关阅读:
    在Spring中使用Redis
    软件设计原则
    新版yolov8添加注意力机制(以NAMAttention注意力机制为例)
    机器学习笔记之指数族分布——指数族分布介绍
    MySQL的事务基础
    Qt 在linux上检测内存泄漏,用valgrind的问题
    一个普通人怎样做自媒体赚钱呢?
    pytest运行时参数说明,pytest详解,pytest.ini详解
    nodejs+vue+elementui前台美食网上订餐点菜系统 vscode项目
    红黑树(三) - Linux内核实现
  • 原文地址:https://blog.csdn.net/hero_heart/article/details/139840773