四足机器狗遥控系统方案

5 阅读4分钟

遥控器核心逻辑是:手柄MCU固件负责极速响应物理输入,Android手机负责富媒体交互与中继,机器狗负责核心运动控制。


1、系统软件可划分为三个核心层级,通过异构协议进行耦合

    1.1  感知输入层 (MCU 固件):物理按键/摇杆信号采集 -> 协议封装

    1.2  交互与中转层 (Android App):数据转发 -> UI 渲染 -> 视频流解码。

    1.3  核心执行层 (Linux Robot OS):指令解析 -> 运动学计算 -> 电机驱动 & 视频流推流。

2、各模块详细技术解决方案

2.1  遥控器手柄(MCU 固件)

 硬件选型:推荐 STM32F4 或 ESP32-S3。

 技术方案:

  协议选型:USB HID (推荐) ,将手柄伪装成标准的“游戏手柄”。

  优点: Android 系统原生支持,插上即用,延迟最低。

  采集逻辑:

摇杆:12-bit ADC 采样,实现死区补偿和指数映射算法。

按键:GPIO 中断或 10ms 定时扫描,硬件消抖。

通信:通过 USB-C 接口与手机连接(从设备模式)。

  1. 2 Android 手机设备(控制中心)

技术栈选型:Kotlin + NDK (C++)。

UI 框架:Jetpack Compose。

高性能组件:视频流渲染走 C++ (GStreamer/FFmpeg) 结合 OpenGLES/Vulkan,通过 JNI 与 Kotlin 通信,避免 Java 层的 GC 导致视频卡顿。

功能模块:

InputDispatcher 监听:捕获 GenericMotionEvent和KeyEvent。

网络引擎:使用 Netty (UDP) 进行控制信令传输,保证高并发和低延迟。

图传模块:集成 GStreamer Android SDK。

2.3  机器狗端 (Linux OS )

技术方案:

指令接入:编写一个 joy_bridge 节点,接收 Android 发来的 UDP 包,并转换为 ROS2 标准的 sensor_msgs/msg/Joy 或自定义控制指令。

图传推流:使用 Rockchip MPP (或 Nvidia NVENC) 硬件编码器,将摄像头数据压缩为 H.264,封装为 RTP 包发出。

安全看门狗:在控制器节点设置 Timeout 检测,若 200ms 未收到遥控器包,自动进入保护状态。

3、 Android 端遥控软件选型与 AOSP 修改建议

3.1 软件代码选型建议

四足狗状态数据刷新极快(IMU、足端力反馈等),Jetpack Compose 的重组机制配合 StateFlow 能更高效地处理高频数据。

通信协议选型:使用 Protobuf。在 Android 和 Linux 之间定义统一的 .proto 文件,确保按键事件到机器狗解析过程中的数据紧凑且无类型偏差。

3.2. 是否需要修改 Android AOSP?

一般情况下不需要修改 AOSP 底层,但需要进行“系统级应用”权限配置。

3.2.1 无需修改的情况:

如果手柄走 标准 USB HID 协议,Android 系统会将按键自动识别为 KeyEvent。Android App 只需要在 onKeyDown 或 onGenericMotionEvent 中监听即可。

3.2.2 建议修改/配置的情况:

沉浸式模式与按键拦截:如果你希望屏蔽手机的“返回键”、“Home键”以防止操作员误触退出,通常需要通过 Device Administration (设备管理器) 模式 或修改 AOSP 的 PhoneWindowManager 来禁用系统导航栏。

USB 自动拉起:在 AOSP 的 UsbHostManager 中配置特定的 vendor-id,实现手柄一插上,你的 App 自动弹出并获得 USB 权限,无需用户点确认框。

驱动优化:如果物理手柄有特殊的震动反馈或背光灯控制(非标准 HID 协议),则需要在 Linux Kernel 层添加对应的驱动代码。

4、完整解决方案工作流 (时序逻辑)

4.1 初始化:手柄 MCU 通过 USB 握手,Android 识别为输入设备。

Android App 通过 Wi-Fi Direct (P2P) 与机器狗建立长连接。

  4.2 输入采集:操作员按下按键,MCU 毫秒级上报 HID 报文。

  4.3 App 处理:

        控制链:App 接收输入 -> 转换指令 -> UDP 异步发送(加密/校验)。

        反馈链:GStreamer 接收 RTP 包 -> 硬件解码 -> 渲染到 Compose AndroidView 画布。

  4.4 机器狗执行:机器狗节点接收 UDP 指令 -> 注入运动学控制循环 (Locomotion Loop) -> 电机转动。

5、 核心技术指标建议

       端到端控制延迟:应控制在 30ms 以内。

       图传延迟:在 1080P/30fps 下,应控制在150ms以内。

       抗丢包率:UDP 通道需配合简单的 ARQ (自动重传请求) 或前向纠错 (FEC),保证在 Wi-Fi 信号抖动时控制不中断。