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

73
tools/capture_lowcmd.sh Normal file
View File

@@ -0,0 +1,73 @@
#!/bin/bash
# 抓 Legged_sport 发给 MCU :8007 的 LowCmd UDP 包, 拉回本地解析
#
# 用法: bash tools/onboard/capture_lowcmd.sh [seconds]
#
# 流程:
# 1. SSH 到狗启动 tcpdump 抓包 (持续N秒)
# 2. 拉回 pcap 到本地
# 3. 用 Python 解析 pcap, 提取 LowCmd 字节
# 4. 跟本地 buildCmd() 的输出对比
PI_HOST="${PI_HOST:-192.168.123.161}"
PI_USER="${PI_USER:-pi}"
DURATION="${1:-5}" # 抓包秒数
PCAP_REMOTE=/tmp/legged_sport.pcap
PCAP_LOCAL=data/lowlevel_captures/legged_sport_$(date +%Y%m%d_%H%M%S).pcap
echo "============================================"
echo "🔍 抓 Legged_sport → MCU 的 LowCmd 包"
echo "============================================"
echo " 抓包时长: ${DURATION}s"
echo " 远端 pcap: ${PCAP_REMOTE}"
echo " 本地保存: ${PCAP_LOCAL}"
echo ""
# 先确认 Legged_sport 在运行 (否则抓不到包)
echo "[1/4] 确认 Legged_sport 在运行..."
if ssh ${PI_USER}@${PI_HOST} "pgrep Legged_sport > /dev/null 2>&1"; then
echo " ✅ Legged_sport 在运行"
else
echo " ⚠️ Legged_sport 未运行! 先恢复 sportMode:"
echo " bash tools/onboard/stop_sportmode.sh start"
exit 1
fi
# 抓包: 用 tcpdump (已在 Pi 上安装)
echo ""
echo "[2/4] 启动 tcpdump 抓包 (${DURATION}s, eth0)..."
ssh ${PI_USER}@${PI_HOST} bash -s <<EOF || true
set +e
sudo rm -f ${PCAP_REMOTE}
sudo timeout ${DURATION} /usr/sbin/tcpdump -i eth0 -w ${PCAP_REMOTE} -s 0 -n \\
'udp and host 192.168.123.10 and port 8007' 2>/tmp/tcpdump.log
echo "tcpdump 退出码: \$?"
if [ -f ${PCAP_REMOTE} ]; then
sudo chmod 644 ${PCAP_REMOTE}
echo "pcap 大小: \$(stat -c%s ${PCAP_REMOTE}) 字节"
cat /tmp/tcpdump.log
else
echo "❌ pcap 未生成!"
cat /tmp/tcpdump.log
exit 1
fi
EOF
echo " ✅ 抓包完成"
# 拉回本地
echo ""
echo "[3/4] 拉回本地..."
mkdir -p $(dirname ${PCAP_LOCAL})
if ! scp ${PI_USER}@${PI_HOST}:${PCAP_REMOTE} ${PCAP_LOCAL}; then
echo "❌ 拉取失败"
exit 1
fi
echo "${PCAP_LOCAL} ($(stat -f%z ${PCAP_LOCAL} 2>/dev/null || stat -c%s ${PCAP_LOCAL}) 字节)"
# 解析+对比
echo ""
echo "[4/4] 解析+对比..."
conda run -n free_dog_sdk python tools/onboard/diff_lowcmd.py ${PCAP_LOCAL}