当前位置: 首页 > article >正文

从零构建板球控制系统:PID算法与视觉定位实战

1. 板球控制系统入门指南第一次听说板球控制系统时你可能和我当初一样充满好奇这个小玩意儿到底是怎么工作的简单来说它就是一个能自动控制小球在平板上运动的智能系统。想象一下你把一个白色小球放在黑色平板上系统就能让小球乖乖地按照你设定的路线移动是不是很神奇这个系统主要由三部分组成眼睛摄像头、大脑单片机和肌肉舵机。摄像头负责看小球的位置单片机进行运算处理舵机则根据计算结果调整平板的倾斜角度。我在实验室里搭建的第一个原型用的就是最常见的硬件组合山外MK60单片机、鹰眼摄像头和S-D5舵机总成本不超过500元。选择这些硬件可不是随便决定的。MK60单片机有足够的计算能力处理图像和PID运算鹰眼摄像头帧率高、延迟低能准确捕捉小球的运动S-D5舵机扭矩适中响应速度快。这里有个小技巧平板一定要选哑光表面的我试过亮面亚克力板反光太严重会影响图像识别。2. 视觉定位的核心技术2.1 特征检测圆算法实战要让系统看见小球最关键的就是图像处理。我尝试过几种方法最终选择了特征检测圆算法因为它计算量小在单片机上也能流畅运行。这个算法的核心思想很简单找白色物体判断它是不是圆形。具体实现时我先把摄像头采集的图像二值化处理变成纯粹的黑白图像。然后逐行扫描遇到白色像素就开始计算连续白点的数量。当横向宽度符合小球直径范围时再纵向检查高度。最后还要验证四个角点是否为黑色确保检测到的是圆形而非方形。// 小球识别核心代码片段 if(n xRMin n xRMax){ // 计算圆心坐标 site-x 8 * (w-i1) e n / 2; site-y h - i (ei)/2; // 圆形验证 if(!((img[a][(n)/8](7-(n)%8)) 0x01)) continue; return 0x01; // 找到小球 }2.2 霍夫变换的取舍在前期调研时我也考虑过霍夫变换这种更高级的圆形检测方法。它在复杂背景下确实更稳定但计算量太大我们的单片机根本吃不消。实测下来处理一帧图像要500ms以上完全达不到实时控制的要求。所以除非你用树莓派这类性能更强的硬件否则还是推荐特征检测圆这种轻量级算法。3. PID控制算法详解3.1 基础PID原理PID控制是自动化领域的经典算法由比例(P)、积分(I)、微分(D)三部分组成。你可以把它想象成开车时的三种操作P就像看到红灯立即踩刹车I会记住这个路口经常有红灯提前减速D则根据车速变化趋势预判是否需要刹车。在板球系统中我们需要两个PID控制器分别控制X轴和Y轴。当小球偏离目标位置时PID算法会计算出需要倾斜的角度通过舵机调整平板。我刚开始调试时只用了P参数发现小球总是在目标位置附近来回晃动这就是典型的过冲现象。3.2 串级PID的进阶应用单级PID很难同时保证响应速度和稳定性所以我升级为串级PID结构。这个设计很巧妙外环位置环负责要去哪内环速度环负责怎么去。实测下来系统的抗干扰能力明显提升即使突然拨动小球它也能快速恢复稳定。调试串级PID有个重要技巧先调内环我的步骤是固定位置环输出为0专注调试速度环让小球在平板上自由滚动调整参数使其快速静止最后再调试位置环让小球能准确到达目标点// PID参数设置示例 double kp 0.22, ki 0.00, kd 0.35; // 位置环 double skp 4.30, ski 0.0, skd 2.20; // 速度环4. 系统集成与调试技巧4.1 硬件组装要点机械结构对系统稳定性影响很大。我的经验是万向节一定要安装在平台正中心两个舵机对称分布在相邻两边。连接杆长度要精确测量确保平板倾斜角度与舵机转动成线性关系。有个容易忽略的细节所有连接件必须紧固我用热熔胶固定了关键节点防止运行时产生晃动。4.2 软件调试实战调试过程可谓痛并快乐着。最头疼的是小球识别不稳定后来发现是环境光干扰。解决方法很简单加个遮光罩或者像我一样在晚上调试。PID参数调试更是个耐心活我记录了每个参数的调整效果参数调整方向系统反应推荐值Kp增大响应变快但易震荡0.22Kd增大抑制震荡但响应变慢0.35Ki增大消除静差但可能积分饱和0.04.3 进阶功能实现基础功能稳定后我增加了轨迹跟踪功能。通过预设坐标点序列小球可以走出直线、方形等路径。这里要注意两点一是点间距不能太大否则小球容易失控二是要在程序中做好积分分离避免远距离移动时积分项饱和。// 轨迹控制代码片段 switch(myTask){ case line: xSitePid.Set ballMotionLine[count%2].x; ySitePid.Set ballMotionLine[count].y; break; case square: xSitePid.Set ballMotionSquare[count%4].x; ySitePid.Set ballMotionSquare[count].y; break; }记得第一次看到小球乖乖沿着方形路径运动时那种成就感真是难以形容。虽然过程中踩过不少坑比如小球经常飞出台面、PID参数调了又调但最终稳定运行的那一刻所有的努力都值得了。建议你也动手试试从最简单的单点稳定开始逐步增加难度这样的学习曲线最合理。

