在B站上跟着宇树的视频实践时,编译时会遇到各种问题,踩了各种坑,而全网也没有一个详细的教程,解决我遇到的问题。于是写下遇到的问题及解决方法以供后来者借鉴参考。希望能少踩点坑!视频链接如下:宇树科技Unitree2023 ROS暑期学校课程
目录
运行环境搭建
基于ubuntu20.04,ROS-notice版本,gtsam-4.1.0,googletest-1.8.1,opencv-4.5.0,protobuf-3.6.1。
注意对应库的版本号,否则编译可能会出错。
链接分别如下,注意下载对应版本的源码:
gtsam:Releases · borglab/gtsam · GitHub
googletest:https://github.com/google/googletest/archive/release-1.8.1.tar.gz
opencv:Releases · opencv/opencv · GitHub
protobuf:https://github.com/protocolbuffers/protobuf/releases/tag/v3.6.1
在home下新建catkin_ws文件夹,并在catkin_ws下新建src文件夹,在src下打开终端,并执行以下命令获取课程源码:
git clone https://gitee.com/rugels/simulation_unitree.git
在home下新建liosam_ws文件夹,并在liosam_ws下新建src文件夹,在src下打开终端,并执行以下命令获取lio-sam源码:
git clone https://github.com/TixiaoShan/LIO-SAM.git
这里默认已经安装好ROS-notice,和cartographer。若没有安装可参考我之前发的文章,原文链接如下:
ubuntu下ROS1与ROS2共存安装(亲测有效,安装超简单)_ubuntu 安装ros1 后 安装ros2-CSDN博客
cartographer安装(过程超简单,成功安装经验)_安装cartographer-CSDN博客
安装cartographer时注意,protobuf需为3.6.1版本(注意:我提供的cartographer安装中protobuf的版本为3.4.1),否则后面catkin_make编译时会与gazebo11发生冲突,可能会报出以下错误:
解决办法是:重新安装protobuf-3.6.1,并将cartographer重新编译安装,然后catkin_make编译课程源码即可通过。
1、protobuf安装
由于之前安装的protobuf版本为3.4.1,需执行以下命令删除并卸载相关文件。
sudo apt-get remove libprotobuf-dev
sudo rm /usr/local/bin/protoc //执行文件
sudo rm -rf /usr/local/include/google //头文件
sudo rm -rf /usr/local/lib/libproto* //库文件
sudo rm -rf /usr/lib/protoc
将cartographer_install下的protobuf文件夹替换为3.6.1版本的,并将下载的googletest-release-1.8.1改名为googletest并放入protobuf/third_party/下,然后在protobuf目录下,终端执行以下命令进行安装:
mkdir build && cd build
cmake -G Ninja \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF \
../cmake
ninja
sudo ninja install
2、安装OpenCV
终端执行以下命令,安装所需依赖:
sudo apt update
sudo apt install cmake
sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt install pkg-config
在opencv目录下,终端执行以下命令:
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j4
sudo make install
终端执行以下命令:
sudo gedit /etc/profile.d/pkgconfig.sh
在打开的文件中加入以下代码:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
保存并退出。终端执行以下命令,刷新一下:
source /etc/profile
终端执行以下命令验证是否成功:
pkg-config --libs opencv4
出现以下内容,则说明成功:
终端执行以下命令:
sudo gedit /etc/ld.so.conf.d/opencv4.conf
在打开的文件中加入以下代码:
/usr/local/lib
保存并退出。最后执行以下命令,使配置的路径生效。
sudo ldconfig
在opencv/samples/cpp/example_cmake目录下,依次执行以下命令:
cmake .
make
./opencv_example
若出现以下画面,则表示安装成功。
3、安装GTSAM
终端执行以下命令,安装相关依赖:
sudo apt-get install libboost-all-dev
sudo apt-get install libtbb-dev
在gtsam目录下,终端执行以下命令:
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_WITH_EIGEN_MKL=OFF -DGTSAM_WITH_EIGEN_MKL_OPENMP=OFF ..
make check
sudo make install
4、编译lio-sam
由于安装了opencv4,需要进行以下修改:
在 LIO-SAM/include/utility.h 中将
#include <opencv/cv.h>
修改为:
#include <opencv2/imgproc.hpp>
在 LIO-SAM/CMakeList.txt 中将
set(CMAKE_CXX_FLAGS "-std=c++11")
修改为:
set(CMAKE_CXX_STANDARD 14)
在liosam_ws目录下,执行以下命令:
catkin_make
出现以下报错: