使用的Linux发行版本为Ubuntu 20.04
SLAM2下载地址为:git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
下载地址:https://eigen.tuxfamily.org/index.php?title=Main_Page
下载地址:https://github.com/stevenlovegrove/Pangolin/tree/v0.5
卸载pangolin:https://blog.csdn.net/qq_42257666/article/details/126069335
下载地址:https://github.com/opencv/opencv/releases/tag/3.4.10
数据下载地址:https://vision.in.tum.de/data/datasets/rgbd-dataset/download
1.1安装步骤
cd eigen-3.2.10
mkdir build
cd build
cmake..
sudo make install
sudo cp -r /usr/local/include/eigen3 /usr/include
pkg-config --modversion eigen3
pkg-config --modversion eigen3
sudo updatedb
locate eigen3
sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/share/doc/libeigen3-dev
sudo rm -rf /usr/local/share/pkgconfig/eigen3.pc /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
sudo rm -rf /usr/local/lib/pkgconfig/eigen3.pc
sudo rm -rf /usr/local/share/eigen3
pkg-config --modversion eigen3
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
在 opencv-3.4.10文件夹中建立名为 build的文件夹,在build 目录下执行 cmake 和 make。
mkdir buildcd buildcmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..make -j8
sudo make install
动态库配置
sudo gedit /etc/ld.so.conf.d/opencv.conf
添加
/usr/local/lib
保存后,终端内执行
sudo ldconfig
更新 PKG_CONFIG_PATH
sudo gedit /etc/bash.bashrc
文末添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
sudo updatedb
若出现 sudo: updatedb: command not found,执行 sudo apt install mlocate 后再次操作即可。
pkg-config opencv --modversionpkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs opencv
git clone https://github.com/IntelRealSense/librealsense
cd librealsense
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
Build and apply patched kernel modules for:
根据不同的ubuntu版本安装:对于Ubuntu 14/16/18 LTS
./scripts/patch-realsense-ubuntu-lts.sh
sudo dmesg | tail -n 50
这里可以看一下UVC是否安装成功了
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install
-DBUILD_EXAMPLES=true 这个选项表示带演示和教程的
./rs-capture
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
uname -r : 显示操作系统的发行版号
读取点云
cd ~/catkin_ws/src/git clone https://github.com/ros-drivers/rgbd_launch.gitcd ..catkin_make
将rs_rgbd.launch和rs_camera.launch文件中的 由false改为true
roslaunch realsense2_camera rs_rgbd.launch
点击add 选择PointCloud2进行display,选择Fixed Frame和Topic,如图所示
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace
cd ..
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
cd src
git clone https://github.com/intel-ros/realsense.git
cd ..
catkin_make
roslaunch realsense2_camera rs_rgbd.launch
rostopic list
内参获取
rostopic echo /camera/color/camera_info
rostopic echo /camera/aligned_depth_to_color/camera_info
mkdir -p ~/catkin_ws/srccd ~/catkin_ws/src/Clone the latest Intel® RealSense™ ROS from here into ‘catkin_ws/src/’把realsense这个文件下载/克隆到该目录下catkin_init_workspacecd ..catkin_make cleancatkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Releasecatkin_make installecho "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc
install rgbd_launchsudo apt-get install ros-kinetic-rgbd-launchroslaunch realsense2_camera rs_rgbd.launch再打开一个终端,输入rviz此时并不能看到什么结果左上角 Displays 中 Fixed Frame 选项中,下拉菜单选择 camera_link这是主要到Global Status变成了绿色点击该框中的Add -> 上方点击 By topic -> /depth_registered 下的 /points 下的/PointCloud2点击该框中的Add -> 上方点击 By topic -> /color 下的 /image_raw 下的image
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
这时候打开文件夹里的build.sh文件,默认是make -j,如果不改容易引起系统卡死。改为make -j4即可(数字为电脑CPU的核心数),或者去掉-j。
把build.sh的make -j改成make(这是为了防止多线程编译出错,对于build_ros.sh文件也是同理,下面就不说了)
/src/LocalMapping.cc
/src/System.cc
/src/LoopClosing.cc
/src/Tracking.cc
/src/Viewer.cc
/Examples/Monocular/mono_tum.cc
/Examples/Monocular/mono_kitti.cc
/Examples/Monocular/mono_euroc.cc
/Examples/RGB-D/rgbd_tum.cc
/Examples/Stereo/stereo_kitti.cc
/Examples/Stereo/stereo_euroc.cc
cd ORB_SLAM2
chmod +x build.sh
运行build.sh
./build.sh
我使用的是TUM数据集,在
https://vision.in.tum.de/data/datasets/rgbd-dataset/download
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml PATH_TO_SEQUENCE_FOLDER
PATH_TO_SEQUENCE_FOLDER是你文件的地址。
然后就开始运行例程了,贴图:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/ubicast/data/rgbd_dataset_freiburg1_xyz
参考:https://blog.csdn.net/Robert_Q/article/details/121690089
/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In function ‘std::__cxx11::string pangolin::FfmpegFmtToString(AVPixelFormat)’:
/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:41:41: error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope
参考:https://github.com/stevenlovegrove/Pangolin/pull/318/files?diff=split&w=0
sizeof(AVFormatContext::max_analyze_duration2);}" HAVE_FFMPEG_MAX_ANALYZE_DURATION2
换成
sizeof(AVFormatContext::max_analyze_duration);}" HAVE_FFMPEG_MAX_ANALYZE_DURATION
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
TEST_PIX_FMT_RETURN(XVMC_MPEG2_MC);
TEST_PIX_FMT_RETURN(XVMC_MPEG2_IDCT);
改为
#ifdef FF_API_XVMCTEST_PIX_FMT_RETURN(XVMC_MPEG2_MC);TEST_PIX_FMT_RETURN(XVMC_MPEG2_IDCT);
#endif
TEST_PIX_FMT_RETURN(VDPAU_H264);TEST_PIX_FMT_RETURN(VDPAU_MPEG1);TEST_PIX_FMT_RETURN(VDPAU_MPEG2);TEST_PIX_FMT_RETURN(VDPAU_WMV3);TEST_PIX_FMT_RETURN(VDPAU_VC1);
改为
#ifdef FF_API_VDPAUTEST_PIX_FMT_RETURN(VDPAU_H264);TEST_PIX_FMT_RETURN(VDPAU_MPEG1);TEST_PIX_FMT_RETURN(VDPAU_MPEG2);TEST_PIX_FMT_RETURN(VDPAU_WMV3);TEST_PIX_FMT_RETURN(VDPAU_VC1);
#endif
TEST_PIX_FMT_RETURN(VDPAU_MPEG4);
改为
#ifdef FF_API_VDPAUTEST_PIX_FMT_RETURN(VDPAU_MPEG4);
#endif
#define TEST_PIX_FMT_RETURN(fmt) case AV_PIX_FMT_##fmt: return #fmt; /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In memberfunction ‘voidpangolin::FfmpegVideoOutputStream::WriteFrame(AVFrame*)’:/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:572:39:error: ‘AVFMT_RAWPICTURE’ was not declared in this scopeif (recorder.oc->oformat->flags & AVFMT_RAWPICTURE) {
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020
/usr/include/c++/8.1.0/bits/stl_map.h: In instantiation of ‘class std::map, Eigen::aligned_allocator > >’:
/home/zach/Projects/ORB-SLAM/ORB_SLAM2/src/Optimizer.cc:818:37: required from here
/usr/include/c++/8.1.0/bits/stl_map.h:122:21: error: static assertion failed: std::map must have the same value_type as its allocatorstatic_assert(is_same::value,
这个可以参考
https://github.com/raulmur/ORB_SLAM2/pull/585
这篇文字上的解答,具体需要: