一维球杆平衡控制系统:视觉追踪 + SMC 滑模控制实战(2026电赛)

项目简介

一维球杆平衡系统(Ball & Beam)是 2026 电赛参赛作品:一颗小球放在一根可绕支点转动的杆上,系统通过摄像头实时追踪小球位置,经卡尔曼滤波与延迟补偿后,驱动 X42S 闭环步进电机摆动杆的角度,把小球稳定在杆的中点(或任意目标位置)。

控制对象本质上是不稳定、二阶、带纯滞后的系统——小球在杆上会一直滚,没有任何自稳定能力,全靠闭环控制"救"回来。


系统架构

USB 摄像头 → OpenCV 视觉检测 → 卡尔曼滤波(+速度估计)
     ↓
延迟补偿(预测球未来位置)
     ↓
PD / SMC 滑模控制器 → 目标杆角度
     ↓
逆运动学 IK(杆角 → 电机角)
     ↓
CAN 总线(CANable/slcan)→ X42S 闭环步进电机 → 摆杆

整套视觉+控制在 PC / ARM 板(Orange Pi RK3588S)上跑,通过 USB-CAN 收发器直控电机,不经过下位机,把通信延迟压到最低。


硬件清单

部件 型号 作用
主控 Orange Pi 5 Plus(RK3588S) 视觉检测 + 控制运算
电机 张大头 ZDT X42S 第二代闭环步进 摆动杆(CAN 总线控制)
CAN 收发器 CANable(slcan 固件) USB ↔ CAN 桥接
视觉 USB 摄像头 小球位置检测
执行机构 自制连杆 + 球杆 电机旋转 → 杆摆动

视觉部分

  • 检测:ROI 裁剪 + 二值化 + Canny 边缘 + 霍夫圆检测,锁定小球圆心,换算成杆坐标系的毫米位置
  • 滤波:卡尔曼滤波同时估计位置与速度,抑制检测噪声
  • 延迟补偿:摄像头采集+处理有约 30~50ms 滞后,用估计的速度向前预测,补偿纯滞后环节——这是能否稳住的关键细节之一

控制部分

实现了两种控制器,可用编译开关切换:

1. PD 控制(线性)

围绕标定出的平衡点电机角做线性化:杆角误差 → 电机角修正量。简单可靠,是 baseline。

2. SMC 滑模控制(非线性)

设计了滑模面 s = c·e + ė,配合边界层饱和函数抑制抖振。相比 PD,对参数摄动和外部扰动(比如手拨一下球)鲁棒性明显更好。调参顺序:先调 c 让系统有明显动作,再调增益 K 和边界层厚度 δ 抑制抖动。

3. 开环扫描模式(SCAN_5CM)

除平衡外还实现了 ±5.5cm 自动往返扫描:球速低于 1mm/s 即刻切换阶段,用于电赛要求的"小球定点巡回"指标。


踩过的坑(血泪经验)

  1. 电机回零方向和工作方向绝不能搞反——回零用顺时针撞限位设零点,工作用逆时针负角度区间 [-80°, 0°],方向互换会直接撞坏机械结构
  2. 不要用 SET_ZERO 指令设零点,掉电丢失;用限位开关机械回零才可靠
  3. 平衡点电机角必须现场标定(实测为 -36.6°),重心装歪一点就全变
  4. SMC 增益太低时电机会"装死"不动——先怀疑增益,再怀疑别的

代码仓库

项目已完整开源(C++ / CMake,Windows & Linux 双平台):

🔗 GitHub:FlydreamKM/ball-beam-project

├── vision_pc/main.cpp         ← 视觉追踪原型(检测+卡尔曼)
├── vision_pc/ball_balance.cpp ← 视觉+CAN 直控闭环(核心)
├── vision_pc/ik_sweep.cpp     ← 开环扫描/IK 验证工具
├── X_V2.c / X_V2.h            ← X42S 电机 CAN 协议库
└── vision_pc/MANUAL.md        ← 完整使用手册

Linux 一键构建运行:

cd vision_pc
./build.sh --smc    # 构建 SMC 版本
./run_smc.sh        # 启动

欢迎 Star & 交流~有问题可以提 Issue。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!