Realsense D455 调试

1 Realsense


 

D455 配置:

  • RGB:彩色相机,FOV(h,v)( 90*65 )
  • 红外点阵发射:位于上图中RGB右边,发射特定模式的红外光,通常是一种点阵图案,这有助于红外摄像头捕捉和计算物体的深度信息
  • Right 和 Left:双目红外相机,FOV(h,v)( 87 *58 ),可接受普通光源和红外光源,基线9.5cm
    可输出:1 深度图 %2@4M; 2 双目灰度图3 彩色单目Left (ps:不同于RGB相机,这个是IR相机的彩色)
  • IMU:BMI055

2 安装

以下是基于Ubuntu20.04系统安装realsense-ros的一般步骤

2.1 前置

  • 安装ROS:您需要在您的计算机上安装ROS。假设您使用的是ROS Noetic版本,您可以按照ROS官方安装指南进行安装。

  • 安装RealSense SDK 2.0:在安装realsense-ros之前,您需要安装Intel RealSense SDK 2.0。您可以通过以下命令来安装它:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
    sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
    sudo apt-get install librealsense2-dkms -y
    sudo apt-get install librealsense2-utils -y
    sudo apt-get install librealsense2-dev -y
    sudo apt-get install librealsense2-dbg -y 
    # version后面出现realsense表示更新成功。
    modinfo uvcvideo | grep "version:"
    
  • 使用sdk:

       插入D455相机,需要USB3.0及以上接口。使用命令启动:
           realsense-viewer
       用来列出系统上连接的所有RealSense设备和它们的属性,使用命令:
           rs-enumerate-devices

