refactor: 重构架构并整理仓库
This commit is contained in:
@@ -1,103 +1,79 @@
|
||||
# 开发常用命令。未安装 just 时可直接使用 README 中的 cargo 命令。
|
||||
|
||||
default:
|
||||
@just --list
|
||||
|
||||
# 格式化全部代码
|
||||
fmt:
|
||||
cargo fmt --all
|
||||
|
||||
# 本地检查(与 CI 同标准)
|
||||
lint:
|
||||
cargo fmt --all -- --check
|
||||
cargo clippy --workspace --all-targets -- -D warnings
|
||||
|
||||
# 运行全部单测与集成测试(Linux 专属 vcan 测试自动跳过)
|
||||
test:
|
||||
cargo test --workspace
|
||||
cargo test --workspace --all-targets
|
||||
|
||||
# Linux:搭建 vcan0 并运行真实内核 CAN 栈集成测试
|
||||
vcan-test:
|
||||
sudo modprobe vcan
|
||||
sudo ip link add dev vcan0 type vcan || true
|
||||
sudo ip link set up vcan0
|
||||
cargo test -p dji-esc-socketcan -- --ignored --test-threads 1
|
||||
cargo test -p socketcan@0.1.0 --test vcan -- --ignored --test-threads 1
|
||||
|
||||
# 无硬件全链路演示(macOS / Linux 均可)
|
||||
run-mock:
|
||||
cargo run -p chassisd -- --mock
|
||||
|
||||
# 交叉检查目标板架构
|
||||
check-aarch64:
|
||||
cargo check --workspace --target aarch64-unknown-linux-gnu
|
||||
check-structure:
|
||||
test -z "$(find crates/*/src -mindepth 2 -type d -print)"
|
||||
! rg -n '\bunsafe\b|libc|no_std' crates Cargo.toml -g '*.rs' -g '*.toml'
|
||||
|
||||
# 交叉编译 armv7 静态二进制(目标板:创龙 T153 / Buildroot)
|
||||
build-armv7:
|
||||
rustup target add armv7-unknown-linux-musleabihf
|
||||
cargo build --release -p chassisd --target armv7-unknown-linux-musleabihf
|
||||
cargo build --release -p spin --target armv7-unknown-linux-musleabihf
|
||||
cargo build --release -p chassis-tune --target armv7-unknown-linux-musleabihf
|
||||
|
||||
# 推送到板子并试运行(默认 mock 模式)
|
||||
deploy board="root@192.168.2.2" mode="--mock":
|
||||
just build-armv7
|
||||
ssh {{board}} "mkdir -p /tmp/chassisd"
|
||||
scp -q target/armv7-unknown-linux-musleabihf/release/chassisd {{board}}:/tmp/chassisd/chassisd
|
||||
ssh {{board}} "/tmp/chassisd/chassisd {{mode}}"
|
||||
|
||||
# 板端:拉起 SocketCAN 接口(1Mbps,bus-off 后 100ms 自动恢复)
|
||||
# 注意:slcan 适配器(CANable 系列)走串口,不走 SocketCAN,台架用下面的 bench-* 配方。
|
||||
can-up board="root@192.168.2.2" iface="can0":
|
||||
ssh {{board}} "ip link set {{iface}} down; ip link set {{iface}} up type can bitrate 1000000 restart-ms 100 && ip -br link show {{iface}}"
|
||||
|
||||
# 交叉编译台架工具(armv7,musl 静态,无需交叉工具链)
|
||||
build-bench:
|
||||
build-spin:
|
||||
rustup target add armv7-unknown-linux-musleabihf
|
||||
cargo build --release -p chassis-bench --bin chassis-spin --target armv7-unknown-linux-musleabihf
|
||||
cargo build --release -p spin --target armv7-unknown-linux-musleabihf
|
||||
|
||||
# 台架:四轮同时 500 rpm(转子)旋转 —— 编译 → 推送 → 板端运行
|
||||
# 轮子必须架空或整车固定;ctrl-c 安全停机。
|
||||
bench-spin board="root@192.168.2.2" device="/dev/ttyACM0" rpm="500" opts="":
|
||||
just build-bench
|
||||
scp -q target/armv7-unknown-linux-musleabihf/release/chassis-spin {{board}}:/tmp/chassis-spin
|
||||
ssh {{board}} "/tmp/chassis-spin --device {{device}} --rpm {{rpm}} {{opts}}"
|
||||
just build-spin
|
||||
scp -q target/armv7-unknown-linux-musleabihf/release/spin {{board}}:/tmp/spin
|
||||
ssh {{board}} "/tmp/spin chassis --device {{device}} --rpm {{rpm}} {{opts}}"
|
||||
|
||||
# 台架:只验证 slcan 链路与四轮反馈(不发非零电流)
|
||||
bench-check board="root@192.168.2.2" device="/dev/ttyACM0":
|
||||
just build-bench
|
||||
scp -q target/armv7-unknown-linux-musleabihf/release/chassis-spin {{board}}:/tmp/chassis-spin
|
||||
ssh {{board}} "/tmp/chassis-spin --device {{device}} --dry-run"
|
||||
just build-spin
|
||||
scp -q target/armv7-unknown-linux-musleabihf/release/spin {{board}}:/tmp/spin
|
||||
ssh {{board}} "/tmp/spin chassis --device {{device}} --dry-run"
|
||||
|
||||
# 自动整定:列出超参数预设(只读;预设文件 config/tune.toml)
|
||||
tune-presets preset="config/tune.toml":
|
||||
cargo run -p chassis-tune -- presets --preset {{preset}}
|
||||
|
||||
# 自动整定:用预设跑(超参数进版本管理;CLI 只覆盖本次要变的项)
|
||||
# 例:just tune-preset bench_loaded "--samples 16"
|
||||
tune-preset name="sim_bench_model" opts="" preset="config/tune.toml":
|
||||
cargo run --release -p chassis-tune -- sweep --preset {{preset}} --preset-name {{name}} {{opts}}
|
||||
|
||||
# 自动整定:仿真搜索(不碰硬件;同 seed 结果逐位一致)
|
||||
tune-sim samples="512" seed="20260101":
|
||||
cargo run --release -p chassis-tune -- sweep --samples {{samples}} --seed {{seed}} --out-dir target/tune
|
||||
|
||||
# 自动整定:冒烟(确定性、秒级;CI 与提交前自检用)
|
||||
tune-smoke samples="64" seed="7":
|
||||
cargo run --release -p chassis-tune -- sweep --samples {{samples}} --top-k 3 --max-iters 40 --ensemble 2 --seed {{seed}} --out-dir target/tune-smoke
|
||||
|
||||
# 自动整定:复算一组给定增益(退出码 0 通过 / 1 未通过 / 2 参数错)
|
||||
tune-validate gains="2,10,0,0":
|
||||
cargo run --release -p chassis-tune -- validate --gains {{gains}}
|
||||
|
||||
# 自动整定:带 SVG 图输出(需要 --features plot)
|
||||
tune-plot samples="128":
|
||||
cargo run --release -p chassis-tune --features plot -- sweep --samples {{samples}} --out-dir target/tune-plot
|
||||
|
||||
# 自动整定:把结果写回一份配置(需 --config 指向现有 chassis.toml)
|
||||
tune-write config="config/chassis.toml.example" motor="front_left" out="target/tune/chassis.tuned.toml":
|
||||
cargo run --release -p chassis-tune -- sweep --config {{config}} --motor {{motor}} --write-config {{out}} --samples 256 --out-dir target/tune
|
||||
|
||||
# 自动整定:**真机**逐次试验(轮子会转!轮子架空或整车固定,急停可及)
|
||||
# 例:just tune-bench board="root@192.168.2.2" device="/dev/ttyACM0" esc_id="1" samples="24"
|
||||
# 预设提供场景 / 参数空间 / 权重 / 阈值 / 安全包络;CLI 提供接线与样本数(CLI 优先)。
|
||||
tune-bench board="root@192.168.2.2" device="/dev/ttyACM0" esc_id="1" samples="24" preset="bench_noload" opts="":
|
||||
cargo build --release -p chassis-tune
|
||||
scp -q target/release/chassis-tune {{board}}:/tmp/chassis-tune
|
||||
|
||||
Reference in New Issue
Block a user