TIAN-LEIDA-JIANCE/debug_radar_connection.sh

131 lines
4.0 KiB
Bash
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.

#!/bin/bash
echo "🔍 宇树雷达连接调试脚本"
echo "=========================="
# 检查串口设备
echo "📋 1. 检查串口设备:"
ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null || echo " 未找到串口设备"
# 检查用户权限
echo ""
echo "👤 2. 检查用户权限:"
echo " 当前用户: $(whoami)"
echo " 用户组: $(groups)"
if groups | grep -q dialout; then
echo " ✅ 用户在dialout组中"
else
echo " ❌ 用户不在dialout组中"
echo " 💡 解决方案: sudo usermod -a -G dialout $USER"
fi
# 检查设备权限
echo ""
echo "🔐 3. 检查设备权限:"
for device in /dev/ttyUSB* /dev/ttyACM*; do
if [ -e "$device" ]; then
echo " 设备: $device"
ls -l "$device"
if [ -r "$device" ] && [ -w "$device" ]; then
echo " ✅ 设备可读写"
else
echo " ❌ 设备权限不足"
echo " 💡 临时解决: sudo chmod 666 $device"
fi
fi
done
# 检查进程占用
echo ""
echo "🔒 4. 检查端口占用:"
for device in /dev/ttyUSB* /dev/ttyACM*; do
if [ -e "$device" ]; then
echo " 检查 $device 是否被占用:"
lsof "$device" 2>/dev/null || echo " ✅ 端口未被占用"
fi
done
# 测试串口通信
echo ""
echo "📡 5. 测试串口通信:"
for device in /dev/ttyUSB* /dev/ttyACM*; do
if [ -e "$device" ] && [ -r "$device" ] && [ -w "$device" ]; then
echo " 测试设备: $device"
# 尝试读取设备信息
timeout 2s cat "$device" > /tmp/serial_test.txt 2>/dev/null &
sleep 1
kill $! 2>/dev/null
if [ -s /tmp/serial_test.txt ]; then
echo " ✅ 设备有数据输出"
echo " 数据样本: $(head -c 50 /tmp/serial_test.txt | hexdump -C | head -1)"
else
echo " ⚠️ 设备无数据输出(可能正常,取决于雷达状态)"
fi
rm -f /tmp/serial_test.txt
fi
done
# 检查Unitree SDK库
echo ""
echo "📚 6. 检查Unitree SDK:"
SDK_PATH="unilidar_sdk-main/unilidar_sdk-main/unitree_lidar_sdk"
if [ -d "$SDK_PATH" ]; then
echo " ✅ SDK目录存在: $SDK_PATH"
# 检查头文件
if [ -f "$SDK_PATH/include/unitree_lidar_sdk.h" ]; then
echo " ✅ SDK头文件存在"
else
echo " ❌ SDK头文件缺失"
fi
# 检查库文件
LIB_PATH="$SDK_PATH/lib/x86_64/libunitree_lidar_sdk.a"
if [ -f "$LIB_PATH" ]; then
echo " ✅ SDK库文件存在: $LIB_PATH"
echo " 库文件大小: $(ls -lh "$LIB_PATH" | awk '{print $5}')"
else
echo " ❌ SDK库文件缺失: $LIB_PATH"
fi
else
echo " ❌ SDK目录不存在: $SDK_PATH"
fi
# 检查编译状态
echo ""
echo "🔨 7. 检查编译状态:"
if [ -f "build/yushu_leida" ]; then
echo " ✅ 可执行文件存在"
echo " 文件大小: $(ls -lh build/yushu_leida | awk '{print $5}')"
# 检查动态库依赖
echo " 动态库依赖:"
ldd build/yushu_leida | grep -E "(pcl|yaml|unitree)" || echo " 未找到相关库依赖"
else
echo " ❌ 可执行文件不存在,需要重新编译"
fi
# 检查配置文件
echo ""
echo "📋 8. 检查配置文件:"
if [ -f "config/config.yaml" ]; then
echo " ✅ 配置文件存在"
echo " 端口配置: $(grep -E "^port:" config/config.yaml || echo "未找到端口配置")"
echo " 波特率配置: $(grep -E "^baud:" config/config.yaml || echo "未找到波特率配置")"
else
echo " ❌ 配置文件不存在"
fi
echo ""
echo "🎯 调试建议:"
echo "1. 如果设备权限不足,执行: sudo chmod 666 /dev/ttyUSB0"
echo "2. 如果用户不在dialout组执行: sudo usermod -a -G dialout \$USER 然后重新登录"
echo "3. 如果没有串口设备,检查雷达硬件连接"
echo "4. 如果编译文件不存在,执行: cd build && make"
echo "5. 运行程序时添加调试输出观察具体错误"
echo ""
echo "🚀 运行测试命令:"
echo "cd build && ./yushu_leida"