上传文件至 /

This commit is contained in:
2025-07-16 18:37:38 +08:00
commit 18c43d3b59
5 changed files with 3515 additions and 0 deletions

135
autostart_core.sh Normal file
View File

@@ -0,0 +1,135 @@
#!/bin/bash
# FAST-LIO 开机自启动脚本 (核心版本)
# 只启动必要的核心程序,适用于开机自启动
# 不依赖图形界面,使用后台运行方式
set -e
# 配置
WORKSPACE_DIR="/home/jetson/mid360test"
LOG_DIR="$WORKSPACE_DIR/logs"
STARTUP_LOG="$LOG_DIR/autostart_$(date +%Y%m%d_%H%M%S).log"
# 创建日志目录
mkdir -p "$LOG_DIR"
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$STARTUP_LOG"
}
log "🚀 FAST-LIO 自启动开始"
# 切换到工作目录
cd "$WORKSPACE_DIR" || {
log "❌ 无法切换到工作目录: $WORKSPACE_DIR"
exit 1
}
# 清理旧进程
log "🧹 清理旧进程..."
pkill -f "livox_ros_driver2" 2>/dev/null || true
pkill -f "fastlio_mapping" 2>/dev/null || true
pkill -f "distance_calculator" 2>/dev/null || true
sleep 3
# 设置环境
log "⚙️ 设置ROS2环境..."
source /opt/ros/humble/setup.bash 2>/dev/null || {
log "❌ 无法加载ROS2环境"
exit 1
}
source "$WORKSPACE_DIR/install/setup.bash" 2>/dev/null || {
log "❌ 无法加载工作空间环境"
exit 1
}
# 等待网络稳定
log "🌐 等待网络连接稳定..."
sleep 5
# 验证网络连接
if ping -c 1 192.168.1.194 >/dev/null 2>&1; then
log "✅ 雷达网络连接正常"
else
log "⚠️ 雷达网络连接异常,继续启动"
fi
# 启动雷达驱动 (后台运行)
log "📡 启动雷达驱动..."
nohup ros2 launch livox_ros_driver2 msg_MID360_launch.py \
> "$LOG_DIR/livox_driver.log" 2>&1 &
LIVOX_PID=$!
log "📡 雷达驱动已启动 (PID: $LIVOX_PID)"
# 等待雷达驱动稳定
sleep 8
# 启动FAST-LIO (后台运行)
log "🎯 启动FAST-LIO..."
nohup ros2 launch fast_lio mapping.launch.py \
> "$LOG_DIR/fastlio.log" 2>&1 &
FASTLIO_PID=$!
log "🎯 FAST-LIO已启动 (PID: $FASTLIO_PID)"
# 等待FAST-LIO稳定
sleep 5
# 启动距离计算器 (后台运行)
if [ -f "$WORKSPACE_DIR/distance_calculator.py" ]; then
log "📏 启动距离计算器..."
nohup python3 "$WORKSPACE_DIR/distance_calculator.py" \
> "$LOG_DIR/distance_calculator.log" 2>&1 &
CALC_PID=$!
log "📏 距离计算器已启动 (PID: $CALC_PID)"
else
log "⚠️ 距离计算器文件不存在"
fi
# 保存PID文件便于后续管理
echo "$LIVOX_PID" > "$LOG_DIR/livox_driver.pid"
echo "$FASTLIO_PID" > "$LOG_DIR/fastlio.pid"
[ -n "$CALC_PID" ] && echo "$CALC_PID" > "$LOG_DIR/distance_calculator.pid"
log "✅ 所有核心程序启动完成"
log "📊 进程状态:"
log " - 雷达驱动: PID $LIVOX_PID"
log " - FAST-LIO: PID $FASTLIO_PID"
[ -n "$CALC_PID" ] && log " - 距离计算器: PID $CALC_PID"
log "📁 日志文件位置:"
log " - 启动日志: $STARTUP_LOG"
log " - 雷达驱动: $LOG_DIR/livox_driver.log"
log " - FAST-LIO: $LOG_DIR/fastlio.log"
[ -n "$CALC_PID" ] && log " - 距离计算器: $LOG_DIR/distance_calculator.log"
log "💡 提示:"
log " - 查看实时状态: tail -f $LOG_DIR/*.log"
log " - 停止系统: ./stop_system.sh 或 pkill -f 'ros2|python3.*distance_calculator'"
log " - 系统需要5-10秒完全稳定后才开始UART传输"
log "🎉 自启动脚本执行完成"
# 可选:监控进程状态
sleep 10
log "🔍 检查进程状态..."
check_process() {
local pid=$1
local name=$2
if kill -0 "$pid" 2>/dev/null; then
log "$name 运行正常 (PID: $pid)"
return 0
else
log "$name 进程异常 (PID: $pid)"
return 1
fi
}
check_process "$LIVOX_PID" "雷达驱动"
check_process "$FASTLIO_PID" "FAST-LIO"
[ -n "$CALC_PID" ] && check_process "$CALC_PID" "距离计算器"
log "🏁 初始化完成,系统正在运行中..."