完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
这个项目是我本科毕业设计作品,可实现功能有常规控制(前后左右移动、左右自旋)、保持自平衡、三档变速及自主避障功能,历时三个月在家独立完成。应各位的请求写一篇项目技术总结,用以类似项目开发参考。本文将以机械结构、硬件设计、软件设计、算法处理(核心)、GUI开发几个方面来叙述。资料下载在每章的末尾,演示视频b站链接:https://www.bilibili.com/video/BV12V41167nU
关键字:DH模型、STM32、三角步态、PWM控制、PCB、Solidworks、GUI、UCOS 一、机械结构 *机械结构直接使用的这位up的作品,非常感谢!链接:www.bilibili.com/video/BV1n4411S7Me *因我专业是自动化,机械类不太熟悉现学的solidworks2018,推荐一个速学视频我学了差不多100分钟左右就可以进行简单修改了。链接:https://www.bilibili.com/video/BV1jt411v77o?p=1 修改后的草图 3D打印后的实物 自己喷漆,商家喷太贵啦(弄脏地面已被爸打) 组装后 (!!!注意:安装时一定要把舵机中值对应到机械结构中间部分,以保证有足够的活动范围!!!) 补充:主结构部分(PCB下面那部分六个插槽)的舵机插槽短了点可能是打印误差,我都是用锉刀磨了2、3mm才能塞进去,Link2偏偏一点问题没有奇怪= =。所有孔部分都是用胶枪粘的,,,,因为一拧螺丝进去,不到一半就断了,因该是孔径太浅了再加上打印精度不够。 3D打印图纸下载链接:https://download.csdn.net/download/qq_40690943/12663102 二、硬件设计 下位机核心用的是STM32F407,驱动部分是两路XL4016(output:5V8A),注意两路驱动分别连接左右两侧三个舵机的VCC,这样运行时每路驱动最多只会给两个足的舵机供电(三角步态后续会讲),以保证最大电流供应! 硬件清单:MG996×18、1.3寸oled×1、五轴按键×1、NRF转串口×2、超声波×1、MPU6050×1、7.2V7C锂电池×1、三线电压表×1、STM32F407最小系统×1 XL4016驱动电路(电流一定要够!否则极易失控!) AD13设计的PCB效果图 焊接后(散热片空间计算错了emmmm) 原理图、PCB下载链接:https://download.csdn.net/download/qq_40690943/12663111 三、框架搭建 1、首先配置舵机使用的定时器,使用了三个通用定时器,两个高级定时器(舵机太多了通道不够用呀) 初始化定时器 (!!!注意:高级定时器要在通用定时器之后初始化,如果在前编译通过但会出异常,极易烧毁舵机!!!) 2、测出各个舵机的中值,之后都是用PWM值对应角度的,不了解的小伙伴可以搜下舵机控制原理。 舵机中值宏 3、开发下位机GUI,1.3寸oled配合五轴按键比较小巧灵活、便于调试 以及初始化各种外设 (!!!接受上位机命令的串口的中断抢占优先级必须高于其它模块的优先级!!!) 4、上位机:原子家的F7开发板+7寸电容屏,用NRF转串口模块与下位机通信 OS:UCOSIII GUI:STemWin 可以直接用GUIBuilder开发 回调函数中的通知代码 界面效果 四、运动控制 1、运动模型使用的是DH模型,其意义在于正运动学时,在已知六足机器人腿部的各个连杆长度及各个旋转角度,通过正运动学公式计算得到六足机器人足端的位姿,这里只考虑位置信息即X、Y、Z。而逆运动学就是反过来,在已知足端末尾的位置信息时,可以倒推出各个自由度的旋转角度。 2、DH模型的四个核心参数(资料来源于网络) θn为Xn-1绕Zn-1旋转至与Xn平行的旋转角度 α为Zn-1绕Xn-1旋转至与Zn平行的旋转角度 dn为Zn-1与在Zn轴上分别做的两条公垂线的距离 an为Zn-1与Zn的垂线距离 Zn-1与Zn轴上的公垂线为0,故本设计不考虑d 3、将其余参数代入变换矩阵,我设定的θ1=90°、θ2=40°,θ3=120°,a1~a3就是连杆长度,α为90° 随后就是三个齐次变换矩阵相乘(s和c分别对应各自由度的正弦、余弦,l为Link就是a) 4、解出后得出正运动学公式 5、进而推出逆运动学公式 逆运动学公式体现在程序中 6、OK,现在可以配置原点坐标了,将a1~a3、θ1 ~θ3(θ2、3请合理配置,太矮了影响美观,太高了活动范围太小)代入正运动学公式,这一步可以用MATLAB或者VS直接计算。 得出结果后设置宏,接下来所有的控制都是在这基础上做的偏差,例如我要让机器人向前走1cm,那么把X0-1代入逆运动学公式即可实现,其它基础控制同理。 7、在前进是不仅要改变X轴,还需改变Z轴,Z轴随着X轴的变化而变化,运用余弦定理即可解决,其它基础控制同理 例如:△Z^2= △X ^2 + Z0 ^2 - 2*△X *Z0 cosα 比较不错的参考视频: https://www.bilibili.com/video/BV1Ts411k7wV https://www.bilibili.com/video/BV1c7411j7Mk https://www.bilibili.com/video/BV1dE411T73U 五、步态设计 1、步态使用的是三角步态(六次项根轨迹法没吃透就抬腿硬走了emmm) FOOT_A、FOOT_E、FOOT_D为左对足(Left_FOOT) FOOT_B、FOOT_F、FOOT_C为右对足(Right_FOOT) 以前进状态为例: 前进状态逻辑,L对足首先向前迈出一步,L对足落地后,R对足紧跟着向前迈出一步但和地面保持一定高度,此时仅有L对足与地面支撑受力,随后L对足贴着地面向后一步,因为L对足与地面摩擦产生作用力使六足机器人身体向前移动一步的距离,R对足落地。随后是循环步骤执行环节,L对足向前迈出一步不落地保持悬空,R对足贴着地面向后一步,L对足落地,R对足向前迈出一步不与地面接触,L对足紧贴地面向后一步,R对足落地,随后依次循环进行。 其它的基础控制逻辑大同小异 2、通过改变延时时间调整速度(延时不能太小,否则舵机响应不及会造成损伤) 六、花里胡哨功能 1、避障模块用的超声波,只在前方装了一个,所以只能前进状态下进行避障,当检测到前方30cm内有障碍时会强制向左转,直至前方30cm内无障碍为止才跳回前进状态。反射面积有点小,在曲面障碍物前会不太好使,就像视频3:01处那样emmmm,,,(触发口是放在中断里和自平衡公用一个定时器,flag解决一切23333) 2、自平衡使用的MPU6050做传感器,能够在不稳定平面实现稳定,开环运行,未设置PID闭环(高度有限,直接把偏差按比例乘就能达到不错的效果),在横滚角(安装位置受限,就是前后)下FOOT_C、FOOT_D不做运算。 MDK中融合程序 3、LED大灯 LED片拆的台灯上的,用一个NPN三极管做开关,效果看着还挺拉风哈哈哈~~。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1781 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1085 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
732浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
559浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 11:47 , Processed in 0.950860 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号