毕业设计| 自制六足机器人

发布者:yunhui最新更新时间:2023-05-05 来源: zhihu关键字:毕业设计  STM32F407 手机看文章 扫描二维码
随时随地手机看文章

下位机核心用的是STM32F407,驱动部分是两路XL4016(output:5V8A),注意两路驱动分别连接左右两侧三个舵机的VCC,这样运行时每路驱动最多只会给两个足的舵机供电(三角步态后续会讲),以保证最大电流供应!

硬件清单:MG996×18、1.3寸oled×1、五轴按键×1、NRF转串口×2、超声波×1、MPU6050×1、7.2V7C锂电池×1、三线电压表×1、STM32F407最小系统×1XL4016驱动电路(电流一定要够!否则极易失控!)



3

框架搭建

1)配置舵机使用的定时器,使用了三个通用定时器,两个高级定时器(舵机太多了通道不够用呀)

初始化定时器(注意:高级定时器要在通用定时器之后初始化,如果在前编译通过但会出异常,极易烧毁舵机!!!)

2)测出各个舵机的中值,之后都是用PWM值对应角度的,不了解的小伙伴可以搜下舵机控制原理。舵机中值宏:



3)开发下位机GUI,1.3寸oled配合五轴按键比较小巧灵活、便于调试:



以及初始化各种外设。(注意:接受上位机命令的串口的中断抢占优先级必须高于其它模块的优先级!!!)4)上位机:原子家的F7开发板+7寸电容屏,用NRF转串口模块与下位机通信OS:UCOSIIIGUI:STemWin可以直接用GUIBui

4

运动控制

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α


5

步态设计

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)通过改变延时时间调整速度(延时不能太小,否则舵机响应不及会造成损伤)




6

花里胡哨功能

1)避障模块用的超声波,只在前方装了一个,所以只能前进状态下进行避障,当检测到前方30cm内有障碍时会强制向左转,直至前方30cm内无障碍为止才跳回前进状态。反射面积有点小,在曲面障碍物前会不太好使,就像视频3:01处那样。(触发口是放在中断里和自平衡共用一个定时器,flag解决一切。)

2)自平衡使用的MPU6050做传感器,能够在不稳定平面实现稳定,开环运行,未设置PID闭环(高度有限,直接把偏差按比例乘就能达到不错的效果),在横滚角(安装位置受限,就是前后)下FOOT_C、FOOT_D不做运算。MDK中融合程序:



3)LED大灯LED是拆的台灯上的,用一个NPN三极管做开关,效果看着还挺拉风哈~~


关键字:毕业设计  STM32F407 引用地址:毕业设计| 自制六足机器人

上一篇:毕业设计| STM32蓝牙智能小车
下一篇:毕业设计| STM32F4电子阅读器制作教程

推荐阅读最新更新时间:2024-11-18 16:16

stm32f407串口通信使用流程
初始化 1.定义初始化变量 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; 2.使能时钟 GPIO开启AHB1时钟 USART1开启APB2时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟 3.配置GPIO端口为引脚复用USA
[单片机]
STM32的时钟系统学习笔记(基于STM32F407
RCC(Reset clock Control 复位时钟控制器) 时钟源(时钟生成) 常规:外部晶振、芯片内部振荡器、锁相环(PLL) PS:(Phase Locked Loop): 为锁相回路或锁相环 其他:以太网、USB OTG FS、或其他外设的时钟源 STM32F407时钟树关系图(重点理解经常用到) 时钟总线 RCC通过多个预分频器配置时钟总线 PS:预分频器 (Prescaler-PSC)用来将定时器时钟源进行分频输出 总线类型:AHB、低速APB1、高速APB2 PS: AHB(Advanced High Performance Bus),高级高性能总线 APB(Advanc
[单片机]
STM32的时钟系统学习笔记(基于<font color='red'>STM32F407</font>)
STM32F407 串口接收中断的使用
1 首先,在HAL_UART_MspInit函数当中初始化串口的外设时钟,串口接收中断使能配置,串口IO配置。该函数会由HAL库自行调用。 2 然后,写一个中断入口函数,该函数需要调用HAL库当中的HAL_UART_IRQHandler接口,HAL_UART_IRQHandler中会对中断的标志位进行处理,然后会调用中断回调函数HAL_UART_RxCpltCallback。 3 重写中断回调函数,在该函数当中处理串口缓冲区当中的内容。 4 HAL库的中断使用顺序都大致类似,其它类型的中断处理对坐入号替换就好。
[单片机]
<font color='red'>STM32F407</font> 串口接收中断的使用
STM32F407-获取GPIO电平状态
判断STM32 GPIO输入口的输入状态(高电平或低电平) 以PE2和PE4为例: ① 判断单个端口是否为高电平: if(GPIOE- IDR& GPIO_IDR_IDR2) { 函数体; } 当PE2端口为高电平时,if条件为真;当PE2口为低电平时,if条件为假; ② 判断单个端口是否为低电平: if((~GPIOE- IDR)& GPIO_IDR_IDR2) { 函数体; } 分析:首先通过 &GPIO_IDR_IDR屏蔽掉PE2之外的其他PE口。当PE2为高电平时,GPIO-〉IDR的bit2为‘1’,取反后为‘0’,因此条件为假;当PE2为低电平时,GPIO-〉IDR的
[单片机]
基于stm32F407 10KHZPWM方波以及PWM周期计算
#include sys.h #include timer.h void TIM4_PWM_Init(u16 arr,u16 psc) { RCC- APB1ENR|=1 2;//使能TIM4 RCC- AHB1ENR|=1 3;//使能GPIOD GPIO_Set(GPIOD,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); GPIO_AF_Set(GPIOD,12,2); TIM4- ARR=arr; TIM4- PSC=psc; TIM4- CCMR1|=6 4;//PWM1 mode
[单片机]
STM32F407——多功能跑马灯
1、完成多功能跑马灯项目。。 2、预习中断。。 #正点视频第2讲开发板入门,第3讲stm32学习方法,第4讲NVIC中断优先级管理,第28讲外部中断实验-EXTI。。 ##多功能跑马灯 #include sys.h #include delay.h #include usart.h #include led.h #include beep.h #include key.h //ALIENTEK 探索者STM32F407开发板 实验3 //按键输入实验-库函数版本 //技术支持:www.openedv.com //淘宝店铺:http://eboard.taobao.com //广州市星翼电子科技有限公
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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