init pro_sdk
This commit is contained in:
104
tools/run_on_pi.sh
Normal file
104
tools/run_on_pi.sh
Normal 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 "============================================"
|
||||
Reference in New Issue
Block a user