当前位置:   article > 正文

嵌入式学习记录——基于STM32的四足机器人设计_stm32四足

stm32四足

一、前言

        通过两周江科大的STM32学习,使得我对于嵌入式最基础外设的调用与内部时钟和定时器有了初步的理解,因为目前本人技术力和精力有限以及AD软件的长时间搁置,此项目中的PCB主板与机身骨架均为某宝购买,在之后会逐步去复习(doge)。

        本项目是基于STM32的常规项目开发,实现了蓝牙控制四足机器人的移动、转向、舞蹈动作,使用的软件为Keil5,采用标准库函数进行设计。

工程和源码请移步Github:GitHub - EDMTANOC/A-Simple-Quadruped-Robot-Based-on-STM32: Embedded Development Learning Record

二、主要配件清单

器件名称数量
STM32F103C8T6最小系统板1
HC-06蓝牙模块1
TS90A 5V直流舵机8
降压模块+主板+骨架1
3.7V 14500电池2

三、设计思路

        在核心配置方面主要通过两个时钟的比较输出通道,从而实现8个PWM的输出来对舵机进行控制,以此实现每个脚的控制。在控制方面以HC-06蓝牙模块实现USART串口通讯,通过手机APP进行控制。

        在步态上相关的资料已经有很多了,本人在移动上主要采用的是对角式爬行的方式,0号脚和2号联动,1号和3号联动。

  1. void Go_Ahead(void){
  2. leg0_CW();
  3. leg2_ATCW();
  4. Delay_ms(200);//0,2号腿各自挪动
  5. Servo4_SetAngle(110);
  6. Servo6_SetAngle(120);
  7. leg3_CW();
  8. leg1_ATCW();
  9. Delay_ms(200);//0,2号腿转向舵机反向推动的同时1,3号腿挪动
  10. Servo5_SetAngle(60);
  11. Servo7_SetAngle(50);
  12. leg0_CW();
  13. leg2_ATCW();
  14. Delay_ms(200);//1,3号腿转向舵机反向推动的同时0,2号腿挪动
  15. Servo4_SetAngle(110);
  16. Servo6_SetAngle(120);
  17. leg3_CW();
  18. leg1_ATCW();
  19. Delay_ms(200);
  20. Servo5_SetAngle(60);
  21. Servo7_SetAngle(50);
  22. leg0_CW();
  23. leg2_ATCW();
  24. Delay_ms(200);//重复步态
  25. Servo4_SetAngle(110);
  26. Servo6_SetAngle(120);
  27. leg3_CW();
  28. leg1_ATCW();
  29. Delay_ms(200);
  30. Servo5_SetAngle(60);
  31. Servo7_SetAngle(50);
  32. leg0_CW();
  33. leg2_ATCW();
  34. Delay_ms(200);//重复步态
  35. leg0_Init();
  36. leg1_Init();
  37. leg2_Init();
  38. leg3_Init();//恢复
  39. }

        其效果如图:

        在转向方面,以左转为例,通过转向舵机的共同作用以及高度舵机的固定来实现机体的转向:

  1. void Turn_Left(void){
  2. leg0_ATCW();
  3. Delay_ms(50);
  4. leg2_ATCW();
  5. Delay_ms(50);
  6. leg1_ATCW();
  7. Delay_ms(50);
  8. leg3_ATCW();
  9. Delay_ms(100);//四个脚分别逆时针转至所需角度
  10. Servo4_SetAngle(65);
  11. Servo5_SetAngle(25);
  12. Servo6_SetAngle(75);
  13. Servo7_SetAngle(12);//转向舵机顺时针转动使机身向左转动
  14. Delay_ms(100);
  15. leg0_ATCW();
  16. leg2_ATCW();
  17. Delay_ms(100);
  18. leg1_ATCW();
  19. leg3_ATCW();
  20. Delay_ms(100);
  21. Servo4_SetAngle(65);
  22. Servo5_SetAngle(25);
  23. Servo6_SetAngle(75);
  24. Servo7_SetAngle(12);//重复步态
  25. Delay_ms(50);
  26. leg0_Init();
  27. leg1_Init();
  28. leg2_Init();
  29. leg3_Init();//恢复
  30. }

        其效果如图:

        至于竹节虫舞蹈动作就不在此赘述了,在工程Move.c文件的代码中一目了然。

四、总结

        此文章作为个人学习记录,仅供交流参考,由于本人仍处于学习阶段,在动作的设计方便欠佳(比如行动轨迹上的偏差),代码的优化上也存在诸多问题,可能有更多的没有利用起来的函数能实现细致化的控制以使得步态更加完美,最后希望此工程能为读者提供些许帮助。

五、设计参考

哔哩哔哩:【STM32入门教程-2023版 细致讲解 中文字幕】 https://www.bilibili.com/video/BV1th411z7sn/?share_source=copy_web&vd_source=494d8a46761a4e0ce0df6f3a9b7a7957

CSDN:【四足机器人(从PCB到3D打印)】

四足机器人(从PCB到3D打印)_四足机器人代码-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/556749
推荐阅读
相关标签
  

闽ICP备14008679号