博客地址:https://www.cnblogs.com/zylyehuo/
基于ORB-SLAM3库搭建SLAM系统详见之前的博客
基于ORB-SLAM3库搭建SLAM系统 - zylyehuo - 博客园 (cnblogs.com)
(资料图片)
效果图STEP1:将 Examples_old 中的 ROS 文件夹复制到 /home/yehuo/SLAM/ORB_SLAM3-master/Examples/参考链接
ORB-SLAM3 v1.0 编译问题解决
/usr/bin/env: "python\r": 没有那个文件或目录
STEP2:授权+编译打开终端输入指令: vim ~/.bashrc 打开用户根目录下的.bashrc文件
添加ROS功能包路径 export
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/yehuo/SLAM/ORB_SLAM3-master/Examples/ROS
此处路径需要根据每个人放置功能包的位置进行调整,不能直接复制
STEP3:创建 camera.py 文件chmod +x build_ros.sh ##修改Build_ros.sh权限
./build_ros.sh ##安装 orb_slam 中的 ros模块
#!/usr/bin/env python#!coding-utf -8import rospyfrom sensor_msgs.msg import Imageimport cv2from cv_bridge import CvBridgeimport sysdef webcamImagePub(): rospy.init_node("cam_pub",anonymous=True) img_pub = rospy.Publisher("camera/image_raw",Image,queue_size=2) rate = rospy.Rate(20) cap = cv2.VideoCapture(0) scaling_factor = 0.3 bridge = CvBridge() if not cap.isOpened(): sys.stdout.write("zzz") return -1 count = 0 while not rospy.is_shutdown(): ret,frame = cap.read() if ret: count = count + 1 else: rospy.loginfo("xxx") if count == 2: count = 0 msg = bridge.cv2_to_imgmsg(frame) img_pub.publish(msg) print("yyy") rate.sleep()if __name__ == "__main__": try: webcamImagePub() except rospy.ROSInterruptException: pass
STEP4:配置连接电脑摄像头(1)在windows中使用 win + R 快捷键开启运行搜索界面(2)输入services.msc,在服务中找到 VMware USB Arbitration Service,使其处于 ‘正在运行’ 状态(3)在VMware虚拟机->设置选项下,调整USB控制器为兼容USB3.1状态(4)连接电脑摄像头STEP5:运行测试【1】运行 camera.py 文件将camera.py放入 /Examples/ROS/ORB_SLAM3/scripts/ 文件夹下,(scripts文件夹需要自己创建)
打开终端执行 chmod+x camera.py 赋予可执行权限
打开终端
执行 roscore
【2】启动例程打开新的终端
执行 rosrun ORB_SLAM3 camera.py
在以下路径下打开终端
在终端输入以下指令 === 注意修改路径rosrun ORB_SLAM3 Mono /home/yehuo/SLAM/ORB_SLAM3-master/Vocabulary/ORBvoc.txt /home/yehuo/SLAM/ORB_SLAM3-master/Examples/Monocular/TUM1.yaml
问题汇总(1)fatal error:sophus/se3.hpp(2)/usr/bin/env: "python\r": 没有那个文件或目录(3)./build_ros.sh 步骤中报错解决方法,参考以下链接
/usr/bin/env: "python\r": 没有那个文件或目录
解决办法,参考以下链接
ORB-SLAM3 v1.0 编译问题解决