相关文章:

从零构建板球控制系统:PID算法与视觉定位实战

1. 板球控制系统入门指南 第一次听说板球控制系统时,你可能和我当初一样充满好奇:这个小玩意儿到底是怎么工作的?简单来说,它就是一个能自动控制小球在平板上运动的智能系统。想象一下,你把一个白色小球放在黑色平板上…...

基于明朝内阁制的AI多智能体协作系统:从原理到部署实战

1. 项目概述:当皇上,一个基于明朝内阁制的AI多智能体协作系统 如果你曾经幻想过像皇帝一样,只需动动嘴皮子,就有一群“大臣”为你分忧解难,处理从写代码到查账单的各种琐事,那么“当皇上”这个项目&#x…...

一键捕获完整网页:3步掌握Chrome长页面截图神器

一键捕获完整网页:3步掌握Chrome长页面截图神器 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-extension …...

3分钟快速上手:AcFunDown视频下载工具完整指南

3分钟快速上手:AcFunDown视频下载工具完整指南 【免费下载链接】AcFunDown 包含PC端UI界面的A站 视频下载器。支持收藏夹、UP主视频批量下载 😳仅供交流学习使用喔 项目地址: https://gitcode.com/gh_mirrors/ac/AcFunDown AcFunDown是一款专为A站…...

LibreDWG:解放AutoCAD文件的瑞士军刀,3个实用场景教你玩转开源CAD处理

LibreDWG:解放AutoCAD文件的瑞士军刀,3个实用场景教你玩转开源CAD处理 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 还在为无法打…...

3步拯救你的机械键盘:KeyboardChatterBlocker防连击终极指南

3步拯救你的机械键盘:KeyboardChatterBlocker防连击终极指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否遇到过这…...

如何构建企业级开源实时协作编辑器?Etherpad团队协作解决方案终极指南

如何构建企业级开源实时协作编辑器?Etherpad团队协作解决方案终极指南 【免费下载链接】etherpad Etherpad: A modern really-real-time collaborative document editor. 项目地址: https://gitcode.com/gh_mirrors/et/etherpad 在数字化转型浪潮中&#xff…...

手把手教你用checksts.py脚本,提前给VMware vCenter的STS证书做‘体检’(避坑指南)

企业级vCenter运维:STS证书主动检测与全生命周期管理实践 当vCenter突然弹出503 Service Unavailable错误时,多数运维团队的第一反应是检查服务状态和网络连接,却很少有人会想到——这可能是由那个"沉默的定时炸弹"STS证书过期引发…...

AI编程助手变身色彩专家:meodai/skill.color-expert技能库深度解析

1. 项目概述:一个为AI编程助手打造的“色彩科学专家”技能库如果你和我一样,经常在开发与色彩相关的工具、设计系统,或者向团队解释复杂的色彩理论时,需要反复查阅资料,那你一定会理解那种“知识碎片化”的痛苦。你可能…...

Cesium项目避坑指南:动态泛光效果的性能优化与纹理材质选择

Cesium项目避坑指南:动态泛光效果的性能优化与纹理材质选择 当你在Cesium中实现了一个基础泛光效果后,可能会发现随着场景复杂度的提升——比如加载整个城市建筑群或复杂的管线网络时——性能开始急剧下降。帧率骤降、内存占用飙升,甚至浏览器…...

SITS大会技术社区交流活动实战指南(附2024最新人脉激活话术库)

更多请点击: https://intelliparadigm.com 第一章:SITS大会技术社区交流活动 SITS(Software Innovation & Technology Summit)大会作为国内聚焦开源协作与工程实践的年度技术盛会,其技术社区交流活动以“共建、共…...

Astro群岛架构与内容集合:构建高性能AI工具配置中心实践

1. 项目概述:一个面向开发者的AI工具配置中心如果你和我一样,每天都在和Cursor、Claude、VS Code这些工具打交道,那你肯定也遇到过类似的烦恼:看到一个同事分享了一个巨好用的Cursor规则文件,或者一个能直接调用内部AP…...

别再只盯着TOF了!从三角测距到相控阵,一文搞懂激光雷达的四种测距原理与选型避坑

激光雷达技术全景解析:从基础原理到工程选型实战指南 当扫地机器人精准绕开你的拖鞋,当自动驾驶汽车在暴雨中识别障碍物,背后都离不开一项关键技术——激光雷达。作为机器感知环境的"眼睛",激光雷达的性能直接决定了整个…...

别再只装Multisim了!完整配置NI Circuit Design Suite 14.0,解锁Ultiboard和全版本功能

解锁NI Circuit Design Suite 14.0全功能:从Multisim到Ultiboard的完整配置指南 在电子设计自动化(EDA)领域,NI Circuit Design Suite一直以其强大的功能和易用性受到工程师的青睐。然而,许多用户仅仅停留在Multisim的…...

