(0)(0.2) 接近传感器

news/2024/10/18 18:17:10/

文章目录

前言

1 配置

2 测试

3 附加功能


前言

Copter/Rover 支持避开飞行器前方可能出现的障碍物。启用这些功能的第一步是安装一个正常工作的接近传感器。ArduPilot 最多支持 4 个传感器。


360 度激光雷达通常作为近距离传感器用于物体回避,但也可将多个测距仪传感器或立体深度相机用于近距离检测。

Note

用户经常将测距仪与接近传感器混淆。测距仪通常是单维度传感器,可提供非常窄的射线距离。近距离传感器一般用于 360 激光雷达和其他具有更宽视场角的传感器。这两类传感器使用的设置和参数是不同的。

1 配置

你需要根据所使用的传感器正确设置参数 PRXx_TYPE。由于 360 度激光雷达的视场中可能会有障碍物,因此为其提供了禁区。禁区可通过 PRXx_IGN_ANGxPRXx_IGN_WIDx 参数设置,指定框架障碍物的方向和宽度,并将其忽略。最多可指定 6 个排除区。

请根据你的设置通过以下链接获取配置信息:

  1. RangeFinders
  2. Intel RealSense Depth Camera
  3. Lightware SF40/C (360 degree)
  4. Lightware SF45/B (350 degree)
  5. RPLidar A2 360 degree laser scanner
  6. TerraRanger Tower (360 degree)

2 测试

实时视图

Mission Planner 的近距离查看器中可以看到实时距离。

移动到 MP 的"飞行数据"屏幕,按下 Ctrl-F 并按下"接近"按钮,即可打开该窗口。

数据闪存记录

DataFlash 日志的 RFND 信息中可以看到向上和向下的测距仪距离。

飞行器周围 8 个象限内最近物体的距离记录在 DataFlash 日志的 PRX 信息中。由于 CopterRove 4.1 具有存储 3D 障碍物的功能,因此使用了不同的 PRX 信息日志实例。第 0 个实例代表间距为 -75-45 度之间检测到的障碍物。同样,PRX[1] 代表 -45-15 度,PRX[2] 代表 -15+ 15 度,以此类推。

3 附加功能

滤波器

自动驾驶仪上可以安装各种传感器。不过,根据传感器的质量和使用情况,它可能会提供噪声数据。这些噪声将作为"障碍物"存储在自动驾驶仪上,飞行器可能会突然开始避开错误的物体。为了解决这个问题,CopterRover 4.1 对原始传感器数据进行了内置低通滤波器处理。滤波器可以通过 PRX_FILT 进行调整(设置为 0 将禁用该功能)。默认情况下,仅记录滤波后的值。不过,通过设置 PRX_LOG_RAW = 1,传感器的原始值也会被记录下来。这可用于调试目的。

地面探测

Note

该功能需要先配置一个有效的向下测距仪,并且只能与 Copter 一起使用。

在低空避障和起降时,传感器有时会将下方的地面视为障碍物。这可能很危险,因为飞行器会试图"避开"这些障碍物(如果避障功能已开启)。通过设置 PRX_IGN_GND = 1,我们试图检测并忽略任何靠近地面的障碍物。

Warning

该功能仅在飞行器解锁时起作用。当飞行器离地面非常近时,也可能会忽略有效障碍物。探测到的障碍物将不会显示在任务规划器的"近距离查看器"或数据闪存日志中。


http://www.ppmy.cn/news/1427870.html

相关文章

过零可控硅光耦与随机可控硅光耦

无过零检测 推荐型号 MOC3021无过零检测 对应的数据手册 原理框图 工作电流 过零检测 推荐型号 MOC3061 原理框图 工作电流 注意事项 随机导通型是随时打开的。都是过零时关闭 也即是说:过零型打开的都是一个馒头波。 参考链接 过零可控硅光耦怎么用-电路知识干…

Linux中断——嵌入式Linux驱动开发

参考正点原子I.MX6U嵌入式Linux驱动开发指南 一、简介 先来简单了解一般中断的处理方法: ①、使能中断,初始化相应的寄存器。 ②、注册中断服务函数,也就是向 irqTable 数组的指定标号处写入中断服务函数 ③、中断发生以后进入 IRQ 中…

BaiChuan13B-GPTQ量化详解

知识要点: 1、按照网上搜索的一些代码,如使用auto_gptq原生库进行训练后量化,可能会正常量化,但是在线推理时会出现如找不到bin文件或者tf文件,即模型权重文件,所以和网上大部分代码不同的地方在于&#xf…

【Vue】Vue中使一个div铺满全屏

在Vue中实现div全屏铺满的方式与纯CSS实现类似&#xff0c;只是在Vue组件中应用CSS的方式略有不同。 最近在项目开发中&#xff0c;就遇到了这个问题&#xff0c;特此记录一下&#xff0c;方便大伙避坑。 有这么一段代码&#xff1a; <template><div class"fu…

常见面试算法题-数组二叉数

■ 题目描述 【数组二叉树】 二叉树也可以用数组来存储&#xff0c;给定一个数组&#xff0c;树的根节点的值存储在下标1&#xff0c;对于存储在下标N的节点&#xff0c;它的左子节点和右子节点分别存储在下标2*N和2*N1&#xff0c;并且我们用值-1代表一个节点为空。 给定一…

MapReduce分区机制(Hadoop)

在MapReduce中&#xff0c;分区&#xff08;Partitioning&#xff09;是将Map阶段输出的键值对根据某种规则分发到不同的Reduce任务上的过程。这个过程非常关键&#xff0c;因为它直接影响到了Reduce阶段的负载均衡和性能。 1. 哈希分区&#xff08;Hash Partitioning&#xf…

点击按钮出现两次弹窗

事件监听器被绑定了两次&#xff1a;如果不小心为同一个按钮绑定了两次相同的事件监听器&#xff0c;那么点击按钮时&#xff0c;每个监听器都会触发一次弹窗&#xff0c;从而导致弹窗出现两次。 HTML 结构&#xff1a;检查HTML 结构是否正确&#xff0c;没有重复的按钮或者误…

c++ qt6.5 打包sqlite组件无法使用,尽然 也需要dll支持!这和开发php 有什么区别!

运行 程序会默认使用当前所在文件夹中的 dll 文件&#xff0c;若文件不存在&#xff0c;会使用系统环境变量路径中的文件&#xff1b;又或者是需要在程序源代码中明确指定使用的 dll 的路径。由于我安装 Qt 时将相关 dll 文件路径都添加到了系统环境变量中&#xff0c;所以即使…