RubyFPV开源代码之系统简介

RubyFPV开源代码之系统简介

  • [1. 源由](#1. 源由)
  • [2. 工程架构](#2. 工程架构)
  • [3. 特性介绍(软件)](#3. 特性介绍(软件))
    • [3.1 特性亮点](#3.1 特性亮点)
    • [3.2 数字优势](#3.2 数字优势)
    • [3.3 使用功能](#3.3 使用功能)
  • [4. DEMO推荐(硬件)](#4. DEMO推荐(硬件))
    • [4.1 天空端](#4.1 天空端)
    • [4.2 地面端](#4.2 地面端)
    • [4.3 按键硬件](#4.3 按键硬件)
      • [Raspberry Pi](#Raspberry Pi)
      • [Radxa 3W/E/C](#Radxa 3W/E/C)
  • [5. 软件设计](#5. 软件设计)
  • [6. 参考资料](#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. 参考资料

相关推荐
Main. 242 小时前
Linux的基本指令(上)
linux·服务器
头铁散人4 小时前
IMX6ull项目环境配置
linux·运维·服务器
怡步晓心l7 小时前
Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到
linux·运维·服务器
customer087 小时前
【开源免费】基于SpringBoot+Vue.JS校园失物招领系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
SomeBottle8 小时前
【小记】在 Google Colab 等平台上运行 GPU 容器
linux·python·docker·学习笔记·容器化·斩虫
金灰9 小时前
Linux文本处理三剑客:awk、sed、grep
linux·运维·服务器·chrome·安全
一只小爪子9 小时前
vim 中粘贴内容时提示: -- (insert) VISUAL --
linux·编辑器·vim
千航@abc9 小时前
vim如何设置制表符表示的空格数量
linux·编辑器·vim
FIT2CLOUD飞致云9 小时前
案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设
数据分析·开源·数据可视化·dataease·数据大屏
小小鱼er9 小时前
shell编程-awk使用系统学习
linux