从零到一:TMS320F28335开发环境避坑与首个工程实战

1. 开发板选购与开箱准备 第一次接触TMS320F28335时,我和大多数初学者一样面临"从哪开始"的困惑。经过对比多家产品,最终选择了普中科技的开发套件。这个选择主要基于三个实际考量:首先是性价比,199元的价格包含了XDS10…...

终极指南:3分钟掌握BOTW存档编辑器,打造你的专属海拉鲁冒险

终极指南:3分钟掌握BOTW存档编辑器,打造你的专属海拉鲁冒险 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 你是否厌倦了在《塞尔达传说&am…...

蓝奏云直链解析终极指南:三步获取高速下载链接

蓝奏云直链解析终极指南:三步获取高速下载链接 【免费下载链接】LanzouAPI 蓝奏云直链,蓝奏api,蓝奏解析,蓝奏云解析API,蓝奏云带密码解析 项目地址: https://gitcode.com/gh_mirrors/la/LanzouAPI 还在为蓝奏云…...

AIAgent权限审计报告生成器已上线(SITS2026 v1.2认证工具):10分钟自动生成符合监管要求的Traceable权限图谱

更多请点击: https://intelliparadigm.com 第一章:AIAgent权限管理:SITS2026概述 SITS2026 是新一代面向多智能体协同环境的细粒度权限管控规范,专为 AIAgent 系统设计,强调身份可信、意图可验、操作可溯。它不再依赖…...

新型AirSnitch攻击可绕过家庭、办公室及企业Wi

很难夸大Wi-Fi在生活各个层面所扮演的角色。负责管理这一无线协议的组织表示,自上世纪90年代末Wi-Fi问世以来,已有超过480亿台支持Wi-Fi的设备出货。有估计显示,全球Wi-Fi用户数量约达60亿,占世界总人口的70%左右。尽管人们对Wi-F…...

ARM CoreSight通道接口原理与应用实战

1. ARM CoreSight通道接口概述在复杂的多核SoC调试系统中,CoreSight的通道接口(Channel Interface)扮演着神经中枢的角色。这种特殊的通信机制最早出现在ARMv7架构时代,经过多次迭代已成为现代调试体系的核心组件。我曾在多个车载…...

8大网盘直链下载助手:开源工具如何彻底改变你的文件下载体验?

8大网盘直链下载助手:开源工具如何彻底改变你的文件下载体验? 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…...

AI SaaS快速开发:从架构设计到生产部署的实战指南

1. 项目概述:一个面向AI SaaS的快速开发起点最近在GitHub上看到一个挺有意思的项目,叫sony9997/ai-saas。光看这个名字,就能大概猜到它的定位:一个为构建AI驱动的SaaS(软件即服务)应用而设计的项目模板或脚…...

ETS2LA:在《欧洲卡车模拟2》中实现自动驾驶的终极解决方案

ETS2LA:在《欧洲卡车模拟2》中实现自动驾驶的终极解决方案 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Assist 你是否曾…...

SKILL.md:用Markdown文件让AI助手直接调用Twitter API

1. 项目概述:让AI助手直接操作Twitter/X的“技能文件” 如果你正在捣鼓AI助手,想让它帮你自动刷推、搜索信息、管理社群,甚至自动回复私信,那么你很可能已经遇到了一个巨大的障碍:Twitter(现在叫X&#xf…...

网盘直链下载助手:告别限速,9大平台文件高速下载终极方案

网盘直链下载助手:告别限速,9大平台文件高速下载终极方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…...

提升英文打字速度的终极方案:Qwerty Learner 免费安装与使用指南

提升英文打字速度的终极方案:Qwerty Learner 免费安装与使用指南 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: h…...

开发AI应用时如何借助Taotoken实现模型故障的自动容灾

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 开发AI应用时如何借助Taotoken实现模型故障的自动容灾 在构建依赖大模型能力的AI应用时,服务连续性是一个关键考量。单…...

基于容器化技术的高交互蜜罐系统设计与实战部署

1. 项目概述:一个高交互的蜜罐系统最近在整理安全研究工具链时,又翻出了beelzebub这个项目。它不是一个新面孔,但在开源蜜罐领域,其设计理念和实现方式一直让我觉得很有意思。简单来说,beelzebub是一个用 Go 语言编写的…...

ABAQUS 2023版实战:修正DPC帽盖模型参数设置保姆级教程(附岩土工程案例)

ABAQUS 2023版修正DPC帽盖模型参数设置全解析:从理论到岩土工程实战 岩土工程和粉末材料模拟中,材料本构模型的选择直接影响计算结果的可靠性。修正Drucker-Prager帽盖模型(Modified Drucker-Prager Cap,简称修正DPC模型&#xff…...

告别键盘连击烦恼:开源工具KeyboardChatterBlocker完全指南

告别键盘连击烦恼:开源工具KeyboardChatterBlocker完全指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 还在为机械键盘的…...