基于STM32、ESP32,钢铁侠打造机械臂设计

发布者:和谐相伴最新更新时间:2024-03-20 来源: elecfans关键字:STM32  ESP32  机械臂 手机看文章 扫描二维码
随时随地手机看文章

机器人一直是稚晖君很感兴趣的一个方向,而在工业机器人中他认为最实用的非机械臂莫属。正巧,半年前稚晖君偶然淘到了一台二手机械臂,这让他有些激动。然而,喜悦之情还没持续多久,稚晖君就有些不开心了:在他花了一些时间将这台机械臂研究透彻,并自己开发了一套 SDK 后,感到了一点不妙:“这个手子不太行啊”。


稚晖君表示,目前市面上的机械臂都不够酷,因此决定要自己造一台很酷的机械臂,并将其取名为 Dummy(取自钢铁侠中一只名为 Dummy 的机械臂)。为此他总结了一份架构设计图(由于该图较长,视频中为滚动呈现,因此本文仅截取部分):

8e36207e-ade0-11ee-8b88-92fbcf53809c.png

硬件准备

既然是要设计一台机械臂,那就需要从硬件开始准备,毕竟无论软件算法再重要,也需要一个优质的载体才能完美呈现。

驱动方案

硬件方面,首先需要确定的就是驱动方案,其中包括人们常说机器人的三大核心部件——电机、减速器和驱动器。

一般真正的工业机器人使用的电机都是无刷伺服电机,其性能各方面都非常优秀,只是它的驱动系统较为复杂,并不适用于本次机械臂极其紧凑的结构当中。相比之下,稚晖君选择了精度最高的步行电机,但它在高转速下力矩较小的缺点需要克服。

为此,稚晖君选择使用工业机械臂里面最常用的谐波减速以解决步行电机的力矩问题:其零背隙、高减速比、超小体积等优点简直是为这个项目量身打造。

电机和减速器确定后,驱动器方面稚晖君设计了一个步进电机的一体闭环驱动,以此保证驱动精度和体积最小化。

结构设计

驱动方案确定之后,紧接着就是结构设计,以下为设计图最终版本:

8e5a49c2-ade0-11ee-8b88-92fbcf53809c.png

大家有没有注意到这张图的一个亮点?

8e78f106-ade0-11ee-8b88-92fbcf53809c.png

没错,这个最终版本是第 151 版,在此之前还有 150 个版本稿,稚晖君都直呼:“这次的作品是我至今为止画过最复杂的结构设计了。”

从图中可以看到,这款机械臂一共使用了 6 个电机和 6 个谐波减速器,机身主体采用铝 CNC 加工,装饰组件则由 3D 打印制作,为了美观,控制电路上也都集成在本体上。

8e833fda-ade0-11ee-8b88-92fbcf53809c.png

稚晖君还提到,之所以这个机械臂会设计成红色,并不是为了致敬钢铁侠,而是因为“如果野生钢铁侠的机器人有颜色的话,那一定是中国红”,稚晖君自称为“野生钢铁侠”。

电路设计

整套机械臂的电路设计也非常复杂,其中涉及到了电源模块、电机驱动、计算模块、通信系统等很多方面,光各种型号的 MCU 就用了 12 个。此外,为了后续的扩展性够强,能在交互方面做一些独特创新,稚晖君在机体上还搭载了 WiFi、蓝牙、2.4G 等多种无线能力。

当然,这都是次要的,在电路方面最主要的还是主控制器和电机伺服驱动器

先说电机伺服驱动器吧,稚晖君将其设计为电机一体式的驱动,支持 CAN 总线和功率机联,因此整套系统下来,仅需 4 根线即可将 6 个电机以及末端执行器全部连接起来。不仅如此,这款驱动器的性能也非常优秀,使用 FOC 加斩波恒流,并且添加了高精度的磁编码进行闭环控制,因此避免了像传统步进电机那样丢步的可能,在最高转速和效率方面也表现不俗。

