Ubuntu20.04下A-LOAM配置安装及测试教程(包含报错问题踩坑)

参考文章:

ubuntu20.04下ros运行A-LOAM
Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM

需要学习源码的同学可以下载LOAM论文
LOAM论文链接

1.需要安装的库文件

1.1Eigen 3.3
可以直接使用apt命令安装,或者去官网下载源码安装

sudo apt-get install libeigen3-dev

安装成功如下,我这里之前装过所以显示如下,可以看到安装的版本为3.3.7
在这里插入图片描述
1.2 ceres

//克隆下来,如果网络不好一直下载不了就去官网下载源码然后解压
git clone https://ceres-solver.googlesource.com/ceres-solver
 //在当前目录下创建文件夹ceres-bin
sudo mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver
make -j4
make test
sudo make install

按照上面的步骤装好之后,我们再来测试一下ceres是否装好了
测试ceres

sudo mkdir ceres_test
cd ceres_test
touch CMakeLists.txt
touch cere_example.cpp
sudo mkdir build 
cd build
cmake ..
make
./ceres_example

其中CMakeLists.txt和ceres_example.cpp文件内容分别如下
CMakeLists.txt

cmake_minimum_required(VERSION 3.8.0)
 
project(ceres_example)
 
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
find_package(Ceres REQUIRED)
 
include_directories(
  ${CERES_INCLUDE_DIRS}
)
 
add_executable(ceres_example
ceres_example.cpp)
 
target_link_libraries(ceres_example
    ${CERES_LIBRARIES}
)

ceres_example

#include <ceres/ceres.h>
 
class CostFunctor {
public:
    template <typename T>
    bool operator()(const T* const x, T* residual) const
    {
        residual[0] = 10.0 - x[0];
        return true;
    }
};
 
int main(int argc, char const* argv[])
{
    double initial_x = 5.0;
    double x = initial_x;
 
    // Build the problem.
    ceres::Problem problem;
 
    // Set up the only cost function (also known as residual). This uses
    // auto-differentiation to obtain the derivative (jacobian).
    ceres::CostFunction* cost_function = new ceres::AutoDiffCostFunction<CostFunctor, 1, 1>(new CostFunctor);
    problem.AddResidualBlock(cost_function, nullptr, &x);
 
    // Run the solver!
    ceres::Solver::Options options;
    options.linear_solver_type = ceres::DENSE_QR;
    options.minimizer_progress_to_stdout = true;
    ceres::Solver::Summary summary;
    Solve(options, &problem, &summary);
 
    std::cout << summary.BriefReport() << "\n";
    std::cout << "x : " << initial_x
              << " -> " << x << "\n";
    return 0;
}

运行后输出如下,就代表测试成功,ceres安装成功
在这里插入图片描述
1.3 pcl
同样的可以使用apt安装,或者去官网下载源码自行安装

sudo apt install libpcl-dev

2 下载编译A-LOAM

2.1下载源码
A-LOAM开源地址

//建立A-LOAM工作空间
sudo mkdir ALOAM
cd ALOAM
sudo mkdir src
cd src
 //clone下来,如果网络不好同样可以直接去官网下载源码下来解压
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git

2.2修改CMakeLists.txt
由于PCL版本1.10,将C++标准改为14,在A-LOAM源码中的CMakeLists.txt中进行如下修改

//set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-std=c++14")

2.2 修改源码
如果我们下载下来源码之后直接对其编译,是会发生报错的,因此我们需要对源码进行一些修改

  • 将四个.cpp文件中的/camera_init修改为camera_init
  • 将scanRegistration.cpp中的 #include <opencv/cv.h> 修改为#include <opencv2/imgproc.hpp>
  • 修改kittiHelper.cpp中 CV_LOAD_IMAGE_GRAYSCALE为 cv::IMREAD_GRAYSCALE
  • 如果编译遇到大量未找到Eigen相关错误,将四个.cpp文件中的#include <eigen3/Eigen/Dense>修改为#include <Eigen/Dense>

2.3 编译ALOAM

//定位至我们原来新建的工作空间中进行编译
cd ~/ALOAM/
catkin_make

编译成功显示如下
在这里插入图片描述

3 运行测试ALOAM

在A-LOAM源码中新建dataSet文件夹存放我们的数据集,将nsh_indooroutdoor.bag数据集下载至该文件夹中。
在A-LOAM源码中找打launch文件夹,在该文件夹中打开终端并输入如下命令

