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

双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输(带源码)

Depth2Uart

双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输


一、项目说明/Overview

所实现的功能:基于Intel Realsense官方提供的SDK,双目深度相机能获取到相机任何一个像素点距离前方障碍物的距离(即深度信息),并将深度信息串口数据发送至其它设备。

这个版本都是基于物理层上功能的实现,双目相机在这个工程当中只是作为了一个传感器使用,而Linux设备端也只做了双目相机的载体以及对双目采集到的深度信息进行串口传输,没有使用任何基于视觉相关的算法。
所以,这个版本肯定不是我们用上嵌入式设备的最终代码,大家可以把这个当作双目相机的一个入门工程来学习。

二、设备环境/Hardware

在这里插入图片描述

  • 双目相机:能使用Intel Realsense SDK的深度相机均可实现功能,使用USB3.2的端口,这里我们使用的是Intel Realsense D435i深度实感相机;
  • Linux设备:需要有两个及以上的USB口,可以选择树莓派、NVIDIA Jetson系列等主机,也可以使用虚拟机,测试使用的是Jetson Nano;
  • 数据接收端: MCU系统,进行串口数据传输以及数据的使用,测试使用的是STM32进行串口数据接收。

三、使用方法/Usage

1、安装Ubuntu

推荐Ubuntu 18/20 LTS版本,兼容Ubuntu 22 LTS,本文部分依赖(如Intel Realsense SDK)官方文档暂未支持Ubuntu22,但实测可行。

2、安装ROS/ROS2

根据Ubuntu版本安装ROS/ROS2,安装方法可前往观看古月居/鱼香ROS相关视频,可使用一键安装脚本:https://github.com/fishros/install 。
本版本双目测距理论上不需要安装ROS系统,但安装ROS比较方便解决相关依赖,同时后续版本也会使用到就直接安装了。

3、安装Intel Realsense SDK

如出现问题可查看Linux官方安装文档

(1) 安装依赖

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

(2) 下载Intel Realsense SDK

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

这行代码默认是下载的最新稳定版的SDK,现在只支持ROS2了,可以前往github仓库查看具体要求。
下载指定版本在git clone后加上-b,如Ubuntu18/20一般安装ROS,v2.50.0版本为支持ROS1的最后版本,就使用下面这个代码:

git clone  -b v2.50.0 https://github.com/IntelRealSense/librealsense.git

(3) 安装Intel Realsense SDK

cd librealsense
./scripts/setup_udev_rules.sh
mkdir build && cd build
cmake ..
make -j8
sudo make install

测试可以输入命令 realsense-viewer,可以看到一个软件打开,可以在此测试相机是否正常。

4、编译depth2uart.cpp

复制depth2uart.cpp(项目Software文件夹下)到Linux设备,在所在目录打开终端,输入以下代码编译cpp文件,生成depth2uart可执行文件,部分硬件可能会报错,可以根据报错查看缺少什么库文件,在最末尾加上-l再输入库名称。

g++ depth2uart.cpp -o depth2uart -lrealsense2 -lboost_system

5、给串口添加权限

输入以下命令可查询串口所在USB口。

ls -l /dev/ttyUSB* 

默认是USB0,输入以下命令给串口添加权限,如果是其他USB则需要修改USB后面数字。

sudo chmod 777 /dev/ttyUSB0

6、运行depth2uart

./depth2uart 

可以看到输出摄像头最中央一点的深度信息,数据串口发送至MCU系统接收。

7、设置开机自启动

开机自启动有很多种方法,比如在rc.local文件添加命令,即可开机自己动,可以上网查询。
这里推荐命令行输入‘gnome-session-properties’通过gnome设置开机自启动。

四、软件说明/SoftWare

具体代码见 2.Software/depth2uart.cpp 。
这个工程功能实现的原理:

  • 串口数据的传输使用的是C++中的Boost库,这也是步骤4中增加-lboost_system的原因,使用其中的asio库实现IO操作。
  • 双目相机数据的采集使用的是Intel Realsense官方的SDK,可以前往官方GitHub仓库查看学习。