8ea260d6-ade0-11ee-8b88-92fbcf53809c.png

“如果说驱动器是心脏的话,那控制器就是机械臂的小脑了。”控制器方面,稚晖君采用了他此前开发的机器人开发框架 REF,基于 Cortex-M4 内核的 MCU。稚晖君解释道,这是因为 M4 内核自带 FPU 和 DSP,可大幅提升此后控制算法中涉及到的大量复杂计算的效率。另外,主控制器采用冗余设计,除了主控制器 REF 外,还搭载了一个 ESP32 作为协处理器,用作 STM32 的安全备份并提供 WiFi、 蓝牙等无线能力。

总体而言,稚晖君为解决精度和性能问题,共进行了三个步骤:

第一、使用步进电机加一体闭环驱动;

第二、使用 0 背隙的谐波减速器;

第三、在后续的算法实践中进行高精度补偿。

软件走起

硬件具备了,但这只是开始,更为核心的还是软件算法部分。稚晖君指出,对于机械臂来说,最核心的软件内容在于运动学正逆解的算法以及动力学模型的实现。

8eb50d08-ade0-11ee-8b88-92fbcf53809c.png

运动学正逆解算法可以得知机械臂每个关节角度和最终末端位置之间的正逆解求解关系,而动力学模型则用于实现碰撞检测、柔性控制、力学反馈等多种功能,具体会涉及到大量十分复杂的矩阵和偏微分计算,这一点也是稚晖君在项目实现中花费时间最多的部分:“请大家记住,这些项目表面上看起来是电子和机械,其实背后全是算法和数学。”

除了核心算法外,软件部分还包括命令行和图形化的上位机、手机端的 APP 以及无线示教器固件等。另外,可能还有人注意到了机械臂底座上有一个又大又圆的灯环:

8ec41d5c-ade0-11ee-8b88-92fbcf53809c.png

看起来是不是很像......没错,就是鸿蒙的 Logo,这台机械臂主控制器里运行的是 LiteOS 内核的鸿蒙系统。

交互方式

软硬件兼备,那么接下来就是我们最喜闻乐见的演示环节啦!在这个部分,稚晖君展示了很多常规和非常规的交互方式,一句话总结就是:你想要的交互方式,这里都有!

利用串口

这是一种最简单的交互方式,机械臂通过 USB 连上电脑会出现一个串口号,使用者能很方便地用串口命令来控制机械臂,还可以选择多种坐标方式,例如关节坐标系、世界坐标系、工具坐标系等,而所有的姿态结算均在机械臂内部完成。

8ee97dea-ade0-11ee-8b88-92fbcf53809c.png

使用命令行

通过稚晖君设计的 REF 自带的 RPC 框架,可实现更大自由度的机械臂控制和各种参数设置。

8eff1600-ade0-11ee-8b88-92fbcf53809c.png

图形化上位机

以上两种方式对于技术人没啥问题,但对于普通人来说就有些“阴间”了。因此稚晖君还实现了对应的图形化上位机,可以在上位机中进行“傻瓜式”的拖拽交互。

同时,这种交互还是双向的,即不仅可以把动作下发给机械臂,还可以在软件中实时同步机械臂的姿态:

手动协作示教

理论上来说,以上三种交互方式已经可以满足绝大多数的使用需求了,但精益求精的稚晖君怎会止步于此:“更优雅的交互方式是什么?当然是连软件都不用打开,所见即所得。”

基于此,可在硬件设计阶段通过合理设置减速器的减速比,使得机械臂可以在保持力矩和精度的同时进行反驱,以此获得手动协作示教的功能,即只需手动教它一遍运动流程,它就可以自动学习重复:

但很多协作机器都有手动示教功能,所以稚晖君觉得这并不算炫酷,因此他设计了一个开启示教功能的特别方法:一个无线智能小终端。

8f13a8f4-ade0-11ee-8b88-92fbcf53809c.png

