聲明:這是一個新手的總結,根據各個大神的博客得來
首先默認你已經安裝了Pangolin、OpenCV、Eigen3,如果沒有,請參照我的這篇博客:https://blog.csdn.net/qq_41981025/article/details/80023155,或者百度搜索大神教程
ROS Kinetic安裝
ros是一個機器人操作系統,但並不像windows或者ubuntu一樣,可以說他是一個平臺,在ubuntu系統下通過在命令窗口輸入相關命令就可以進入,完全不必擔心會把你的ubuntu覆蓋。
我當時主要參考的這兩篇博文:ubuntu 16.04下安裝和配置ros
1 首先點擊ubuntu右上角的設置圖標,點擊系統設置,在打開的窗口中單擊軟件和更新,確保ubuntu軟件下的前四個選項被選中
然後進入/etc/apt/sources.list,在文件的頭部添加
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
保存文件後,打開命令窗口,輸入 sudo apt-get update
仍舊打開軟件和更新,你可以打開下載自的下拉列表,選擇其他站點,
單擊選擇最佳服務器,ubuntu會自動選擇離你較近的服務器。
2 打開命令窗口(快捷鍵 Ctrl + Alt + T),輸入命令創建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 sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
輸入命令,更新源
sudo apt-get update
3 安裝ros,這一步我當時安裝的時候和參考的博客不太一樣,在命令窗口輸入命令,安裝完整版的時候會提示需要先安裝另外兩個東西,按照提示走,還是用 sudo apt-get install + 需要安裝的東東就行,安裝完成後,輸入
sudo apt-get install ros-kinetic-desktop-full
4 安裝完成後,需要初始化ros,並添加環境變量
在命令窗口輸入
sudo rosdep init
rosdep update
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
5 安裝ros常用插件
sudo apt-get install python-rosinstall
到此ros就安裝的差不多了,先啓動ros看看前面是否有錯誤步驟,在命令窗口輸入
roscore
如果出現窗口
表示安裝基本成功,下面開始配置ros
6 創建工作區,在命令窗口輸入
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
到此ros就安裝完成了。其中還有一些小問題,比如我使用 echo $ROS_PACKAGE_PATH 命令來查看環境變量的時候,並沒有出現配置ROS工作空間catkin+rosbuild 這篇文章中所說的四個路徑,只有/home/yyl/rosbuild_ws/sandbox:/home/yyl/catkin_ws/src:/opt/ros/kinetic/share這三個路徑,但是並不影響跑orb-slam單目攝像頭,其他的影響還不知道。
安裝usb_cam
1 下載源碼並配置環境,在命令窗口輸入
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
catkin_make
source ~/catkin-ws/devel/setup.bash
2 編譯,進入catkin_ws/src文件夾,在此文件夾內右鍵打開命令窗口,輸入
cd usb_cam
mkdir build
cd build
cmake ..
make
到此usb_cam安裝成功,可以測試一下。
插入usb攝像頭後,根據命令
ls /dev/video*
查看自己的usb攝像頭爲video幾,默認是video0,可以進入catkin_ws/src/usb_cam/launch文件夾,打開usb_cam-test.launch文件,將裏面第三行的/dev/video0,改成/dev/video**(自己的號)。進入catkin_ws/src/usb_cam/nodes文件夾,打開usb_cam_node.cpp文件,將裏面第92行的/dev/video0,改成/dev/video**。打開ros,即在新的終端下輸入命令
roscore
再打開一個終端(Ctrl + Alt + T),輸入
roslaunch usb_cam usb_cam-test.launch
如果出現圖像代表安裝配置成功。
ORB_SLAM2安裝
1 下載源碼,在終端中輸入
cd catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
2 包含路徑,在當前終端中輸
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS
3 分別編譯源碼
編譯orb_slam2
cd catkin_ws/src/ORB_SLAM2
mkdir build
cd build
cmake ..
make
編譯ros的源碼
cd ~/catkin_ws/src/ORB_SLAM2/Example/ROS/ORB_SLAM2
mkdir build
cd build
cmake ..
make
編譯g2o
cd ~/catkin_ws/ORB_SLAM2/Thirdparty/g2o/
mkdir build
cmake ..
make
編譯DBoW2
cd ~/catkin_ws/ORB_SLAM2/Thridparty/DBoW2
mkdir build
cmake ..
make
一般情況是都能編譯成功,但是我編譯catkin_ws/src/ORB_SLAM2/Example/ROS/ORB_SLAM2出問題了,rgbd和stereo一直編譯不了,試了網上能找到的各種方法還是不行,沒辦法只有放棄編譯這兩個模式,在catkin_ws/src/ORB_SLAM2/Example/ROS/ORB_SLAM2的cmakelists.txt文件中刪掉
# Node for stereo camera target_link_libraries(Stereo
rosbuild_add_executable(Stereo ${LIBS}
src/ros_stereo.cc )
)
# Node for RGB-D camera target_link_libraries(RGBD
rosbuild_add_executable(RGBD ${LIBS}
src/ros_rgbd.cc )
)
再編譯就行了,不過只有單目的可執行文件
運行
分三個終端
第一個終端打開ros
roscore
第二個窗口打開usb攝像頭
roslaunch usb_cam usb_cam-test.launch
第三個窗口運行orb_slam
rosrun ORB_SLAM2 Mono /home/***/catkin_ws/src/ORB_SLAM2-master/Vocabulary/ORBvoc.txt /home/***/catkin_ws/src/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/Asus.yaml
其中ORBvoc.txt需要將catkin_ws/src/ORB_SLAM2-master/Vocabulary中的壓縮包解壓,***代表用戶名,第二個路徑/home/***/catkin_ws/src/ORB_SLAM2-master/Examples/ROS/ORB_SLAM2/Asus.yaml是攝像頭參數,可以標定後按實際路徑添加