Ardupilot开源代码之Rover上路 - 后续3

Ardupilot开源代码之Rover上路 - 后续3

  • 1. 源由
  • 2. 深度配置
    • 2.1 编码器
    • 2.2 WS2812B LED灯带
    • 2.3 4GLTE超视距
      • 2.3.1 摄像头
      • 2.3.2 QGC OSD虚拟遥控
      • 2.3.3 QGC外接JoyStick遥控
    • 2.4 伴机电脑供电
  • 3. 实测效果
  • 4. 遗留&后续
    • 4.1 设置倒车按钮
    • 4.2 MP无法连接ESP8266
    • 4.3 高精度编码器问题
    • 4.4 OV5647 720P@30FPS 马赛克问题
      • 4.4.1 现象1 -Copter
      • 4.4.2 现象2 - Rover
      • 4.4.3 噪点马赛克现象
        • 光线不足
        • 感光元件质量
        • 数字处理算法
        • 镜头质量
        • 环境因素
        • 解决方法
  • 5. 参考资料

1. 源由

开源项目最主要的问题就是所有配置是开放式的,程序是迭代式开发的。
尤其随着技术的层出不穷,应用领域和范围的不断拓展,深度配置随着情况不同会遇到各种阻碍。

好了,接下来我们就总结下关于几个比较繁琐的配置问题。

2. 深度配置

2.1 编码器

当前APM不支持高精度编码器,由于时序问题会导致APM程序Crash。

注:建议购买此AKM Rover的选用13PPR的编码器。

为此,这里做了一些Work Around:

  1. 将中断允许的额度扩大6倍

Internal Errors 0x2000000 with WheelEncoder – ArduRover 4.5.2

diff --git a/libraries/AP_HAL_ChibiOS/GPIO.cpp b/libraries/AP_HAL_ChibiOS/GPIO.cpp
index f62bd73c27..55c7dd7c55 100644
--- a/libraries/AP_HAL_ChibiOS/GPIO.cpp
+++ b/libraries/AP_HAL_ChibiOS/GPIO.cpp
@@ -601,7 +601,7 @@ void GPIO::timer_tick()
     // allow 100k interrupts/second max for GPIO interrupt sources, which is
     // 10k per 100ms call to timer_tick()
 #if HAVE_GPIO_PINS