这个无线示教器名为 Peak,其功能非常多,可通过低功耗蓝牙和机械臂进行无感连接以实时显示机械臂的各种状态信息,还可以切换各种功能,其中就包括进入示教模式。

AR

除此之外,稚晖君还利用了较为前沿的 AR 技术作为交互方式。毕竟上位机无法展示真实环境,手动示教也比较累,而结合增强现实技术则可以真正实现“指哪打哪”的效果。

终极交互形态:像自己的手臂一样

相信在许多人看来,以上这些交互方式已经足够优秀了,但对稚晖君来说却“还没有到理想状态”、“这一切都还不够自然和优雅”。为了追求极致的交互状态,稚晖君思考了很久,最终想到了人类使用机械臂最符合直觉的方式:要跟使用自己的手臂一样。

出于这种想法,稚晖君设计了一套由双目相机、AHRS 系统、AI 算力平台、力传感和力反馈装置以及通信模组组成的装置,以此实现将人类手臂的动作直接同步到机械臂上,具体原理如下:

首先由双目相机进行目标识别和跟踪定位以及AHRS 系统进行姿态解算来获取准确的手部位置和旋转姿态(由于此过程涉及到的 AI 算法需要高效计算平台来承载,因此稚晖君选择了华为昇腾的 Atlas 边缘计算平台),然后实时的位姿信息会经过复杂的坐标换算通过无线的方式发送给机械臂,机械臂收到之后便能响应执行。

不仅如此,考虑到机械臂的实用性价值,稚晖君还为机械臂设计了一个带力反馈的微型夹爪,也就是说,使用者可随时得知夹爪正在抓取东西的力度。

8f2828e2-ade0-11ee-8b88-92fbcf53809c.png

同时,结合空间定位系统,他还设计了一个手持控制器,集成了 AHRS 装置、红外 LED 以及 PS5 手柄中号称黑科技的扳机(其中安置了一个力反馈马达,可实现对于各种物理效果的真实模拟)。

8fbec432-ade0-11ee-8b88-92fbcf53809c.png

整套设备的最终效果堪称终极交互形态:使用者不仅可以把动作实时同步到机械臂,而且还可以在控制器这边实时感受到机械臂末端抓取东西的质感。

为了展现这个效果有多惊人,稚晖君用机械臂给葡萄做了一个缝合手术:

自然,这套动作让人们亲手完成也可以,不就是缝个葡萄,但你可以人在厕所缝着客厅的葡萄吗?没错,这台机械臂可以实现远程操作,除此之外,他还可以进行软件去抖、运动范围的重映射、力矩强增强等多种人手无法达到的效果。


关键字:STM32  ESP32  机械臂 引用地址:基于STM32、ESP32,钢铁侠打造机械臂设计

上一篇:一种34位MCU超声相控阵导盲系统设计
下一篇:STM32开发中的位运算以及位带操作

推荐阅读最新更新时间:2024-11-04 17:40

