62 lines
2.7 KiB
Markdown
62 lines
2.7 KiB
Markdown
# sentry-chassis
|
||
|
||
机甲大师哨兵机器人麦轮底盘固件:Linux ARM 主控 + 4 × GM3508(C620 电调),SocketCAN 接入,tokio 异步架构。
|
||
|
||
## 架构一览
|
||
|
||
| crate | 职责 | 平台 |
|
||
| --- | --- | --- |
|
||
| [`motor-core`](crates/motor-core) | 电机抽象:`Motor` trait、`MotorState`、PID / 速度环控制器 | 纯逻辑,全平台 |
|
||
| [`dji-esc`](crates/dji-esc) | C620/C610 CAN 协议:帧编解码、多圈累计、`EscBus` 异步驱动、仿真器 | 纯逻辑,全平台 |
|
||
| [`dji-esc-socketcan`](crates/dji-esc-socketcan) | SocketCAN 后端:真实 CAN 接口 ↔ 内存通道桥接 | Linux |
|
||
| [`mecanum`](crates/mecanum) | 麦轮正 / 逆运动学(纯数学) | 全平台 |
|
||
| [`chassisd`](crates/chassisd) | 底盘守护进程:配置、1kHz 控制循环、安全逻辑、`--mock` 模式 | 全平台(实车需 Linux) |
|
||
|
||
分层原则:`motor-core` 与 `dji-esc` 不做任何真实 I/O——CAN 端口被抽象为一对 tokio 通道(`CanLink`),
|
||
因此协议、运动学与控制逻辑可以在 macOS / CI 上完整测试;真实总线只出现在最外层。
|
||
|
||
## 开发
|
||
|
||
需要 Rust stable(仓库通过 `rust-toolchain.toml` 锁定)。
|
||
|
||
```sh
|
||
cargo test --workspace # 单测 + 闭环仿真测试(无需硬件)
|
||
cargo run -p chassisd -- --mock # 无硬件全链路演示
|
||
just lint # fmt + clippy(与 CI 同标准)
|
||
```
|
||
|
||
### Linux 虚拟 CAN(vcan0)集成测试
|
||
|
||
```sh
|
||
just vcan-test # 或见 justfile 内的 modprobe / ip link 命令
|
||
```
|
||
|
||
### 部署到目标板(armv7,实测:创龙 T153 / Buildroot)
|
||
|
||
二进制为 musl 静态链接,不依赖板端 libc,无需交叉工具链:
|
||
|
||
```sh
|
||
just deploy # 编译 + 推送 + mock 试运行(just deploy root@169.254.63.4)
|
||
# 或手动:
|
||
cargo build --release -p chassisd --target armv7-unknown-linux-musleabihf
|
||
scp target/armv7-unknown-linux-musleabihf/release/chassisd root@169.254.63.4:/tmp/
|
||
```
|
||
|
||
板端拉起 CAN(C620 标准 1Mbps;`restart-ms` 让 bus-off 后自动恢复):
|
||
|
||
```sh
|
||
ip link set can0 up type can bitrate 1000000 restart-ms 100
|
||
```
|
||
|
||
实车运行:`/tmp/chassisd --config /tmp/chassis.toml --interface can0`。板上运行样例见
|
||
[`deploy/chassisd.service`](deploy/chassisd.service),配置样例见
|
||
[`config/chassis.toml.example`](config/chassis.toml.example)。
|
||
|
||
> 注意:电调未上电 / CAN 线未接时,控制器会因无 ACK 进入 bus-off(可用
|
||
> `ip -d link show can0` 查看),chassisd 侧表现为四电机反馈离线、强制零电流——
|
||
> 这正是安全设计的预期行为。
|
||
|
||
## 文档
|
||
|
||
- [架构设计](docs/architecture.md)——分层、CAN 协议要点、单位与方向约定、测试策略
|