RubyFPV开源代码之系统简介
RubyFPV开源代码之系统简介
- 1. 源由
- 2. 工程架构
- 3. 特性介绍(软件)
- 3.1 特性亮点
- 3.2 数字优势
- 3.3 使用功能
 
- 4. DEMO推荐(硬件)
- 4.1 天空端
- 4.2 地面端
- 4.3 按键硬件
- Raspberry Pi
- Radxa 3W/E/C
 
 
- 5. 软件设计
- 6. 参考资料
1. 源由
RubyFPV以前是闭源的,不过Jan 26, 2023 PetruSoroaga上传了代码。详见:Github - RubyFPV
目前状态是代码已经非常好的与OpenIPC项目兼容,在地面端和天空端使用。Ruby 是一个完整的平台(硬件和软件),专为控制和管理无人机、飞行器、汽车以及其他遥控车辆而设计,同时提供多个点之间可靠的端到端数字无线电链路。
为了这个,就有必要学习和简单了解下。
rubyFPV 首页宣传视频
2. 工程架构
all├──> vehicle //天空端│   ├──> ruby_start: .o│   ├──> ruby_utils │   │   ├──> ruby_logger: .o│   │   ├──> ruby_initdhcp: .o│   │   ├──> ruby_sik_config: .o│   │   ├──> ruby_alive: .o│   │   ├──> ruby_video_proc: .o│   │   ├──> ruby_update: .o│   │   └──> ruby_update_worker: .o│   ├──> ruby_tx_telemetry: .o│   └──> ruby_rt_vehicle: .o├──> station //地面端│   ├──> (*)ruby_start│   ├──> (*)ruby_utils │   ├──> ruby_controller: .o│   ├──> ruby_rt_station: .o│   ├──> ruby_tx_rc: .o│   ├──> ruby_rx_telemetry: .o│   └──> ruby_player_radxa: .o├──> ruby_i2c: .o├──> ruby_plugins │   ├──> ruby_plugin_osd_ahi: .o│   ├──> ruby_plugin_gauge_speed: .o│   ├──> ruby_plugin_gauge_altitude: .o│   ├──> ruby_plugin_gauge_ahi: .o│   └──> ruby_plugin_gauge_heading: .o├──> ruby_central: .o└──> tests├──> test_drm: .o├──> test_gpio: .o├──> test_log: .o├──> test_port_rx: .o├──> test_port_tx: .o└──> test_link: .o
3. 特性介绍(软件)
3.1 特性亮点
-  支持433/868/915MHz和2.4/5.8GHz频段的多重冗余无线电链路: 
 不同频段(433MHz、868/915MHz、2.3GHz、2.4GHz、2.5GHz和5.8GHz)的多重冗余无线电链路可在车辆、地面控制站和中继之间同时使用,以提高连接的可靠性、链路质量和通信范围。
-  自适应视频、自适应无线电链路、重传机制: 
 Ruby会在无线电条件恶化时自动调整视频码率、视频编码质量、无线电数据速率和无线电调制方式,以保持视频流的稳定性。此外,Ruby还会在无线电条件过度恶化时自动执行重传和错误校正。
-  中继功能: 
 系统中可以添加移动(车辆)或固定中继节点,以实现更远距离的通信并突破视线范围限制。
 了解更多关于Ruby中继功能的工作原理及配置方法:中继无线电链路:工作原理及配置方法。
-  加密功能: 
 无线电链路可实现端到端加密,确保只有授权组件能够解码无线电数据。
-  实时视频、遥测、远程控制、辅助与自定义数据流: 
 Ruby默认支持无人机所需的所有数据能力,包括实时视频流(最高可达4K分辨率)、遥测、控制以及用户自定义数据流。
-  丰富的用户界面和控制界面: 
 提供多种可配置的OSD屏幕、仪表、小部件以及第三方开发的用户界面插件,可供切换和操作。
3.2 数字优势
- 无噪声的视频传输:提供清晰的视频画面。
- 支持数据传输:可以同时发送遥测数据和其他自定义数据。
- 错误校正与数据可靠性:提升通信的稳定性和准确性。
- 可配置参数更多:不仅支持频率和频段的设置,还支持分辨率、帧率、抗干扰能力等视频链路相关参数的配置。
- 支持特殊场景:例如3D视频、摄像头切换等功能几乎无需额外配置即可实现。
3.3 使用功能
- 双向无线电链路:可根据无线电条件调整视频质量,从而提高视频流的质量;
- 视频录制功能;
- 远距离无线电链路:无线电链路的范围(根据配置)在2公里至40公里之间(这是目前测试的最大范围);
- 低端到端视频延迟:在当前硬件上延迟最低可达40毫秒。遥测和远程控制的延迟更低,少于10毫秒;
- 多机绑定:支持绑定多个模型(类似普通的遥控器),并能实时切换;
- 车辆实时控制与遥测数据;
- 观众模式:允许其他人作为观众观看实时视频流;
- 通过无线电链路更新车辆软件;
- 多种OSD布局;
- 详细的链路质量和视频解码统计信息;
- 多摄像头配置:支持实时切换不同摄像头配置以适应不同飞行条件;
- 双向遥测和自定义数据流:遥测支持MAVLink和LTM协议,其他协议仍在开发中;
- 丰富的设置和参数:所有设置和参数均可通过OSD和菜单实时更改。
4. DEMO推荐(硬件)