STM32系统时钟配置查询
有时候我们需要知道自己单片机平台使用的主频是多少,因为很多外设都要根据主频去分配自己的时钟系统。 RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); 系统调试信息: 根据此调试信息,我们可以清楚看到系统分配的时钟频率。
[单片机]
STM32单片机串口DMA解析
讨论三个问题:1、什么叫串口DMA 请求;2、串口简要复习;3、串口DMA发送流程。 1、什么叫串口DMA 请求(战舰STM32开发板) 说这个问题之前先简单回顾DMA的基本特性。先导出原子哥的PPT内容: DMA全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。 STM32有两个DMA控制器(DMA2只存在于大容量产品中),DMA1有7个通道,DMA2有5个通道,每个通道专门用来管理来自于一个或者多个外设对存储器的访问请求。还有一个仲裁器来协调各个DMA请求的优先权。 作用:为CPU减负
[单片机]
<font color='red'>STM32</font>单片机串口DMA解析
基于ESP32的3D打印Wi-Fi机器人
ESP32 WiFi机器人是ZeroBot的缩小版本。它由同样受欢迎的ESP32作为核心,而不是Raspberry Pi。 尽管处理能力较低,但ESP32机器人具有很多功能, 它通过WiFi传输彩色视频,使用小型锂电池,可以通过任何网络浏览器精确控制。凭借4欧元的Esp32和3欧元的相机,它也非常便宜。 特征: - 全3D打印机箱,(几乎)无需胶水 - 使用websocket接口的模拟控制 - 120x160px的低延迟流媒体(~100ms) - 定制PCB,没有杂乱的布线 - 适用于任何3.7V LiPo电池 - Micro USB用于编程和充电 器材: ESP32不需要应用程序,可以从任何具有Web浏览器的PC或移动
[机器人]
STM32 PWM波驱动模拟舵机(库函数版)
数字舵机 vs 模拟舵机 “数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在规定的某个位置。” 到底模拟舵机与数码舵机在实际使用中有什么区别呢?我自己总结大致有以下几点: 1 数码舵机在位置准确度方面要高于模拟舵机。 2 在同样标称1.6公斤的舵机面前数码舵机在实际表现中会感觉更加“力气大”而模拟舵机就会“肉”点。 3 模拟舵机由于控制芯片是模拟电路,所以即便是相同型号的舵机会存在小小的性能差异,而数码舵机在一致性方面就非常好。 4 数码舵机一般均采用PID优化算法,所以,线性要好过模拟舵机。 5 对于高灵敏度
[单片机]
<font color='red'>STM32</font> PWM波驱动模拟舵机(库函数版)
STM32(RFID)阶段一:添加串口USART2,修改中断接收协议
因学校比赛原因接触到RFID技术,并结合STM32单片机开发一卡通系统。由于需要和RFID读写器通信,以及上位机软件通信,所以添加USART2串口,并根据RFID数据包改写中断接收协议。资料支持:《不完全手册》《中文手册》端口通用与复用,APB1外设,串口寄存器,中断配置 阶段一:demo程序功能:通过串口USART2接收数据包,并把数据再发回去。RFID型号M3650A-HA 数据包第二个数据为数据包的长度,使用str接收长度,USART_RX_STA bit15置1 表示接收结束。 上代码 void uart_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure
[单片机]
STM32-NVIC中断嵌套优先级管理器
NVIC简介 NVIC(Nested Vectored Interrupt Controller),中断嵌套向量控制器,是 Cortex‐M3 不可分离的一部分,它与 CM3 内核共同完成对中断的响应。在了解NVIC之前最好简单了解一下CM3内核的中断系统,传送。 NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQn),每个中断有最高256(最低8)级的优先级,具体的中断数和优先级级数由芯片厂商在设计芯片时决定(STM32F1支持60个外部中断,16级优先级)。此外,NVIC 还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入。NMI 的实际功能亦由芯片制造商决定。在某些情况下,NMI 无法由外部中断源
[单片机]
STM32-NVIC中断嵌套优先级管理器
STM32内部EEPROM的使用方法
STM32内部的EEPROM其实是Flash模拟的,也就是会占用程序的存储空间,下载的程序也放在这个地方,不过L系列单独给eeprom分配的有位置,理论上所有的STM32都可以使用这个方法,但是要注意程序越大占用的空间越多,不要和程序覆盖在一起。 大家可能使用的型号都不同,我们首先在官网下载对应型号的参考手册 网址:意法半导体STM | STM32/STM8微控制器 | MCU单片机 STEP.2 打开pdf文档找到 Flash program memory and data EEPROM (FLASH) 这里有详细的说明 找到对应的内存的设备 示意: L071是196KB的所以是这个表格 STEP.3 开
[单片机]
<font color='red'>STM32</font>内部EEPROM的使用方法
STM32中ucos的编写程序
* Includes ------------------------------------------------------------------*/ #include config.h /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ //定义 堆栈大小 //#define TASK_STK_SIZE 128 #define TASK_STK_SIZ
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved