上一篇文章写了在win11下安装wsl2,既然装了那么肯定要用。
整理一下需要的环境
gtk依赖
1 2 3
| sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get libjpeg-dev libtiff5-dev
|
Eigen3安装
方式1:apt安装(速度快)
1
| sudo apt install libeigen3-dev
|
方式2:源码安装
gflags安装
1 2 3 4 5 6 7
| git clone https://github.com/gflags/gflags.git cd gflags mkdir build cd build cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -GNinja .. ninja sudo ninja install
|
glog安装
1 2 3 4 5 6 7
| git clone https://github.com/google/glog cd glog mkdir build cd build cmake -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON -GNinja .. ninja sudo ninja install
|
gstreamer安装(可选)
1
| sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-pulseaudio
|
fmt安装(可选)
1 2 3 4 5 6 7
| git clone https://github.com/fmtlib/fmt.git cd fmt mkdir build cd build cmake -G Ninja .. ninja sudo ninja install
|
Sophus安装(可选)
1 2 3 4 5 6 7 8 9
| git clone https://github.com/strasdat/Sophus.git cd Sophus/ mkdir build cd build
cmake -G Ninja -DCMAKE_CXX_FLAGS=-fPIC -DUSE_BASIC_LOGGING=ON .. ninja sudo ninja install
|
g2o安装
1
| sudo apt install libcholmod3 libcxsparse3
|
1
| sudo apt install libcholmod5 libcxsparse4
|
1 2 3 4 5 6 7 8 9
| sudo apt install libqglviewer-dev-qt5 libsuitesparse-dev
git clone https://github.com/RainerKuemmerle/g2o.git cd g2o mkdir build cd build cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. ninja sudo ninja install
|
Pangolin安装
1 2 3 4 5 6 7 8 9 10
| sudo apt install mesa-utils -y git clone https://github.com/stevenlovegrove/Pangolin cd Pangolin ./scripts/install_prerequisites.sh recommended sudo aptitude install libgl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols libegl1-mesa-dev libc++-dev libglew-dev libeigen3-dev cmake g++ ninja-build libjpeg-dev libpng-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev mkdir build cd build cmake .. -GNinja ninja sudo ninja install
|
octomap安装(可选)
1 2 3 4 5 6 7
| git clone https://github.com/OctoMap/octomap.git --depth 1 cd octomap mkdir build cd build cmake .. -GNinja ninja sudo ninja install
|
pcl安装(可选)
apt安装
1
| sudo apt install libpcl-dev
|
源码安装
1 2 3 4 5 6 7 8
| sudo apt-get install libboost-all-dev libflann-dev libusb-1.0-0-dev git clone https://github.com/PointCloudLibrary/pcl --depth 1 cd pcl mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -GNinja .. ninja sudo ninja install
|
OpenNI2安装
sudo apt-get install libopenni2-dev
vtk安装
方式1:apt安装(速度快)
1
| sudo aptitude install vtk9 libvtk9-dev
|
方式2:源码安装
1 2 3 4 5 6 7
| git clone https://gitlab.kitware.com/vtk/vtk.git cd vtk/ mkdir build cd build cmake -G Ninja .. ninja sudo ninja install
|
OpenNI2安装
sudo apt-get install libopenni2-dev
OpenCV

