关于四足行走机器人步态分析STM32+SG90舵机控制

这篇具有很好参考价值的文章主要介绍了关于四足行走机器人步态分析STM32+SG90舵机控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于四足行走机器人步态分析STM32+SG90舵机控制

  • 最近逛某站看了很多国赛大佬的赛车,下面评论区一堆大佬在感叹“老师看到赛车都摇头。”作为一个初入STM32坑的萌新,我在某些站上查阅了相关资料后,确定给我自己的机器人搞成四足行走(ps,其实是L298N烧了)。
  • 目前手上的板子是C8T6,学习的视频是江科协,主要代码有部分属于移植的,这里就不贴源码包了,也有很多自己的设计在里面,懒得去移植出来。
  • 言归正传,四足机器人,类似动物界的猫狗豹狮子等进行行走运动。可以前进,后退,右转向,左转向。

引脚设置:

我采用的是,PB 6 、7、 8、 9四个引脚控制四个舵机,用的是TIM4的四个通道,参数源于江科协视频参数。
 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);


TIM_InternalClockConfig(TIM4);

TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;

TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;

TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInitStructure.TIM_Period = 20000 - 1; //ARR

TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; //PSC

TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;


TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStructure);



TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCStructInit(&TIM_OCInitStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 0; //CCR

TIM_OC1Init(TIM4, &TIM_OCInitStructure);

TIM_OC2Init(TIM4, &TIM_OCInitStructure);

TIM_OC3Init(TIM4, &TIM_OCInitStructure);

TIM_OC4Init(TIM4, &TIM_OCInitStructure);


TIM_Cmd(TIM4, ENABLE);

Pwm输出波形控制舵机,

void PWM_SetComparePB6(uint16_t Compare)

{

TIM_SetCompare1(TIM4, Compare);

}


void PWM_SetComparePB7(uint16_t Compare)

{

TIM_SetCompare2(TIM4, Compare);

}


void PWM_SetComparePB8(uint16_t Compare)

{

TIM_SetCompare3(TIM4, Compare);

}

void PWM_SetComparePB9(uint16_t Compare)

{

TIM_SetCompare4(TIM4, Compare);

下面,我们将他的四肢分解开来,设为ABCD四足。如图。

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

PB6-------A

PB7-------B

PB8-------C

PB9-------D

这个时候我的代码是这样的

PWM_SetComparePB6(1500);

PWM_SetComparePB7(1500);

PWM_SetComparePB8(1500);

PWM_SetComparePB9(1500);

在四足运动过程当中,把每两次直立步态之间的时间定为一个周期T,从四脚直立状态开始,时间设置为γ

前进分析:

当γ=0时,ABCD 同时 站立,

从γ=0 到γ=1/4T

        时间段内,A C 向前抬起,(假设抬起45°),这个时候,BD保持直立以支撑身体站立。

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

此时我们的4个舵机代码应该是(假设抬起45°)(代码参数根据自己引脚输出和舵机放置方向调试,我这里舵机方向大头在前 小头在后。。离齿轮近的边为大头方向,远的边叫小头方向。)实在分不清楚 每个角度设置一次看看。

PWM_SetComparePB6(1000);//A腿是顺时针在动角是缩小的,

PWM_SetComparePB7(1500);

PWM_SetComparePB8(2000);//c腿是逆时针在动,角度是放大的。

PWM_SetComparePB9(1500);

从γ=1/4T到γ=1/2T

        的时间段里,这时候AC处于悬空态,BD 从直立状态开始悬空,学过初中物理,应该能够理解,力的作用是相互的,我们的车要向前走,轮子给地面的力方向是向后的。所以此时,我们的BD两条腿,同时向后蹬腿,给到机器人向前的力。此时的状态应该如图:

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

此时我们的4个舵机代码应该是:

PWM_SetComparePB6(1000);//

PWM_SetComparePB7(2000);//B腿开始向后蹬,,

PWM_SetComparePB8(2000);//

PWM_SetComparePB9(1000);//D腿开始向后蹬,

这个时候机器人应该会向CD方向倾斜,这边变矮了。

当γ=1/2T到γ=3/4T

        的时候。我们机器人的AC腿往直立方向回复,BD悬空,AC向后蹬腿,再一次给了机器人向前的力。如图

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

PWM_SetComparePB6(1500);//回到直立

PWM_SetComparePB7(2000);//,

PWM_SetComparePB8(1500);//回到直立

PWM_SetComparePB9(1000);//

当γ=3/4T到γ=T

        的时候。我们机器人的AC腿直立支持机器人,BD从悬空回复。

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

PWM_SetComparePB6(1500);//回到直立

PWM_SetComparePB7(1500);//,

PWM_SetComparePB8(1500);//回到直立

PWM_SetComparePB9(1500);//

这样就完成了一个前进的周期,同理,可以计算出先出DB腿的数值和步态。

后退同理,反向写代码就行了。

转弯:左转,

当γ=0时,

        四足姿态直立,照搬前面的代码。

PWM_SetComparePB6(1500);//回到直立

PWM_SetComparePB7(1500);//,

PWM_SetComparePB8(1500);//回到直立

PWM_SetComparePB9(1500);//

当γ从γ=0到γ=1/4T

        过程中,机器人抬起AC腿,如图。

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

这时候 BD支撑 AC悬空。

PWM_SetComparePB6(2000);//

PWM_SetComparePB7(1500);//,

PWM_SetComparePB8(1000);//

PWM_SetComparePB9(1500);//

当γ从γ=1/4T到γ=1/2T

        过程中,AC悬空,BD开始悬空,B腿向前,作用力向后;D腿向后,作用力向前;形成逆时针旋转,力向左倾斜,完成向左运动。

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式

PWM_SetComparePB6(2000);//

PWM_SetComparePB7(1000);//,

PWM_SetComparePB8(1000);//

PWM_SetComparePB9(2000);//

当γ从γ=1/2到γ=3/4T

        过程中,ABCD倾斜支撑机器人身体,此时AC回复直立状态,A向前蹬腿,形成向后的力,C向后蹬腿形成向前的力。BD被拉起悬空。

AC形成的合力,逆时针方向,机器人整个身体向左运动。

舵机四足机器人,单片机,嵌入式硬件,机器人,stm32,状态模式


 

PWM_SetComparePB6(1500);//

PWM_SetComparePB7(1000);//,

PWM_SetComparePB8(1500);//

PWM_SetComparePB9(2000);//

最后,当γ=从γ=3/4T到γ=T

过程中,BD从悬空到直立,双腿没落地,也行成不了力。

PWM_SetComparePB6(1500);//

PWM_SetComparePB7(1500);//,

PWM_SetComparePB8(1500);//

PWM_SetComparePB9(1500);//

同理,可以分析出向右的四个步态。

新人第一次写,试试手,如有不懂,或者错误,感谢指出!

资源参考,某站的少儿编程视频步态分析。文章来源地址https://www.toymoban.com/news/detail-811602.html

到了这里,关于关于四足行走机器人步态分析STM32+SG90舵机控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器人坐标系解读及四足机器人虚拟模型控制(VMC)控制方法

    终于理清VMC控制方法了,对于很多新入门机器人的小伙伴,尤其像我这样做毕设前完全没有接触过机器人的本科生来说,坐标变换可谓是一大难,很多教材说的也是非常一本正经,非常不利于入门学习。本文对四足机器人坐标变换以及VMC控制方法作以简要介绍,力求简单易懂

    2024年02月06日
    浏览(21)
  • 四足步行机器人的结构设计及仿真

    目 录 摘要 I ABSTRACT II 第1章 绪论 1 1.1 课题研究的目的和意义 1 1.2 国内外关于四足步行机器人的发展现状 2 1.2.1 国外关于四足步行机器人的发展现状 2 1.2.2 国内关于四足步行机器人的发展现状 3 1.3 本设计的研究目标及完成的主要工作内容、预期结果 5 1.3.1 研究目标 5 1.3.2 设计

    2024年02月05日
    浏览(14)
  • 874. 模拟行走机器人

    874. 模拟行走机器人 机器人在一个无限大小的 XY 网格平面上行走,从点  (0, 0)  处开始出发,面向北方。该机器人可以接收以下三种类型的命令  commands  : -2  :向左转  90  度 -1  :向右转  90  度 1 = x = 9  :向前移动  x  个单位长度 在网格上有一些格子被视为障碍物

    2024年02月16日
    浏览(18)
  • 云深处绝影四足机器人协议学习解析

    本学习文档介绍了云深处 绝影X20 四足机器人的通信协议,并对相关的通信机制和命令格式进行了简单的解析。该协议在机器人系统和上位机(例如外部板卡或系统)之间进行TCP通信时使用。 在此协议中, 机器人本体 作为 TCP服务端 , 上位机 作为 TCP客户端 。协议的TCP服务

    2024年02月13日
    浏览(19)
  • ESP32(MicroPython) 四足机器人(五)功能补充

    本次更新增加了前后倾斜(每次动作交换前部和后部高度)、蹲起与抬脚动作,均位于用于连续执行动作的function函数中,但实测抬脚动作需要先启动function函数的另一项功能才能正常开启,代码检查无误,应该是MicroPython固件的bug。另外,对于判断功能,增加了elif语句的使用

    2024年02月15日
    浏览(19)
  • 一款基于ESP32的迷你四足机器人

    增加自定义动作模式,可以在小程序中自定义一个最多10个步骤的动作。 附件中:带自定模式固件bin.zip esp32c3固件文件 烧录下图设置 无串口版本esp32c3开发板烧录前先按住BOOT键再插线进入烧录模式,LoadMode选择USB。 微信小程序蓝牙遥控app审核通过了,扫这个码就能用: 视频

    2024年02月04日
    浏览(18)
  • 【算法-数组-pyhton】模拟行走机器人

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月12日
    浏览(16)
  • 874. 模拟行走机器人 模拟+哈希存储

    题目链接力扣 机器人在一个无限大小的 XY 网格平面上行走,从点  (0, 0)  处开始出发,面向北方。该机器人可以接收以下三种类型的命令  commands  : -2  :向左转  90  度 -1  :向右转  90  度 1 = x = 9  :向前移动  x  个单位长度 在网格上有一些格子被视为障碍物  obst

    2024年02月11日
    浏览(9)
  • 【每日一题】874. 模拟行走机器人

    机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度 -1 :向右转 90 度 1 = x = 9 :向前移动 x 个单位长度 在网格上有一些格子被视为障碍物 obstacles 。第 i 个障碍物位于网格点 obst

    2024年02月16日
    浏览(18)
  • ​LeetCode解法汇总874. 模拟行走机器人

    https://github.com/September26/java-algorithms 机器人在一个无限大小的 XY 网格平面上行走,从点  (0, 0)  处开始出发,面向北方。该机器人可以接收以下三种类型的命令  commands  : -2  :向左转  90  度 -1  :向右转  90  度 1 = x = 9  :向前移动  x  个单位长度 在网格上有一些格子

    2024年02月11日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包