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的代码。从逻辑的角度,先整体设计上看一个大概先。