非ROS下运行YOLO_ORB_SLAM3请看上篇博客,且上篇博客中有环境配置,下面是链接:
运行前一定要看一下上面那篇博客,这是续写~~~~~~~(直接按照这篇会缺少条件运行不出来)
1.终端执行以下命令:
gedit ~/.bashrc
会出现一个文件,将下面这行代码粘贴到最下面
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/YOLO_ORB_SLAM3/Examples/ROS
这步是设置 ROS_PACKAGE_PATH
环境变量,虽然我执行了但是还出错了,错误解决方法在下面
PATH要更换一下,PATH指的是你YOLO_ORB_SLAM3的路径。
例如:/home/xxxxxx/YOLO_ORB_SLAM3/Examples/ROS
执行代码source一下
2. Build
在YOLO_ORB_SLAM3文件下进入终端,执行以下命令。
chmod +x build_ros.sh
./build_ros.sh
我在./build_ros.sh这步报错
错误:
我查看错误指出 rospack
找到了名为 "YOLO_ORB_SLAM3" 的包,但是它的位置与当前目录不一致。这通常意味着 ROS 包的路径设置有误,导致 CMake 无法正确找到或构建包。
解决办法:
当时我担心是因为我系统中同时安装了ROS和Anaconda,导致我的python版本冲突,我按照网上教程先在终端下运行:
conda install -c conda-forge empy
然后接着检查 ROS_PACKAGE_PATH,运行下面代码:
echo $ROS_PACKAGE_PATH
当时我的路径是:/opt/ros/noetic/share
ROS_PACKAGE_PATH
目前只包含了 /opt/ros/noetic/share
,这是 ROS Noetic 安装的默认路径。我的包路径/home/xuxuening/YOLO_ORB_SLAM3/Examples/ROS/YOLO_ORB_SLAM3
并不在其中,这就是为什么 CMake 找不到你的包的原因。
运行下面两行代码,将包路径添加到ROS_PACKAGE_PATH。
echo 'export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:PATH/YOLO_ORB_SLAM3/Examples/ROS/YOLO_ORB_SLAM3' >> ~/.bashrc
source ~/.bashrc
然后接着在运行下面这行代码,查看路径:
echo $ROS_PACKAGE_PATH
这时候我的包路径已经添加进去了,如图所示。
再次编译,编译通过。
如果报错原因是无法找到依赖包,这种需要手动指定路径。
以上是我在运行的时候出现的一些错误,以及我的解决办法,如果其他小伙伴出现其他的办法,可以多参考参考其他博主的解决办法。
3.下载ROS Bag
下载链接:
我下载的是rgbd_dataset_freiburg3_walking_xyz。将下载好的ROS Bag放在YOLO_ORB_SLAM3文件下面。
4.运行
这部分参考了这篇文章:YOLO_ORB_SLAM3编译运行-CSDN博客
先修改代码,这部分我还是参考的这篇文章:YOLO_ORB_SLAM3编译运行-CSDN博客
修改YOLO_ORB_SLAM3/Examples/ROS/YOLO_ORB_SLAM3/src下的ros_rgbd.cc里面的代码,修改66行67行为,保存并关闭。
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);
如图所示:
在YOLO_ORB_SLAM3文件下打开终端,重新编译:
./build_ros.sh
编译通过后,在YOLO_ORB_SLAM3下重新打开三个终端,分别执行以下命令。
roscore
rosrun YOLO_ORB_SLAM3 RGBD Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml
rosbag play rgbd_dataset_freiburg3_walking_xyz.bag
成功运行出来~~~~~~~