导航修复
This commit is contained in:
+80
-29
@@ -1,38 +1,89 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# stop_all.sh - 关闭 AGV 拍摄系统所有相关进程
|
||||
# 版本: v2.0
|
||||
# 修复:
|
||||
# - v2.0: 添加 FastRTPS 清理 + ros2 daemon 重置
|
||||
# ============================================================
|
||||
set -e
|
||||
|
||||
echo "正在停止 AGV 系统..."
|
||||
echo "=========================================="
|
||||
echo " Robot AGV 全量停止"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# 1. 关闭 Flask 主程序
|
||||
echo "[1/3] 关闭 Flask 服务..."
|
||||
pkill -f "python3 app.py" 2>/dev/null
|
||||
# ---------- 1. 软杀所有相关进程 ----------
|
||||
echo "[1/5] 软杀所有相关进程..."
|
||||
pkill -f "python3 app.py" 2>/dev/null || true
|
||||
pkill -f "agv_pro_bringup" 2>/dev/null || true
|
||||
pkill -f "agv_pro_navigation2" 2>/dev/null || true
|
||||
pkill -f "agv_pro_node" 2>/dev/null || true
|
||||
pkill -f "lslidar_driver_node" 2>/dev/null || true
|
||||
pkill -f "component_container" 2>/dev/null || true
|
||||
pkill -f "fix_scan_timestamp" 2>/dev/null || true
|
||||
pkill -f "robot_state_publisher" 2>/dev/null || true
|
||||
pkill -f "start_all.sh" 2>/dev/null || true
|
||||
sleep 2
|
||||
|
||||
# ---------- 2. 硬杀确保干净 ----------
|
||||
echo "[2/5] 硬杀残留进程..."
|
||||
pkill -9 -f "app.py" 2>/dev/null || true
|
||||
pkill -9 -f "agv_pro_node" 2>/dev/null || true
|
||||
pkill -9 -f "lslidar_driver_node" 2>/dev/null || true
|
||||
pkill -9 -f "component_container" 2>/dev/null || true
|
||||
pkill -9 -f "fix_scan_timestamp" 2>/dev/null || true
|
||||
pkill -9 -f "agv_pro_bringup" 2>/dev/null || true
|
||||
pkill -9 -f "agv_pro_navigation2" 2>/dev/null || true
|
||||
sleep 1
|
||||
|
||||
# 2. 关闭 ROS2 bringup(杀掉整个 start.sh 及其子进程)
|
||||
echo "[2/3] 关闭 ROS2 bringup..."
|
||||
# 用 pkill 杀掉 agv_pro_bringup 相关进程
|
||||
pkill -f "agv_pro_bringup" 2>/dev/null
|
||||
pkill -f "agv_pro_navigation2" 2>/dev/null
|
||||
# 如果 bringup 是由 start.sh 启动的,杀掉 start.sh 进程树
|
||||
pkill -f "start.sh" 2>/dev/null
|
||||
pkill -f "bringup" 2>/dev/null
|
||||
sleep 1
|
||||
|
||||
# 3. 清理 ROS2 daemon(防止残留)
|
||||
echo "[3/3] 清理 ROS2 daemon..."
|
||||
source /opt/ros/humble/setup.bash 2>/dev/null
|
||||
ros2 daemon stop 2>/dev/null || true
|
||||
|
||||
# 确保所有相关进程都已停止
|
||||
sleep 1
|
||||
remaining=$(ps aux | grep -E "python3 app.py|agv_pro_bringup|agv_pro_navigation2|navigation2" | grep -v grep | wc -l)
|
||||
if [ "$remaining" -eq 0 ]; then
|
||||
echo "✅ 所有进程已关闭"
|
||||
# ---------- 3. 【关键】清理 FastRTPS 共享内存 ----------
|
||||
echo "[3/5] 清理 FastRTPS 共享内存..."
|
||||
FASTRTPS_COUNT=$(ls /dev/shm/fastrtps_* 2>/dev/null | wc -l || echo 0)
|
||||
if [ "$FASTRTPS_COUNT" -gt 0 ]; then
|
||||
rm -rf /dev/shm/fastrtps_*
|
||||
echo " 已清理 $FASTRTPS_COUNT 个 FastRTPS 文件"
|
||||
else
|
||||
echo "⚠️ 仍有 $remaining 个进程残留,已强制终止"
|
||||
pkill -9 -f "python3 app.py" 2>/dev/null
|
||||
pkill -9 -f "agv_pro_bringup" 2>/dev/null
|
||||
pkill -9 -f "agv_pro_navigation2" 2>/dev/null
|
||||
echo " 无 FastRTPS 文件残留"
|
||||
fi
|
||||
|
||||
echo "停止完成"
|
||||
# 清理 scan_fixer 锁文件
|
||||
rm -f /tmp/scan_fixer.lock
|
||||
echo " ✅ FastRTPS 清理完成"
|
||||
|
||||
# ---------- 4. 【关键】重置 ros2 daemon ----------
|
||||
echo "[4/5] 重置 ros2 daemon..."
|
||||
pkill -f "ros2-daemon" 2>/dev/null || true
|
||||
pkill -9 -f "ros2-daemon" 2>/dev/null || true
|
||||
sleep 2
|
||||
source /opt/ros/humble/setup.bash 2>/dev/null || true
|
||||
ros2 daemon stop 2>/dev/null || true
|
||||
echo " ✅ ros2 daemon 已重置"
|
||||
|
||||
# ---------- 5. 验证清理结果 ----------
|
||||
echo "[5/5] 验证清理结果..."
|
||||
PROC_COUNT=$(ps aux | grep -E 'agv_pro_node|lslidar_driver_node|component_container|fix_scan_timestamp|app.py|ros2-daemon' | grep -v grep | wc -l || echo 0)
|
||||
FASTRTPS_LEFT=$(ls /dev/shm/fastrtps_* 2>/dev/null | wc -l || echo 0)
|
||||
|
||||
echo " 残留进程数: $PROC_COUNT"
|
||||
echo " FastRTPS 文件数: $FASTRTPS_LEFT"
|
||||
|
||||
if [ "$PROC_COUNT" -eq 0 ] && [ "$FASTRTPS_LEFT" -eq 0 ]; then
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " ✅ 停止完成 - 系统已完全清理"
|
||||
echo "=========================================="
|
||||
else
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " ⚠️ 停止完成 - 部分残留可能需要手动清理"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo " 手动清理命令(如需要):"
|
||||
echo " pkill -9 -f 'agv_pro_node|lslidar|component_container'"
|
||||
echo " pkill -9 -f 'fix_scan_timestamp|app.py'"
|
||||
echo " pkill -9 -f 'ros2-daemon'"
|
||||
echo " rm -rf /dev/shm/fastrtps_*"
|
||||
fi
|
||||
echo ""
|
||||
echo " 现在可以安全运行 ./start_all.sh"
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user