五、后续/Questions

  1. 在这个工程中,传输的数据是某一点像素对应的深度值,仅仅获取这个数据在我们的嵌入式系统并没有太多的效果,所以在最终上嵌入式系统时,一般都是双向数据传输,将MCU设备端获取到的数据传输至Linux主控中进行计算,最后返回计算出来的控制信号给MCU端进行控制。
  2. 往Linux设备增加算法,CPU本身是能计算的,同时Jetson Nano等还配备“显卡”能够加速视觉计算,后续可以运行OpenCV视觉算法以及TensorFlow等深度学习算法,搭配控制系统进行更高级的运用……

六、源码下载

https://download.csdn.net/download/liufang_imei/87442500?spm=1001.2014.3001.5503

相关文章:

双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输(带源码)

Depth2Uart 双目测距------双目相机V1.0,将双目相机采集到任意一点的深度数据进行串口传输 一、项目说明/Overview 所实现的功能:基于Intel Realsense官方提供的SDK,双目深度相机能获取到相机任何一个像素点距离前方障碍物的距离&#xff0…...

jetson nano(ubuntu)安装Cmake

文章目录安装环境一.命令行安装二.Cmake源码编译安装安装环境 jetson nano 系统:4.6.1 一.命令行安装 sudo apt install cmake这种直接安装cmake的方式,其实安装的版本都太老了,这种方式不推荐 二.Cmake源码编译安装 更新一下系统软件 su…...

图的基本介绍和表示方式

图的基本介绍 为什么要有图这个基本数据结构? 我们还学习过线性表(数组、队列、链表和栈)和树,但是我们可以发现,线性表局限于一个直接前驱(就是只能有唯一一个前面的结点)和一个直接后继的(…...

本周大新闻|传微软解散工业元宇宙团队,MIT研发垂直堆叠全彩Micro LED

本周大新闻,AR方面,消息称微软解散工业元宇宙团队;德国AR公司Gixel GmbH亮相;Brilliant推出单片式附加形态AR眼镜;MIT研发垂直堆叠全彩Micro LED;谷歌XR串流正式上线。VR方面,索尼发布了PS VR2的…...

SpringMVC:拦截器(12)

拦截器1. 拦截器概念2. 拦截器入门案例2.1 环境准备2.2 拦截器开发步骤1: 创建拦截器类步骤2: 配置拦截器类步骤3: SpringMVC添加SpringMvcSupport包扫描和interceptor包扫描步骤4: 简化SpringMvcSupport的编写5 测试3. 拦截器参数解析(了解)3.1 前置处理…...

计算机网络3:HTTP1.0和HTTP1.1的区别

目录1. HTTP是什么2.HTTP1.0和HTTP1.1的区别3.名词解释(1)If-Modified-Since(IMS)、Expires(2)If-None-Match,Etag(3)If-Unmodified-Since1. HTTP是什么 超文本传输协议…...

Urho3D 编辑器说明

Urho3D编辑器是一个脚本应用程序,可以与Urho3D播放器应用程序一起运行。要开始,请执行以下任意命令:(在bin目录中)Editor.bat、Editor.sh或Urho3DPlayer Scripts/Editor.as Urho3D播放器应用程序支持的所有命令行选项…...

C++类基础(十一)

运算符重载&#xff08;二&#xff09; ● 对称运算符通常定义为非成员函数以支持首个操作数的类型转换 struct Str {int val 0;Str(int input): val(input){}auto operator(Str x){std::cout << "auto operator(Str x)\n";return Str(val x.val);} }; int …...

Windows安装系列:SVN Server服务

一、下载与安装 1、下载VisualSVN-Server-5.1.1-x64.msi 地址&#xff1a;Download | VisualSVN Server 2、找到最新版本SVN 5.1.1&#xff0c;直接双击它&#xff0c;弹出如下安装界面 3、点击Next 4、勾选我接受&#xff0c; 点击"Next" 5、默认选项&#xff0c…...

快速傅里叶算法(FFT)快在哪里?

目录 前言 1、DFT算法 2、FFT算法 2.1 分类 2.2 以基2 DIT&#xff08;时间抽取&#xff09; FFT 算法为例 2.2.1 一次分解 2.2.2 多次分解 参考 前言 对信号分析的过程中&#xff0c;为了能换一个角度观察问题&#xff0c;很多时候需要把时域信号波形变换到频域进行分…...

利用Markdown写学术论文资料汇总贴

1是最详细的&#xff0c;重点看&#xff01; Markdown 写作&#xff0c;Pandoc 转换&#xff1a;我的纯文本学术写作流程 2补充一些细节&#xff0c;也可以看看。 用Markdown写作学术论文 3写得和上面差不多&#xff0c;如果上面两篇有什么问题还没解决&#xff0c;可以看看…...

MySQL 高级查询

目录1.左关联2.右关联3.子查询4.联合查询5.分组查询1.左关联 MySQL中的左关联&#xff08;Left Join&#xff09;是一种基于共同列的连接操作&#xff0c; 它将左侧表中的所有行与右侧表中匹配的行结合在一起&#xff0c; 如果右侧表中没有匹配的行&#xff0c;则结果集中右侧…...

JavaSE学习day4_01 循环for,while,do...while

1. 循环高级 1.1 无限循环 for、while、do...while都有无限循环的写法。 最为常用的是while格式的。 因为无限循环是不知道循环次数的&#xff0c;所以用while格式的 代码示例&#xff1a; while(true){} 1.2 跳转控制语句&#xff08;掌握&#xff09; 跳转控制语句&…...

C/C++中的static关键字

概述在C/C中都有static关键字的使用&#xff0c;可以分别修饰变量和函数&#xff0c;分为静态变量【静态成员】、静态成员函数。2. static用法概况静态变量的作用范围在一个文件内&#xff0c;程序开始时分配空间&#xff0c;结束时释放空间&#xff0c;默认初始化为0&#xff…...

67 自注意力【动手学深度学习v2】

67 自注意力【动手学深度学习v2】 深度学习学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV19o4y1m7mo/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 给定长为n 的序列&#xff0c;每个xi为长为d的向量&#xff0c;自注意力将xi 既当…...

电子学会2022年12月青少年软件编程(图形化)等级考试试卷(二级)答案解析

青少年软件编程&#xff08;图形化&#xff09;等级考试试卷&#xff08;二级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1. 一个骰子&#xff0c;从3个不同角度看过去的点数如图所示&#xff0c;请问5的对面是什么点数&#xff1f;&#xff08; &#xff09; …...

关于链表中插入结点的操作……

服了&#xff0c;好久没敲链表了&#xff0c;这都忘了 newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur-…...

【项目精选】百货中心供应链管理系统

点击下载源码 近年来&#xff0c;随着计算机技术的发展&#xff0c;以及信息化时代下企业对效率的需求&#xff0c;计算机技术与通信技术已经被越来越多地应用到各行各业中去。百货中心作为物流产业链中重要的一环&#xff0c;为了应对新兴消费方式的冲击&#xff0c;从供货到销…...

Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio

首先&#xff0c;感谢CSDN官方认可 SQLiteStudio是一款开源、跨平台&#xff08;Windows、Linux和MacOS&#xff09;的SQLite数据库管理系统。 github地址&#xff1a;https://github.com/pawelsalawa/sqlitestudio 官网&#xff1a;https://sqlitestudio.pl/ 特性很多&#xf…...

Python __doc__属性:查看文档

在使用 dir() 函数和 __all__ 变量的基础上&#xff0c;虽然我们能知晓指定模块&#xff08;或包&#xff09;中所有可用的成员&#xff08;变量、函数和类&#xff09;&#xff0c;比如&#xff1a;import string print(string.__all__)程序执行结果为&#xff1a;[ascii_lett…...

OpenClaw狂欢暗藏安全隐患,深圳机密计算科技端云一体方案筑牢AI Agent安全基座

AI Agent时代&#xff0c;安全信任的崩塌2026年初&#xff0c;OpenClaw横空出世&#xff0c;仅用60天打破React保持十年的GitHub Star纪录&#xff0c;成为当年热度最高的现象级开源项目。2026年3月&#xff0c;在英伟达GTC全球开发者大会上&#xff0c;黄仁勋直言称“OpenClaw…...

LangGraph 持久化深度解析:Checkpoint 机制如何实现对话记忆和断点续跑

很多同学在第一次接入 LangGraph 时&#xff0c;会发现图默认是「无状态」的——每次 invoke&#xff0c;上一轮的消息就消失了。你以为加了 MessagesState 就有记忆了&#xff0c;结果测试一问&#xff0c;Agent 完全不知道「你叫什么名字」。 更惨的是什么&#xff1f;生产环…...

别再只盯着应力云图了!用ANSYS Workbench的‘圣维南原理’和模型简化,把你的计算效率提升200%

别再只盯着应力云图了&#xff01;用ANSYS Workbench的‘圣维南原理’和模型简化&#xff0c;把你的计算效率提升200% 有限元分析工程师常常陷入一个误区&#xff1a;认为模型越精细&#xff0c;结果越准确。但现实情况是&#xff0c;一个未经合理简化的复杂模型不仅会消耗大量…...

软件设计原则之DIP依赖倒置原则

(DIP) 依赖倒置原则 Dependency Inversion Principle核心原则抽象不应该依赖细节&#xff1b;细节应该依赖于抽象。场景描述在一个应用程序 Application 中需要使用到数据库&#xff0c;比如我们此时需要使用到 Mysql 数据库。Mysql 数据库分别具有连接&#xff0c;断开关闭&am…...

边缘AI与TinyML在医疗影像筛查中的实战:从模型轻量化到临床部署

1. 项目概述&#xff1a;当AI成为医生的“仿生眼”在医疗诊断领域&#xff0c;尤其是癌症早期筛查中&#xff0c;人类医生的经验与肉眼观察长期是金标准。然而&#xff0c;这个标准背后隐藏着巨大的不确定性&#xff1a;研究显示&#xff0c;即便是标准的放射影像学检查&#x…...

南京彩钢瓦屋面防水供应商

在南京&#xff0c;彩钢瓦屋面广泛应用于各类建筑&#xff0c;然而其防水问题一直是困扰众多业主的难题。选择一家靠谱的彩钢瓦屋面防水供应商至关重要。今天就为大家详细介绍雨中行修缮工程有限公司&#xff0c;同时也对比其他一些大厂&#xff0c;看看雨中行修缮为何能在市场…...

2026年强烈建议收藏:八大热门AI编程工具权威评测

AI编程工具已全面进入智能体时代&#xff0c;从单一代码补全进化为全流程开发引擎。本文精选8款全球主流工具&#xff0c;从核心能力、场景适配、使用体验等维度客观解析&#xff0c;为开发者提供精准选型参考。 一、Trae&#xff08;字节跳动旗下&#xff09;—— 全链路AI原生…...

3分钟掌握Krita AI抠图:点一下就能完成的智能选区革命

3分钟掌握Krita AI抠图&#xff1a;点一下就能完成的智能选区革命 【免费下载链接】krita-vision-tools Krita plugin which adds selection tools to mask objects with a single click, or by drawing a bounding box. 项目地址: https://gitcode.com/gh_mirrors/kr/krita-…...

构建AI助手持久记忆系统:Rekall项目实践与MCP协议应用

1. 项目概述&#xff1a;为你的AI助手构建一个“第二大脑”如果你和我一样&#xff0c;日常重度依赖 Claude Code、Cursor 这类AI编程助手&#xff0c;那你一定遇到过这个痛点&#xff1a;每次开启一个新的会话&#xff0c;AI助手就像得了“健忘症”&#xff0c;对之前讨论过的…...

PrismLauncher-Cracked:终极离线启动器解决方案完全指南

PrismLauncher-Cracked&#xff1a;终极离线启动器解决方案完全指南 【免费下载链接】PrismLauncher-Cracked This project is a Fork of Prism Launcher, which aims to unblock the use of Offline Accounts, disabling the restriction of having a functional Online Accou…...