Advertisement

从零开始跑ORB_SLAM2(二) 配置ROS Kinetic环境并测试Realsense D435相机

阅读量:

前期准备

从零开始跑ORB_SLAM2(零) 安装Ubuntu16.04 LTS
从零开始跑ORB_SLAM2(一) 前期准备与环境配置

配置ROS环境

首先也是最重要的:遇到问题请查阅ROS官网资料,这是最靠谱的教程。

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。
它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。
ROS遵循BSD开源许可协议。

注意,Ubuntu16.04只能安装ROS Kinetic版本
注意这里,Ubuntu16.04只能安装ROS Kinetic版本。

设置

点击设置进入软件与更新:
在这里插入图片描述

将图中所有选项打上勾,并更换国内的镜像源,我用的是清华的,你也可以更换成阿里云的。
更换后点击关闭,会reload一下,需要一点时间,视你网速快慢。
在这里插入图片描述

所有的sudo apt-get xxx命令均可以替换成前述的aptitude

Ctrl + Alt + T 新建一个命令行:
设置计算机以接受ROS安装包中的软件:

复制代码
    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

设置秘钥:

复制代码
    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

如果连接到keyserver时遇到问题,可以尝试在前面的命令中将hkp://keyserver.ubuntu.com:80替换为hkp://pgp.mit.edu:80hkp://keyserver.ubuntu.com:80
或者,如果你在代理服务器下,可以使用curl而不是apt key命令:

复制代码
    curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -

前期准备搞定后当然是要更新一下:

复制代码
    sudo apt-get update
    sudo apt-get upgrade
安装

安装ROS的库有四种版本,看需要自行挑选,但我推荐第一种。
完整版。包含ROS、RQT、rviz、机器人通用函数库、2D/3D 模拟、导航和 2D/3D 感知:

复制代码
    sudo apt-get install ros-kinetic-desktop-full

普通版。包含ROS、RQT、rviz、机器人通用函数库:

复制代码
    sudo apt-get install ros-kinetic-desktop

基础版。包含ROS核心软件包、构建工具以及通信相关的程序库,无GUI工具:

复制代码
    sudo apt-get install ros-kinetic-ros-base

单个软件包安装。使用软件包名称替换掉下面的PACKAGE:

复制代码
    apt-cache search ros-kinetic		# 查找包目录
    sudo apt-get install ros-kinetic-PACKAGE
初始化

为了为要编译的源安装系统依赖项,在使用ros之前,需要初始化rosdep:

复制代码
    sudo rosdep init
    rosdep update
环境变量配置

为了每次启动一个新的命令行时,ros环境变量都会自动添加到bash会话中,你也可以直接在gedit或者vim中修改:

复制代码
    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc

记住source ~/.bashrc,不管什么时候修改了bashrc文件后都要用这条命令及时更新一下。

安装构建ROS需要的依赖项

到目前为止,您已经安装了运行核心ros包所需的程序。
要创建和管理您自己的ros工作区,有各种工具和需求是分开分发的。
例如,rosinstall是一个经常使用的命令行工具,它允许您使用一个命令轻松下载ros包的许多源。

复制代码
    sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
测试安装是否成功

Ctrl + Alt + T 新建一个命令行:

复制代码
    roscore

正确结果如下:
在这里插入图片描述
Ctrl + Alt + T 新建一个命令行:

复制代码
    rosrun turtlesim turtlesim_node

正确结果如下:
在这里插入图片描述

Ctrl + Alt + T 新建一个命令行:

复制代码
    rosrun turtlesim turtle_teleop_key

正确结果如下:你可以用方向键控制小乌龟的运动。
在这里插入图片描述
对这只小乌龟的资料如果更加感兴趣的可移步这里

如果能做到这一步,那么ROS Kinenit就配置完成了。

---------散装分割线----------

测试Intel-Realsense D435相机

从这里笔者就开始踩无数的坑了,"点亮第一个LED"耗费了我大量的时间,在此把主要步骤和遇到的问题都描述一下。

前期准备

首先检查你的Linux内核版本,Ctrl + Alt + T 新建一个命令行:

复制代码
    uname -r

D435只能在4.4.x/4.8.x/4.10.x/4.13.x/4.15.x版本下运行,一般来说按照我前面的链接来走,安装的Ubuntu都是4.15.x,如果不对请自行升级更换。

在安装之前要做的肯定是更新一下源:
Ctrl + Alt + T 新建一个命令行:

复制代码
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade

你的cmake需要3.6版本及以上,如果版本过低,请移步cmake官网下载你需要的版本并编译安装,步骤可无脑参考其余教程。

安装SDK相机驱动

国际惯例先贴上用命令行直接安装的参考链接,我不知道能不能成功(反正我是失败了 )
GitHub官网资料
这个链接只看前半部分即可
从零开始使用Realsense D435i运行VINS-Mono

好了我们回到正题。
进入Realsense SDK官网:
https://github.com/IntelRealSense/librealsense
注意:在这里选择2.25版本的SDK,不然后面会遇到一堆问题,笔者被这个安装版本坑惨了 。所以这一步我不建议用git clone指令来把代码克隆到本地仓库,直接选择对应版本download到本地就行了,然后提取到主目录下。
在这里插入图片描述
在这里插入图片描述

Ctrl + Alt + T 新建一个命令行:
安装一些依赖:

复制代码
    sudo apt-get install libusb-1.0-0-dev pkg-config
    sudo apt-get install libudev-dev pkg-config libgtk-3-dev
    sudo apt-get install libglfw3-dev

