编译R2LIVE问题&解决方法

             这次在复现r2live这篇文章的时候,遇到了许多问题,通过查阅大量资料,也算一一解决了。这篇文章就是总结一下在复现代码时的过程和遇到问题的总结。

             一开始我尝试的是ubuntu20.04,但很不推荐用这个版本去复现,因为我用这个版本失败了好多次。。。下文还有用ubuntu18.04版本的方法,推荐用18.04版本。如果使用的是这个版本,也没关系,就是bug多点~ 接下来我们就进入正题吧。

 一、ros的安装

ros安装网上有好多人都有分享安装方法,每个人的方法都可以成功,我这里就快速的过一下。

首先查看一下软件和更新,保证下面4个都勾上

编译R2LIVE问题&解决方法_第1张图片

 编译R2LIVE问题&解决方法_第2张图片

然后就开始安装ros:

一、添加源 

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

二、添加密钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

成功会显示已改变1,我这是添加过了,再次输入会显示这个

编译R2LIVE问题&解决方法_第3张图片

 三、更新软件园

sudo apt update

四、安装ros

sudo apt install ros-noetic-desktop-full

五、初始化

sudo rosdep init

成功会显示编译R2LIVE问题&解决方法_第4张图片

六、更新ros

rosdep update

这里报错率非常高,基本都是网络超时导致报错,如果一直不行,就试试以下代码吧

sudo pip install rosdepc

或者

sudo pip3 install rosdepc

或者

sudo apt-get install python3-pip 
sudo pip install rosdepc

之后在初始化一次

sudo rosdepc init

然后更新

rosdepc update

七、设置环境变量

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

八、安装rosinstall

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

如果有报错,就输入

sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool

然后就可以看看ros是否安装完成!

roscore

如果报错,在输入

sudo apt install ros-noetic-desktop-full

接着在输入

roscore

会显示编译R2LIVE问题&解决方法_第5张图片

 然后在打开一个终端,输入

rosrun turtlesim turtlesim_node

之后在打开一个终端(这是第三个了嗷!)

rosrun turtlesim turtle_teleop_key

可以用上下左右控制小龟,那说明ros安装成功!

编译R2LIVE问题&解决方法_第6张图片

参考文章:https://blog.csdn.net/weixin_56197703/article/details/122699813

ros下载成功,就可以进行我们复现代码的工作了!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

代码及原文链接:GitHub - hku-mars/r2live: R2LIVE is a robust, real-time tightly-coupled multi-sensor fusion framework, which fuses the measurement from the LiDAR, inertial sensor, visual camera to achieve robust, accurate state estimation.

二、复现代码

先输入代码

sudo apt-get install ros-noetic-cv-bridge ros-noetic-tf ros-noetic-message-filters ros-noetic-image-transport

一、安装求解器:

git clone https://ceres-solver.googlesource.com/ceres-solver

但这里的ceres大概率克隆不下来!所以可以直接先把他的包下载下来放到你想解压的文件夹下

ceres包的下载网址:http://ceres-solver.org/ceres-solver-2.1.0.tar.gz

下载好后,先安装所有的依赖,在终端输入:

sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev

然后开始解压下载包

tar zxf ceres-solver-2.1.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.1.0
make -j3
make test
make install

上面make -j3的时候会有点慢,没关系等着就好。到make test的时候没丢包基本就稳了。

接着我们去安装览沃

安装览沃前我们需要安装一下SDK

二、安装SDK

sudo apt install cmake
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install

这样SDK就算安装好了,接着我们继续安装览沃

三、安装览沃

从github获取

git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src

这里克隆一般不会出现错误,但一定要克隆下来,不然之后可能会报错

cd ws_livox
catkin_make

更新环境

source ./devel/setup.sh

这样览沃就可以了!开始克隆代码!

四、catkin_ws

要在主目录下创建文件夹!不然最后会报错!!!

mkdir -p catkin_ws/src
cd catkin_ws/src

克隆代码

git clone https://github.com/hku-mars/r2live.git
cd ../

开始编译,这里可能会有大量错误!

 catkin_make

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

错误①

如果之前已经编译成功livox_ros_driver,但是在文件中catkin_make依旧出现这个错误:

编译R2LIVE问题&解决方法_第7张图片

       可以尝试在程序文件中 source xxx/ws_livox/devel/setup.bash,xxx是你livox文件路径,之后就可以直接catkin_make了。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

