2.4 KiB
2.4 KiB
sentry-chassis
RoboMaster 哨兵机器人麦轮底盘:Linux ARM 主控、4 × GM3508/C620、SocketCAN 或 SLCAN、tokio 异步运行时。
架构规范见 ARCHITECTURE.md。workspace 由 24 个职责单一 crate / 测试包组成,不使用 rm- 前缀,crate 内源码保持扁平。
安装本地规则 hook:
just install-hooks
just audit
依赖层级、外部库白名单和 trait 边界见 docs/dependencies.md。
规则审查器是基于 Nightly cargo -Zscript 的单文件 Rust 脚本。
结构
can/imu:基础接口。motor-protocol/delta10-protocol:纯协议编解码。socketcan/slcan/delta10:硬件驱动。motor/esc-bus:设备契约与安全总线运行时。pid/motor-control/mecanum:纯控制算法。motor-model/experiment/sim-harness/tuning:仿真与自动整定。dr16-protocol/dr16:DJI DR16/D-BUS 协议和串口接收。chassis-config/bench/chassisd/spin/chassis-tune:配置、台架和应用入口。
esc-bus 不依赖控制算法。应用把 motor-control::MotorPolicy 作为
motor::EffortPolicy 传入总线,从而保持依赖无环。
开发
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 租约,上层必须逐拍重发目标值。
台架
# 四轮 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 安全停机。
自动整定
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。
实时调度
仓库不使用 unsafe 或 libc FFI。生产调度策略由
deploy/chassisd.service 的 systemd 指令设置。
std 程序不调用 mlockall。