第二章 四足机器人的实现原理及硬件设计
2.1 四足机器人的相关技术分析
2.1.1需求分析
本设计要求采用ESP8266串口WiFi模块进行指令编译和接收,要求通信模块与网络模块连接成功,机器人才能接收命令指令,经过MCU处理,再通过PWM Servo舵机驱动板模块PCA9685来调节舵机转动的角度值,从而完成预定或指定的动作,比如前进后退,左右移动和左右平移等等,最后环节再加上一个超声波避障。
2.1.2系统实现框架
为实现上述功能需求,如图2.1所示系统框架图,在移动操作端进行指令的输入,通过无线局域网WiFi模块的接收,经过MCU处理指令信息,从而驱动PWMservo的输出来控制各个舵机的转动的幅度值。
图2.1系统框架图2.1.3实现原理分析
本次设计的四足机器人使用8个舵机,每2个舵机组成一个运动的肢足,运动的方式是靠舵机接收PWM信号来对相应的肢足进行运动控制,而每个肢足它组成的2个舵机PWM信号值进行配合变成相应的运动状态,根据要求的运动姿势来发送PWM信号给各个肢足,从而实现一个完整的运动控制。四足机器人的前后运动,左右运动及左右平移运动会在第五章整体测试与调试中进行详细的解析。
2.2 硬件系统概述
一个现代制造的机器的运转缺少不了硬件和软件,但每一个机器组成成分最多的就是硬件,硬件及外辅助支架的组成相当于机器的器官和骨架,它可以提供强劲有力、高效稳定的运转条件,此次关于四足机器人的设计也是如此。
2.3 系统结构设计
2.3.1 系统各模块结构概述
(1)结构支架
有可选方案如下:
1.塑料3D打印支架结构。
2.椴木支架结构。
对比两种支架材料,虽然塑料的3D打印支架具有良好的实用性、稳定性和观赏性,自己没有相关的3D打印设备,而且价格较高。反观普通的椴木板。即使椴木支架易松动损坏,但也可以提供短期的稳定效果,又考虑到设计成本及现有设备材料,以及设计实验的初衷,决定用椴木作为结构支架。
(2)MCU控制端模块
由于此次四足机器人的设计采用的是ESP8266WiFi模块,局域网的无线连接,它支持手机、平板、电脑的连接控制,在很大方面展示了物联网的控制平台兼容性,相比电脑和平板,为方便此次设计,采用了移动手机作为操作控制端。
(3)电源模块
能源是每一个机器运转的前提条件,此次设计可用5.0V-12.0V电源作为动力,有两种电源方案选择:
1.锂电池
优点:质量偏轻,自放电率低,高储存能量密度。
缺点:厚度偏厚,成本高。
2.聚合物锂电池
优点:容量大,质量轻,厚度薄,价格便宜。
缺点:极片受潮容易发生气鼓,对环境要求高。
综上所述及设计目的功能需求,在此选择7.4V聚合物锂电池来作为电源。(如下图2.2所示)
图2.2聚合物锂电池
第三章 软件设计与实现
3.1软件概述
上章节介绍了硬件模块的组成,硬件之外便是软件的组成部分了,又分有系统软件和应用软件等,此次是软件设为源代码编程,经过开发环境编译处理后形成执行指令,源代码部分涉及了javascript的局域网Web网页的应用,即控制四足机器人的操作端,本次软件设计重点偏向于在辅助应用下进行四足机器人主要的运动控制的源代码修改设计。
3.1.1软件开发平台
在此,ESP8266模块可以支持多种编程模式,这显示了它的兼容性和实用方便性,以下是对其开发平台的参考及建议:
(1).使用AT指令进行操作:这是最常见的方式,使用PC端的串口助手配合简单的指令就可以实现,也可以配合单片机发送指令使用。
(2).LUA语言编程:这是一种单独ESP8266编程的方式,可以不依靠单片机和串口调试软件,直接把程序编写到ESP8266内部。
(3).Arduino开发环境编程:这个接触过Arduino的都会比较熟悉。可以直接在Arduino IDE的环境下进行代码烧录,使用Arduino的开发方式进行开发,其相关资料也比较多。
综上所述,个人比较推荐Arduino 开发环境编程,因为比较容易接受与理解,arduino现在已经非常的成熟了,是一个非常成熟的解决方案了,相关资料也比较多,更适合作为这次设计的软件开发平台。(软件开发平台如图3.1、3.2所示)
图3.1 arduino开发平台
图3.2 代码编辑界面
3.1.2开发环境的配置
在Arduino开发环境中,由于设计中用到的是ESP8266开发板模块,在原来的开发板管理器是没有的,需要自己手动输入搜索添加的,操作过程下如图3.3、3.4、3.5所示。
1.在编辑界面中,点开工具,单击开“发板:‘XXX’”,展示右边界面,双机“开发板管理器”,如图3.3开发环境配置示意图所示;
图3.3 开发环境配置示意图第四章 四足机器人的测试与调试
4.1系统功能测试
4.1.1检测元器件
在进行整体搭建设计之前,需要对各个元器件进行质量检测,检测环节包括单独检测、部分检测和整体检测,同时包含电路接口和连接准确性的排查检测。在这个环节尤为重要,它可以为整体的构建提供有效可靠的基础,从平时实验可知,运用到数量较大的元件时,应增加该元件的实际数量,由此来解决低概率故障性的发生,确保设计如期进行。
4.1.2整体运行检测调试
按照设计的目的,在完成所有硬件和支架检测后,进行软件的写入和调试,这是设计中最后,也是最关键的一部分。保证由单个肢足运动到整体的运动动作的可行性和连贯性,从而达到预期的机械运动效果。
四足机器人的运动可以比作一个团队合作的成果,而一个团队队员的分工合作起着绝对性的作用,四足机器人的各个肢足通过有序的PWM信号值调节,从而形成四足机器人连贯的运动动作。接下来对对各个运动状态以图画演示和文字描述,含部分代码示例,详细代码参见附录。
1.开机复位及指令复位状态(如图4.1所示)
//开机复位
int Servo_Act_0 [ ] PROGMEM = { 140, 30, 140, 40, 40, 150, 40, 140, 1000 };
//指令复位
int Servo_Prg_8_Step = 2;
int Servo_Prg_8 [][ALLMATRIX] PROGMEM = {
{ 70, 90, 90, 130, 120, 90, 90, 70, 1000 },
{ 140, 30, 140, 40, 40, 150, 40, 140, 1000 },
};
图4.1 开机复位状态示意图2.站立状态(如图4.2所示)
int Servo_Prg_8_Step = 1;
int Servo_Prg_8 [][ALLMATRIX] PROGMEM = {
// 3, 14, 13, 12, 0, 1, 2, 15, ms
{ 90, 90, 90, 90, 90, 90, 90, 90, 500 }, //
{ 70, 90, 90, 130, 130, 90, 90, 70, 500 }, // 起立
};
图4.2 站立状态示意图第五章 超声波避障设计及有关故障分析
5.1超声波模块避障功能测试
在完成上述基本步态的测试后,接下来接入超声波模块进行超声波避障测试,主要执行代码如下所示;
case 8: // 超声波避障左转运动
do{
digitalWrite(trigPin,LOW);
delayMicroseconds(2);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
server.handleClient();
if(Servo_PROGRAM!=8)break;
shichang = pulseIn(echoPin,HIGH);
juli = shichang / 58;
if(juli < 20){
digitalWrite(ledPin,HIGH);//如果距离小于20厘米点亮LED灯
Servo_PROGRAM_Run(Servo_Prg_6, Servo_Prg_6_Step);//执行左转
}
else{
digitalWrite(ledPin,LOW);//LED灯灭
Servo_PROGRAM_Run(Servo_Prg_2, Servo_Prg_2_Step); //前进
}
Serial.print(juli);//向串口输出检测到的距离,测试调试时使用
Serial.println(“cm”);
}
while(1);
break;
一般情况下,我们取声波在空气传播的速度大约为343米/秒,转换厘米单位为34,300厘米/秒。作一下单位换算,34,300除以1,000,000厘米/微秒。即为:0.0343厘米/微秒,再换一个角度,1/(0.0343 厘米/微秒)即:29.15 微秒/厘米。所以每291.5微秒表示10CM的距离。1厘米就是29.15微秒。从发送到接收到回波,声波走过的距离为实际的2倍,所以实际距离就是1厘米对应58.3微秒,实际上整个测距过程是测的发出声波到收到回波的时间,程序里测量时间单位是us,换成距离cm,要除以58。
当四足机器人进入避障模式后,进入do-while循环,server.handleClient();实时更新,检测是否有新指令输入,如果有执行if(Servo_PROGRAM!=8)break语句,否则继续执行循环,if(Servo_PROGRAM!=8)break;判断进入循环后是否还有其他指令,保证其他指令的同一优先级,以便跳出超声波自动避障的循环,进入下一运动指令。在前进过程中检测到面前存在障碍物时,即juli<20cm时,机器人将停止向前运动,进行左转,等待新的juli数据值,juli>20cm就前进,否则继续左转,以此保证机器人不会撞到障碍物。在这里还有一种避障转向步骤,就是当检测到面前存在障碍物时,即juli<20cm时,先执行后退再左转,最后前进。
实际测试效果如下图5.1前进状态示意图、5.2检测状态示意图、5.3避障左转状态示意图所示;
图5.1 前进状态示意图
图5.2 检测状态示意图
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。