Ubuntu20.04部署Cartographer-for-SMMR及SMMR项目

一、源码下载

1.1 SMMR源码获取及依赖安装

1.1.1源码获取

Github上SMMR源码下载地址

或者利用git命令获取源码到工作空间

mkdir -p test_ws/src
cd test/src
git clone https://github.com/efc-robot/SMMR-Explore.git

1.1.2依赖安装

        1.pip安装torch,官方给的是下图中的命令,但是下载的太慢了,这里我们利用清华源加速下载 。

 替换的命令如下:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision

        2. 针对 Github中SMMR给出的四个依赖安装方式如下,我们将其更改为适合Ubuntu20.04版本的安装指令。

        在Ubuntu20.04中安装四个依赖的命令如下:

sudo apt install ros-noetic-turtlebot3*
sudo apt install liborocos-bfl-dev
pip install future
sudo apt install ros-noetic-teb-local-planner

1.2 Cartographer-for-SMMR源码获取

1.2.1源码获取 

Github上Cartographer-for-SMMR源码下载地址

        将其与SMMR源码放到同一工作空间中的src下,新开终端,输入依次以下命令。

cd test_ws/src
git clone https://github.com/efc-robot/Cartographer-for-SMMR.git

        获取的源码如下图所示: 

 !!!另外需要说明的是,Cartographer-for-SMMR文件夹下有三个子文件夹,我们需要在Cartographer-for-SMMR文件夹下新建一个src文件夹,将原来的三个子文件夹放到src文件夹下,方便后续编译。如下图所示:

 1.2.2依赖安装

       一些基本的库和工具

sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow

!!!这里我们仅介绍一些基本的依赖安装,编译的过程中会遇到很多因缺少依赖而产生的报错,具体报错及解决将在第三节具体说明。 

二、增加OpenCV3.2.0版本

       此项目原来是在Ubuntu18.04中进行部署的,适配的OpenCV版本是3.2.0,而Ubuntu20.04安装ROS后自带的OpenCV版本是4.2.0,SMMR源码中涉及到的一些OpenCV的函数已被删除或更改名称,修改源代码的话台非常麻烦,这里我们选择直接在系统中增添一个OpenCV3.2.0。

需要注意的是,我们不需要删除ROS自带的OpenCV4.2.0,两个版本的OpenCV是可以共存的,使用的时候在Cmakelists文件和系统配置文件中指定需要的OpenCV版本路径即可,具体更改下面展示。

2.1 OpenCV3.2.0源码获取

        1.首先,进入到Github中找到opencv的页面

https://github.com/opencv/opencv

        2.点击下图红框的releases。

        3.进入到该页面后,大概在第五页左右,找到OpenCV3.2.0版本,点击Assets,点击红框的压缩包开始下载。

         4.下载后将其解压到某一文件夹中,如下图所示:

2.2OpenCV3.2.0编译及安装 

2.2.1 安装所需依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2.2.2 修改OpenCV3.2.0代码

        我使用的是vscode编辑器。修改两处源码防止后面编译报错,具体修改如下:

(1)找到 ~/opencv-3.2.0/modules/videoio/src下的cap_ffmpeg_impl.hpp文件,增加下图中红框内的三行代码。

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

 (2)找到~/opencv-3.2.0/modules/python/src2下的/cv2.cpp文件,修改第730行的代码,集体修改如下:

char* str = PyString_AsString(obj);
改为
char* str = (char *)PyString_AsString(obj);

2.2.3 开始编译及安装

#以下命令都是一行一个命令,按顺序完成
cd ~/software/opencv-3.2.0
mkdir build 
cd build 
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D ENABLE_PRECOMPILED_HEADERS=OFF .. 
make -j12 
sudo make install

 !!!!!!!!!!!!!!!!!!!说明!!!!!!!!!!!!!!!!!!!!

执行cmake命令时可能会报下面的错误,错误如下:

这是因为网络问题,这里我们选择手动下载ippicv_linux_20151201.tgz,下载为网站如下:https://github.com/lonesoul/ippicvicon-default.png?t=O83Ahttps://github.com/lonesoul/ippicv

或者可以使用给git下载,在~/opencv-3.2.0/3rdparty/ippicv/downloads/新开终端,输入以下命令:

git clone https://github.com/lonesoul/ippicv.git

 将文件复制到指定的文件夹下: 

        之后我们重新cmake编译下,在build文件夹中新开终端,输入如下命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_PERF_TESTS=OFF -D WITH_CUDA=OFF -D WITH_IPP=OFF -D ENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 ..

        如下是cmake成功的结果:

 

        接下来我们开始编译,输入make -j12命令 ,编译时间有点久,编译成功如下图所示:

        另外,命令中的-j12根据自己的电脑进行配置,我的电脑是12,查看步骤如下:

点击Ubuntu左下角,打开“系统监视器”。

        查看下方红框内CPU的数量,即可利用的最大核数,即-j后面的最大数字,不要超过这个数字。

        最后进行安装,输入:

sudo make install

        安装过程会很快,下面是安装完成后的情况,可以看到安装路径在/usr/local/opencv320,也就是我们在cmake时指定的安装路径。

        进入到 /usr/local/文件夹下,我们可以看到已经安装好的OpenCV3.2.0:

         在~/opencv320/include/中可以看到opencv2,我们要用到这个opencv2的路径。

