ubuntu18.04 Intel Realsense T265与Realsense D435i 使用教程

2023-05-16

主要包括:

  1. realsense sdk驱动安装与ros包安装编译
  2. D435i与t256相机使用
  3. 多个相机联合使用
    官网链接:
  4. https://github.com/IntelRealSense/realsense-ros
  5. https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

安装Realsense SDK:

注意!!!

1.安装过程不要连接相机
2.不要在虚拟机安装
3.连接相机时使用usb3.0与笔记本连接
主要参考:https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md

1. Make Ubuntu Up-to-date:

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

1. 下载源码

git clone https://github.com/IntelRealSense/librealsense
cd librealsense

网不好时可手动下载master分支压缩包,效果一样。

2. 安装依赖项

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev

3. 准备ubuntu环境

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev

4. 安装Realsense SDK

官网教程通过脚本安装,执行**./scripts/setup_udev_rules.sh**但是我的系统在用这个方法安装时,会一直卡顿没有进程。最终我的安装方式如下,网不好的时候就开热点:

mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install 

5. 测试Realsense SDK

执行命令cd ~/librealsense/build/examples/capture/,进入/librealsense/build/examples/capture目录下,在此位置下打开终端执行./rs-capture或者用realsense-viewer查看相机效果。


安装 ROS Wrapper:

参照https://blog.csdn.net/zxl970921/article/details/114953858会出现ddynamic包找不到情况,具体问题可根据编译提示解决,该博客所需文件已保存到百度云。

1.切换路径

catkin_ws为已存在工作空间

cd catkin_ws/src

2.下载realsense-ros

官网:https://github.com/IntelRealSense/realsense-ros

