单摇杆遥控器
坐标系定义
| 摇杆 | 控制 |
|---|---|
| Y | linear (线速度) |
| X | angular (角速度) |
控制坐标系
+X
↑
│
│
-Y ◄────────┼──────► +Y
│
│
▼
+Z(朝天)
连续控制
↑
↖ ↗
← →
↙ ↘
↓
| 摇杆 | linear | angular |
|---|---|---|
| ↑ | + | 0 |
| ↓ | - | 0 |
| ← | 0 | - |
| → | 0 | + |
| ↖ | + | - |
| ↗ | + | + |
| ↙ | - | - |
| ↘ | - | + |
控制分辨率
| 控制量 | 单方向有效档位 | 全行程有效档位 | 最大值 | 平均控制粒度 |
|---|---|---|---|---|
| linear_signed | ≈50 | ≈100 | ±1.0 | ≈0.02 |
| vx | ≈50 | ≈100 | ±1.3 m/s | ≈0.026 m/s |
| angular_signed | ≈55 | ≈110 | ±1.0 | ≈0.018 |
| ω | ≈55 | ≈110 | ±4.8 rad/s | ≈0.044 rad/s |
RPM:4轮驱动电机转速和转向电机角度
| 控制方式 | 摇杆有效档位 | 最大 RPM | 平均控制粒度 |
|---|---|---|---|
| 直行 | ≈50 | 90 | ≈1.8 RPM |
| 原地旋转 | ≈55 | 40 | ≈0.73 RPM |
Lora
LoRa(Long Range)是一种物理层无线调制技术,由 Semtech 提出。
| 特性 | LoRa | Wi-Fi | 蓝牙 |
|---|---|---|---|
| 距离 | 1~10 km(空旷) | 30~100 m | 10~50 m |
| 速率 | 0.3~50 kbps | 数百 Mbps | 1~2 Mbps |
| 功耗 | 很低 | 高 | 低 |
| 抗干扰 | 很强 | 一般 | 一般 |
| 实时性 | 中等 | 高 | 较高 |
典型的遥控器结构
┌───────────────┐
│ 摇杆模块 │
│ X/Y ADC输入 │
└──────┬────────┘
│
│模拟量
▼
┌──────────┐ ┌──────────────┐
│ 按键矩阵 │─────▶│ │
└──────────┘ │ │
│ STM32 │
┌──────────┐ │ Cortex-M4 │
│ 电源管理 │─────▶│ │
└──────────┘ │ │
│ │
┌──────────┐ │ │
│ OLED/LCD │◀────▶│ SPI/I2C │
└──────────┘ │ │
│ │
┌──────────┐ │ UART/SPI │
│ LoRa模块 │◀────▶│ │
└──────────┘ └──────┬───────┘
│
▼
天线接口
┌──────────┐
│ 电池 │
│ Li-ion │
└──────────┘
| 模块 | 作用 |
|---|---|
| STM32L431/L433 | 主控 |
| 双轴霍尔摇杆 | 操作输入 |
| E22 LoRa | 无线通信 |
| SMA天线座 | 射频 |
| OLED | 状态显示 |
| Li-ion电池 | 供电 |
| 电源管理IC | 稳压充电 |
| 急停按钮 | 安全 |
| 按键 | 模式切换 |
| 蜂鸣器 | 告警 |
| LED | 状态 |
| SWD接口 | 调试 |
工作原理
正常控制时序
时间 →
遥控器 MCU LoRa无线 车辆LoRa 底盘控制器
│ │ │ │
│ 读取摇杆 │ │ │
│ linear=0.5 │ │ │
│ angular=0.1 │ │ │
│ │ │ │
│ CONTROL_FRAME │ │ │
│--------------------->│------------------->│ │
│ │ │ 校验CRC │
│ │ │ 检查Remote_ID │
│ │ │ │
│ │ │ cmd_vel │
│ │ │------------------->│
│ │ │ │
│ │ │ │执行
│ │ │ │
│ │ │ │
│ 等待100ms │ │ │
│ │ │ │
│ CONTROL_FRAME │ │ │
│--------------------->│------------------->│ │
│ │ │ │
心跳机制时序
心跳(Heartbeat)的核心作用是证明“遥控器还活着、通信链路还正常”
- 遥控器掉电
- 无线距离超限
- 无线干扰
- 遥控器程序死机
即使摇杆不动,也发送:
时间 →
遥控器 车辆
│ │
│ HEARTBEAT(seq=100) │
│---------------------->│
│ │
│ │ last_rx_time更新
│ │
│ 等待100ms │
│ │
│ HEARTBEAT(seq=101) │
│---------------------->│
│ │
│ │ last_rx_time更新
│ │
│ 等待100ms │
│ │
│ HEARTBEAT(seq=102) │
│---------------------->│
│ │
0
次点赞