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

自己动手造个球平衡机器人

你是否曾对那些能够精妙地保持平衡的机器设备感到好奇?

从无人机到独轮平衡车,背后都蕴藏着复杂的控制系统。

今天,我们来介绍一个充满挑战与乐趣的项目——制作一个球平衡机器人。这不仅是一个酷炫的摆件,更是一次深入学习机器人、传感器和控制系统的机会。

在这里插入图片描述

这个项目源于一位创客的亲身实践,他从零开始,通过这个项目掌握了传感器、控制系统和逆运动学等核心知识,甚至学会了如何系统性地解决问题。它非常适合新手,也为那些希望将理论知识付诸实践的学生提供了完美的平台。

项目解析:三足鼎立的“平衡大师”

球平衡机器人,从工程角度看,是一个精巧的“三维平面并联机构”(3-RRS parallel manipulator)。你可以把它想象成一个由三条腿支撑的托盘。当小球偏离中心时,这三条“腿”——也就是三个步进电机——会协同工作,精确地调整托盘的倾斜角度,就像一个经验丰富的服务员在托盘上保持酒杯平衡一样,最终让小球始终回到中心位置。

在这里插入图片描述

那么,它到底是怎么做到这一切的呢?

简单来说,整个过程遵循一个闭环控制系统:

  1. 感知(输入): 平台上的电阻式触摸屏会实时感知小球的位置坐标。
  2. 计算(处理): 微控制器接收到这些坐标后,会进行复杂的运算,包括逆运动学PID控制。逆运动学计算出为了让小球回到中心,三个电机需要转动的角度;PID控制器则像机器人的“大脑”,不断地根据小球的当前位置和速度,精细地调整输出,以确保小球能平稳、快速地回到中心,而不是来回振荡。
  3. 执行(输出): 电机驱动器接收到微控制器的指令后,会精准地控制步进电机转动,从而调整平台的角度。

准备材料

要打造这个机器人,你需要准备以下核心部件和工具。

每个选择都有讲究:

  • 主控核心: Teensy 4.0 微控制器。为什么不用常见的Arduino?因为球平衡机器人需要高速、复杂的计算来处理实时传感器数据和控制算法,Teensy 4.0 的强大处理能力是其成功的关键。

  • 驱动核心: 三个 Nema 17 步进电机。步进电机能提供高扭矩和精确的步进控制,这对于实现平台角度的微调至关重要。

  • 感知核心: 一个电阻式触摸屏。它充当了机器人的“眼睛”,通过电阻变化来判断小球的精确位置。

  • 驱动模块: 三个 TMC2208 步进电机驱动器。这些驱动器能将微控制器的信号转化为电机所需的电流,并且拥有静音驱动功能,让机器人运行更平顺。

  • 电源: 一个能提供至少 24V、5A 电源的直流电源。步进电机需要较高的电压才能发挥出足够的扭矩。

  • 工具: 剪线钳、电烙铁、万用表等基础电子工具。此外,项目的大部分结构件需要通过 3D 打印制作,如果你没有3D打印机,可以寻找线下的创客空间或线上打印服务。

机械结构制作

项目最酷的部分之一就是它的机械设计。作者使用了 Solidworks 设计了所有的机械零件。好消息是,你不需要自己从头设计,作者已经将所有 3D 打印文件开源,你可以直接获取文件并进行打印。这一步主要是将各个零件打印出来,为后续组装做好准备。


在这里插入图片描述

电路搭建

这是项目的核心“神经系统”。

你需要根据项目提供的电路图,将 24V 电源、三个电机驱动器和 Teensy 4.0 微控制器连接起来。由于电机需要高压,而微控制器需要5V,因此需要一个稳压器将高压降下来。这一步考验的是你的焊接和电路连接能力,务必确保连接正确、牢固。

物理组装

将 3D 打印好的零件、电机、电路板和触摸屏组装在一起。这个过程需要一定的耐心,将每个部件都按照设计图纸安装到位,确保机械结构能够顺畅地移动,没有卡顿。

程序代码上传与调试

赋予机器人“生命”的关键一步。你需要将项目的代码上传到 Teensy 微控制器中。

代码包含了用于驱动电机、读取触摸屏数据以及实现平衡算法的所有逻辑。上传代码后,你还需要进行校准(Calibration),告诉机器人平台的水平位置,并调整 PID 参数,让它能够更平稳地控制小球。

在这里插入图片描述

完成以上步骤,你的球平衡机器人就大功告成了。当你亲手制作的机器人,在代码的驱动下,精准地保持小球的平衡,那种成就感是无与伦比的。

如果你对这个项目感兴趣,可以访问项目的 GitHub 页面,获取所有设计文件和代码:https://github.com/skulkarni3000/ball-balancing-bot

也可以到DF创客社区论坛下载所有打包文件。

http://www.lryc.cn/news/618986.html

相关文章:

  • 13.深度学习——Minst手写数字识别
  • 【自动化运维神器Ansible】playbook文件内变量定义全流程解析
  • 实时域自适应检测SOTA方案RT-DATR,刷新多个跨域检测榜单!
  • wordpress数据库文件sql导入时出现#1253错误
  • Java数据结构之ArrayList
  • 嵌入式分享合集136
  • 移动端调用大模型详解
  • 关于淘宝双十一
  • 数据分析小白训练营:基于python编程语言的Numpy库介绍(第三方库)(上篇)
  • DuckDB读取xlsx格式数据的方法比较
  • 【SpringBoot】MyBatis 动态 sql
  • 如何应对CAN总线冲突和数据丢包
  • 【c++深入系列】:万字详解模版(下)
  • 【项目设计】高并发内存池
  • AI赋能IT服务管理:从被动响应到智能驱动的跃迁
  • Linux驱动开发probe字符设备的完整创建流程
  • 【前端八股文面试题】【JavaScript篇7】什么是JavaScript的原型、原型链? 有什么特点
  • JavaScript Array.prototype.flatMap ():数组 “扁平化 + 映射” 的高效组合拳
  • 无人机三维路径规划
  • 2020/12 JLPT听力原文 问题一 4番
  • MyBatis-Plus——SQL注入器
  • LintCode第1526-N叉树的前序遍历
  • RabbitMQ面试精讲 Day 20:RabbitMQ压测与性能评估
  • 【游戏优化笔记】开发中如何减少建筑和树木等环境元素的资源消耗?
  • 行业热点丨智能仿真时代:电子工程多物理场解决方案创新实践
  • 【盘古100Pro+开发板实验例程】FPGA学习 | 中值滤波 | 图像实验指导手册
  • Redis知识点+项目+面试八股
  • redis认识缓存击穿
  • Flutter UI Kits by Olayemi Garuba:免费开源的高质量UI组件库
  • Element用法---Loading 加载