当前位置: 首页 > news >正文

ROS中使用RealSense-D435

文章目录

    • D435简介
    • RealSense的SDK2.0安装
      • 方法1:直接利用安装源安装
        • 注册服务器公匙
        • 将服务器添加到存储库列表
        • 安装库
      • 方法2:利用源码安装
        • GitHub下载librealsense
        • 安装编译依赖
        • 运行脚本
        • cmake编译
      • 软件显示
    • ROS接口安装
      • 启动节点
      • 查看话题
      • rviz显示点云
    • Python接口安装

D435简介

image-20230728200550446

Intel RealSense D435是Intel推出的一款结合RGB和深度摄像的立体视觉摄像头,具有以下主要特点:

  1. 使用双摄像头和红外投射器实现立体视觉采集。

  2. 提供频率可达90Hz的VGA分辨率(640x480)深度图像。

  3. 具有2个720p RGB摄像头,提供1920x1080分辨率彩色视频流。

  4. 使用全局快门同步RGB图像和深度图像。

  5. 内置6轴IMU运动跟踪模块。

  6. 支持近距离检测,最小检测距离约0.25米。

  7. 提供硬件级图像流同步和时间戳。

  8. 支持USB 3.0接口传输高速率图像流。

  9. 提供SDK开发包,兼容ROS、OpenCV等主流框架。

  10. 小巧轻便的模块化设计。

D435采用了活体立体视觉技术,具有准确、高帧率的深度映射能力,可广泛应用于机器人定位与导航、物体识别、人机交互等计算机视觉任务中。

RealSense的SDK2.0安装

方法1:直接利用安装源安装

注册服务器公匙

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
sudo apt-get install librealsense2-utils

可选

sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg

不过这个方法只能下在最新版本,由于ros2的适配,该版本的realsense-ros对ros2匹配,因此在下载时建议使用方法2下载

方法2:利用源码安装

GitHub下载librealsense

image-20230729172838240

这里以v2.50.0版本为例

安装编译依赖

sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev bison flex
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev libelf-dev elfutils

运行脚本

cd librealsense-2.50.0/
./scripts/setup_udev_rules.sh

cmake编译

mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make -j8 #j8的意思是根据自己处理器内核数量来加快编译
sudo make install

重新连接 Intel Realsense 深度摄像机并运行: realsense-viewer 以验证安装

软件显示

连接d435与电脑

realsense-viewer 

image-20230729190530066

左侧的Stereo Module可以开启深度图显示,RGB Module可以显示RGB影像

ROS接口安装

由于ros1的维护,直接安装会以最新版本下载,其适配ros2,导致编译失败,所以在安装时要选择与之ros相对应的tag

以ros noetic为例

安装realsense-ros: https://gitcode.net/mirrors/intelrealsense/realsense-ros?utm_source=csdn_github_accelerator

安装ddynamic_reconfigure:https://gitcode.net/mirrors/pal-robotics/ddynamic_reconfigure?utm_source=csdn_github_accelerator

下载其压缩包,然后解压缩到~/catkin_ws/src目录下

编译

catkin_make

启动节点

roslaunch realsense2_camera rs_camera.launch

image-20230729191329877

出现RealSense Node Is Up!证明节点启动成功

查看话题

rostopic list

image-20230729191513483

rqt_image_view

image-20230729191627233

rviz显示点云

roslaunch realsense2_camera demo_pointcloud.launch 

image-20230729192410943

Python接口安装

pip install pyrealsense2
import pyrealsense2 as rs
import numpy as np
import cv2if __name__ == "__main__":# Configure depth and color streamspipeline = rs.pipeline()config = rs.config()config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)# Start streamingpipeline.start(config)try:while True:# Wait for a coherent pair of frames: depth and colorframes = pipeline.wait_for_frames()depth_frame = frames.get_depth_frame()color_frame = frames.get_color_frame()if not depth_frame or not color_frame:continue# Convert images to numpy arraysdepth_image = np.asanyarray(depth_frame.get_data())color_image = np.asanyarray(color_frame.get_data())# Apply colormap on depth image (image must be converted to 8-bit per pixel first)depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)# Stack both images horizontallyimages = np.hstack((color_image, depth_colormap))# Show imagescv2.namedWindow('RealSense', cv2.WINDOW_AUTOSIZE)cv2.imshow('RealSense', images)key = cv2.waitKey(1)# Press esc or 'q' to close the image windowif key & 0xFF == ord('q') or key == 27:cv2.destroyAllWindows()breakfinally:# Stop streamingpipeline.stop()

image-20230729192950314

http://www.lryc.cn/news/100061.html

相关文章:

  • nlp系列(6)文本实体识别(Bi-LSTM+CRF)pytorch
  • zookeeper-3.7.1集群
  • ubuntu上安装firefox geckodriver 实现爬虫
  • 【Matlab】基于长短期记忆网络的时间序列预测(Excel可直接替换数据)
  • [NLP]LLM高效微调(PEFT)--LoRA
  • vue3 vant上传图片
  • 深入理解linux内核--内存管理
  • SpringBoot热部署的开启与关闭
  • k8s集群部署(使用kubeadm部署工具进行快速部署,相关对应版本为docker20.10.0+k8s1.23.0+flannel)
  • 20230729 git github gitee
  • php建造者模式
  • linux---》用户操作/su和sudo/普通权限/特殊权限/解压压缩/软件管理,rpm和yum/源码安装nginx
  • tinkerCAD案例:20. Simple Button 简单按钮和骰子
  • Java - 为什么要用BigDecimal?
  • mac 删除自带的ABC输入法保留一个搜狗输入法,搜狗配置一下可以减少很多的敲击键盘和鼠标点击次数
  • JiaYu说:如何做好IT类的技术面试?
  • RL 实践(6)—— CartPole【REINFORCE with baseline A2C】
  • Python numpy库的应用、matplotlib绘图、opencv的应用
  • SpringBoot 如何进行 统一异常处理
  • 数据库索引优化与查询优化——醍醐灌顶
  • Student and Teacher network(学生—教师网络)与知识蒸馏
  • FPGA——PLD的区别以及各自的特点
  • 八、Kafka时间轮与常见问题
  • Web端即时通讯技术(SEE,webSocket)
  • 脑电信号处理与特征提取——4.脑电信号的预处理及数据分析要点(彭微微)
  • 分析npm run serve之后发生了什么?
  • LINUX上操作redis 用shell7
  • Python的threading模块
  • HTML5 的离线储存怎么使用,工作原理
  • FTP文件传输协议与DHCP