Files
linux_sentry_chassis/justfile
T

106 lines
5.2 KiB
Makefile
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.
# 开发常用命令。未安装 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
# 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
# 无硬件全链路演示(macOS / Linux 均可)
run-mock:
cargo run -p chassisd -- --mock
# 交叉检查目标板架构
check-aarch64:
cargo check --workspace --target aarch64-unknown-linux-gnu
# 交叉编译 armv7 静态二进制(目标板:创龙 T153 / Buildroot)
build-armv7:
rustup target add armv7-unknown-linux-musleabihf
cargo build --release -p chassisd --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:
rustup target add armv7-unknown-linux-musleabihf
cargo build --release -p chassis-bench --bin chassis-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}}"
# 台架:只验证 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"
# 自动整定:列出超参数预设(只读;预设文件 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
scp -q config/tune.toml {{board}}:/tmp/tune.toml
ssh {{board}} "/tmp/chassis-tune sweep --backend bench --preset /tmp/tune.toml --preset-name {{preset}} --device {{device}} --esc-id {{esc_id}} --samples {{samples}} --top-k 3 --i-know-the-wheel-spins {{opts}}"