Initial commit: SmartCar Framework v0.1 — 龙芯2K0300智能车开发框架\n\n- HAL: GPIO/PWM/Encoder/Framebuffer 驱动\n- Control: PID/IMU/Motor/Servo 控制\n- Vision: HSV双Otsu→4点标定IPM→洪泛填充→逐行搜线\n- Strategy: 三区前瞻偏差+速度策略\n- Debug: 文件热调参+LCD预览+cv截帧\n- Scheduler: 5ms timerfd+epoll 中央调度器

This commit is contained in:
2026-05-25 10:31:55 +08:00
commit 28d9c6da58
52 changed files with 2599 additions and 0 deletions

87
ctl.sh Normal file
View File

@@ -0,0 +1,87 @@
#!/bin/sh
# SmartCar Framework 控制脚本
# 用法: sh ctl.sh start | stop | init
PWMCHIP=8
PWMPERIOD=50000
DIR="$(dirname "$0")"
init_pins() {
echo "[framework] 初始化引脚..."
for pin in 73 12 13 66 67 75 72; do
echo $pin > /sys/class/gpio/export 2>/dev/null
done
echo out > /sys/class/gpio/gpio73/direction 2>/dev/null
echo out > /sys/class/gpio/gpio12/direction 2>/dev/null
echo out > /sys/class/gpio/gpio13/direction 2>/dev/null
echo out > /sys/class/gpio/gpio66/direction 2>/dev/null
echo out > /sys/class/gpio/gpio67/direction 2>/dev/null
echo out > /sys/class/gpio/gpio75/direction 2>/dev/null
echo in > /sys/class/gpio/gpio72/direction 2>/dev/null
echo 1 > /sys/class/gpio/gpio73/value 2>/dev/null
echo 0 > /sys/class/gpio/gpio12/value 2>/dev/null
echo 0 > /sys/class/gpio/gpio13/value 2>/dev/null
echo 0 > /sys/class/gpio/gpio66/value 2>/dev/null
echo 0 > /sys/class/gpio/gpio67/value 2>/dev/null
for ch in 1 2; do
echo $ch > /sys/class/pwm/pwmchip${PWMCHIP}/export 2>/dev/null
echo ${PWMPERIOD} > /sys/class/pwm/pwmchip${PWMCHIP}/pwm${ch}/period 2>/dev/null
echo 1 > /sys/class/pwm/pwmchip${PWMCHIP}/pwm${ch}/enable 2>/dev/null
echo 0 > /sys/class/pwm/pwmchip${PWMCHIP}/pwm${ch}/duty_cycle 2>/dev/null
done
echo 0 > /sys/class/pwm/pwmchip1/export 2>/dev/null
echo 3000000 > /sys/class/pwm/pwmchip1/pwm0/period 2>/dev/null
echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable 2>/dev/null
echo 1520000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle 2>/dev/null
echo 11 > "$DIR/speed" 2>/dev/null
echo 0.03 > "$DIR/deadband" 2>/dev/null
echo 1.5 > "$DIR/steer_gain" 2>/dev/null
echo 400000 > "$DIR/kp" 2>/dev/null
echo 200000 > "$DIR/ki" 2>/dev/null
echo 0 > "$DIR/kd" 2>/dev/null
echo 0.6 > "$DIR/mortor_kp" 2>/dev/null
echo 0.2 > "$DIR/mortor_ki" 2>/dev/null
echo 0 > "$DIR/mortor_kd" 2>/dev/null
echo 0 > "$DIR/start" 2>/dev/null
echo 1 > "$DIR/showImg" 2>/dev/null
echo "[framework] 引脚初始化完成"
}
do_start() {
echo "[framework] 启动..."
echo 1 > "$DIR/start"
cd "$DIR"
nohup ./smartcar_framework > "$DIR/out.log" 2>&1 &
echo "[framework] PID=$!"
}
do_stop() {
echo "[framework] 停止..."
echo 0 > "$DIR/start" 2>/dev/null
killall -9 smartcar_framework 2>/dev/null
sleep 0.3
echo 0 > /sys/class/pwm/pwmchip${PWMCHIP}/pwm1/duty_cycle 2>/dev/null
echo 0 > /sys/class/pwm/pwmchip${PWMCHIP}/pwm2/duty_cycle 2>/dev/null
echo 0 > /sys/class/gpio/gpio73/value 2>/dev/null
echo "[framework] 已停止, PWM已归零"
}
case "${1}" in
start)
init_pins
do_start
;;
stop)
do_stop
;;
init)
init_pins
;;
*)
echo "用法: sh ctl.sh start | stop | init"
exit 1
;;
esac