2.2.4 修改cmake文件

!!!要想要后续SMMR编译成功。我们还需要修改两个文件:

(1)修改cv_bridgeConfig.cmake文件

        打开终端,输入以下命令,打开cv_bridgeConfig.cmake文件:

sudo gedit /opt/ros/noetic/share/cv_bridge/cmake/cv_bridgeConfig.cmake

打开文件后,找到第94、96行,将/usr/include/opencv4修改为我们刚刚安装的opencv320中/include/opencv2,具体修改如下:

修改前:

 

修改后:

 

修改完成后保存。

(2)修改image_geometryConfig.cmake文件

        打开终端,输入以下命令,打开image_geometryConfig.cmake文件:

sudo gedit /opt/ros/noetic/share/image_geometry/cmake/image_geometryConfig.cmake

 打开文件后,找到第94、96行,修改和上面一样,具体修改如下:

修改前:  

修改后: 

 这样OpenCV3.2.0就配置好啦

三、编译Cartographer-for-SMMR

3.1 编译

        进入到cartographer-for-SMMR文件夹下,打开终端,输入如下命令:

catkin_make_isolated --install

 3.2 报错及解决方法

(1)缺少ceres库

解决方法:

下载ceres库,新开终端,输入如下命令: 

sudo apt install libceres* 

 之后,重新编译~

(2)缺少absl库

解决方法:

进入到~/cartographer-for-SMMR/src/cartographer-master/scripts中,打开终端,输入如下命令,下载absl库。

./install_abseil.sh

下载并安装成功如下图所示: 

 之后,重新编译~

  (3)Lua版本问题

 

解决方法:

下载Lua库,新开终端,输入以下命令:

sudo apt install liblua*

  之后,重新编译~

(4)缺少gmock库

  

解决方法:

下载gmock库,新开终端,输入以下命令:

sudo apt install libgmock-dev

  之后,重新编译~

最后我们编译成功!

之后我们打开./bashrc文件,添加如下语句:

 

到此Cartographer-for-SMMR的编译完成~ 

四、SMMR编译

4.1编译

进入到SMMR-Explore文件夹下,打开终端,输入如下命令:

catkin_make

最后我们可以编译成功:

至此,SMMR-Explore部分也编译完成~

 4.2源码修改

(1)用vscode打开SMMR-Explore源码,检查所有功能包中的.py文件,将最顶端的一行修改,修改如下:

修改前:

修改后:

 

(2)cpu设置

        找到matchStamps2tf_pointnet_map_tf.py文件,具体路径为~/test_ws/SMMR-Explore/src/smmr_explore_wrapper/scripts/matchStamps2tf_pointnet_map_tf.py。

如果电脑是AMD的,没有CUDA功能的话则释放第71行,注释掉第70行。

---------------------------------------------------------------------------------------------------------------------------------到此,SMMR项目在Ubuntu20.04上部署完成,之后的工作开会进行调试源码,跑仿真,并部署到实车。

参考文章:

ubuntu20.04安装opencv 3.2.0以及cv_bridge踩坑记录_ubuntu安装opencv-3.2.0-优快云博客

使用Cmakelist 对 Opencv不同的版本切换和管理 & Linux Opencv C++安装记录(2024.0506 更)_将cmakelists文件中的opencv4改成opencv2-优快云博客

### 如何在 Ubuntu 20.04 上安装和配置 A-LOAM 激光雷达里程计 #### 环境准备 为了成功部署 A-LOAM,在 Jetson AGX Orin 设备上应预先设置好 Ubuntu 20.04 和 ROS Noetic 的环境[^2]。 #### 安装依赖库 A-LOAM 需要一些额外的软件包支持,包括但不限于 PCL (Point Cloud Library),Eigen, Boost 库等。可以利用 apt-get 工具来简化这一过程: ```bash sudo apt-y sudo apt-get install ros-noetic-pcl-conversions ros-noetic-tf ros-noetic-cmake-modules libpcl-dev libeigen3-dev libboost-all-dev cmake git wget unzip build-essential -y ``` #### 获取源码并编译 Ceres Solver Ceres 是 A-LOAM 中用于优化的关键组件之一。获取 ceres-solver 并完成构建时需要注意最后一步需执行 `sudo make install` 来确保全局可用性。 ```bash cd ~/ git clone https://github.com/ceres-solver/ceres-solver.git mkdir ~/ceres-bin cd ~/ceres-bin cmake ../ceres-solver make -j$(nproc) sudo make install ``` #### 下载与编译 A-LOAM 从 GitHub 克隆 A-LOAM 项目仓库至本地,并创建 catkin workspace 对其进行编译。 ```bash cd ~/catkin_ws/src git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git cd .. catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release source devel/setup.bash ``` #### 数据预处理模块解析 了解激光雷达点云数据的特点对于调试和应用至关重要。通常情况下,原始点云是杂乱无章的数据集合;而经过特定算法处理后,则可从中提取出诸如 sharp corners 或 flat surfaces 这样的几何特征,这有助于提高后续 SLAM 处理的速度与精度[^3]。 #### 测试与验证 一旦完成了上述步骤,就可以尝试订阅 `/laser_cloud_map` 主题以接收由 A-LOAM 发布的地图信息,并将其转换成 pcl 文件形式保存下来以便进一步分析或可视化展示[^4]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值