天天看点

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

主要参考该文章

(15条消息) Ubuntu 18.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+SLAM相关库的安装_ZARD帧心的博客-CSDN博客_ubuntu18 ros slam3

自己碰到的坑如下:

1.摄像头驱动相关问题(针对上述文章中的第六步)

1.1虚拟机找不到相关摄像头

通过虚拟机----可移动设备, 查看是否有摄像头或其他USB设备

如果没有,通过win+R,输入“services.msc”,打开服务,观察“VMware USB Arbitration Service”服务状态,是否为“正在运行”,

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

如果没有,需要在程序安装/卸载界面中,修复VMWARE,修复完且重启后,基本上上述服务可以找到,并且处于运行状态;

此时再查看VMWARE中,并在设置中,配置USB 控制器,如下,USB的兼容性选择可以根据自己的情况选择,一般选择最新的

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

经过以上步骤,在虚拟机的可移动设备中,存在相关设备,如图

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

 1.2 usb_cam 编译错误(/home/wt/catkin_ws/devel/lib/libusb_cam.so: undefined reference to `av_packet_from_data')

错误如下

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

 针对该问题,说明找不到相关库,查看~/catkin_ws/src/usb_cam/下的CMakeLists.txt,发现所依赖的库分别是avcodec_LINK_LIBRARIES,avutil_LINK_LIBRARIES,swscale_LINK_LIBRARIES, 通过echo ${avcodec_LINK_LIBRARIES},发现均找不到相关路径,

然后我们需要设置这些路径,分别用“locate libavcodec” ,“locate libavutil”,"locate libswscale",查找着几个库的路径,然后在CMakeLists.txt 中加入以下几行(路径需要改为你自己的电脑locate出来的路径),这样就可以编译通过了

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

 2.编译ORB_SLAM2 ROS所碰到的问题(针对上述文章的7.2)

类似如下这种,这种情况下,一般是在多个地方进行了多次编译。

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

解决方法

先把多个地方的ORB-SLAM里的build文件夹删除。

然后重新设置环境变量,在bashrc或其他一些文件中加入环境变量

如在bashrc中加入以下代码,并保存

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:path_to_project/catkin_ws/src/ORB_SLAM2/Examples/ROS
           

然后用以下指令,查看是否生效

echo $ROS_PACKAGE_PATH
           

如果和上面的路径不一致,那说明ROS_PACKAGE_PATH可能被篡改。第125和126行,是之前在其他路径(~/catkin_ws/src)尝试编译ORB_SLAM时配置的环境变量,这两行代码会篡改ROS_PACKAGE_PATH的值,由于我现在在122行的路径编译,所以需要把125,126行给注释掉。

Ubuntu 18.04配置ORB-SLAM2+ROS实时运行ORB-SLAM2+SLAM相关库的安装 相关问题汇总(USB_CAM , ROS 编译问题)

继续阅读