Files
linux_sentry_chassis/README.md
T

62 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# sentry-chassis
RoboMaster 哨兵机器人麦轮底盘:Linux ARM 主控、4 × GM3508/C620、SocketCAN 或 SLCAN、tokio 异步运行时。
架构规范见 [`ARCHITECTURE.md`](ARCHITECTURE.md)。workspace 由 21 个职责单一 crate 组成,不使用 `rm-` 前缀,crate 内源码保持扁平。
## 结构
- `can` / `imu`:基础接口。
- `motor-protocol` / `delta10-protocol`:纯协议编解码。
- `socketcan` / `slcan` / `delta10`:硬件驱动。
- `motor` / `esc-bus`:设备契约与安全总线运行时。
- `pid` / `motor-control` / `mecanum`:纯控制算法。
- `motor-model` / `experiment` / `sim-harness` / `tuning`:仿真与自动整定。
- `chassis-config` / `bench` / `chassisd` / `spin` / `chassis-tune`:配置、台架和应用入口。
`esc-bus` 不依赖控制算法。应用把 `motor-control::MotorPolicy` 作为
`motor::EffortPolicy` 传入总线,从而保持依赖无环。
## 开发
```sh
cargo test --workspace --all-targets
cargo run -p chassisd -- --mock
cargo run -p spin -- chassis --device /dev/ttyACM0 --dry-run
cargo run -p chassis-tune -- presets --preset config/tune.toml
just lint
just tune-smoke
```
底盘控制频率为 1 kHz。命令是 50 ms 租约,上层必须逐拍重发目标值。
## 台架
```sh
# 四轮 500 rpm 转子,slcan
cargo run --release -p spin -- chassis --device /dev/ttyACM0 --rpm 500
# 单电机 SocketCAN 验证
cargo run --release -p spin -- motor can0 1 1000 10
```
轮子必须架空或整车固定,急停可及。工具默认限流、限时并支持 ctrl-c 安全停机。
## 自动整定
```sh
cargo run --release -p chassis-tune -- sweep \
--preset config/tune.toml --preset-name sim_bench_model \
--samples 512 --out-dir target/tune
```
仿真搜索不接触硬件。真机后端会转动轮子,必须显式传入
`--i-know-the-wheel-spins`。详细接线、标定和排障见
[`docs/chassis.md`](docs/chassis.md)。
## 实时调度
仓库不使用 unsafe 或 libc FFI。生产调度策略由
[`deploy/chassisd.service`](deploy/chassisd.service) 的 systemd 指令设置。
std 程序不调用 `mlockall`。