Files
linux_sentry_chassis/README.md
T

2.1 KiB
Raw Blame History

sentry-chassis

RoboMaster 哨兵机器人麦轮底盘:Linux ARM 主控、4 × GM3508/C620、SocketCAN 或 SLCAN、tokio 异步运行时。

架构规范见 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 传入总线,从而保持依赖无环。

开发

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。