95a46c130d
- 搬运 ST API C 源码到 lib/vl53l0x/, 替换 I2C 层为用户态 i2c-dev - 新增 vl53l0x_platform_user.cpp: WriteMulti/ReadMulti 等全平台接口 - 重写 vl53l0x.cpp: start时unbind内核驱动, 单次测距, 无后台轮询 - 高速模式 20000μs timing budget, 模型缓存零污染(41-43ms) - LiDAR 每5帧一读(~20ms), 隔帧模型推理, fps 25.1→29.6 (+18%) - 同事的LiDAR避障集成: 12个配置参数, 中线变形绕行, 刹车注释 - nice -10 + sched_yield 优先级优化
103 lines
3.5 KiB
Bash
103 lines
3.5 KiB
Bash
#!/bin/sh
|
|
# SmartCar Demo 控制脚本
|
|
# 用法: sh ctl.sh start | stop | init
|
|
|
|
DIR="$(dirname "$0")"
|
|
PWMCHIP=8
|
|
PWMPERIOD=50000
|
|
|
|
init_pins() {
|
|
echo "[demo] 初始化引脚..."
|
|
for pin in 73 12 13 67 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 in > /sys/class/gpio/gpio67/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
|
|
|
|
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 8 > "$DIR/deadband" 2>/dev/null
|
|
echo 1.5 > "$DIR/steer_gain" 2>/dev/null
|
|
echo 40 > "$DIR/foresee" 2>/dev/null
|
|
echo 0 > "$DIR/start" 2>/dev/null
|
|
|
|
echo 0.3 > "$DIR/cone_avoid_gain" 2>/dev/null
|
|
echo 30 > "$DIR/cone_avoid_range" 2>/dev/null
|
|
echo 0.5 > "$DIR/cone_speed" 2>/dev/null
|
|
echo 3 > "$DIR/cone_min_frames" 2>/dev/null
|
|
echo 0 > "$DIR/cone_margin" 2>/dev/null
|
|
echo 0.80 > "$DIR/cone_thresh" 2>/dev/null
|
|
echo 30 > "$DIR/cone_hold_frames" 2>/dev/null
|
|
|
|
echo 10 > "$DIR/brake_scale" 2>/dev/null
|
|
echo 10000 > "$DIR/brake_max" 2>/dev/null
|
|
|
|
echo 300 > "$DIR/lidar_thresh" 2>/dev/null
|
|
echo 50 > "$DIR/lidar_near" 2>/dev/null
|
|
echo 1200 > "$DIR/lidar_far" 2>/dev/null
|
|
echo 1 > "$DIR/lidar_near_start" 2>/dev/null
|
|
echo 4 > "$DIR/lidar_near_end" 2>/dev/null
|
|
echo 6 > "$DIR/lidar_far_span" 2>/dev/null
|
|
echo 3 > "$DIR/lidar_min_frames" 2>/dev/null
|
|
echo 0.4 > "$DIR/lidar_avoid_gain" 2>/dev/null
|
|
echo 30 > "$DIR/lidar_avoid_range" 2>/dev/null
|
|
echo 0.4 > "$DIR/lidar_speed" 2>/dev/null
|
|
echo 30 > "$DIR/lidar_hold_frames" 2>/dev/null
|
|
echo 1 > "$DIR/lidar_enable" 2>/dev/null
|
|
|
|
echo "[demo] 引脚初始化完成"
|
|
}
|
|
|
|
do_start() {
|
|
echo "[demo] 启动..."
|
|
echo 1 > "$DIR/start"
|
|
cd "$DIR"
|
|
LD_LIBRARY_PATH=/home/root/opencv/lib nohup ./smartcar_demo1 > "$DIR/out.log" 2>&1 &
|
|
echo "[demo] PID=$!"
|
|
}
|
|
|
|
do_stop() {
|
|
echo "[demo] 停止..."
|
|
echo 0 > "$DIR/start" 2>/dev/null
|
|
killall -9 smartcar_demo1 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 "[demo] 已停止, 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
|