init pro_sdk

This commit is contained in:
cyy_mac
2026-06-20 20:02:36 +08:00
commit 5ecd422a59
49 changed files with 4226 additions and 0 deletions

104
tools/run_on_pi.sh Normal file
View File

@@ -0,0 +1,104 @@
#!/bin/bash
# 部署+执行测试 (在树莓派上, 源IP=192.168.123.161)
#
# 用法:
# bash tools/onboard/run_on_pi.sh sin # 单腿正弦
# bash tools/onboard/run_on_pi.sh damping # 零力矩连通性
# bash tools/onboard/run_on_pi.sh deploy # 仅部署不执行
set -e
PI_HOST="${PI_HOST:-192.168.123.161}"
PI_USER="${PI_USER:-pi}"
TEST="${1:-sin}"
REMOTE_DIR=/tmp/dog_test
echo "=== 部署到 ${PI_USER}@${PI_HOST}:${REMOTE_DIR} ==="
# 1. 创建远程目录结构
ssh ${PI_USER}@${PI_HOST} "rm -rf ${REMOTE_DIR} && mkdir -p ${REMOTE_DIR}/ucl"
# 2. 拷贝文件 (所有.py平铺在REMOTE_DIR, ucl/子目录放SDK文件)
echo "[1/2] 拷贝文件..."
scp tools/onboard/blowfish_codec.py \
tools/onboard/build_pro_lowcmd.py \
tools/onboard/test_sin_leg.py \
tools/onboard/test_lowcmd.py \
tools/onboard/example_position_pro.py \
data/lowlevel_captures/blowfish_state.bin \
${PI_USER}@${PI_HOST}:${REMOTE_DIR}/
# 空 __init__.py 让 ucl 成为 package
ssh ${PI_USER}@${PI_HOST} "touch ${REMOTE_DIR}/ucl/__init__.py"
scp ucl/lowCmd.py ucl/lowState.py ucl/common.py ucl/complex.py ucl/enums.py \
${PI_USER}@${PI_HOST}:${REMOTE_DIR}/ucl/
# 提前杀掉 MCU:8007 的所有抢占者:
# 1. keep_sport_alive.sh - Legged_sport 看门狗 (每0.2秒重启Legged_sport, 必须先杀)
# 2. Legged_sport - 主控制循环
# 3. appTransit - 也跟 MCU:8007 通信
echo ""
echo "=== 停止 MCU:8007 抢占源 (顺序: 看门狗 → Legged_sport → appTransit) ==="
ssh ${PI_USER}@${PI_HOST} bash <<'EOF' || true
set +e
if sudo pkill -9 -f keep_sport_alive 2>/dev/null; then
echo ' ✅ keep_sport_alive.sh (看门狗)'
else
echo ' (无看门狗)'
fi
sleep 0.3
if sudo pkill -9 -f Legged_sport 2>/dev/null; then
echo ' ✅ Legged_sport'
else
echo ' (无)'
fi
if sudo pkill -9 -f appTransit 2>/dev/null; then
echo ' ✅ appTransit'
else
echo ' (无)'
fi
sleep 0.5
echo '--- 验证残留: ---'
if pgrep -fl 'Legged_sport|appTransit|keep_sport_alive' 2>/dev/null; then
echo ' ⚠️ 仍有残留, 可能看门狗在别处'
else
echo ' ✅ 全部清除'
fi
EOF
sleep 1
echo ""
echo "[2/2] 执行测试..."
case "$TEST" in
sin)
echo "=== 单腿正弦测试 (Pi端) ==="
ssh -t ${PI_USER}@${PI_HOST} \
"cd ${REMOTE_DIR} && python3 test_sin_leg.py --amplitude 0.3 --freq 0.5 --duration 10"
;;
damping)
echo "=== 零力矩连通性测试 (Pi端) ==="
ssh -t ${PI_USER}@${PI_HOST} \
"cd ${REMOTE_DIR} && python3 test_lowcmd.py --skip-stop --skip-mqtt"
;;
example)
echo "=== example_position(lowlevel) PRO 版本 (Pi端) ==="
ssh -t ${PI_USER}@${PI_HOST} \
"cd ${REMOTE_DIR} && python3 example_position_pro.py --max-steps 5000"
;;
deploy)
echo "✅ 已部署到 ${PI_USER}@${PI_HOST}:${REMOTE_DIR}"
echo " ssh ${PI_USER}@${PI_HOST}"
echo " cd ${REMOTE_DIR} && python3 test_sin_leg.py ..."
;;
*)
echo "用法: bash run_on_pi.sh [sin|damping|example|deploy]"
exit 1
;;
esac
echo ""
echo "============================================"
echo "恢复 sportMode:"
echo " bash tools/onboard/stop_sportmode.sh start"
echo " 或 ssh ${PI_USER}@${PI_HOST} sudo systemctl start sportMode"
echo "============================================"