roslaunch  aloam_velodyne_VLP_16.launch

然后再在dateSet文件夹中打开一个终端,输入如下命令开始播放数据集

rosbag play nsh_indoor_outdoor.bag

显示效果如下:
在这里插入图片描述
最后测试成功。

4 关于报错

如果我们在编译ALOAM的时候出现大量关于ceres的报错,如下图所示
在这里插入图片描述
解决方法:
是因为ceres版本的问题,我们可以将ceres更换至和A-LOAM配套的版本,或者进行如下的源码修改:
在laserMapping.cpp(row567-568)和 laserOdometry.cpp(row286-287)这两个cpp文件中,将如下代码

ceres::LocalParameterization *q_parameterization = new ceres::EigenQuaternionParameterization();

改为:

ceres::Manifold *q_parameterization = new ceres::EigenQuaternionManifold();

再次进行catkin_make发现编译成功,问题解决!

  • 19
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要在Ubuntu 20.04安装lego-loam,您可以按照以下步骤进行操作: 1. 首先,您需要安装ROS(机器人操作系统)。您可以按照ROS官方网站上的指南进行安装。 2. 接下来,您需要下载lego-loam的源代码。您可以在GitHub上找到lego-loam的源代码。 3. 将lego-loam源代码放在ROS工作空间的src目录下。 4. 打开终端并进入ROS工作空间。 5. 运行catkin_make命令来编译lego-loam。 6. 运行source命令来激活ROS环境。 7. 运行roslaunch命令来启动lego-loam。 以上就是在Ubuntu 20.04安装lego-loam的步骤。希望对您有所帮助。 ### 回答2: Lego-LOAM是一种激光SLAM算法,因其较高的定位精度和较快的运算速度而受到研究人员和爱好者的喜爱。在使用Lego-LOAM前,需要先在计算机上安装ROS(机器人操作系统)。 安装ROS 在安装Lego-LOAM前,需要先在Ubuntu20.04安装ROS。 1. 新建ROS工作空间 在终端中输入以下命令: ``` $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/ $ catkin_make ``` 2. 下载ROS 在终端中输入以下命令: ``` $ sudo apt-get update $ sudo apt-get install ros-foxy-desktop-full ``` 3. 配置ROS环境变量 在终端中输入以下命令: ``` $ echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc $ source ~/.bashrc ``` 安装Lego-LOAM 1. 下载Lego-LOAM源码 将Lego-LOAM的源码下载到ROS工作空间(~/catkin_ws/src)中: ``` $ cd ~/catkin_ws/src $ git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git ``` 2. 编译源码 在终端中输入以下命令: ``` $ cd ~/catkin_ws $ catkin_make -j1 ``` 3. 运行Lego-LOAM 在新的终端中输入以下命令: ``` $ cd ~/catkin_ws $ source ./devel/setup.bash $ roslaunch lego_loam run.launch ``` 现在,Lego-LOAM就已经成功安装和运行了。在运行过程中,你可以通过rviz(ROS可视化工具)来查看激光点云数据和轨迹。 ### 回答3: 在安装Ubuntu20.04系统之后,您可以使用以下步骤来安装LEGO-LOAM,这是一个自动驾驶的三维点云建图以及定位的算法包。 第一步:安装依赖库 要安装Legoloam,需要安装以下依赖库: sudo apt-get install ros-<distro>-pcl-ros ros-<distro>-velodyne ros-<distro>-grid-map ros-<distro>-grid-map-ros libyaml-cpp-dev libopencv-dev libeigen3-dev libboost-all-dev libsuitesparse-dev libpcl-dev 请将“<distro>”替换为ROS版本,例如: 在ROS Melodic下使用命令sudo apt-get install ros-melodic-pcl-ros, 在ROS Kinetic下使用sudo apt-get install ros-kinetic-pcl-ros, 第二步:克隆lego-loam的代码 使用以下命令来下载Lego-loam的源代码: cd ~/catkin_ws/src git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git 第三步:编译和安装代码 使用以下命令来编译代码: cd ~/catkin_ws/ catkin_make -j1 请注意,使用-j1可以确保编译成功。 最后,使用以下命令可以将其添加到您的环境变量: echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 现在,您已经成功安装并编译了Lego-loam,可以使用roslaunch命令运行LEGO-LOAM节点: roslaunch lego_loam run.launch 总之,在您安装Lego-loam之前,强烈建议您拥有ROS相关知识和ROS系统的基本理解。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值