之前笔记本装的win10加ubuntu18.04双系统,然而ubuntu自动升级到了20.04,而我之前在18.04配置的ORB_SLAM2使用的是opencv3.4.10,20.04下安装ROS只能装ROS noetic,但是ROS noetic只兼容opencv4.2,而如果升级opencv那orbslam2又要针对opencv4.2修改才能编译通过,ubuntu20.04修改ORB_SLAM2。想了想为了怕以后还有更多的麻烦 而且18.04网上的资料也更多,于是重装了18.04
这中间又遇到一个坑,我的ubuntu升级导致我的win10在开机时检测到系统变化自动开启bitlock加密系统盘,于是需要恢复密钥才能开机,回复密钥可以从第一次使用电脑时登录电脑使用的微软帐号获得如何获取恢复密钥,但是我的注册微软账户的邮箱已经失效,而微软账户在访问安全信息时需要用邮箱接收验证码,当然微软账户可以绑定备用邮箱或者手机号,但是绑定生效需要一个月 ,也就是说我1个月内获取不了恢复密钥(吐槽一下微软:我的微软账户可以通过验证邮箱使用信息来修改密码,而且修改密码是即时生效,而绑定备用邮箱或者手机号却没有这个方式渠道。理论上密码不应该远比备用邮箱或手机号重要吗?)
于是正好全盘格式化 重装Ubuntu
不要装搜狗输入法!!!搜狗输入法和clion pycharm等软件有冲突,装过搜狗之后非sudo启动clion时会卡在user Agreement界面卡死。解决办法卸载搜狗 安装百度输入法
记得关掉系统自动更新
换国内镜像源
首先AligneBit=0x80的warning是由于eigen3版本太高导致,可以无视
其次编译错误有 ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000);
解决办法是 在source文件的开头增加include #include
运行实例可以参考Mingrui大神,可以跟着他的博客入门
主要参考博文,官方教程其中
sudo apt-get install ros-melodic-rqt*
这一步我没装,不影响小乌龟和后面ORB_SLAM2的build_ros.sh的编译
国内源用的是清华的,还有就是密钥不知道有啥用
1. 下载安装博世的驱动
$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/usb_cam.git
$ cd usb_cam
$ mkdir build
$ cd build
$ cmake ..
$ make
查看usb_cam设备命令是:ls /dev/video*
2. 构建ROS工作空间的代码
cd ~/catkin_ws
catkin_make
执行完之后会在catkin_ws目录下出现devel目录和build目录
build文件夹是cmake和make指令执行的地方
devel文件夹用来保存生成文件、目标的地方及用于安装的setup.*sh
3. 修改代码中订阅的topic
在第一步中我们安装完驱动之后通过roslaunch命令可以publish /usb_camera/image_raw
所以在/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src 中修改ros_mono.cc
把ros::Subscriber sub = nodeHandler.subscribe(“/camera/image_raw”, 1, &ImageGrabber::GrabImage,&igb);
中的/camera修改为/usb_cam
然后重新编译./build_ros.sh
4.启动
打开三个终端分别执行三条命令
roscore #启动ROS
roslaunch usb_cam usb_cam-test.launch #调用摄像头
cd ~/catkin_ws/src/ORB_SLAM2 && rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml
这里的yaml中的摄像头参数可以通过标定修改,本文中只是运行看看效果,所以直接用的原文件。
1. 要先装sudo apt-get install python-rosdep再执行
sudo rosdep init
rosdep update
2. rosdep init出错 rosdep init ERROR: cannot download default sources list from
解决办法
3. 编译build_ros.sh出错ROS fatal error: Eigen/Core: No such file or directory
原因是eigen库路径不对 解决办法
4. 编译build_ros.sh出错:DSO missing from command line
解决办法
5. 在运行roslaunch时出现了类似下面的错误:RLException: XXX is neither a launch file in package XXX nor is XXX a launch file name
source catkin_ws/devel/setup.bash
网上一般说的解决办法都是这样,但是实际如果直接运行该命令会导致之前设置的环境变量ROS_PACKAGE_PATH失效,所以我是在.zshrc中添加
source /home/jerry/catkin_ws/devel/setup.zsh
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/jerry/catkin_ws/src/ORB_SLAM2/Examples/ROS
在export ROS_PACKAGE_PATH之前添加source setup.zsh(根据自己使用的shell觉得用setup.zsh还是setup.bash)
安装这种软件一定要敢于参考官方教程,不要畏惧英文。