git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1`
cd ..

3.编译与测试

3.1测试D435i

cd ..
catkin_make

若提示缺少的ddynamic_reconfigure库,下载https://github.com/pal-robotics/ddynamic_reconfigure好以后,把代码放到Catkin工作空间的src文件夹下,catkin_make即可。

最后别忘了source ~/.bashrc更新一下

将相机连接到笔记本的3.0接口,以D435i双目+imu相机为例测试

roslaunch realsense2_camera rs_d435_camera_with_model.launch

查看此时的topic list

rostopic list
/camera/color/camera_info
/camera/color/image_raw
/camera/color/metadata
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/metadata
/camera/extrinsics/depth_to_color
/camera/extrinsics/depth_to_infra1
/camera/extrinsics/depth_to_infra2
/camera/infra1/camera_info
/camera/infra1/image_rect_raw
/camera/infra2/camera_info
/camera/infra2/image_rect_raw
/camera/gyro/imu_info
/camera/gyro/metadata
/camera/gyro/sample
/camera/accel/imu_info
/camera/accel/metadata
/camera/accel/sample
/diagnostics

其中,在launch文件中有一些topic的开关测试可针对性设置为true或者false。

3.2测试t265

roslaunch realsense2_camera rs_t265.launch

查看发布话题,同样的,在launch文件中有一些topic的开关测试可针对性设置为true或者false。

rostopic list
/camera/odom/sample
/camera/accel/sample
/camera/gyro/sample
/camera/fisheye1/image_raw
/camera/fisheye2/image_raw

3.3可视化相机话题

1.可以用rviz选择话题查看,注意fix frame
2.可以指令查看:rqt_image_view选择话题查看


同时使用多个相机:

  1. 同时启动多个相机
    查看相机序列号,或者启动相机时界面会出现序列号。
rs-enumerate-devices | grep Serial
roslaunch realsense2_camera rs_multiple_devices.launch serial_no_camera1:=<serial number of the first camera> serial_no_camera2:=<serial number of the second camera>
roslaunch realsense2_camera rs_multiple_devices.launch serial_no_camera1:=109122071794 serial_no_camera2:=952322110650

或者
开两个终端
roslaunch realsense2_camera rs_camera.launch camera:=cam_1 serial_no:=
roslaunch realsense2_camera rs_camera.launch camera:=cam_2 serial_no:=


其他注意事项:

参考:https://zhaoxuhui.top/blog/2020/09/09/intel-realsense-d435i-installation-and-use.html
(1)IMU信息的融合
前面的Topic List里也看到了,D435i可以输出陀螺仪和加速度计的信息,我们可以分开读取,也可以将/camera/gyro/sample和/camera/accel/sample两个Topic合并到一起,叫做/camera/imu,这样一个Topic里既有陀螺仪的数据也有加速度计的数据。具体方法也很简单,还是修改Launch文件里的配置选项。在rs_camera.launch文件中找到unite_imu_method这个参数,把它的值可以设置为copy或者linear_interpolation,这样再次启动rs_camera节点启动D435i就可以在Topic列表里看到/camera/imu这个Topic了。

(2)深度图对齐问题
D435i可以输出原始的深度图(/camera/depth/image_rect_raw)以及和单目RGB影像对齐的深度图(/camera/aligned_depth_to_color/image_raw),这两个深度图是不一样的。在采集数据的时候尤其需要注意。比如在采集RGBD数据的时候需要的是对齐的深度,如果不小心采成了原始深度,那基本就是不能用的了。如何输出对齐的深度图,也非常简单,修改Launch文件里的配置选项。在rs_camera.launch文件中找到align_depth这个参数,把它的值可以设置为true即可。(设置这个选项之前,记得打开enable_depth,要不然是没有数据的)

(3)D435i的分辨率与帧率
单目相机(RGB影像):分辨率:320×180,320×240,424×240,640×360,640×480,848×480,960×540,1280×720,1920×1080;帧率:6,15,30,60
双目红外相机(灰度影像&深度影像):分辨率:256×144,424×240,480×270,640×360,640×400,640×480,848×100,848×480,1280×720,1280×800;帧率:6,15,25,30,60,90,100,300
IMU(加速度计&陀螺仪):加速度计帧率:63,250;陀螺仪帧率:200,400

(4)数据采集的常规流程
这里简单给出一些D435i数据采集的建议。首先,如果要采RGBD数据,那么一定要记得录对齐后的深度,而非原始输出深度。第二,如果采集场景是较暗或者较小的场景,那么可能会有很多红外斑点出现在双目红外影像中。如果想用双目影像做视觉SLAM,那么一定记得关闭红外发射器。

下面以一个利用D435i进行单目RGB、红外双目、IMU数据采集的过程为例,介绍一般流程与步骤。

首先明确要采集的数据类型、影像的大小、帧率、深度是否对齐等信息,这些都在rs_camera.launch文件的对应参数里设置。

然后,在终端中输入roslaunch realsense2_camera rs_camera.launch启动D435i。启动以后如果需要关闭红外发射器,按照上面提到的第三点进行操作即可。

然后,利用rqt_image_view进行可视化。可以打开多个rqt_image_view节点,分别查看RGB影像、左右红外影像等。

最后,打开终端,输入rosbag record /camera/color/image_raw /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw /camera/imu,这样就开始录制了。录制完成后,按Ctrl+C保存退出即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu18.04 Intel Realsense T265与Realsense D435i 使用教程 的相关文章

  • Intel MSR 每线程频率缩放

    我正在扩展 Linux 内核 以便控制某些线程的频率 当它们被调度到核心 任何核心 时 通过将正确的 p 状态写入寄存器来更改核心的频率IA32 PERF CTL 如英特尔手册中建议的那样 但是 当调度具有不同 自定义 频率的不同线程时 似
  • 汇编指令“Intel 组”类别源自何处?

    在开发 86 DOS 应用程序的分支期间 lDebug https pushbx org ecm web projects ldebug 我遇到了称为 英特尔组 的指令类别 具体来说 组是指与使用相同 1 或 2 个操作码字节的一组指令相关
  • 如何使用 Intel 内在函数检查 CPU 是否支持 AVX 扩展?

    我正在使用英特尔内在函数编写程序 我想用 mm permute pd内在的 仅在具有 AVX 的 CPU 上可用 对于没有 AVX 的 CPU 我可以使用 mm shuffle pd但根据规格 它比 mm permute pd Intel
  • L2 取指未命中率远高于 L1 取指未命中率

    我正在生成一个综合 C 基准测试 旨在通过以下 Python 脚本导致大量指令获取丢失 usr bin env python import tempfile import random import sys if name main fun
  • Sandy-Bridge CPU规格

    我能够将有关 Sandy Bridge E 架构的一些信息整合在一起 但我并不完全确定所有参数 例如L2 缓存的大小 任何人都可以确认它们都是正确的吗 我的主要来源是64 ia 32 架构 优化 手册 pdf http www intel
  • 启用/禁用硬件锁定消除

    我使用的是 glibc 2 24 版本 它包含用于使用事务同步扩展 例如 xbegin 和 xend 实现 pthread mutex lock 的锁省略路径 硬件应该支持锁省略hle我认为CPU标志是为了硬件锁消除 我使用的处理器是采用
  • IB读、IB写、OB读、OB写是什么意思?它们作为 Intel® PCM 的输出,同时监控 PCIe 带宽

    我正在尝试使用英特尔 性能计数器监视器 PCM 工具测量 NIC 设备的 PCIe 带宽 但是 我无法理解它的输出 为了测量 PCIe 带宽 我执行了二进制 pcm iio 该二进制文件有助于测量每个 PCIe 设备的监视器 PCIe 带宽
  • 为什么 Meltdown 和 Spectre 错误这么长时间都没有被发现?

    为什么 Meltdown 和 Spectre 错误这么长时间都没有被发现 近 20 年来 这些错误一直存在于 CPU 中 考虑到对所有使用这些处理器的计算机的严重影响 为什么不尽早发现呢 答案非常简单 现代 CPU 拥有数十亿个晶体管 例如
  • 为什么 Numpy 和 Ryzen Threadripper 比 Xeon 慢这么多?

    我知道 Numpy 可以使用不同的后端 例如 OpenBLAS 或 MKL 我还读到 MKL 针对 Intel 进行了深度优化 所以通常人们建议在 AMD 上使用 OpenBLAS 对吗 我使用以下测试代码 import numpy as
  • 有没有办法判断SMM中断发生了?

    对于某些以编程方式定义的间隔 有没有办法确定SMM https en wikipedia org wiki System Management Mode当前核心上是否发生了条目 从 Nehalem 开始 MSR 寄存器 0x 34 称为MS
  • 在 Skylake 中使用 MSR 正确禁用硬件预取

    我正在尝试禁用我的机器上的硬件预取 CPU系列 6 型号 78 型号名称 Intel R Core TM i5 6200U CPU 2 30GHz 我已经检查过 gcc march native Q help target grep Mar
  • intel core i7 处理器使用哪种缓存映射技术?

    我了解了不同的缓存映射技术 例如直接映射和完全关联或集关联映射 以及这些技术之间的权衡 维基百科 https en wikipedia org wiki Cache placement policies 但我很好奇现在Intel core
  • 如何使用汇编程序从英特尔处理器中获取随机数?

    我需要从处理器 英特尔酷睿 i3 中的英特尔随机生成器获取随机数 我不想使用任何图书馆 我想在 C 中使用汇编程序粘贴 但我不知道应该使用哪些寄存器和指令 呼叫RDRAND支持的 CPU 目前仅 Ivy Bridge 和 Haswell I
  • 写组合缓冲区位于哪里? x86

    Write Combine 缓冲区在物理上是如何连接的 我见过说明许多变体的框图 L1 和内存控制器之间 CPU 的存储缓冲区和内存控制器之间 CPU 的 AGU 和 或存储单元之间 它依赖于微架构吗 写缓冲区在不同的处理器中可以有不同的目
  • x86_64:IMUL 比 2x SHL + 2x ADD 更快吗?

    当查看 Visual Studio 2015U2 生成的程序集时 O2 发布 模式我看到这段 手工优化 的 C 代码被翻译回乘法 int64 t calc int64 t a return a lt lt 6 a lt lt 16 a 集会
  • 混洗两个 __m128i 的 64 位部分的最佳方法

    我有两个 m128is a and b 我想进行洗牌 以便高 64 位a落在低 64 位dst和低 64 位b落在上64dst i e dst 0 63 a 64 127 dst 64 127 b 0 63 相当于 m128i dst mm
  • C#:TurboBoost 激活时如何获取 Intel i 系列 CPU 的当前时钟速度

    我知道有可能获得此信息 Intel 自己的 TurboBoost 侧边栏小工具似乎使用 ActiveX 控件来确定 TurboBoost 处于活动状态时 i3 i5 i7 CPU 的当前时钟速度 但是 我想在 C 中以编程方式执行此操作 从
  • 哪种架构称为非均匀内存访问(NUMA)?

    根据wiki http en wikipedia org wiki Non uniform memory access 非均匀内存访问 NUMA 是一种用于多处理的计算机内存设计 其中内存访问时间取决于相对于处理器的内存位置 但尚不清楚它是
  • 在 x86 Intel VT-X 非根模式下,是否可以在每个指令边界传递中断?

    除了不将中断传送到虚拟处理器的某些正常指定条件 cli if 0 等 之外 客户机中的所有指令实际上都是可中断的吗 也就是说 当传入的硬件中断先传递给 LAPIC 然后传递给处理器时 据说会发生一些内部魔法 将其转换为虚拟中断给来宾 使用虚
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3

随机推荐

  • Error: Could not find the following Boost libraries:boost_serialization

    Boost 1 59 0 CMake 3 7 2 使用CMake编译时出现以下错误 xff1a 无法找到以下库 xff0c 但是编译好的库中是有libboost serialization libboost system等这些文件的 xff
  • ubuntu下make时对XX未定义的引用

    Q1 库对XX未定义的引用 xff0c 如 xff1a Thirdparty vio g2o lib libvio g2o so xff1a 对 39 IMUErrorModel lt ceres Jet lt double 38 gt g
  • Birch算法介绍

    目录 前言 一 Birch算法基本思想 二 聚类特征CF和CF 树 1 聚类特征CF 2 CF tree 3 CF tree 的生成 三 Birch算法流程 1 birch算法的优化 2 算法优缺点 四 算法实验实例 1 研究不指定簇数的情
  • [转]伪代码的写法

    伪代码的写法 xff08 附 xff1a 12种排序算法详解 xff09 转自 xff1a http blog sina com cn s blog 134451adb0102wfgu html 伪代码 xff08 Pseudocode x
  • linux C++调用python3的程序

    环境 xff1a ubuntu1404 python3 4 3 首先安装对应python不同版本的调用库 sudo apt get install python3 4 dev xff0c python脚本基本不用变 xff0c 在C 43
  • Bug 记录

    Bug记录 CocosCreator打包出现 Error xff1a Program type already present android support v4 os ResultReceiver MyResultReceiver 解决
  • I2C通信

    I2 C 芯片间 总线接口连接微控制器和串行 I 2 C 总线 它提供多主机功能 xff0c 控制所有 I 2 C 总线特定的 时序 协议 仲裁和定时 1 xff0c 物理层 1 IIC是一种两线串行的通信方式 xff0c SCL xff0
  • 使用Mybatis-Plus代码生成器的报错解决

    使用Mybatis Plus的同学 xff0c 在使用代码生成器的时候不知道有没有遇到过这个问题 xff1a 21 36 23 829 main DEBUG com baomidou mybatisplus generator AutoGe
  • Debian之安装完成后找不到命令解决办法

    1 修改配置文件 bashrc vim root bashrc export PATH 61 PATH usr sbin 2 使配置文件生效 source root bashrc
  • 相机标定、双目相机标定(原理)、三维重建效果展示

    1 相机标定的目的 xff1a xff08 1 xff09 通过单目相机标定分别求出左右相机的内参数和外参数 xff08 2 xff09 矫正由于镜头畸变造成的图片的变形 xff0c 例如 xff0c 现实中的直线 xff0c 拍摄成图像后
  • mac系统做openstack qcow2/raw镜像

    1 vmware安装出来虚拟机 xff08 操作系统不拆分 xff09 2 zhangjinyudeMacBook Pro Asianux vmwarevm zhangjinyu ls lh total 2820216 rw 1 zhang
  • 使用 Chrome 获取 Cookie 的数据

    Chrome 浏览器自带的开发功能相当强大 xff0c 这里只使用它的抓包功能 一 在浏览器中打开目标网站并登录 xff0c 进入目标页面 二 在 Chrome 浏览器下方的开发工具中单击 Network 标签页 按 F5 键 xff0c
  • 后台开发SQL技术总结

    一 字符串截取 1 substring str pos 用法 从字符串的第 4 个字符位置开始取 xff0c 直到结束 mysql gt select substring 39 example com 39 4 43 43 substrin
  • 论文记录:图像描述技术综述

    文章目录 前言 一 什么是image caption xff1f 二 基于深度学习的图像描述方法 1 基于编码器 解码器的方法 2 基于注意力机制的方法 3 基于生成对抗网络的方法 4 基于强化学习的方法 5 基于密集描述的方法 总结 前言
  • 一个接口有多个实现类

    如果一个接口有多个实现类 xff0c 在Controller层注入后调用 xff0c 怎么知道调用的是接口的哪个方法呢 xff1f 经过一番测试 和查找资料 终于找到了结果 2 0一个接口对应多个实现类 一个接口对应对个实现类 xff0c
  • c/c++使用libcurl库做http客户端及封装(HTTP_GET和HTTP_POST)

    由于项目需求需要发送http post去请求数据 xff0c 所以上网去寻找了一些发送http请求的方法 xff0c 发现libcurl较为常用 xff0c 然后根据官网上的例子 xff0c 对libcurl做了一些简单的封装 xff0c
  • (医学三维重建)MATLAB体绘制算法:多层面重建(MPR)

    xff08 医学三维重建 xff09 MATLAB体绘制算法 xff1a 多层面重建 xff08 MPR xff09 算法原理代码实现测试结果其他 by HPC ZY 算法原理 体绘制中比较特殊的一种 xff0c 因为它的输出是各种切面 就
  • Qt各个类之间继承关系

  • QGC -- 配置相机参数数据流说明(1)

    一 相关配置文件及对应画面 1 界面GeneralSettings qml 2 Video SettingsGroup json对应界面如下 xff1a span class token punctuation span span clas
  • ubuntu18.04 Intel Realsense T265与Realsense D435i 使用教程

    主要包括 xff1a realsense sdk驱动安装与ros包安装编译D435i与t256相机使用多个相机联合使用 官网链接 xff1a https github com IntelRealSense realsense roshttp