(3)(3.1) 英特尔Realsense深度摄像头(三)

文章目录

前言

10 系统概述

11 手动设置配套计算机


前言

本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用,以实现避障(obstacle avoidance)。该方法使用在配套计算机上运行的 Python 脚本(非 ROS)向 ArduPilot 发送距离信息。


10 系统概述

简而言之,该脚本会将 Realsense 深度摄像头提供的深度图像转换成与前方障碍物的距离。AP 支持 DISTANCE_SENSOROBSTACLE_DISTANCE MAVLink 消息,前者携带单个距离,后者携带距离数组。OBSTACLE_DISTANCE 允许我们同时发送多达 72 个距离,因此我们将使用它。

  •  首先,必须对原始深度图像应用某种形式的滤波器,以避免黑洞和噪音,并改进数据以获得更稳定的结果。以下是脚本中包含的滤镜的完整列表(list of filters),你可以单独启用这些滤镜。要测试不同滤镜的设置,可以使用 librealsense 提供的 rs-depth-quality 示例或运行 opencv_depth_filtering.py 示例脚本。下图展示了原始(左)和过滤后(右)的深度图像,水平线是我们计算与障碍物距离的位置; 

  •  接下来,从输入/处理后的深度图像来看,由于信息中没有区分不同俯仰角度的区域,因此距离需要在同一水平线上(如右图所示)。我们将摄像头的水平视场划分为 72 条均匀分布的光线。沿着每条射线,我们选择与射线末端相对应的像素,并提取出深度值;
  • 随后,当飞行器上下俯仰时,障碍物线将通过补偿飞行器当前俯仰(由 MAVLink 的ATTITUDE 信息提供)保持"固定";
  • 最后,发送信息的频率应在 10Hz 或更高,这取决于飞行器的行驶速度。 

11 手动设置配套计算机

只有在尚未将 APSync 安装到配套计算机的情况下,才需要执行这些步骤。

用于配套电脑:

  •  操作系统:Ubuntu 18.04(强烈建议使用此版本,因为该版本包含最新的所需库);
  • Python 3.6 及以上版本,这也是 Ubuntu 18.04 的标准版本。使用 $ python3 -V 查看版本,应该能看到 Python 3.6.9 或更高版本;
  • librealsense:从官方资源(official source)下载或安装;
  • pyrealsense2 也是必需的。 

不同系统的安装过程有很大差异,因此请参考 github 官方页面(the official github page),了解具体系统的安装说明:

  1. Ubuntu
  2. Jetson
  3. Odroid
  4. Windows
  5. Raspbian

安装支持软件包

首先为 Ubuntu 安装 Python3(Python3 for Ubuntu)(Ubuntu 18.04 及以上版本无需安装)。然后使用 Python3命令运行英特尔提供的示例,这些示例位于 ~/librealsense/wrappers/python/examples 文件夹中。

# Update the PYTHONPATH environment variable to add the path to the pyrealsense2 library

export PYTHONPATH=$PYTHONPATH:/usr/local/lib

cd ~/librealsense/wrappers/python/examples

# You should see a stream of depth data coming from the D4xx camera.

python3 python-tutorial-1-depth.py

安装 Python3pip (pip3) 和其他支持软件包:

sudo apt-get install python3-pip

pip3 install pyrealsense2

pip3 install transformations

pip3 install dronekit

pip3 install apscheduler

pip3 install pyserial # For serial connection

pip3 install opencv-python

sudo apt -y install python3-gst-1.0 gir1.2-gst-rtsp-server-1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-ugly libx264-dev

# Only necessary if you installed the minimal version of Ubuntu

sudo apt install python3-opencv

下载主脚本 d4xx_to_mavlink.py,或克隆 vision_to_mavros 软件源并找到脚本文件夹。

cd /path/to/download # Or ROS workspace ~/catkin_ws/src

git clone https://github.com/thien94/vision_to_mavros.git

cd vision_to_mavros/script

chmod +x d4xx_to_mavlink.py

chmod +x opencv_depth_filtering.py  # Useful to test the filtering options

AP 一起使用的主要脚本是 d4xx_to_mavlink.py。第二个脚本 opencv_depth_filtering.py可用于在闲暇时测试不同的过滤选项。

修改脚本

如果没有插入监视器,可通过设置 debug_enable_default = False 禁用脚本 d4xx_to_mavlink.py 中的调试选项,或在运行脚本时添加参数 --debug_enable 0

1. 用以下命令运行脚本。