-    const uint16_t quota = 10000U;
+    const uint16_t quota = 60000U;
     for (uint8_t i=0; i<ARRAY_SIZE(_gpio_tab); i++) {
         if (_gpio_tab[i].isr_quota != 1) {
             // Reset quota for next tick
  1. 通过算术逻辑,设计欺骗策略

Are these motors compatible with ArduRover 4.5?

在这里插入图片描述

  1. 放弃2轮编码器,降低中断数量

Rover 4.5.2 encoder GPIO interrupt quota increase causing crash dump, any idea?

  1. 配置左轮编码器
S1 – ESC – left motor
S3 – left motor encoder B
S4 – left motor encoder A

S2 – ESC – right motor
S5 – right motor encoder B
S6 – right motor encoder A

S8 - ground steering servo

在这里插入图片描述在这里插入图片描述

2.2 WS2812B LED灯带

Ardupilot - NeoPixel style WS2812B,灯带参数配置如下:

SERVO13_FUNCTION = 120

NTF_LED_BRIGHT = 3
NTF_LED_LEN = 8
NTF_LED_OVERRIDE = 0
NTF_LED_TYPES = 256

在这里插入图片描述

2.3 4GLTE超视距

2.3.1 摄像头

将四轴上的模块整个搬过来:Ardupilot Rpanion 4GLTE 网络性能测试 - 国内中转

2.3.2 QGC OSD虚拟遥控

在这里插入图片描述

2.3.3 QGC外接JoyStick遥控

  • TX12连接手机
  • Rover连接QGC

此时,将会在设备页面增加一个Joystick的选项,进行手柄的设置(基本步骤大家自己根据4个tab页面一个一个过一下吧)。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.4 伴机电脑供电

之前是采用了一颗14500 850mAH的电池来对RaspberryPi3B+/4GLTE/OV5647供电,工作市场大约20分钟???反正不太够,本次切换到主电源上,由分电板供电。

在这里插入图片描述

3. 实测效果

手机QGC控制,操作有点不稳,大家将就着看看~~~

ArduRover 4.5.2 Rpanion 4G LTE 邻里漫步

ArduRover with Cat

4. 遗留&后续

4.1 设置倒车按钮

类似汽车的操作:

  1. 默认前进挡:深踩油门,加速前进
  2. 挂倒挡:深踩油门,加速后退
  • throttle up from the bottom, speed up and move forward

4.2 MP无法连接ESP8266

虽然EPS32已经是最新的1.2.3版本,但是与MP1.3.81版本仍然连不上。

注:这个问题暂时并不着急,因为已经有伴机电脑连上了,这个小模块就没什么用了。不过后续我们将会跟进下,据反馈可能是模块固件版本是否支持MAVLink2.0的问题。

  • 4.3 DEV can’t connect thru esp8266 wifi
  • ESP8266 WiFi connection
  • 64bit Windows 11 + MP 1.3.81 Can’t UDP connect 8266WiFi module (v1.2.3) #3356

4.3 高精度编码器问题

OpenCTR采用的是STM32 F407,当前采用的H743性能应该远高于407。所以是否有进一步提升的空间,这个可能需要结构代码架构,以及内部设计进行讨论。

但是,这个不影响我们出去浪了。。。。。

  • Internal Errors 0x2000000 with WheelEncoder – ArduRover 4.5.2

4.4 OV5647 720P@30FPS 马赛克问题

遇到一个非常奇怪,但是对于专业人士可能一看就知道问题。摄像头运动、暗场景马赛克现象,下面大家看下一个过程:

4.4.1 现象1 -Copter

  1. 起飞前,静止状态

在这里插入图片描述
2. 起飞移动状态,场景并不是很暗,前面有稍许障碍物,但是出现了马赛克

在这里插入图片描述
3. 继续运动,场景开阔,亮度有所提高,依旧马赛克

在这里插入图片描述
4. 持续一段时间,逐步就没有上述现象了

在这里插入图片描述

4.4.2 现象2 - Rover

  1. 起步前,静态状态,上方隐约有一些暗方块;动态视频持续有

在这里插入图片描述
2. 倒退移动过程中,马赛克方块增多

在这里插入图片描述
3. 移动过程中,右侧暗部较左侧亮部方块更加明显

在这里插入图片描述
4. 该环境持续有马赛克现象

在这里插入图片描述

4.4.3 噪点马赛克现象

摄像头产生噪点和马赛克现象的原因可能有多种,主要包括以下几点:

光线不足
  • 低光环境:在光线不足的环境中,摄像头的感光元件(如CMOS或CCD传感器)需要增加感光度(ISO)来捕捉足够的光线。这会导致图像中出现较多的噪点。
  • ISO过高:提高ISO虽然可以在低光环境中捕捉更多的细节,但也会带来更多的数字噪点,影响图像质量。
感光元件质量
  • 传感器尺寸:较小尺寸的传感器在相同的光线条件下比大尺寸的传感器更容易产生噪点。
  • 传感器技术:较老或低质量的传感器在处理光线时,容易产生更多的噪点。
数字处理算法
  • 噪点处理算法:摄像头内置的噪点处理算法如果不够先进或者设置不当,可能会无法有效地减少噪点,或者在处理噪点时导致图像出现马赛克现象。
  • 压缩算法:图像在压缩过程中,如果压缩率过高,容易出现马赛克现象,特别是在低光或高动态范围的场景中。
镜头质量
  • 镜头光圈:较小的光圈会减少进入传感器的光量,导致低光情况下的噪点增加。
  • 镜头清洁度:镜头表面如果有污渍或灰尘,会影响光线进入传感器的质量,从而导致图像质量下降,出现噪点。
环境因素
  • 温度:传感器在高温环境下工作时,更容易产生噪点。
  • 电磁干扰:周围环境中的电磁干扰也可能影响摄像头的正常工作,导致噪点增加。
解决方法
  • 增加光源:尽可能增加拍摄环境中的光源,减少感光度(ISO)的使用。
  • 选择高质量摄像头:使用传感器和镜头质量更高的摄像头。
  • 使用三脚架:在低光环境中使用三脚架,可以使用较低的ISO和较长的曝光时间,减少噪点。
  • 定期清洁镜头:保持镜头清洁,避免污渍和灰尘影响拍摄质量。
  • 检查摄像头设置:确保摄像头的噪点处理和压缩设置优化。

通过上述方法,可以有效减少摄像头拍摄时出现的噪点和马赛克现象,提升图像质量。

5. 参考资料

【1】Ardupilot开源代码之Rover上路计划
【2】Ardupilot开源代码之Rover上路 - 后续1
【3】Ardupilot开源代码之Rover上路 - 后续2

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

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

相关文章

FFMPEG 解码过程初步学习

1. 视频文件解码过程 解码过程 步骤如下&#xff1a; 视频文件&#xff08;封装格式&#xff0c;MP4/FLV/AVI 等&#xff09;获取视频格式信息等解复用为Stream 流&#xff0c; 准备解码用的Codec将Stream 流 使用解码器解为Raw 格式针 1.1 音视频格式填充&#xff1a; int…

神秘山洞惊现AI绘画至宝Stable Diffusion残卷

最近听到不少大宗门纷纷发声&#xff1a;随着AI神器的现世“程序员职业将不复存在”&#xff0c;“设计图将要失业”。 至此&#xff0c;不少修士开始担忧起来&#xff0c;现出世的AI神器会不会取代掉我辈修士。 其实&#xff0c;至女娲天神创造人类以来&#xff0c;在这漫漫…

接口测试流程详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在讲接口测试流程之前&#xff0c;首先需要给大家申明下&#xff1a;接口测试对于测试人员而言&a…

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

0 工具准备 1.STM32CubeMX1 前言 本文介绍基于STM32CubeMX&#xff0c;使用stm32h743xi的对FDCAN2进行配置的方法。 2 初始化代码生成 2.1 选择FDCAN引脚 本例选择PB5、PB6作为FDCAN2的RX、TX引脚。 2.2 选择FDCAN时钟源 本例选择PLL2Q作为FDCAN时钟源&#xff0c;频率…

深度学习中的优化算法二(Pytorch 19)

一 梯度下降 尽管梯度下降&#xff08;gradient descent&#xff09;很少直接用于深度学习&#xff0c;但了解它是理解下一节 随机梯度下降算法 的关键。例如&#xff0c;由于学习率过大&#xff0c;优化问题可能会发散&#xff0c;这种现象早已在梯度下降中出现。同样地&…

YOLOV10实时端到端目标检测

代码地址&#xff1a;GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 论文地址&#xff1a;https://arxiv.org/pdf/2405.14458 本文介绍了YOLO系列目标检测器在实时和高效方面的优势&#xff0c;但是仍然存在一些缺陷&#xff0c;包括依赖非极大值…

Linux修炼之路之冯系结构,操作系统

目录 一&#xff1a;冯诺依曼体系结构 1.五大组件 2.存储器存在的意义 3.几个问题 二&#xff1a;操作系统 接下来的日子会顺顺利利&#xff0c;万事胜意&#xff0c;生活明朗-----------林辞忧 一&#xff1a;冯诺依曼体系结构 我们当代的计算机的基本构成都是由冯诺依曼…

【Tools】微服务工程中的通用功能模块抽取

Catalog 通用功能模块抽取一、需求二、步骤三、细节 通用功能模块抽取 一、需求 在微服务工程中&#xff0c;可能有一些工具类、实体类是多个微服务通用的&#xff0c;如果在每个微服务中都复制粘贴这些工具类&#xff0c;会产生很多重复性的代码&#xff0c;对开发来说也很繁…

git revert 和 git reset

文章目录 工作区 暂存区 本地仓库 远程仓库需求&#xff1a;已推送到远程仓库&#xff0c;想要撤销操作git revert &#xff08;添加新的提交来“反做”之前的更改&#xff0c;云端会残留上次的提交记录&#xff09;git reset&#xff08;相当于覆盖上次的提交&#xff09;1.--…

Convolutional Occupancy Networks【ECCV】

论文&#xff1a;https://arxiv.org/pdf/2003.04618 代码&#xff1a;GitHub - autonomousvision/convolutional_occupancy_networks: [ECCV20] Convolutional Occupancy Networks 图 1&#xff1a;卷积占据网络。传统的隐式模型 (a) 由于其全连接网络结构&#xff0c;表现能力…

自回归模型(二):具有自回归误差的回归

让我们考虑一个问题&#xff0c;其中我们有一个y变量和多个x变量&#xff0c;它们都被测量为时间序列。举个例子&#xff0c;我们可以将y设定为高速公路上每月的事故数量&#xff0c;而x则表示每月在高速公路上的交通量&#xff0c;观测时间为连续的120个月。一个多元&#xff…

YOLOv10尝鲜测试五分钟极简配置

最近清华大学团队又推出YOLOv10&#xff0c;真是好家伙了。 安装&#xff1a; pip install supervision githttps://github.com/THU-MIG/yolov10.git下载权重&#xff1a;https://github.com/THU-MIG/yolov10/releases/download/v1.0/yolov10n.pt 预测&#xff1a; from ult…

AI爆文写作:或许开放性的标题,才会更让人想点开了解答案

这是新华社公众号的一条推文 从信息传递上来说&#xff0c;新闻标题应该直接&#xff0c;包含关键信息。 但这个标题&#xff0c;却没有直接点名哪个国家&#xff0c;要点进去才能看到。 这就是要让人点开的标题特征&#xff0c;标题没有提供完整信息&#xff0c;是开放性的…

【vue-6】监听

一、监听watch 完整示例代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Documen…

Vue的学习 —— <Echarts组件库技术应用>

目录 前言 正文 一、ECharts技术简介 二、Vue3集成Echarts 1、安装Echarts 2、引入方式 三、Echarts基础篇 1、图表容器及大小 2、样式 2.1 颜色主题 3、坐标轴 5、数据集 5.1 在series中设置数据集 5.2 在dataset中设置数据集 四、常用图表实操 1、柱状图 2、…

关于burp的intruder返回包空白问题

记录一下被自己蠢笑的问题 burp返回包为空怎么办&#xff0c;在查询无果后经过多次试验&#xff0c;确实没有效果 看那三个点还以为加载呢&#xff0c;攻击完了怎么一个显示没有 于是…… 鼠标到三个点&#xff0c;往下一拉 哈哈哈哈哈哈哈&#xff0c;真是被自己给蠢到了

号外!号外,现在用闪侠惠递寄快递便宜啦!

你现在寄快递还是花费很多吗&#xff1f;那么究竟有没有什么办法才能便宜寄快递呢&#xff1f;现在小编告诉你&#xff0c;用闪侠惠递寄快递才是真的便宜呢&#xff01;那么我们究竟怎么才能省钱寄快递呢&#xff1f; 现在我们大家都知道闪侠惠递寄快递是非常的便宜了&#xff…

开放式耳机2024超值推荐!教你如何选择蓝牙耳机!

开放式耳机的便利性让它在我们的日常生活中变得越来越重要。它让我们摆脱了传统耳机的限制&#xff0c;享受到了更多的自由。不过&#xff0c;市面上的开放式耳机种类繁多&#xff0c;挑选一款既实用又实惠的产品确实需要一些小窍门。作为一位对开放式耳机颇有研究的用户&#…

你真正了解 Java 中的 Date 类吗?以及如何正确使用它

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

pygame raycasting纹理

插值原理 原理 color&#xff08;x&#xff09;(x-x1)/(x2-x1)(color2-color1)color1 x1<x<x2 假如说x伪3 那么color&#xff08;3-x1&#xff09;/(x2-x1)(color2-color1)color 可是图片纹理 这里不需要两种颜色&#xff0c;只需要获得碰撞点坐标后&#xff0c;如果…