这次在复现r2live这篇文章的时候,遇到了许多问题,通过查阅大量资料,也算一一解决了。这篇文章就是总结一下在复现代码时的过程和遇到问题的总结。
一开始我尝试的是ubuntu20.04,但很不推荐用这个版本去复现,因为我用这个版本失败了好多次。。。下文还有用ubuntu18.04版本的方法,推荐用18.04版本。如果使用的是这个版本,也没关系,就是bug多点~ 接下来我们就进入正题吧。
ros安装网上有好多人都有分享安装方法,每个人的方法都可以成功,我这里就快速的过一下。
首先查看一下软件和更新,保证下面4个都勾上
然后就开始安装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,我这是添加过了,再次输入会显示这个
三、更新软件园
sudo apt update
四、安装ros
sudo apt install ros-noetic-desktop-full
五、初始化
sudo rosdep init
六、更新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
然后在打开一个终端,输入
rosrun turtlesim turtlesim_node
之后在打开一个终端(这是第三个了嗷!)
rosrun turtlesim turtle_teleop_key
可以用上下左右控制小龟,那说明ros安装成功!
参考文章: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依旧出现这个错误:
可以尝试在程序文件中 source xxx/ws_livox/devel/setup.bash,xxx是你livox文件路径,之后就可以直接catkin_make了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
错误②opencv/cv.h没有那个文件或目录
把对应.h文件中的头文件#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
下好后解压到自己需要的文件夹里,一般放在主目录,也就是“~”
进入解压好的文件夹,进入并创建一个文件夹进入
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
刷新库链接
sudo ldconfig
继续修改bash.bashrc文件
sudo gedit /etc/bash.bashrc
和上面一样在文件末尾加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
然后刷新文件
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包后的效果。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
安装好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时遇到的问题和解决方法,如有错误恳请大家批评指正,谢谢大家!