下一步还是老一套,编译安装这个SDK:

复制代码
    cd librealsense
    mkdir build
    cd build
    cmake ../ -DBUILD_EXAMPLES=true
    make -j4
    sudo make install

一般来说到这一步还是比较轻松的。用cd指令进入librealsense目录下,接下来安装Video4Linux,确保所有USB接口没有插上Realsense相机:

复制代码
    sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
    sudo udevadm control --reload-rules && udevadm trigger

安装完毕后编译配置文件。这一步不同版本的SDK有很多个,我见过的有以下乱七八糟的文件:

patch-realsense-ubuntu-xenial-joule.sh
patch-realsense-ubuntu-lts.sh
patch-realsense-ubuntu-xenial.sh
patch-ubuntu-kernel-4.16.sh

你可以进入/home/librealsense-2.25.0/scripts中查看你的版本对应的配置文件是哪一种。在2.25版本下有三个(如下列出),你可以分别运行一次,哪个成功就用哪个。一般来说,这个编译过程会非常非常漫长,而且如果过程中出现让你频繁选择Yes/No的情况,这个文件多半是不对的。
cd到librealsense-2.25.0下:

复制代码
    ./scripts/patch-realsense-ubuntu-lts.sh
    # 或者
    ./scripts/patch-realsense-ubuntu-xenial-joule.sh
    # 或者
    ./scriptspatch-ubuntu-kernel-4.16.sh
    # 印象中我好像是编译了第一个成功的...

这一步会下载一些很大的文件,而且网速普遍只有5k/s左右,过程很缓慢,如此最好是晾它在一旁然后来一局紧张刺激的三国杀 耐心等待。如果你选择的是正确的文件,整个编译过程就不会让你选择太多的Yes/No,最后相当多步骤都是它自行完成的。
这一步如果顺利完成,SDK驱动就安装完毕了。

测试相机是否能启动

插上D435相机,注意必须是USB3.1的接口(接口是蓝色的,很好确认)。
命令行查询接入设备的名称:

复制代码
    sudo dmesg | tail -n 50

如果显示如下信息则表示已经检测到相机。
在这里插入图片描述在任意目录下命令行输入:

复制代码
    realsense-viewer

启动界面如下,注意版本号是否与你的SDK版本一致(v2.25.0)
在这里插入图片描述
将实时图像与RGB通道打开,即可看见图像。
附上笔者狗头一张。
在这里插入图片描述如果可以走到这一步,相机SDK驱动就安装成功了。

一个并不常见的BUG

按道理来说只要是循着官方教程或者大神们写的博客,一步一步下来安装这个驱动是没有什么问题的。但我仍然在最后一步realsense-viewer时启动不了相机(回传不了任何图像,界面报错)。当时整个几乎被我翻遍也没有见到有人遇到这样的问题,最后终于在一位大佬的博客下发现他提到了这个问题。

仍然回传不了图像?firmware版本的问题
sudo apt-get install dfu问题?

首先需要贴上一份拯救我于水火之中的官方文件:
Intel® RealSense™ D400 SERIES DEVICE FRIMWARE UPDATE(DFU) for Linux
只需要仔细啃这篇文档中"DFU Tool Install/Usage"部分就可以解决无法回传图像的问题。不过我还是写一下它在说什么。

确保摄像头已经连接到电脑:

Ctrl + Alt + T 新建一个命令行:

复制代码
    sudo apt-get install intel-realsense-dfu
    sudo apt-get install dfu

部分人会出现这个报错(也包括我…)
在这里插入图片描述
解决办法如下:
将Intel的服务器添加到存储库列表:

复制代码
    echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenialmain' | sudotee /etc/apt/sources.list.d/realsense-public.list

注册服务器公钥:

复制代码
    sudoapt-key adv--keyserverkeys.gnupg.net --recv-key 6F3EFCDE

更新一下镜像源:

复制代码
    sudo apt-get update

此时再安装DFU包

复制代码
    sudo apt-get install intel-realsense-dfu*

安装完毕后点击这个链接下载英特尔®RealSense™D400相机系列的最新固件,可以看见它也支持D435。
这只是个图片
下载位置如下:
在这里插入图片描述

下载后解压,提取到任意目录,我们只是要里面的bin文件而已。

在命令行中输入:

复制代码
    lsusb

查询USB设备接入信息。记住Intel Crop对应的总线和设备号;DFU工具使用这些值来识别英特尔®RealSund®D400系列相机。(有两个Intel Crop,自行尝试一下是哪个,如果你发现插拔相机后都能看见同一个Intel Crop,那么大概率真正的Intel Crop是另一个。)
在这里插入图片描述

强制更新固件:

复制代码
    intel-realsense-dfu -b 002 -d 002 -f -i /home/intel/downloads/Signed_Image_UVC_5_9_2_0.bin

这只是实例路径,请把-b -d后面的数字分别替换成你自己对应的总线bus和设备号device,并且将Signed_Image_UVC_5_9_2_0.bin路径版本号自行改写。如果路径和版本号正确,则会显示:
在这里插入图片描述此时再输入指令:

复制代码
    realsense-viewer

如无差错则可以回传图像。

如此,配置ROS Kinetic环境并测试Realsense D435相机的工作就完成了。接下来可以愉快地 SLAM了。

等有空继续补坑:

(三)ORB_SLAM2稀疏点阵的实现

(四)ORB_SLAM2点云地图的实现(待实现)

(五)Vins-Mono 港科大开源方案的实现(待实现)

全部评论 (0)

还没有任何评论哟~