错误②opencv/cv.h没有那个文件或目录

把对应.h文件中的头文件#include 替换为#include 或#include 就可以了

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

错误③

identifier “CV_AA”is undefined

在对应.h头文件中加入

#include 

identifier “CV_GRAY2RGB”is undefined

在对应.h头文件中加入

#include 

identifier “CV_CALIB_CB_ADAPTIVE_THRESH”is undefined;

identifier “CV_CALIB_CB_NORMALIZE_IMAGE”is undefined

identifier “CV_CALIB_CB_FILTER_QUADS”is undefined

identifier “CV_CALIB_CB_FAST_CHECK”is undefined

identifier “CV_CALIB_CB_NORMALIZE_IMAGE”is undefined

identifier “CV_CALIB_CB_FAST_CHECK”is undefined

identifier “CV_CALIB_CB_ADAPTIVE_THRESH”is undefined

identifier “CV_CALIB_CB_FILTER_QUADS”is undefined

出现上面的错误,在错误那边显示的路径的对应.h文件中加入

#include 

identifier “CV_MINMAX”is undefined

在对应的.h文件中加入头文件

#include

接着就可以catkin_make了

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

错误④

如果以上的问题都用过了发现catkin_make还是会报opencv的错误,那应该就是opencv的版本错误,去安装一下opencv3试一下

安装步骤:

先安装cmake,终端输入

sudo apt-get install cmake

安装依赖环境

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

然后去下载一下opencv3,下载地址:Releases - OpenCV

然后要选择自己的版本,点击Sources编译R2LIVE问题&解决方法_第8张图片

下好后解压到自己需要的文件夹里,一般放在主目录,也就是“~”

进入解压好的文件夹,进入并创建一个文件夹进入

cd opencv-3.4.16
mkdir build
cd build

在build运行代码

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

编译:

sudo make -j4

这个时间比较漫长,等就好,一般不会有问题

编译完毕后安装

sudo make install

然后用gedit打开ld.so.conf

sudo gedit /etc/ld.so.conf

在那个文件最后加入 include /usr/loacal/lib

编译R2LIVE问题&解决方法_第9张图片

刷新库链接

sudo ldconfig

继续修改bash.bashrc文件

sudo gedit /etc/bash.bashrc 

和上面一样在文件末尾加入

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

编译R2LIVE问题&解决方法_第10张图片

然后刷新文件

source /etc/bash.bashrc

 然后在终端输入

pkg-config opencv --modversion

 如果显示版本号,那么就成功了!

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

接着在去catkin_ws文件中打开终端,输入

catkin_make

等待编译完毕即可

编译完毕后,下载这个代码内带的录制文件,下载好后先更新一下

source catkin_ws/devel/setup.bash

然后进入代码的文件夹,运行示例

cd catkin_ws
roslaunch r2live demo.launch

然后进入自己下载的bag文件的文件夹下运行

rosbag play YOUR_DOWNLOADED.bag

其中:YOUR_DOWNLOADED是你自己下载的包的名称。运行后就成啦!下图是我运行indoor_aggressive.bag包后的效果。

编译R2LIVE问题&解决方法_第11张图片

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ubuntu18.04的复现步骤

安装好ros后,所有的步骤和上面20.04的步骤一模一样(步骤一、二、三、四、)

这四步做好后基本没有bug,最后在catkin_ws文件夹中运行catkin_make时可能会产生一个bug:

error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’

直接在终端输入

sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
 
sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h

即可。然后再次在文件夹中编译

catkin_make

就可以啦!

然后依然是下载他们的录制包,记得一开始要做这一步!

source catkin_ws/devel/setup.bash

然后进入代码的文件夹,运行示例

cd catkin_ws
roslaunch r2live demo.launch

然后进入自己下载的bag文件的文件夹下运行

rosbag play YOUR_DOWNLOADED.bag

其中:YOUR_DOWNLOADED是你自己下载的包的名称。运行后就成啦!

注:这些代码文件要放到主目录中去,如果出现错误编译R2LIVE问题&解决方法_第12张图片

那就是你的运行文件的目录中有中文,这是不行的,那就重新在做一遍步骤一、二、三、四吧!

这就是我本次在复现r2live时遇到的问题和解决方法,如有错误恳请大家批评指正,谢谢大家!

       

      

                          


                        

你可能感兴趣的:(servlet,java,开发语言)