- OpenIPC
SSC338Q/SSC30KQ
IMX335, IMX415
- Raspberry
Zero 2/Pi3/Pi4
Raspberry Pi v1,v2, HQ cameras
- Radxa 3W/E/C
RK3566
- Radio
433 Mhz band SiK, ELRS radio modules
868/915 Mhz band SiK, ELRS radio modules
2.3/2.5 Ghz band Atheros chipsets AR9271 cards
2.4 Ghz band Atheros chipsets AR9271 cards
5.8 Ghz band Realtek chipsets RTL8812AU, RTL8811AU, RTL8812EU cards
4.1 天空端
搭配:SBC + Camera + BEC/UBEC + RF Card(s)
- 1 SBC (Single Board Computer, ie Raspberry, OpenIPC hardware camera, see below);
- 1 camera (see below the full list of supported camera types);
- 1 BEC/UBEC or any good 5V power supply (for providing a solid, high current capable, 5V supply to the PI board and network cards);
- 1+ radio card(s) in 433/868/915Mhz, 2.4Ghz or 5.8Ghz bands(multiple can be used for Rx diversity or multiple radio links); see the list below of all supported radio cards.

4.2 地面端
搭配:SBC + BEC/UBEC + RF Card(s) + HDMI Display + 4 Button
- 1 SBC (Single Board Computer, ie Raspberry, Radxa; see below);
- 1 BEC/UBEC or any good 5V power supply;
- 1+ radio card(s) in 433/868/915Mhz, 2.4Ghz or 5.8Ghz bands(multiple can be used for Rx diversity or multiple radio links); see the list below of all supported radio cards.
- 1 HDMI display; Or any device that can display HDMI;
- 4 (+3 additional optional) Push buttons. This is for the menu navigation on the controller. If you choose to use a rotary encoder for menu navigation, or a USB keyboard, then you don’t need these push buttons.

4.3 按键硬件
类似这种5向按键就非常适用,性价比超高!

Raspberry Pi


Radxa 3W/E/C

5. 软件设计
TBD. 后续逐步给出,暂时还没有去看RubyFPV的代码。从逻辑的角度,先整体设计上看一个大概先。
6. 参考资料
- https://rubyfpv.com/
- Github - RubyFPV
相关文章:
 
RubyFPV开源代码之系统简介
RubyFPV开源代码之系统简介 1. 源由2. 工程架构3. 特性介绍(软件)3.1 特性亮点3.2 数字优势3.3 使用功能 4. DEMO推荐(硬件)4.1 天空端4.2 地面端4.3 按键硬件Raspberry PiRadxa 3W/E/C 5. 软件设计6. 参考资料 1. 源由 RubyFPV以…...
 
麦田物语学习笔记:创建TransitionManager控制人物场景切换
基本流程 制作场景之间的切换 1.代码思路 (1)为了实现不同场景切换,并且保持当前的persistentScene一直存在,则需要一个Manager去控制场景的加载和卸载,并且在加载每一个场景之后,都要将当前的场景Set Active Scene,保证其为激活的场景,在卸载的时候也可以方便调用当前激活的场…...
后端SpringBoot学习项目-用户管理-增删改查-service层
仓库地址 在初版代码中,已经实现了基础的增删改查。 但是,逻辑处理都放在Controller层中并没有分为Service层,所以,代码升级时候必须补充上去。 代码结构 升级后的代码结构有所变化。 --common 公共插件 --controller…...
 
机器学习11-学习路径推荐
机器学习11-学习路径推荐 本文希望摒除AI学习商业宣传要素,推荐一条极简的AI学习路线!推荐内容均为在线免费内容,如果有条件可以咨询专业的培训机构! 文章目录 机器学习11-学习路径推荐[toc] 1-AI培训路线第一阶段 Python-人工智能…...
 
[ACTF2020 新生赛]Upload1
题目 以为是前端验证,试了一下PHP传不上去 可以创建一个1.phtml文件。对.phtml文件的解释: 是一个嵌入了PHP脚本的html页面。将以下代码写入该文件中 <script languagephp>eval($_POST[md]);</script><script languagephp>system(cat /flag);&l…...
 
