概述

Alius RC 不仅是一台遥控器,更是一个开放的机器人操控平台。本文档面向系统集成商和机器人方案架构师,介绍如何将 Alius RC 集成到现有的机器人系统中,包括通信架构设计、协议适配方案以及典型应用场景的集成案例。

通信架构

整体拓扑

Alius RC 集成方案支持三种基本通信拓扑:

拓扑 A:直接控制

Alius RC ──── OcuSync 4.0 ──── 机器人(DJI 平台)

最简方案,Alus RC 通过 OcuSync 4.0 直接连接搭载 DJI 飞控/平台的机器人,无需额外中间件。适用场景:野外巡检、单机器人操控。

拓扑 B:桥接控制

Alius RC ──── WiFi 6 / 4G ──── 地面站/边缘网关 ──── 私有协议 ──── 机器人

Alius RC 通过 IP 网络连接地面站或边缘网关,由网关完成协议转换后控制非 DJI 平台的机器人。适用场景:工业 AGV 调度、无人船编队。

拓扑 C:混合控制

              ┌── OcuSync 4.0 ── 无人机(DJI)
Alius RC ──────┤
              └── WiFi 6 ──── 网关 ──── CAN/EtherCAT ──── 机械臂/AGV

一台 Alius RC 同时通过不同链路操控多台异质机器人。适用场景:复杂作业现场的多机器人协同。

通信链路选择指南

场景推荐链路原因
视距内操控 DJI 机器人OcuSync 4.0最低延迟,图传质量最佳
室内操控非 DJI 机器人WiFi 6室内覆盖好,高带宽
远程跨地域操控4G不受距离限制
高可靠性场景OcuSync + 4G 双链路自动切换、链路冗余

协议适配

将非 DJI 机器人接入 Alius RC

Alius RC SDK 提供了 ProtocolAdapter 抽象层,允许将任意机器人平台的通信协议映射到 Alius RC 的标准控制指令和遥测数据结构。

public class CustomRobotAdapter extends ProtocolAdapter {

    private Socket tcpSocket;
    private OutputStream outputStream;
    private InputStream inputStream;

    @Override
    public void connect(String address, int port) {
        // 建立与机器人/网关的 TCP 连接
        new Thread(() -> {
            try {
                tcpSocket = new Socket(address, port);
                outputStream = tcpSocket.getOutputStream();
                inputStream = tcpSocket.getInputStream();
                startReceiveLoop();
                notifyConnected();
            } catch (IOException e) {
                notifyConnectionFailed(e.getMessage());
            }
        }).start();
    }

    @Override
    public void sendMovementCommand(MovementCommand cmd) {
        // 将标准移动指令转换为机器人协议
        byte[] packet = new byte[16];
        ByteBuffer buf = ByteBuffer.wrap(packet);
        buf.order(ByteOrder.LITTLE_ENDIAN);
        buf.put((byte) 0xAA);               // 帧头
        buf.put((byte) 0x01);               // 命令类型:移动控制
        buf.putFloat(cmd.getThrottle());    // 油门
        buf.putFloat(cmd.getYaw());         // 偏航
        buf.putFloat(cmd.getPitch());       // 俯仰
        buf.putFloat(cmd.getRoll());        // 横滚
        buf.put((byte) calcChecksum(packet));

        try {
            outputStream.write(packet);
            outputStream.flush();
        } catch (IOException e) {
            Log.e("Adapter", "Send failed", e);
        }
    }

    private void startReceiveLoop() {
        // 持续接收机器人回传的状态数据
        byte[] buffer = new byte[256];
        while (tcpSocket != null && tcpSocket.isConnected()) {
            try {
                int len = inputStream.read(buffer);
                if (len > 0) {
                    RobotStatus status = parseStatusPacket(buffer, len);
                    // 将机器人状态转换为标准遥测数据
                    notifyTelemetry(status);
                }
            } catch (IOException e) {
                notifyDisconnected();
                break;
            }
        }
    }
}

注册自定义适配器

ConnectionManager connMgr = AliusRCManager.getInstance()
    .getConnectionManager();

// 注册适配器
CustomRobotAdapter adapter = new CustomRobotAdapter();
connMgr.registerProtocolAdapter("custom_robot_v1", adapter);

// 使用适配器连接
connMgr.connectViaAdapter("custom_robot_v1", "192.168.1.100", 8888);

标准控制指令结构

为便于协议适配,Alius RC SDK 定义了统一的标准控制指令结构:

public class MovementCommand {
    private float throttle;  // 油门/前进后退 (-1.0 到 1.0)
    private float yaw;       // 偏航/转向 (-1.0 到 1.0)
    private float pitch;     // 俯仰 (-1.0 到 1.0)
    private float roll;      // 横滚/平移 (-1.0 到 1.0)
    private float altitude;  // 高度控制 (-1.0 到 1.0)
    private long timestamp;  // 指令时间戳 (ms)
    private int sequenceId;  // 序列号,用于丢包检测
}

public class StandardTelemetry {
    private double latitude, longitude;  // GPS 坐标
    private double altitude;             // 高度 (m)
    private double speedX, speedY, speedZ; // 速度 (m/s)
    private double roll, pitch, yaw;     // 姿态角 (度)
    private int batteryPercent;          // 电量百分比
    private double voltage;              // 电压 (V)
    private int gpsSatellites;           // GPS 卫星数
    private int signalStrength;          // 信号强度 (0-100)
    private long timestamp;              // 数据时间戳
}

典型集成案例

案例一:野外电力巡检无人机

系统组成:Alius RC + DJI Matrice 350 RTK + 红外热成像云台

集成方案:拓扑 A(直接控制)

通信链路:OcuSync 4.0,作业半径 5-10km

关键集成点

  1. 航线规划:在 Alius RC 上运行自定义航线规划应用,通过 MSDK WaypointMission 下发航点
  2. 云台控制:波轮映射为云台俯仰,C1 键切换可见光/红外
  3. AI 缺陷识别:在遥控器端运行轻量化 AI 模型,实时分析红外图像,标记可疑发热点
  4. 巡检报告:飞行结束后自动生成包含 GPS 坐标、热成像截图和缺陷分类的报告
// 航线任务示例
WaypointMission.Builder builder = new WaypointMission.Builder();
builder.addWaypoint(new Waypoint(39.9087, 116.3975, 50.0f));
builder.addWaypoint(new Waypoint(39.9090, 116.3980, 50.0f));
builder.setMaxFlightSpeed(10.0f);
builder.setFinishedAction(FinishedAction.GO_HOME);

WaypointMissionOperator operator = 
    SDKManager.getInstance().getWaypointMissionOperator();
operator.loadMission(builder.build());
operator.startMission(e -> {
    if (e == null) {
        Log.i("Mission", "Waypoint mission started");
    }
});

案例二:工业 AGV 调度终端

系统组成:Alius RC + 边缘网关 + AGV 车队(非 DJI 平台)

集成方案:拓扑 B(桥接控制)

通信链路:WiFi 6 → 边缘网关 → CAN/EtherCAT → AGV

关键集成点

  1. 协议适配:通过 ProtocolAdapter 将 AGV 的 CAN 协议映射为标准控制指令
  2. 多车切换:在遥控器界面上选择当前控制的 AGV 编号,切换控制对象
  3. 状态监视:接收并显示每台 AGV 的电量、位置、任务状态
  4. 安全互锁:紧急刹车通过 OcuSync 和 WiFi 双链路同时下发,确保安全

案例三:应急救援消防机器人

系统组成:Alius RC + 消防机器人 + 气体传感器 + 热成像

集成方案:拓扑 C(混合控制)

通信链路:OcuSync 4.0(视频回传) + 4G(传感器数据和控制指令备份)

关键集成点

  1. 双链路冗余:OcuSync 作为主链路传输视频和控制指令,4G 作为备份链路
  2. 传感器融合显示:将气体浓度、温度等传感器数据叠加显示在图传画面 OSD 层
  3. 热成像画中画:同时显示可见光和热成像画面,辅助火源定位
  4. 一键返航/脱困:在信号丢失时自动执行预设的脱困/返航策略
// 传感器数据 OSD 叠加示例
OSDOverlayManager osm = fpvView.getOSDOverlayManager();

osm.addOverlayItem(new OSDTextItem.Builder()
    .setText("CO: 12ppm")
    .setPosition(OSDPosition.TOP_LEFT)
    .setColor(Color.YELLOW)
    .build());

osm.addOverlayItem(new OSDTextItem.Builder()
    .setText("TEMP: 156°C")
    .setPosition(OSDPosition.TOP_LEFT, 0, 30)
    .setColor(Color.RED)
    .build());

osm.addOverlayItem(new OSDGaugeItem.Builder()
    .setLabel("Signal")
    .setValue(signalStrength)
    .setPosition(OSDPosition.TOP_RIGHT)
    .build());

安全机制

通信安全

层级措施
OcuSyncAES-256 加密,跳频扩频
WiFiWPA3-Enterprise,证书认证
4GIPSec VPN 隧道,端到端加密
应用层指令签名校验,防重放攻击

安全互锁

Alius RC SDK 内置多重安全互锁机制:

  • 心跳检测:控制器与应用之间 10Hz 心跳,超过 500ms 未收到心跳自动触发悬停
  • 摇杆失联保护:摇杆信号中断 > 200ms 自动归零所有控制通道
  • 地理围栏:可设置飞行/行驶区域边界,越界自动执行预设动作
  • 指令限幅:单次指令的幅度变化受限于预设安全范围,防止失控
// 安全配置示例
SafetyConfig config = new SafetyConfig.Builder()
    .setHeartbeatTimeout(500)              // ms
    .setStickLostAction(SafetyAction.HOVER)
    .setGeofenceEnabled(true)
    .setMaxCommandDelta(0.3f)              // 单帧最大变化幅度
    .setFailsafeAction(SafetyAction.RETURN_HOME)
    .build();

AliusRCManager.getInstance().setSafetyConfig(config);

地面站多屏方案

当需要将遥控器画面投射到大屏或头戴显示器时:

Alius RC (触控操作)

    ├── HDMI 2.0 ──── 外接大屏(图传画面 + 仪表盘)

    └── OcuSync 4.0 ──── 机器人

HDMI 输出支持独立显示模式,可在 Alius RC Manager 中配置:

  • 镜像模式:外屏与遥控器屏幕显示相同内容
  • 扩展模式:遥控器屏幕显示操控界面,外屏全屏显示图传画面
  • 仪表盘模式:外屏显示仪表盘(地图 + 状态面板),遥控器显示图传和控制

集成检查清单

在完成系统集成后,请逐项验证:

  • 通信链路建立正常,延迟和带宽符合预期
  • 控制指令响应正确,无异常延迟或抖动
  • 遥测数据准确,更新频率符合规格
  • 安全互锁机制正常工作(心跳、失联保护、地理围栏)
  • 紧急刹车可在所有工况下触发
  • 多种通信链路切换无中断
  • HDMI 外接显示正常
  • 长时间运行无内存泄漏或性能衰减
  • 极端环境下(高温/低温/振动)工作正常

下一步