# Tools 一次性诊断/校准工具. 不是 SDK 核心. ## 密钥提取 ### extract_blowfish_key.sh 在狗上 (Pi) 运行, 从 Legged_sport 进程内存提取 Blowfish state. ```bash scp tools/extract_blowfish_key.sh pi@192.168.123.161:/tmp/ ssh pi@192.168.123.161 "sudo bash /tmp/extract_blowfish_key.sh" scp pi@192.168.123.161:/tmp/blowfish_dump.tar.gz ./ ``` ### analyze_blowfish_dump.py Mac 端解析 dump, 找出 4168 字节 state. ```bash python tools/analyze_blowfish_dump.py blowfish_dump.tar.gz ``` ## 校准 ### calibrate_joints.py 手动转动法测每个关节真实活动范围. ```bash # 狗悬空 + L2+B damping, 然后: python tools/calibrate_joints.py --duration 90 # 慢慢把每条腿的每个关节转到极限 # 退出时输出 JOINT_LIMITS_MEASURED 字典, 可粘贴到 utils/constants.py ``` ## 抢占源管理 ### stop_sportmode.sh ```bash bash tools/stop_sportmode.sh stop # 杀 keep_sport_alive + Legged_sport + appTransit bash tools/stop_sportmode.sh start # 恢复 bash tools/stop_sportmode.sh status # 看当前状态 ``` ### run_on_mac.sh 一键流程: 停抢占源 → 跑测试 → (手动恢复). ```bash bash tools/run_on_mac.sh example bash tools/run_on_mac.sh monitor bash tools/run_on_mac.sh stop bash tools/run_on_mac.sh start ``` ### run_on_pi.sh 把测试脚本部署到 Pi 上跑 (源 IP 跟 Legged_sport 一致, 现在不需要了, 但保留作为备选). ## 协议研究 ### capture_lowcmd.sh + _raw_capture.py Pi 端 tcpdump 抓 Legged_sport 真实发送的 LowCmd 流量. ```bash bash tools/capture_lowcmd.sh 3 ``` ### diff_real_lowcmd.sh + _compare_lowcmd.py 抓真实包 + 跟本地 buildCmd 输出做字节级 diff. 用于发现协议细节差异. ```bash bash tools/diff_real_lowcmd.sh 3 ```