【PyTorch】0.初识:从吃货角度理解张量
0.初识张量 PyTorch 是一个 Python 深度学习框架,它将数据封装成张量(Tensor)来进行运算。PyTorch 中的张量就是元素为同一种数据类型的多维矩阵。在 PyTorch 中,张量以 "类" 的形式封装起来,对张量的一些运…...
 
医学图像分析工具09.1:Brainstorm安装教程
1. 安装前准备 **官方安装包和数据:**https://neuroimage.usc.edu/bst/download.php **官方安装教程:**https://neuroimage.usc.edu/brainstorm/Installation Matlab 版本要求: 有 Matlab: R2009b (7.9) 或更高版本没有 Matlab&…...
 
springboot基于Spring Boot的智慧养老服务系统的设计与实现
系统介绍: 智慧养老服务系统是一种运用现代科技手段,整合各类养老资源,为老年人提供全方位、个性化服务的综合性平台。该系统通过智能化设备、大数据分析、云计算等技术,实现对老年人健康状况、生活需求的实时监控与精准匹配&…...
Linux内核中IPoIB驱动模块的初始化与实现
InfiniBand(IB)是一种高性能的网络互连技术,广泛应用于高性能计算(HPC)和数据中心。为了在InfiniBand网络上运行标准的IP协议栈,Linux内核提供了IP over InfiniBand(IPoIB)驱动模块。IPoIB允许在InfiniBand网络上传输IPv4和IPv6数据包,从而使得现有的IP应用程序能够无…...
 
WPS计算机二级•幻灯片的基础操作
听说这是目录哦 PPT的正确制作步骤🛣️认识PPT界面布局🏜️PPT基础操作 快捷键🏞️制作PPT时 常用的快捷技巧🏙️快速替换PPT的 文本字体🌃快速替换PPT 指定文本内容🌅能量站😚 PPT的正确制作步…...
 
.NET9增强OpenAPI规范,不再内置swagger
ASP.NETCore in .NET 9.0 OpenAPI官方文档ASP.NET Core API 应用中的 OpenAPI 支持概述 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/openapi/overview?viewaspnetcore-9.0https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/ope…...
 
基于微信小程序的民宿预订管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
 
网络(三) 协议
目录 1. IP协议; 2. 以太网协议; 3. DNS协议, ICMP协议, NAT技术. 1. IP协议: 1.1 介绍: 网际互连协议, 网络层是进行数据真正传输的一层, 进行数据从一个主机传输到另一个主机. 网络层可以将数据主机进行传送, 那么传输层保证数据可靠性, 一起就是TCP/IP协议. 路径选择: 确…...
 
【深度解析Java 20天速成】04_IDEA的安装与使用
【Why IDEA ?】 【注】JetBrains官方说明: 尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因为这些用户更有可能参加调查。 此外,2022年,某美国软件开发商在对近千名专业的Ja…...
gitlab处理空文件夹的提交或空文件夹提交失败
问题描述 厂家发给了我一个压缩包文件,压缩包解压之后本地编译没问题;推送到gitlab之后,再编译就报错了; 问题原因 经过分析之后发现,压缩包解压之后存在很多空文件夹;但是gitlab推送的时候,…...
 
计算机网络之链路层
本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_bilibili》 02 数据链路层 在网上看到其他人做了详细的笔记,就不再多余写了,直接参考着学习吧。 1 详解数据链路层-数据链路层的功能【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51C…...
Arduino大师练成手册 -- 读取红外接收数据
硬件连接 连接引脚: 将红外接收器的 VCC 引脚连接到 Arduino 的 5V 引脚。 将红外接收器的 GND 引脚连接到 Arduino 的 GND 引脚。 将红外接收器的 OUT 引脚连接到 Arduino 的数字引脚(例如 D11)。 安装必要的库 在 Arduino IDE 中&#…...
 
【Efficient AIGC】SiTo: Similarity-based Token Pruning (AAAI-2025)
文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning背景介绍方法结果消融 文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Prun…...
 
数据标注开源框架 Label Studio
数据标注开源框架 Label Studio Label Studio 是一个开源的、灵活的数据标注平台,旨在帮助开发者和数据科学家轻松创建高质量的训练数据集。它支持多种类型的数据(如文本、图像、音频、视频等)以及复杂的标注任务(如分类、命名实体…...
 
MyBatis最佳实践:MyBatis 框架的缓存
缓存的概念: 在内存中临时存储数据,速度快,可以减少数据库的访问次数经常需要查询,不经常修改的数据,不是特别重要的数据都适合存储到缓存中 缓存的级别: 一级缓存(默认开启):SqlSession 级别 …...
 
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
 
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了  先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
 
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
 
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
 
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
 
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
 
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
