71 lines
2.9 KiB
Markdown
71 lines
2.9 KiB
Markdown
# DT7 + DR16 遥控底盘接入
|
|
|
|
这里的 `dt16` 目录沿用现有资料目录名;硬件是 **DT7 遥控器 + DR16 接收机**。接收机通过
|
|
D-BUS 输出 18 字节帧,软件中的协议名称统一为 `DR16`。
|
|
|
|
## 协议与接线
|
|
|
|
- DR16 `DBUS` 接 T153 原生 UART RX,默认设备 `/dev/ttyS2`。
|
|
- UART 参数固定为 `100000 baud, 8 data bits, even parity, 1 stop bit`,无流控。
|
|
- 接收机 `VCC/GND/DBUS` 使用 3-Pin 线;确认 T153 UART RX 电平与 DBUS 信号兼容后再上电。
|
|
- 本实现的字段布局参考 DT7/DR16 手册和 `RoboMaster/RoboRTS-Firmware` 的 DR16 解码,
|
|
Rust 代码为独立重写,不复制参考仓库源码。
|
|
|
|
## 摇杆与安全语义
|
|
|
|
| 输入 | 通道 | 底盘动作 |
|
|
| --- | --- | --- |
|
|
| 左摇杆上下 | `T/ch3` | 前后平移,上为前进 |
|
|
| 左摇杆左右 | `R/ch4` | 旋转,右为顺时针(负 omega) |
|
|
| 右摇杆左右 | `A/ch1` | 左右平移,右为右移(负 vy) |
|
|
| 右摇杆上下 | `E/ch2` | 本次不绑定动作 |
|
|
| S1 上档 | wire value `1` | 允许运动 |
|
|
| S1 中/下档 | wire value `3`/`2` | 立即停车 |
|
|
|
|
摇杆满量程为协议中心值 ±660。5% 死区外使用平方曲线,满杆对应
|
|
`chassis.max_vx/max_vy/max_omega`。速度从零到满量程使用 `ramp_ms = 500` 的逐轴斜坡;
|
|
S1 离开上档、合法帧断流超过 `timeout_ms = 100`、串口关闭时立即归零,不走斜坡。
|
|
|
|
## 配置
|
|
|
|
在 `/etc/chassisd/chassis.toml` 增加:
|
|
|
|
```toml
|
|
[remote]
|
|
kind = "dr16"
|
|
device = "/dev/ttyS2"
|
|
timeout_ms = 100
|
|
deadband = 0.05
|
|
ramp_ms = 500
|
|
invert_vx = false
|
|
invert_vy = false
|
|
invert_omega = false
|
|
```
|
|
|
|
如果某个轴的实车方向相反,只翻转对应的 `invert_*`。`chassisd --rc-device /dev/ttyS2`
|
|
可以覆盖配置中的设备节点;没有 `[remote]` 段时守护进程保持安全静止。
|
|
|
|
## 只读监视
|
|
|
|
先不要让车轮着地,使用只读命令观察帧和方向:
|
|
|
|
```sh
|
|
cargo run --release -p spin -- rc --device /dev/ttyS2
|
|
```
|
|
|
|
输出包含帧龄、A/E/T/R 原始值、S1/S2 位置和显示用 `vx/vy/omega`(默认满量程 3.0/3.0/6.0)。它不打开 CAN,也不驱动电机。
|
|
|
|
## 实车验收
|
|
|
|
1. S1 置中档或下档,执行 `spin rc --device /dev/ttyS2`,确认帧龄约 14 ms、四个通道随摇杆变化、S1 上档 wire value 为 `1`。
|
|
2. 架空四轮,执行 `chassisd --dry-run --config /etc/chassisd/chassis.toml`,确认 UART 与四个电调反馈正常。
|
|
3. S1 上档后低速验证:左杆上/下 = 前/后,右杆左/右 = 左/右平移,左杆左/右 = 逆/顺时针。
|
|
4. 运动中把 S1 拨离上档,必须立即停车。
|
|
5. 运动中关闭遥控器或拔掉 DBUS,必须在 100 ms 内停车。
|
|
6. 若方向相反,修改对应 `invert_*` 后重复步骤 3,再落地低速复验。
|
|
|
|
## 参考资料
|
|
|
|
- `DT7&DR16_RC_System_User_Manual_v2.00_cn.pdf`
|
|
- [RoboMaster/RoboRTS-Firmware](https://github.com/RoboMaster/RoboRTS-Firmware)
|