2 主要原理

2.1 仿生六足机器人行进原理
本论文仿生六足机器人的行进方式主要参考了六足昆虫的三角步态,行进时通常将六只脚分为两组,每组三足呈三角形交替行走以保证重心的稳定。这种步态依靠腿部的前后摆动将身躯前移,虽然为了让重心保持在三角形内,导致腿部跨度小,行进速度也称不上快,但是其稳定性却无可置疑。在下列分析中假定左前、右中、左后为A组足,右前、左中、右后为B组足。
前进的流程,可分解为两个过程,以及三个状态间的转换。假设A组足先动,状态a为初始状态,左三和右三足呈对称形态。状态b为A组足角度较初始状态不变并抬起,B组足组成的重心较初始状态滞后。状态c为B组足角度较初始状态不变并抬起,A组足组成的重心较初始状态滞后。过程x为B组足落地,A组足抬起并恢复初始位置,随后B组足以足尖为支点带动身躯前移。过程y为A组足落地,B组足抬起并恢复初始位置,随后A组以足尖为支点带动身躯前移。控制流程图图如图1,状态图如图2。
在这里插入图片描述

图2-1 前进控制流程图在这里插入图片描述

图2-2 前进步态图
2.3 图像传感器数据输出、读取原理
图像传感器的数据输出是在三个输入信号的控制下进行的,这里采用了QVGA模式输出像素。如下图:
在这里插入图片描述

图2-5 图像输出行时序图

3 硬件选型

3.1六足机器人控制系统芯片选型
在市面上,可作为控制器的产品主要分为单片机、嵌入式两大类,而实际上其实这两者的界限也挺模糊,有些高性能单片机并不是不能搭载计算机系统,只是效率不高,没有必要罢了,而嵌入式大部分也是基于单片机设计的,也可以说是微型计算机的裁剪版。因此,在此只是大概划分了这两类产品,并介绍其细分种类下不同系列的产品的优劣势。
对于机器人控制和学生市场而言,单片机主要考虑用51单片机,stm32系列单片机和arduino板。51单片机是由ATMEL公司推出的一种8位单片机,它的功能相对比较基础,基于汇编语言跑程序的同时,芯片处理速度慢,导致其运行速度也慢,只能进行一些简单的控制,优点是使用简单,只要将寄存器配置好,载入程序就行,并且比起其他8位单片机,具有乘除法运算,无需调用子程序来实现乘除算法。Stm32系列单片机是ST厂商推出的一款以arm为内核的32位单片机,特点是高性能、低成本、低功耗。其最高72Mhz的工作频率,大大提升了单片机的运行速度,并提供了丰富的外围接口。Stm32系列单片机较51较为复杂,主要在于大量寄存器的配置和使用,也因此可以关掉不需要使用的功能,降低功耗。而arduino板实际上是一种基于AVR单片机设计的开发板,它更多的是提供软件上的支持,而不是硬件上的支持。官方提供了丰富的库函数资源,开发者不需要去了解内部的硬件结构和寄存器的设置,只需要知道端口的作用,就能够避开底层驱动和硬件进行开发。同时在官方的开源社区,也提供了大量、具有不同功能的函数库封装,方便业余爱好者使用。
在这里插入图片描述

图3-1 51单片机 图3-2 STM32系列单片机

4 控制系统设计

对于六足机器人而言,主要应用于探索勘测领域。为了能够被控制和检测,并拥有一部分自动探查的能力,采用手机蓝牙实现通讯,并搭载摄像头以获得环境数据。
4.1控制系统硬件设计
在这里插入图片描述

图4-1 硬件系统
4.2控制器STM32F103VCT6电路原理图
在这里插入图片描述

图4-2 单片机系统原理图
4.4.3 行走功能
六足机器人的行走,实际上就是舵机角度的改变,而舵机角度的改变实际就是控制信号PWM波占空比的改变。显示在程序里,就是对定时器进行配置,然后根据步态不断地改变定时器输出的PWM波的占空比。下列是前进状态下其中一个动作的代码:

加入循环代码后,调整占空比,实现如流水灯的效果,等效于PWM波占空比的改变。

在这里插入图片描述

图4-7 PWM占空比控制
4.4.4 拍照功能部分代码
由于使用了带FIFO的摄像头模块,图像传感器传输的数据都被缓存在了FIFO模块中。因此读数据时不需要对时序进行过多的控制,只要读取FIFO中的前76800个像素(QVGA格式)就是所需要的图片。而对于rgb565格式的像素数据,需要用16位的空间来存储。每个PCLK周期只读半个像素,因此需要分别读低8位和高8位的像素数据。读取数据的基本代码如下列所示:

由于没有上位机来,转换数据成图片,暂时使用LCD来读取像素数据,以验证数据的正确性,模拟效果如下图。
在这里插入图片描述

图4-8 lcd读取照片数据

5 总结与展望

本次研究,主要实现了:1.六足机器人以三角步态的方式行走:用stm32的定时器输出占空比可变的PWM波,以驱动舵机角度的改变。2.摄像头数据的读取。3.利用超声波模块进行测距避障。4.使用蓝牙对六足机器人进行控制和双向通讯。
主要问题有:1.超声波测距功能在对比较靠近的细长物体的测距时效果很差。2.蓝牙模块能稳定通讯的距离太短了。3.程序效率一般,还有待优化。
在这次设计中,使用了STM32系列的芯片来实现六足机器人的控制。由于第一次使用stm32单片机,繁多的寄存器确实给我带来了不少麻烦。在调试各种功能的过程中,往往会遇到某个寄存器没有使能或者配置错误而导致的失败。最好的解决方法就是仔细查看数据手册里的相关内容和官方所提供的相关库函数的定义,了解更底层的实现原理。

文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