2.2 realsense-ros

  1. 设置ROS工作空间(如果您还没有):

    mkdir -p ~/catkin_ws/src

  2. 克隆realsense-ros仓库:

    cd ~/catkin_ws/src
    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`

  3. 编译工作空间:

    catkin_make

  4. 环境配置:

    source ~/catkin_ws/devel/setup.bash

  5. 安装完成后,您可以通过运行示例节点来测试安装是否成功::

    roslaunch realsense2_camera rs_camera.launch

  6. 编译realsense-ros时遇到了一个错误,提示找不到ddynamic_reconfigure这个ROS包。这个包是必需的,因为realsense-ros需要它来动态调整参数。
    下面是解决这个问题的步骤:
    sudo apt-get update sudo apt-get install ros-noetic-ddynamic-reconfigure

3 使用

3.1 获取标定外参

需要 source devel/setup.bash;

3.1.1 Left IR camera (深度图)到 RGB camera

rostopic echo /camera/extrinsics/depth_to_color

这条命令会输出深度摄像头到彩色摄像头的转换矩阵,包括旋转矩阵和平移向量。旋转矩阵接近单位阵,平移向量大概距离6cm。

​​​​​​​header: 
    seq: 0 
    stamp: 
        secs: 0 
        nsecs: 0 
    frame_id: "depth_to_color_extrinsics" 
    rotation: 
        [0.9999966025352478, 0.0024309128057211637, -0.000930685258936137,                                 
         -0.0024320671800523996, 0.9999962449073792, -0.001241242396645248,    
         0.0009276643977500498, 0.0012435016687959433, 0.9999988079071045]                
    translation: 
        [-0.05915042757987976, -0.0002094241644954309, 0.0002801527443807572]

3.1.2 Left IR camera 即为 depth camera

rostopic echo /camera/extrinsics/depth_to_infra1

旋转矩阵为单位阵,平移向量为0

header: 
  seq: 0
  stamp: 
    secs: 0
    nsecs:         0
  frame_id: "depth_to_infra1_extrinsics"
rotation: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
translation: [0.0, 0.0, 0.0]

3.1.3 Left IR camera 到 Right IR camera

rostopic echo /camera/extrinsics/depth_to_infra2

旋转矩阵为单位阵,平移向量为右侧9.5cm

header: 
  seq: 0
  stamp: 
    secs: 0
    nsecs:         0
  frame_id: "depth_to_infra2_extrinsics"
rotation: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
translation: [-0.09505465626716614, 0.0, 0.0]

3.2 使用RealSense ROS获取数据

3.2.1 使用默认配置

roslaunch realsense2_camera rs_camera.launch

启动后查看topic:

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/motion_module/parameter_descriptions 和 /camera/motion_module/parameter_updates: 有关运动模块参数的描述和更新。
/camera/rgb_camera/auto_exposure_roi/parameter_descriptions 和 /camera/rgb_camera/auto_exposure_roi/parameter_updates: 彩色摄像头自动曝光区域的参数描述和更新。
/camera/stereo_module/auto_exposure_roi/parameter_descriptions 和 /camera/stereo_module/auto_exposure_roi/parameter_updates: 立体摄像模块的自动曝光区域参数描述和更新。

系统和诊断话题

/diagnostics: 发布系统的诊断信息,可以用于监控设备状态和性能。
/rosout 和 /rosout_agg: ROS系统日志输出,用于调试和日志记录。
/tf 和 /tf_static: 发布时间和空间中的坐标变换信息,/tf用于动态变换,而/tf_static用于几乎不变的变换。

3.2.2 启用原始双目IR图片

默认配置只开启了深度图模式,没有发送双目IR图片。

两个IR相机共有三种模式:1 深度图(默认打开);2双目灰度IR;3单左目彩色IR(不是那个彩色相机)

模式2和模式3不能同时,只能选择一种,模式1可以在打开模式2或3时同时开启。

编辑 realsense-ros/realsense2_camera/launch/rs_camera.launch:

配置模式2
  <arg name="enable_infra"        default="false"/>
  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>
  <arg name="infra_rgb"           default="false"/>

配置模式3
  <arg name="enable_infra"        default="true"/>
  <arg name="enable_infra1"       default="false"/>
  <arg name="enable_infra2"       default="false"/>
  <arg name="infra_rgb"           default="true"/>

​​​​​​​3.2.3  lauch文件中所有可配置参数

基础参数

  • serial_no: 指定连接设备的序列号。
  • usb_port_id: 指定设备连接的USB端口ID。
  • device_type: 指定设备类型,如D455。
  • json_file_path: 指定一个JSON配置文件的路径,该文件包含用于设备的预设配置。
  • camera: 指定摄像头的命名前缀。
  • tf_prefix: 指定发布到tf中的坐标系前缀。
  • external_manager: 如果设置为true,使用外部的节点管理器。
  • manager: 指定节点管理器的名称。
  • output: 指定日志输出方式。
  • respawn: 如果节点终止,是否自动重启节点。

图像数据流参数

  • fisheye_width/height: 指定鱼眼摄像头的图像宽度和高度。
  • enable_fisheye: 是否启用鱼眼摄像头。
  • depth_width/height: 指定深度摄像头的图像宽度和高度。
  • enable_depth: 是否启用深度摄像头。
  • confidence_width/height: 指定置信图像的宽度和高度。
  • enable_confidence: 是否启用置信度图像。
  • confidence_fps: 置信图像的帧率。
  • infra_width/height: 指定红外摄像头的图像宽度和高度。
  • enable_infra, enable_infra1, enable_infra2: 是否启用红外摄像头。
  • infra_rgb: 是否将红外图像与RGB图像同步。
  • color_width/height: 指定彩色摄像头的图像宽度和高度。
  • enable_color: 是否启用彩色摄像头。

性能参数

  • fisheye_fps, depth_fps, infra_fps, color_fps: 对应各摄像头的帧率。
  • gyro_fps, accel_fps: 陀螺仪和加速度计的帧率。
  • enable_gyro, enable_accel: 是否启用陀螺仪和加速度计。

点云和同步参数

  • enable_pointcloud: 是否生成点云数据。
  • pointcloud_texture_stream: 点云的纹理来源。
  • pointcloud_texture_index: 使用的纹理流的索引。
  • allow_no_texture_points: 是否允许无纹理点。
  • ordered_pc: 是否生成有序点云。
  • enable_sync: 是否启用传感器数据同步。
  • align_depth: 是否将深度数据与其他数据流对齐。

转换和滤镜参数

  • publish_tf: 是否发布TF转换。
  • tf_publish_rate: TF发布的频率。
  • filters: 应用于图像数据的滤波器。
  • clip_distance: 裁剪距离,用于过滤远距离的点。
  • linear_accel_cov: 线性加速度的协方差。
  • initial_reset: 启动时是否重置设备。
  • reconnect_timeout: 重连超时时间。
  • wait_for_device_timeout: 等待设备连接的超时时间。
  • unite_imu_method: IMU数据的合并方法。
  • topic_odom_in: 接收里程计信息的话题。
  • calib_odom_file: 里程计校准文件的路径。
  • publish_odom_tf: 是否发布里程计的TF数据。

曝光和增益参数

  • stereo_module/exposure/1, stereo_module/gain/1: 第一个红外摄像头的曝光和增益设置。
  • stereo_module/exposure/2, stereo_module/gain/2: 第二个红外摄像头的曝光和增益设置。

3.2.4  URDF 坐标系可视化

roslaunch realsense2_description view_d455_model.launch

在 RViz 中查看 Intel RealSense D455 模型。这个启动文件一般包含在 realsense2_description 包中,该包用于存储和展示 RealSense 设备的 URDF(统一机器人描述格式)模型。

为什么urdf中会有camera_infra2_optical_frame与camera_infra2_frame 这两种形式的坐标系?

在 URDF (统一机器人描述格式) 中,包含 camera_infra2_optical_framecamera_infra2_frame 这两种形式的坐标系的原因主要与ROS的坐标系规范和特定的应用需求有关。每种坐标系都有其特定的用途,理解它们的区别对于进行精确的空间计算和数据整合非常重要。ROS坐标系范:

  1. 通用坐标系(例如 camera_infra2_frame):

    • 这通常是相对于摄像头硬件本身的坐标系。在这个坐标系中,原点通常位于摄像头的物理中心或某个固定的参考点,坐标轴与摄像头的默认方向对齐。
    • camera_infra2_frame 可能会用于表示摄像头硬件的位置和方向相对于其他硬件组件(如机器人本体)的情况。
  2. 光学坐标系(例如 camera_infra2_optical_frame):

    • 光学坐标系遵循一个特殊的ROS规范,其中 z 轴正对着前方,x 轴向右,y 轴向下。这种布局是基于图像坐标系的常见布局,使得z轴正对图像平面。
    • camera_infra2_optical_frame 用于处理图像数据时更为方便,因为它使得摄像头捕获的图像直接对应于其坐标系的方向,这对于图像处理和计算机视觉应用尤为重要。

应用场景

  • 数据转换:在ROS中,不同的节点和工具可能需要使用不同的坐标系来处理数据。例如,一个节点可能使用通用坐标系来计算摄像头的物理位置,而另一个节点则使用光学坐标系来处理图像数据和执行视觉识别任务。
  • 模块化和灵活性:提供两种坐标系允许开发者根据需要选择最适合其应用的坐标系,而无需在中间进行复杂的坐标转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/553044.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React + 项目(从基础到实战) -- 第八期

ajax 请求的搭建 引入mockAP接口设计AJAX 通讯 前置知识 HTTP 协议 , 前后端通讯的桥梁API : XMLHttpRequest 和 fetch常用工具axios mock 引入 Mock.js (mockjs.com) 使用 mockJS 前端代码中引入 mockJs定义要模拟的路由 , 返回结果mockJs 劫持ajax请求(返回模拟的结果)…

记一次kafkakerberos认证问题

1&#xff0c;报错信息 排查思路&#xff1a;检查kerberos配置文件 kerberos.kafka.principalkafka/huawe_baseSECURITY.COM kerberos.kafka.keytabPath/etc/huawe_base.keytab kerberos.kafka.krb5ConfPath/etc/krb5.conf但是查看kafka_client_jass.conf文件&#xff0c;发现…

LoRA模型是什么?

AI Agent能力评测工具AgentBench评测结果 LoRA模型是什么&#xff1f; LoRA模型&#xff08;Low-Rank Adaptation of Large Language Models&#xff09;是一种针对大型语言模型&#xff08;LLMs&#xff09;的微调技术&#xff0c;其目的是在保持模型原有性能的基础上&#x…

数据库服务的运行与登录

打开数据库服务 数据库服务: SQL Server(MSSQLServer) 运行在服务器端的应用程序, 提供数据的存储 / 处理和事务等在使用DBMS的客户端之前必须首先打开该服务 客户端连接到服务器 关于客户端 / 服务器端的说明 客户端 : 数据库管理系统(DBMS), 应用程序服务器端 : 安装的数据…

深澜计费管理系统 /demo/proxy存在任意文件读取漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 深澜计费管理系统是一款用于网络设备计费管理的软件…

nginx部署上线

1. windows配置nginx 打包命令 npm run build:prod 1. 安装 nginx mac windows 2. mac / windows 环境下ngnix部署启动项目 2. nginx 解决 history 的 404 问题 3. nginx配置代理解决生产环境跨域问题

元宇宙-虚拟世界的安全风险如何应对

元宇宙&#xff08;Metaverse&#xff09;是一个虚拟时空间的集合&#xff0c;由一系列的增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和互联网&#xff08;Internet&#xff09;所组成。这个虚拟时空间是一个持续存在的、由众多虚拟世界互相连接而…

链表OJ - 5(合并两个有序链表)

题目描述&#xff08;来源&#xff09; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路 需创建一个头结点&#xff0c;然后从两个链表的表头开始依次比较传入的两个链表的结点的大小&#xff0c;并将两个链表中较小的…

Linux LVM 逻辑卷管理

Logical Volume Manager&#xff0c;逻辑卷管理 能够在保持现有数据不变的情况下动态调整磁盘容量&#xff0c;从而提高磁盘管理的灵活性/boot分区用于存放引导文件&#xff0c;不能基于LVM创建 三大概念&#xff1a; 物理卷PV基于硬盘或分区设备创建而来&#xff0c;生成N多…

自媒体博客Spimes主题 X7.1 简约新闻自媒体类的 typecho 主题源码

spimes主题专为博客、自媒体、资讯类的网站设计开发&#xff0c;自适应兼容手机、平板设备。一款简约新闻自媒体类的 typecho 主题&#xff0c;设计上简约、干净、精致、响应式&#xff0c;后台设置更是强大而且实用的新闻自媒体类主题。 PS&#xff1a;5.0版本改动比较多&…

Golang插件系统实现

插件可以在解耦的基础上灵活扩展应用功能&#xff0c;本文介绍了如何基于Golang标准库实现插件功能&#xff0c;帮助我们构建更灵活可扩展的应用。原文: Plugins with Go 什么是插件 简单来说&#xff0c;插件就是可以被其他软件加载的软件&#xff0c;通常用于扩展应用程序的功…

数据库的特点

前面讲了&#xff0c;数据库是有组织的&#xff0c;规范的把数据保存起来的。 怎么个组织的&#xff0c;规范的&#xff1f; 数据库的特点&#xff1a; 1.将数据放到数据表格&#xff08;二维表&#xff09;中&#xff0c;在将表格放到库中。 2.一个数据库中可以有多张表&am…

【.Net动态Web API】背景与实现原理

&#x1f680;前言 本文是《.Net Core进阶编程课程》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09; 专栏介绍&#xff1a;通过源码实例来讲解Asp.Net Core进阶知识点&#xff0c;让大家完全掌握每一…

分布式限流——Redis + Lua脚本实现令牌桶算法

主要思路概括如下&#xff1a; 定义数据结构&#xff1a; 使用Redis存储令牌桶的状态&#xff0c;包括当前令牌数&#xff08;KEYS[1]&#xff09;和上一次令牌填充的时间戳&#xff08;KEYS[1]:last&#xff09;。 计算新增令牌&#xff1a; 获取当前系统时间与上次令牌填充时…

中科亿海微-CL1656功能验证开发板

I. 引言 A. 研究背景与意义 CL1656是一款精度高、功耗低、成本低的5V单片低功耗运放&#xff0c;由核心互联公司研发制造&#xff0c;CL1656 是一个 16-bit、快速、低功耗逐次逼近型 ADC&#xff0c;吞吐速率高达 250 kSPS&#xff0c;并且内置低噪声、宽 带宽采样保持放大器。…

Vision Pro 零基础教程:1.机器视觉概述

文章目录 机器视觉简介机器视觉的发展历史机器视觉的结构组成机器视觉的应用工业相机分类1. 按传感器类型分类&#xff1a;2. 按分辨率分类&#xff1a;3. 按扫描方式分类&#xff1a;4. 按输出信号类型分类&#xff1a;5. 按应用领域分类&#xff1a;6. 按接口类型分类&#x…

React【Day2】

React表单控制 受控绑定 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 双向绑定 MVVM 报错记录&#xff1a; 错误代码&#xff1a; import { useState } from "react";const App () > {const [value, setValue] useS…

使用pytorch构建GAN模型的评估

本文为此系列的第六篇对GAN的评估&#xff0c;上一篇为Controllable GAN。文中使用训练好的分类模型的部分网络提取特征将真实分布与生成分布进行对比来评估模型的好坏&#xff0c;若有不懂的无监督知识点可以看本系列第一篇。 原理 一般来说&#xff0c;我们评估模型的好坏可…

DataGridView添加行号隔行变色

运行效果 颜色对应关系 类实现代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace WindowsFormsApp1 {…

二刷大数据(二)- Spark

目录 SparkHadoop区别核心组件运行架构Master&WorkerApplication (Driver)Executor RDD概念yarn下工作原理算子依赖血缘关系阶段划分广播变量 shuffle流程SparkSQLDataSet、DataFrame、RDD相互转换 SparkStreaming Spark Spark是一种基于内存的快速、通用、可扩展的大数据…