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 AS2 – ESC – right motor
S5 – right motor encoder B
S6 – right motor encoder AS8 - ground steering servo

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

2.2 WS2812B LED灯带

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

SERVO13_FUNCTION = 120NTF_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

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

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

相关文章

没有括号的字符串四则运算

目录 问题分析与解答evalsympy自己编写逆波兰表达式拓展思考参考资料 问题 用代码实现一个method&#xff0c;这个method的入参是一个字符串&#xff0c;这个字符串是一个四则运算的算式&#xff0c;比如“12*34/2-3”&#xff1b;返回值是这个算式的运算结果&#xff0c;比如…

【知识拓展】ngrok-高性价比的内网穿透工具

前言 使用google colab运行的web应用无法打开进行测试。 第一时间想到是否有相关工具能将内网映射到外网供访问。于是找到了ngrok。 ngrok 是什么&#xff0c;我们为什么要使用它&#xff1f; ngrok官网是一个全球分布的反向代理&#xff0c;无论您在哪里运行&#xff0c;它…

【车载开发系列】Autosar中的VFB

【车载开发系列】Autosar中的VFB # 【车载开发系列】Autosar中的VFB 【车载开发系列】Autosar中的VFB一. 什么是VFB二. VFB的优点与缺点1&#xff09;VFB的缺点2&#xff09;VFB的好处 三. RTE与VFB之间关系四. 总线架构模式 一. 什么是VFB Virtual Functional Bus。它就是虚拟…

解决Vue项目部署到服务器之后前端向后端发送请求报错404的问题(centos使用docker实现nginx的反向代理)

场景重现&#xff1a; 由于现在流行前后端分离的部署方式&#xff0c;但是按照正确方法部署&#xff08;如何部署可参考&#xff1a;&#xff09;之后&#xff0c;发现明明前后端都部署好了并且运行成功&#xff0c;但是前端发送的请求都是404。明明在vue项目中配置了跨域的相…

【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理&#xff0c;以及遇到的困难和总结 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 什么是搜索引…

Sql语句DML操作 增删改

DML 数据操作 增删改 插入数据 方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);方式2: INSERT INTO 表名 set 列名1值1,..列名;方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);方式4: INSERT INTO 表名(列1,列2……

AJAX初级

AJAX的概念&#xff1a; 使用浏览器的 XMLHttpRequest 对象 与服务器通信 浏览器网页中&#xff0c;使用 AJAX技术&#xff08;XHR对象&#xff09;发起获取省份列表数据的请求&#xff0c;服务器代码响应准备好的省份列表数据给前端&#xff0c;前端拿到数据数组以后&#xf…

常见网络协议及端口号

https://www.cnblogs.com/Snail-yellow/p/17722411.html 常见的网络协议-腾讯云开发者社区-腾讯云 常见的网络协议知识整理_五种常用的网络协议-CSDN博客 端口 协议 常见的网络协议_计算机网络协议有哪些csdn-CSDN博客 ​​​​​​​​​​​​​​协议 常见的网络协议知…

二叉树前中后序遍历

前言 个人小记 一、代码如下 #include<stdio.h> #include <stdlib.h> #include <time.h> #define MAX_NODE 10 #define p()\ {\printf("\n");\ } typedef struct Node {int key;int lfag,rfag;struct Node *lchild,*rchild; }Node;Node* init_no…

TENT: FULLY TEST-TIME ADAPTATION BY ENTROPY MINIMIZATION--论文笔记

论文笔记 资料 1.代码地址 https://github.com/DequanWang/tent 2.论文地址 https://arxiv.org/abs/2006.10726 1论文摘要的翻译 在这种完全测试时适应的情况下&#xff0c;模型只有测试数据和自身参数。我们建议通过测试熵最小化&#xff08;tent&#xff09;进行适应&…

虚拟化技术[2]之存储虚拟化

存储虚拟化 存储虚拟化简介存储虚拟化一般模型存储虚拟化实现方式基于主机存储虚拟化基于存储设备存储虚拟化基于网络存储虚拟化 案例分析&#xff1a;VMFSVMFS功能 存储虚拟化简介 存储虚拟化&#xff1a;将存储网络中的各个分散且异构的存储设备按照一定的策略映射成一个统一…

C++学习笔记(19)——模板

目录 模板参数与非类型模板参数 模板参数 类型模板参数——传递类型 非类型模板参数——传递数量 C11希望array替代静态数组&#xff0c;但实际上vector包揽了一切 模板总结 优点&#xff1a; 缺点&#xff1a; 模板特化&#xff1a;针对某些类型进行特殊化处理 特化…

大模型的快速成长

大模型的关键要素有三点,数据&#xff0c;算法和进化的方式. 首先&#xff0c;数据是基础。大量且高质量的数据对于大模型的成长至关重要。不断收集涵盖更广泛领域、更丰富细节的数据&#xff0c;并且确保数据的准确性和代表性。只有在充分的数据滋养下&#xff0c;大模型才能更…

P451 try-Catch异常处理

//基本使用演示代码 public static void main(String[] args) { int num1 10; int num2 0; try { int res num1 / num2; }catch (Exception e) { System.out.println(e.getMessage()); } } public class TryCatchDetail { public static void main(String[] args) { //1. 如…

ubuntu20.04 终端 设置字体大小

##ubuntu20.04 Terminal 终端 设置字体大小 ##打开Terminal 终端&#xff0c;点击Preferences设置字体大小 ##点击unnamed选项卡&#xff0c;打钩Custom font 设置 字体大小

SQL、Mongo、Redis一般适用于那些场景

在一个项目中同时使用 MySQL、Redis 和 MongoDB 是相对常见的做法&#xff0c;因为它们各自具有不同的特点和适用场景&#xff0c;可以组合使用以满足不同的需求。下面是它们的一些常见用途和特点&#xff1a; MySQL&#xff1a; 关系型数据库&#xff1a; MySQL 是一个传统的关…

topsis综合评价法

TOPSIS综合评价法&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09;是一种多目标决策分析中的有效方法&#xff0c;也被称为优劣解距离法。该方法基于评价对象与理想化目标的接近程度进行排序&#xff0c;从而评估现有对象的相对优劣。…

三前奏:获取/ 读取/ 评估数据【数据分析】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

二叉树——堆详解

目录 前言&#xff1a; 一、堆的结构 二、向上调整和向下调整 2.1 向上调整 2.2 向下调整 2.3 向上调整和向下调整时间复杂度比较 三、堆的实现 3.1 堆的初始化 3.2 堆的销毁 3.3 堆的插入 3.4堆的删除 3.5 取堆顶元素 3.6 对堆判空 四、堆排序 五、TOP-K 问题 六、代码总…

基于Vue2与3版本的Element UI与Element Plus入门

基于Vue2与3版本的Element UI与Element Plus入门 Element UI 入门安装引入 Element UI使用组件 Element Plus 入门安装引入 Element Plus使用组件 常用组件自定义主题兼容性和升级社区和支持 Element UI 入门 Element UI 是基于 Vue 2.0 的桌面端组件库&#xff0c;它提供了一…