cd /path/to/script

python3 d4xx_to_mavlink.py

2. 如果启用了调试选项,请等待显示输入和处理后的深度图像。在右上角可以看到处理速度(帧/秒)。输出图像(右侧)上的水平线表示我们找到的与摄像机前方障碍物距离的直线。

设置摄像机 RGB 图像的视频馈送:

1. 脚本 d4xx_to_mavlink.py 有一个选项 RTSP_STREAMING_ENABLE。如果启用(True),Realsense 摄像机的 RGB 图像视频流将在 rtsp://<ip-address>:8554/d4xxUP2 / 配套计算机的 <ip-address> 上提供。

2.Mission Planner 中:右键单击 HUD > 视频 > 设置 GStreamer 源,这将打开 Gstreamer url 窗口。将以下示例管道输入 Gstreamer url 窗口。相应更改 <ip-address>

rtspsrc location=rtsp://<ip-address>:8554/d4xx caps=“application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264” latency=100 ! queue ! rtph264depay ! avdec_h264 ! videoconvert ! video/x-raw,format=BGRA ! appsink name=outsink

3. 视频传输的延迟取决于网络和管道配置,因此请随时调整/修改参数。

由于深度摄像头在不同设置/环境下的性能各不相同,建议在实际飞行前进一步调整脚本设置。以下是根据系统实际实验所做的一些改进:

1. 当飞行器在地面上时,深度图像的大部分可能会看到地面。在这种情况下,可在 d4xx_to_mavlink.py 脚本中减小 obstacle_line_height_ratio参数(接近零),以向上移动障碍物检测线。

2. 如果深度数据有噪声,可以通过修改obstacle_line_thickness_pixel参数来增加障碍物线的厚度。在撰写本文时,我们的想法是处理某个边界(由该参数定义)内的一组像素,并找出最低值作为物体的指示器。如果将来开发出更好的方案,这一点可以改变。

Tip

深度摄像头可与 Realsense T265 跟踪摄像头一起用于非 GPS 导航(Realsense T265 Tracking camera for non-GPS navigation)。有一些支持脚本(scripts)可以简化同时使用多个摄像头的过程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HackTheBox-Machines--MonitorsTwo

文章目录 0x01 信息收集0x02 CVE-2022-46169 漏洞利用0x03 权限提升0x04 提升到root权限 MonitorsTwo 测试过程 0x01 信息收集 a.端口扫描: 发现22、80端口    b.信息收集: 1.2.22 Cacti信息收集 nmap -sC -sV 10.129.186.1321.访问 10.129.186.132&#xff0c;为 1.2.22 Ca…

社交革命的引领者:探索Facebook的创新策略

1. 引言&#xff1a;社交媒体的崛起 社交媒体的兴起标志着信息时代的到来&#xff0c;它不仅改变了人们的生活方式&#xff0c;也影响着整个社会结构。作为社交媒体的先驱者&#xff0c;Facebook以其创新的策略和领先的技术&#xff0c;成为了这场社交革命的引领者。从2004年马…

