配置环境
重新装ubuntu 20环境了 原本系统依赖装烂了
一些安装的依赖
1
2
3
opencv 3.4.16
ceres 1.14
Pangolin-0.6
换中科大源
1
2
3
4
5
6
7
8
9
10
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
装ROS
-
添加ROS软件源
1
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
-
添加密钥
1
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
-
安装
1 2
sudo apt update sudo apt install ros-noetic-desktop-full
-
装点依赖
1
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
-
roscore 启动
1
roscore
不出意外 有正常输出了
增大交换空间
后续如果要make,交换空间默认好像是2g,太小了,容易卡死,我这换成15g了
1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 创建分区
sudo dd if=/dev/zero of=/swapfile bs=1G count=15
sudo mkswap /swapfile
sudo swapon /swapfile
# free -m #可以查看内存使用
# 创建完交换分区之后就可以继续编译
# 编译完之后记得用以下命令关闭交换分区
# 某次我就是忘了关闭交换分区,导致开不了机,然后切换 tty1 ,登进去之后关闭交换分区才可以进入桌面的。
#2. 关闭分区
sudo swapoff /swapfile
sudo rm /swapfile
dd: failed to open ‘/swapfile’: Text file busy 需要 执行
swapoff -a
安装 Eigen
这里装的是 3.2.10
直接cmake 然后 make install
加一步:
1
2
#移动头文件
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
很多程序会去找 /usr/local/include
额额 最好装 3.3.3 的 和vins-mono的一样
安装 ceres
下载 略 下的是 1.14
- 依赖
1
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
可以把glog 和metis 也装上 cmake报找不到 看着不舒服
sudo apt install libmetis-dev
git clone https://github.com/google/glog.git 编译安装一下即可
安装catkin
1
2
sudo apt install ros-noetic-catkin
sudo apt-get install cmake python3-catkin-pkg python3-empy python-nose python-setuptools libgtest-dev build-essential
安装opencv3
有个自带的opencv4.2,vins-mono用的是opencv3
下载的是 opencv 3.4.16
将其装到 /usr/local/opencv3
1
2
3
4
5
6
7
8
9
10
11
cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local/opencv3 \
\
-DWITH_CUDA=OFF \
\
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
..
安装VINS-MONO的依赖
1
sudo apt-get install ros-noetic-cv-bridge ros-noetic-tf ros-noetic-message-filters ros-noetic-image-transport
解决Opencv和 cv_bridge的冲突
https://blog.csdn.net/m0_37993445/article/details/123075977 很不错
1
2
cd /opt/ros/noetic/share/cv_bridge/cmake/
sudo gedit cv_bridgeConfig.cmake
90多行 改:
1
2
3
4
5
6
#if(NOT "include;/usr/include/opencv4 " STREQUAL " ")
# set(cv_bridge_INCLUDE_DIRS "")
# set(_include_dirs "include;/usr/include/opencv4")
if(NOT "include;/usr/include/opencv4 " STREQUAL " ")
set(cv_bridge_INCLUDE_DIRS "")
set(_include_dirs "include;/usr/include/opencv3")
120行左右 注释掉 改成
1
cv_bridge;/usr/local/opencv3/lib/libopencv_calib3d.so;/usr/local/opencv3/lib/libopencv_features2d.so.3.4.16;/usr/local/opencv3/lib/libopencv_imgproc.so.3.4;/usr/local/opencv3/lib/libopencv_shape.so;/usr/local/opencv3/lib/libopencv_videoio.so.3.4.16;/usr/local/opencv3/lib/libopencv_calib3d.so.3.4;/usr/local/opencv3/lib/libopencv_flann.so;/usr/local/opencv3/lib/libopencv_imgproc.so.3.4.16;/usr/local/opencv3/lib/libopencv_shape.so.3.4;/usr/local/opencv3/lib/libopencv_video.so;/usr/local/opencv3/lib/libopencv_calib3d.so.3.4.16;/usr/local/opencv3/lib/libopencv_flann.so.3.4;/usr/local/opencv3/lib/libopencv_ml.so;/usr/local/opencv3/lib/libopencv_shape.so.3.4.16;/usr/local/opencv3/lib/libopencv_video.so.3.4;/usr/local/opencv3/lib/libopencv_core.so;/usr/local/opencv3/lib/libopencv_flann.so.3.4.16;/usr/local/opencv3/lib/libopencv_ml.so.3.4;/usr/local/opencv3/lib/libopencv_stitching.so;/usr/local/opencv3/lib/libopencv_video.so.3.4.16;/usr/local/opencv3/lib/libopencv_core.so.3.4;/usr/local/opencv3/lib/libopencv_highgui.so;/usr/local/opencv3/lib/libopencv_ml.so.3.4.16;/usr/local/opencv3/lib/libopencv_stitching.so.3.4;/usr/local/opencv3/lib/libopencv_videostab.so;/usr/local/opencv3/lib/libopencv_core.so.3.4.16;/usr/local/opencv3/lib/libopencv_highgui.so.3.4;/usr/local/opencv3/lib/libopencv_objdetect.so;/usr/local/opencv3/lib/libopencv_stitching.so.3.4.16;/usr/local/opencv3/lib/libopencv_videostab.so.3.4;/usr/local/opencv3/lib/libopencv_dnn.so;/usr/local/opencv3/lib/libopencv_highgui.so.3.4.16;/usr/local/opencv3/lib/libopencv_objdetect.so.3.4;/usr/local/opencv3/lib/libopencv_superres.so;/usr/local/opencv3/lib/libopencv_videostab.so.3.4.16;/usr/local/opencv3/lib/libopencv_dnn.so.3.4;/usr/local/opencv3/lib/libopencv_imgcodecs.so;/usr/local/opencv3/lib/libopencv_objdetect.so.3.4.16;/usr/local/opencv3/lib/libopencv_superres.so.3.4;/usr/local/opencv3/lib/libopencv_viz.so;/usr/local/opencv3/lib/libopencv_dnn.so;/usr/local/opencv3/lib/libopencv_dnn.so.3.4.16;/usr/local/opencv3/lib/libopencv_imgcodecs.so.3.4;/usr/local/opencv3/lib/libopencv_photo.so;/usr/local/opencv3/lib/libopencv_superres.so.3.4.16;/usr/local/opencv3/lib/libopencv_viz.so.3.4;/usr/local/opencv3/lib/libopencv_features2d.so;/usr/local/opencv3/lib/libopencv_imgcodecs.so.3.4.16;/usr/local/opencv3/lib/libopencv_photo.so.3.4;/usr/local/opencv3/lib/libopencv_videoio.so;/usr/local/opencv3/lib/libopencv_viz.so.3.4.16
现在调用的就是自己安装的3.4.16了
改成自己的安装路径
以后要用4的 要么重新弄个cv_bridge编译安装 网上有; 要么注释回去
好像 ubuntu18自带的是opencv3 可以去试试 ubutu18
最后剩下的cv_bridge链接问题
1
2
3
/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.3.4
/usr/bin/ld: warning: libopencv_imgproc.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.4
/usr/bin/ld: warning: libopencv_core.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_core.so.3.4
没啥ying’x
编译运行
1
2
3
4
5
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ../
catkin build
source ~/catkin_ws/devel/setup.bash
1
2
3
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_05_difficult.bag
分别运行
结果: