前面已经能够使用RGB-D跑出深度图像,但是主要的还是使用ros进行实现
这里先进行ros的安装
这里先配置一下软件源
清华大学开源软件镜像站 | Tsinghua Open Source Mirror
找到Ubuntu,然后点击旁边的问号
在这个地方选择20的版本,将信息复制下来
将里面的内容替换掉即可
编辑完成之后出现了一个报错显示:
但是提示是这个并不影响使用我们暂且搁置了
现在开始正式安装ROS
首先明白为什么要使用ros
一句话:只需要关注算法的实现,而不必从头开始处理硬件接口和通信问题。
配置公钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
更新软件库
sudo apt-get update
开始安装 20的版本对应的是noetic版本。
sudo apt install ros-noetic-desktop-full
报错,说明软件源当中没有
sudo sh -c 'wget -O /etc/apt/trusted.gpg.d/ros.asc https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc'
添加ros仓库软件密钥
sudo sh -c 'echo "deb [arch=amd64] http://packages.ros.org/ros/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros-latest.list'
添加软件源
sudo apt update
更新一下软件源
sudo apt install ros-noetic-desktop-full
在执行一下就可以了,之后的安装过程大概需要几分钟
安装 rosdep
为了确保你能够正确安装 ROS 的依赖包,你还需要安装 rosdep
:
我们先初始化一下
sudo apt install python3-rosdep2
安装一下,这里装的是rosdep2是包括rosdep1的
这时候出现了一个网络超时的问题,不小心把终端关了,但是大概意思就是timeout
sudo nano /etc/ros/rosdep/sources.list.d/20-default.list
打开这个文件直接是用光标控制的
https://mirrors.tuna.tsinghua.edu.cn/ros/rosdep/rosdep-latest.tar.gz
添加上这个,ctrl+O保存,会出现保存文件的路径,回车,ctrl+X退出即可。
在来执行命令即可
出现
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
执行一下这个命令,然后在初始化一下
这样就表示成功了
按照要求我们来更新一下
rosdep update
这样就更新成功了
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
配置一下环境变量,并让他生效
安装rosinstall
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
测试
打开一个新的终端,输入命令roscore
说明缺少东西,或者是环境没有配置好,我们先测试一下环境
echo $ROS_PACKAGE_PATH
输入这个
出现这个路径说明没问题
sudo apt install python3-roslaunch
我们安装包即可
再次roscore
sudo apt-get install ros-noetic-roslaunch
刚才的包安装的不完整,使用这个安装
最后roscore
这样表示运行成功
第二个终端
rosrun turtlesim turtlesim_node
按照要求安装
sudo apt install ros-noetic-rosbash
应该是这么安装,要标明版本,不然系统不知道安装哪个版本的,上面的问题其实也是一样的
sudo apt-get install ros-noetic-turtlesim
同样的,提示你安装turtlesim的时候,也要表明版本
这时候我们再来
rosrun turtlesim turtlesim_node
这时候就出现了
新建第三个终端
输入命令
rosrun turtlesim turtle_teleop_key
这时候我们把鼠标放在这里用上下左右箭就可以控制了
参考的博主是,博主讲的很全,万分感谢。
【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程_ubuntu20.04安装ros-CSDN博客
/home/croco/桌面/YOLO_SLAM3/YOLO_ORB_SLAM3-master/Examples/ROS
执行运行脚本之后
[rospack] Error: package 'YOLO_ORB_SLAM3' depends on non-existent package 'tf' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'
[rospack] Error: package 'YOLO_ORB_SLAM3' depends on non-existent package 'image_transport' and rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'
/opt/ros/noetic/share/cpp_common/package.xml /opt/ros/noetic/share/rostime/package.xml /opt/ros/noetic/share/roscpp_traits/package.xml /opt/ros/noetic/share/roscpp_serialization/package.xml /opt/ros/noetic/share/catkin/package.xml /opt/ros/noetic/share/genmsg/package.xml /opt/ros/noetic/share/genpy/package.xml /opt/ros/noetic/share/message_runtime/package.xml /opt/ros/noetic/share/gencpp/package.xml /opt/ros/noetic/share/geneus/package.xml /opt/ros/noetic/share/gennodejs/package.xml /opt/ros/noetic/share/genlisp/package.xml /opt/ros/noetic/share/message_generation/package.xml /opt/ros/noetic/share/rosbuild/package.xml /opt/ros/noetic/share/rosconsole/package.xml /opt/ros/noetic/share/std_msgs/package.xml /opt/ros/noetic/share/rosgraph_msgs/package.xml /opt/ros/noetic/share/xmlrpcpp/package.xml /opt/ros/noetic/share/roscpp/package.xml /opt/ros/noetic/share/geometry_msgs/package.xml /opt/ros/noetic/share/sensor_msgs/package.xml /opt/ros/noetic/share/cv_bridge/package.xml
CMake Error at /opt/ros/noetic/share/ros/core/rosbuild/public.cmake:129 (message):
Failed to invoke rospack to get compile flags for package 'YOLO_ORB_SLAM3'.
Look above for errors from rospack itself. Aborting. Please fix the
broken dependency!
Call Stack (most recent call first):
/opt/ros/noetic/share/ros/core/rosbuild/public.cmake:207 (rosbuild_invoke_rospack)
CMakeLists.txt:4 (rosbuild_init)
-- Configuring incomplete, errors occurred!
See also "/home/croco/桌面/YOLO_SLAM3/YOLO_ORB_SLAM3-master/Examples/ROS/YOLO_ORB_SLAM3/build/CMakeFiles/CMakeOutput.log".
make: *** 没有指明目标并且找不到 makefile。 停止。
这个问题就是少了两个包
sudo apt-get update
sudo apt-get install ros-noetic-tf
sudo apt-get install ros-noetic-image-transport
然后在编译就完成了 这个过程大概3分钟左右
分别打开两个终端
roslaunch YOLO_ORB_SLAM3 camera_topic_remap.launch
rosrun YOLO_ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/RealSense_D435i.yaml
但是我们现在没有相机,所以没有画面产生。
我们去下载相关的数据集,使用数据集去跑动,下载地址
Computer Vision Group - Dataset Download
ctrl+f直接搜索找到,点击这个 ROS bag
将这个文件放到yolo-slam3文件夹下
message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_color", 100);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/depth/image", 100);
修改之后重新编译一下代码
./build_ros.sh
在打开三个终端分别执行
roscore
rosrun YOLO_ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml
rosbag play rgbd_dataset_freiburg3_sitting_static.bag
最后成功
三个输出信息
croco@croco-virtual-machine:~/桌面/YOLO_SLAM3/YOLO_ORB_SLAM3-master$ roscore
... logging to /home/croco/.ros/log/1ea927d0-0de6-11f0-8627-7759680f9e2d/roslaunch-croco-virtual-machine-173835.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://croco-virtual-machine:38753/
ros_comm version 1.17.0
SUMMARY
========
PARAMETERS
* /rosdistro: noetic
* /rosversion: 1.17.0
NODES
auto-starting new master
process[master]: started with pid [173850]
ROS_MASTER_URI=http://croco-virtual-machine:11311/
setting /run_id to 1ea927d0-0de6-11f0-8627-7759680f9e2d
process[rosout-1]: started with pid [173867]
started core service [/rosout]
croco@croco-virtual-machine:~/桌面/YOLO_SLAM3/YOLO_ORB_SLAM3-master$ rosrun YOLO_ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml
ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.
Input sensor was set to: RGB-D
Loading settings from Examples/RGB-D/TUM3.yaml
Camera1.k3 optional parameter does not exist...
-Loaded camera 1
Camera.newHeight optional parameter does not exist...
Camera.newWidth optional parameter does not exist...
-Loaded image info
-Loaded RGB-D calibration
-Loaded ORB settings
Viewer.imageViewScale optional parameter does not exist...
-Loaded viewer settings
System.LoadAtlasFromFile optional parameter does not exist...
System.SaveAtlasToFile optional parameter does not exist...
-Loaded Atlas settings
System.thFarPoints optional parameter does not exist...
-Loaded misc parameters
----------------------------------
SLAM settings:
-Camera 1 parameters (Pinhole): [ 535.4 539.2 320.1 247.6 ]
-Camera 1 distortion parameters: [ 0 0 0 0 ]
-Original image size: [ 640 , 480 ]
-Current image size: [ 640 , 480 ]
-Sequence FPS: 30
-RGB-D depth map factor: 5000
-Features per image: 2000
-ORB scale factor: 1.2
-ORB number of scales: 8
-Initial FAST threshold: 20
-Min FAST threshold: 7
Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!
Initialization of Atlas from scratch
Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:
There are 1 cameras in the atlas
Camera 0 is pinhole
Starting the Viewer
First KF:0; Map init KF:0
New Map created with 836 points
Fail to track local map!
Fail to track local map!
Fail to track local map!
LM: Active map reset recieved
LM: Active map reset, waiting...
LM: Reseting current map in Local Mapping...
LM: End reseting Local Mapping...
LM: Reset free the mutex
LM: Active map reset, Done!!!
mnFirstFrameId = 0
mnInitialFrameId = 0
4 Frames set to lost
First KF:1; Map init KF:0
New Map created with 583 points
croco@croco-virtual-machine:~/桌面/YOLO_SLAM3/YOLO_ORB_SLAM3-master$ rosbag play rgbd_dataset_freiburg3_sitting_static.bag
[ INFO] [1743394306.922904367]: Opening rgbd_dataset_freiburg3_sitting_static.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[DELAYED] Bag Time: 1341845688.492168 Duration: 0.000000 / 23.926082 Delay [RUNNING] Bag Time: 1341845688.492168 Duration: 0.000000 / 23.926082 [RUNNING] Bag Time: 1341845688.492168 Duration: 0.000000 / 23.926082 [RUNNING] Bag Time: 1341845688.492688 Duration: 0.000520 / 23.926082 [RUNNING] Bag Time: 1341845688.502611 Duration: 0.010443 / 23.926082 [RUNNING] Bag Time: 1341845688.512538 Duration: 0.020370 / 23.926082 [RUNNING] Bag Time: 1341845688.522476 Duration: 0.030308 / 23.926082 [RUNNING] Bag Time: 1341845688.534292 Duration: 0.042124 / 23.926082 [RUNNING] Bag Time: 1341845688.543022 Duration: 0.050854 / 23.926082
Done.
echo "Building ROS nodes"
cd Examples/ROS/ORB_SLAM3
mkdir build
cd build
cmake .. -DROS_BUILD_TYPE=Release
make -j
我们来执行一下后来运行命令 实时单目效果
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
在编译的过程中遇到这个问题。
自己写代码去跑
以上参考的资料
Ubuntu20.04的ROS环境安装ORB-SLAM3详解_树莓派ubuntu20.04运行orbslam3与ros-CSDN博客
自己标定数据集。