itop4412编译内核时garbage following instruction -- `dmb ish‘ 解决方案

王德法 没人指导的学习路上磕磕绊绊太耗费时间了 今天编译4412开发板源码时报 garbage following instruction – dmb ish’ 以下是解决方案&#xff1a; 1.更新编译器 sudo apt-get install gcc-arm-linux-gnueabi 更新后修改Makefile 中编译器路径如下图 2.你以为更新完就可…

SqlServer功能性配置选择

功能性配置 下面的是必选的

传输层协议——UDP/TCP协议

目录 端口号 端口号范围 pidof UDP协议 UDP协议格式 UDP特点 UDP缓冲区 UDP的注意事项 基于UDP的应用层协议 TCP协议 TCP协议格式 序号与确认序号 窗口大小 6个标记位 紧急指针 确认应答机制 连接管理机制 三次握手 四次挥手 超时重传机制 流量控制 滑动…

【计算机网络】ip子网划分--超详细例题解析

Hello!这一篇主要是计算机网络中的ip地址子网划分的例题&#xff0c;这里例举了四个题型。保证即便从0也可以掌握&#xff01;(前面是一些预备知识&#xff0c;不熟悉的小伙伴一定要看下学习下哦&#xff5e;) 这也是博主的学习过程&#xff0c;做题中仅仅我的理解哦。若文章中…

Unity之C#面试题(二)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之C#面试题&#xff08;二&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&a…

langchain 文本向量化存储,并检索相似 topK

目录 chroma 检索 faiss 检索 检索器 相似性 最大相关性mmr 相似数阈值 txt 有多行&#xff0c;我的这份数据有 67 行&#xff0c;样例如下&#xff1a; 字段1\t值1\n 字段2\t值2\n ... chroma 检索 pip install langchain-chroma 在本地下载了 embedding 模型&…

SpringBoot 集成H2数据库,启动执行sql, 中文乱码

目录 H2数据库介绍 SpringBoot版本&#xff1a;SpringBoot 2.1.12.RELEASE 快速集成H2&#xff0c;maven依赖 快速集成H2&#xff0c;数据源及关键参数配置 spring.datasource.schema参数&#xff08;建表SQL脚本&#xff09; spring.datasource.data参数&#xff08;更新、…

Golang | Leetcode Golang题解之第19题删除链表的倒数第N个结点

题目&#xff1a; 题解&#xff1a; func removeNthFromEnd(head *ListNode, n int) *ListNode {dummy : &ListNode{0, head}first, second : head, dummyfor i : 0; i < n; i {first first.Next}for ; first ! nil; first first.Next {second second.Next}second.N…

Nacos-默认token.secret.key-配置不当权限绕过漏洞复现

漏洞描述&#xff1a; Nacos 身份认证绕过漏洞(QVD-2023-6271)&#xff0c;开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改&#xff0c;导致远程攻击者可以绕过密钥认证进入后台&#xff0c;造成系统受控等后果。 漏洞信息 公开时间&#xff1a;2023-03…

11 Php学习:函数

PHP 内建函数Array 函数 PHP Array 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。 创建 PHP 函数 当您需要在 PHP 中封装一段可重复使用的代码块时&#xff0c;可以使用函数。下面详细解释如何创建 PHP 函数并举例说明。 创建 PHP 函数的语法 PHP 函数的基…

生成式AI对UiPath来说是机遇还是挑战?

企业争相通过技术革新来领跑市场&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;技术更是将企业的效率和成本控制推向了新的高度。但当人工智能&#xff08;AI&#xff09;的最新进展——生成式AI登上舞台时&#xff0c;它不仅带来了变革的可能&#xff0c;还提出了一…

Vue3---基础2(component)

主要讲解 component 的创建 以及vue插件的安装 Vue.js Devtools 为谷歌浏览器的Vue插件&#xff0c;可以在调试工具内查看组件的数据等 下载 有两种下载方式 1. 谷歌应用商店 打开Chrome应用商店去下载&#xff0c;这个方法需要魔法 2. 极简插件 极简插件官网_Chrome插件下载_…

[C++][算法基础]n-皇后问题(DFS)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

APP开发教学:开发同城O2O外卖跑腿系统源码详解

同城O2O外卖跑腿系统&#xff0c;满足了人们对于外卖送餐和生活服务的需求。今天&#xff0c;小编将为您讲解如何开发同城O2O外卖跑腿系统源码。 1.前期准备 首先&#xff0c;我们需要明确系统的功能需求和用户需求&#xff0c;包括外卖订购、配送员接单、支付功能等。其次&am…

minio-docker单节点部署SDK测试文件上传下载

目录 一&#xff0c;docker部署minio单节点单磁盘 二&#xff0c;SDK测试上传下载 一&#xff0c;docker部署minio单节点单磁盘 1.拉取镜像 # 下载镜像 docker pull minio/minio 2.查看镜像 docker images 3.启动minio(新版本) 创建本机上的挂载目录&#xff0c;这个可以…

NetSuite 销售订单页面选择客户后停滞问题研究

随着用户环境中定制内容的增加&#xff0c;用户会发现Sales Order中选择Customer时的页面停滞时间会变长。这让用户感到很疑惑。 我们初步研究了一下这个问题&#xff0c;两个变量比较显著&#xff1a; •Form的页签数量•脚本的挂载数量 试验数据 1. 多页签&#xff0c;无…

潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞复现(CNVD-2024-14945)

0x01 产品简介 水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。由山东潍微科技股份有限公司研发,近年来,公司全力拓展提升水务、水利信息化业务…

nginx工作原理解析

目录 1、master-workers 的工作机制介绍 2、master-workers 的机制的好处 3、设置多少个 worker 4、最大连接数和支持的最大并发数的计算 1、master-workers 的工作机制介绍 nginx在启动后&#xff0c;会有一个master进程和一个或者多个相互独立的worker进程 过来的请求由…