启动wsl之后,文件系统会自动挂载到windows中,相应的windows磁盘也会挂载到wsl中/mnt/<盘符>/可以很方便得访问或者拷贝文件。创建好目录下载好opencv4.9和对应的opencv_contrib-4.9.0可以自行添加的选项:
1
| -D OPENCV_DOWNLOAD_MIRROR_ID=gitcode \
|
1
| -D OPENCV_DOWNLOAD_MIRROR_ID=gitcode \
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| sudo ln -s /usr/bin/python3 /usr/bin/python pip install numpy cd opencv-4.9.0/ mkdir build cd build/ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_C_COMPILER=/usr/bin/cc \ -D CMAKE_CXX_COMPILER=/usr/bin/c++ \ -D BUILD_SHARED_LIBS=ON \ -D CMAKE_CXX_FLAGS=-fPIC \ -D CMAKE_C_FLAGS=-fPIC \ -D CMAKE_EXE_LINKER_FLAGS="-lpthread -ldl" \ -D ENABLE_PIC=ON \ -D WITH_1394=OFF \ -D WITH_ARAVIS=OFF \ -D WITH_ARITH_DEC=ON \ -D WITH_ARITH_ENC=ON \ -D WITH_CLP=OFF \ -D WITH_CUBLAS=OFF \ -D WITH_CUDA=OFF \ -D WITH_CUFFT=OFF \ -D WITH_FFMPEG=ON \ -D WITH_GSTREAMER=ON \ -D WITH_GSTREAMER_0_10=OFF \ -D WITH_HALIDE=OFF \ -D WITH_HPX=OFF \ -D WITH_IMGCODEC_HDR=ON \ -D WITH_IMGCODEC_PXM=ON \ -D WITH_IMGCODEC_SUNRASTER=ON \ -D WITH_INF_ENGINE=OFF \ -D WITH_IPP=OFF \ -D WITH_ITT=OFF \ -D WITH_JASPER=ON \ -D WITH_JPEG=ON \ -D WITH_LAPACK=ON \ -D WITH_LIBREALSENSE=OFF \ -D WITH_NVCUVID=OFF \ -D WITH_OPENCL=OFF \ -D WITH_OPENCLAMDBLAS=OFF \ -D WITH_OPENCLAMDFFT=OFF \ -D WITH_OPENCL_SVM=OFF \ -D WITH_OPENEXR=OFF \ -D WITH_OPENGL=OFF \ -D WITH_OPENMP=OFF \ -D WITH_OPENNI=OFF \ -D WITH_OPENNI2=ON \ -D WITH_OPENVX=OFF \ -D WITH_PNG=ON \ -D WITH_PROTOBUF=OFF \ -D WITH_PTHREADS_PF=ON \ -D WITH_PVAPI=OFF \ -D WITH_QT=OFF \ -D WITH_QUIRC=OFF \ -D WITH_TBB=OFF \ -D WITH_TIFF=ON \ -D WITH_VULKAN=OFF \ -D WITH_WEBP=ON \ -D WITH_XIMEA=OFF \ -D WITH_GTK=ON \ -D WITH_EIGEN=ON \ -D OPENCV_EXTRA_MODULES_PATH="../../opencv_contrib-4.9.0/modules" \ -D BUILD_ZLIB=ON \ -D ZLIB_INCLUDE_DIR="../3rdparty/zlib" \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -G Ninja \ .. ninja sudo ninja install
|
::: info
-D OPENCV_DOWNLOAD_MIRROR_ID=gitcode \ 使用了国内镜像下载,不再需要用代理。
:::
如果提示下载失败查看下方的代理问题。
evo工具
1 2 3 4
| python3 -m venv source venv/bin/activate pip install evo --upgrade --no-binary evo sudo apt install python3-tk
|
使用方法
想要评估轨迹可以使用evo_traj,例如我的文件时tum格式的,就可以使用以下命令。
1 2
| evo_traj tum CameraTrajectory.txt --ref=<groundtruth.txt> -p --correct_scale -a
|
问题
Segmentation fault
通过gdb查看core dump文件,发现错误出现在/usr/lib/wsl/lib/libd3d12core.so我们可以通过在运行程序前加入WAYLAND_DISPLAY=0来强制X11显示,虽然还会有Segmentation fault,但是程序能成功运行。
代理问题
在编译OpenCV时,cmake可能会通过网络从github上下载一些代码库,所以可如果网络环境不太好,可以提前在终端中设置好代理。
1
| export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
|
double free
出现这个问题请关闭编译选项 -march=native
然后我在使用过程中发现pcl是会默认启用-march=native编译的,我们需要重新编译一下pcl:
1
| cmake -DCMAKE_BUILD_TYPE=Release -GNinja -DPCL_ENABLE_MARCHNATIVE=OFF ..
|