采用模块化设计的轮腿式六足机器人

原创作者:王菡琪

1、前言

1.1 背景及意义

近两个世纪以来,人类生产技术水平不断飞跃,人口数量也大幅增长,这是人类史上不曾有的盛景,但是这也同时对我们提出了全新的挑战,于是我们研发了各类机器,以所为我们肢体上的延展,帮助我们完成一些原本难以完成的工作,抑或者提高我们的工作效率。

1959年,世界上第一台工业机器人诞生,此后的短短半个世纪中机器人就已经历了4个发展阶段——工业机器人、遥控机器人、智能机器人和仿生机器人,在科学技术一代代的革新之下,这些机器人已不再是简单的接受指令再行动,而已经逐渐有了“思考”,可以应对更多,更复杂的场景,在作为人类四肢的延展外,甚至可以辅助,替代人的思考。

但是,近年来,我们需要探索更远的星球,更深的海洋,同时也需要更多可应用于日常的机器来改善,推动人们的生活,而已有的机器往往不能最好的符合现在的需求,因此我们研发新的机器人。仿生机器人是目前机器人发展的最高阶段,其为利用各类无机元件与有机功能体组建而成的机器人,可以高效而灵活地完成涉及到运动、感知、信息处理、控制协调等方面的各类复杂任务。而无论是基于仿生学或者是机器人的角度,仿生机器人都是现阶段科研的前沿领域之一。而本次我所研发六足机器人是重多门类的仿生机器人中的一种,其以探索为其主要功能,可以具体应用于调查建筑物以及保护维修文物等场景。而基于其六足,可弯曲的机器腿以及以轮为脚的设计,在应对未知的,可能伴有危险的场景时,该机器人可以通过曲腿,换向等方法更好回避应对,同时由于轮腿该机器人更可以平滑稳定地完成相关操作,减少对载物或者操作对象的破坏【4】。

1.2研究现状

六足机器人的研制,依赖于仿生学理论与计算机技术的发展,因此其研发的历史不长。上世纪八十年代末,美国麻省理工学院研制出六足机器人Genghis,其由伺服电机驱动每条腿上有2个旋转自由度,主要运用于地外行星的探测,该学院随后在上世纪九十年代初又研发了六足机器人Attila,在设计时把各部分当作独立模块设计,同时每条腿比Genghis多1个旋转自由度,提高了其容错能力。

图1-1 Gengh机器人【16】

于上世纪九十年代中期,美国麻省理工学院研制了六足机器人Ariel,该机器人用于浅滩排雷,每条腿只有两个旋转自由度,行走方向单一但是控制算法简单,运动灵活。同时期,美国凯斯西储大学研制了Robot Ⅱ,该机器人有4个自由度,其中3个为主动旋转自由度,另1个为被动柔顺自由度。21世纪以来,六足机器人研制速度加快。由德国Fraunhofer自主智能系统研究所研制的Scorpion,每条腿有3个旋转自由度,由伺服电机驱动,同时由于其装备了摄像机与超声波声纳测距传感器,可以感知周围环境。由德国杜伊斯堡大学研制的六足机器人Tarry Ⅱ每条腿有三个旋转自由度,采用舵机驱动,也同样有环境感知能力。机器人Lauron Ⅳ由德国卡尔斯鲁厄大学研制,其每条腿有三个旋转自由度,由伺服电机驱动,以皮带传动,能够提供三维的角速度和加速度信息。新西兰坎特伯雷大学研制的Hamlet每条腿有3个旋转自由度,由伺服电机驱动,以锥齿轮传动。六足机器人Asterisk由日本大阪大学研制,每条腿有4个旋转自由度,采用舵机驱动。

图1-2 Lauron Ⅳ机器人【2】

基于以上已研发的六足机器人,我们可以对其以腿部自由度的数量,驱动方式,传动方式等作为依据来将其分类。腿部自由度的数量是决定机器人行走方向的多样性与灵活性的重要指标,目前有2,3,4个自由度的机器人,3个腿部自由度是主流设计。驱动方式主要为舵机驱动和伺服电机驱动,传动方式有齿轮传动,皮带传动等【2】。

图1-3 RHex机器人【16】

2、方案概述

本发明作品一种基于Arduino的轮腿复合式六足机器人,在很多一种以探索、建筑调查、维护文物保护为主要应用任务的六足动物行走机器人的设计。该机器人由模块化拟人化结构的混合腿组成,其末端以全轮为脚。这种轮腿复合式机器人能够在轮式移动和腿足式移动模式同时进行,同时具备轮式机器人的快速移动能力和腿足式机器人的越障能力,能更好地应对危险环境的救援、深坑领域的探测等复杂环境下的操作任务。

本发明作品使用Arduino作为主控板,使用总线舵机控制器控制了18个总线舵机,使用蓝牙控制机器人的移动,实现了前进、后退、转向、跑步、行走等动作,具有一定的应用价值。

3、系统设计

3.1 理论设计

在自然界和人类社会中存在一些人类无法到达的地方和可能危及人类生命的特殊场合。如行星表面、灾难发生矿井、防灾救援和反恐斗争等,对这些危险环境进行不断地探索和研究,寻求一条解决问题的可行途径成为科学技术发展和人类社会进步的需要。地形不规则和崎岖不平是这些环境的共同特点。从而使轮式机器人和履带式机器人的应用受到限制。以往的研究表明轮式移动方式在相对平坦的地形上行驶时,具有相当的优势运动速度迅速、平稳,结构和控制也较简单,但在不平地面上行驶时,能耗将大大增加,而在松软地面或严重崎岖不平的地形上,车轮的作用也将严重丧失移动效率大大降低。为了改善轮子对松软地面和不平地面的适应能力,履带式移动方式应运而生但履带式机器人在不平地面上的机动性仍然很差行驶时机身晃动严重。与轮式、履带式移动机器人相比在崎岖不平的路面步行机器人具有独特优越性能在这种背景下多足步行机器人的研究蓬勃发展起来。而仿生步行机器人的出现更加显示出步行机器人的优势。

多足步行机器人的运动轨迹是一系列离散的足印运动时只需要离散的点接触地面对环境的破坏程度也较小可以在可能到达的地面上选择最优的支撑点对崎岖地形的适应性强。正因为如此多足步行机器人对环境的破坏程度也较小。轮式和履带式机器人的则是一条条连续的辙迹。崎岖地形中往往含有岩石、泥土、沙子甚至峭壁和陡坡等障碍物可以稳定支撑机器人的连续路径十分有限,这意味着轮式和履带式机器人在这种地形中已经不适用。多足步行机器人的腿部具有多个自由度使运动的灵活性大大增强【10】。它可以通过调节腿的长度保持身体水平也可以通过调节腿的伸展程度调整重心的位置因此不易翻倒稳定性更高。我选择了制造可以自动或操控的六足机器人。因为该方案可以将对人的可能伤害降到最低,也可以少考虑很多可能存在的危险因素,更为简洁以操作。而该方案是在参考了许多用于探测非地星球所用探测器而得,其通过超声波传感器避障,装有摄像头传像,并采用轮腿复合式的设计,只用每条腿两个旋转自由度就实现多向运动,以三角步态前行,在着重稳定性的同时也兼具稳定性。

3.2机械结构

图3-1机身上板和上板盖板

如图3-1中机身上板和上板盖板,机身上板特别留有一块可拆卸的板盖(螺丝固定,共12个),其用途在于简化后续调整的难度(下板与上板基本相同,仅无板盖设计)。

图3-2 四种不同形状的侧板

如图3-2中侧板设计时与上板,下板均有联动,预留有螺丝钉连结时的空隙与上班连结时用于定位与固定的榫卯结构。如此连结更为牢固。

由于木板厚度而难以拼合的问题——打磨掉多余木料,并打磨出一定的角度,最终在保证成功拼接之余,还在原计划基础上提高了美观性。

(由于对步态调整有影响优先解决)舵机联动问题——调整舵机间的相对位置,并改变舵机的模式来达到用两种独立参数调控运动模式,实现两个旋转自由度也可多向运行(注释见图3-3)。

图3-3 舵机连接方式

3.3电子电路

本产品主要包含以下核心电子元件,如图3-4所示:

1,总线舵机(共20个)和蓝牙模块。

2,超声波传感器与摄像头各一个。

3,调试板,接线,电池等。

图3-4舵机

3.3.1舵机原理介绍

型号与相关参数:

LX-16A串行总线舵机

金属齿轮结构

双滚珠轴承

连接线长度30厘米

尺寸:45.2mmX24.8mmX36.5mm

重量:54g

技术参数:

无负载速度0.17秒/60度(4.8V)

0.19秒/60度(7.4V)

扭矩:17KG

使用温度:-30~+60摄氏度

死区设定:4微秒

工作电压:6.0V-7.2V

舵机是一个通过输出轴的转动来控制物体转动的装置。它在特定编码的驱使下可以转动到工作范围内的任意给定位置。因为它的轻便,位置控制简易且精确,在机器人中使用尤多。多舵机的协调工作可满足机器人的多自由度要求。

舵机可以实现0~240°的旋转,当轴处于正确位置时,舵机将停止运动;当所在位置不对时,电路则驱动电机运转到需求位置。

舵机是采用比例调节方式控制速度。当舵机转动的距离大时,则加载在舵机上的能量就大,反之亦然。

而舵机的转动角度控制是由加载在控制线上的脉冲周期完成的,即所谓的脉冲编码调制。舵机设定为每隔20ms接受一个脉冲,这样的话,实际脉冲长度就可用来控制舵机转动的角度。如图3-5,例如1.5ms的脉冲可使舵机转动90°。

图3-5 舵机转角与脉冲周期关系图

当舵机安装好后,需要获取其初始位置值,为编程做准备;通常情况下,将舵机电源线直接接到舵机控制卡上,开启控制卡电源,舵机自动复位时的位置作为初始位置,并参照此位置组装电路以及编写驱动程序。

3.3.2舵机控制卡

控制卡最多可以同时控制八个舵机的运动,在上电状态下(舵机控制器不和其他的控制部件进行通讯),8个舵机控制端口分别输出周期为20ms,宽度为1.5ms的脉宽调制波。因此,按照舵机的控制原理,如果各个控制端口上接有舵机,则各个舵机输出角为90度。控制卡需要接收从串口发来的控制信息,控制信息中包括舵机要转动的角度以及其他的通讯协议。此时舵机控制卡就是一个外接控制器控制信号与舵机动作之间的转换板。

(1)端口定义

舵机控制卡上有八个舵机接口,分别定义为(Servo1~Servo8);

每个舵机输出口可以控制舵机转动(-90°~ +90°);

外接控制器上的串口(UART)直接和AT89C2051的串口相连,采用9600的波特率,此接口可以和其他采用TTL电平的设备进行通讯。

(2)通讯协议

a接收数据:

每一帧控制指令:4个字节;

第一个字节:0xAF---- 数据帧起始字节;

第二个字节:0x00~0x08---- 舵机序号(Servo1~Servo8);

第三个字节:0x00~0xB4---- 旋转角度设定(-90°~ +90°);

第四个字节:0xFA----数据帧结束字节。

b返回数据:

当正确接收一帧数据之后,伺服舵机控制器会返回一个字节数据做为接收确认信息。返回数据为:大写字母‘R’的ASCII码。

说明:舵机控制板通过串口和外部控制器进行通讯,外部控制器要让某个舵机转动一定的角度,则需要按照一定的通讯协议向向舵机控制板发送控制信号。

例如:

要使用外接控制器的串口2,令第4个舵机转动40度,就可以使用下面的控制方法。

void send(int com,int motoID,int angle)

{

serial_send(com,0x00AF);

serial_send(com,motoID);

serial_send(com,(char)angle);

serial_send(com,0x00FA);

}

send(2,4,40);

图3-6舵机控制卡

3.3.3 微控制器

主控制CPU是TQFP封装,具有144个引脚。如图3-7所示 CPU TMS320LF2407A 的CPU是基于TMS320C2XX的16位定点低功耗内核。体系结构采用四级流水线技术加快程序的执行,可在一个处理周期内完成乘法、加法和移位运算。

其中央算术逻辑单元(CALU)是一个独立的算术单元,它包括一个32位算术逻辑单 元(ALU)、一个32位累加器、一个16×16位乘法器(MUL)和一个16 位桶形移位器,同时乘法器和累加器内部各包含一个输出移位器。完全独立于CALU的辅助寄存器单元(ARAU)包含八个16位辅助寄存器,其主要功能是在 CALU操作的同时执行八个辅助寄存器(AR7至AR0)上的算术运算。两个状态寄存器ST0和ST1用于实现CPU各种状态的保存。TMS320LF2407A采用增强的哈佛结构,芯片内部具有六条16位总线,即程序地址总线(PAB)、数据读地址总线(DRAB)、数据写地址总线(DWAB)、程序读总线(PRDB)、数据读总线(DRDB)

数据写总线(DWEB),其程序存储器总线和数据存储器总线相互独立,支持并行的程序和操作数寻址,因此CPU 的读/写可在同一周期内进行,这种高速运算能力使自适应控制、卡尔曼滤波、神经网络、遗传算法等复杂控制算法得以实现。存储器配置TMS320LF2407A地址映象被组织为三个可独立选择的空间:程序存储器(64K)、数据存储器(64K)、输入/输出(I/O)空间(64K)。这些空间提供了共192K字的地址范围。 其片内存储器资源包括:544字×16位的双端口数据/程序DARAM、2K字×16位的单端口数据/程序SARAM、片内32K×16 位的Flash程序存储器、256字×16位片上BootROM 、片上Flash/ROM 具有可编程加密特性。TMS320LF2407A的指令集有三种基本的存储器寻

址方式:立即寻址方式、直接寻址方式、间接寻址方式。

图3-7扩展控制主芯片

扩展控制主芯片采用复杂可编程逻辑芯片(CPLD)EPM7064STC100,EPM7064S 是Altera公司推出的速度非常快的高性能、高集成度可编程逻辑器件,属于 MAX7000系列,是特殊的可编程 ASIC芯片。在第二代MAX结构基础上,采用先进的CMOS EEPROM技术制造的,是100引脚的TQFP封装,芯片内部是一个包含有大量逻辑单元的阵列,采用了连续式的布线结构,因而可以通过设计模型精确地计算信号在器件内部的时延。具有集成度高、工作速度快和在线编程方便的特性,适合于时序、组合逻辑电路以及输入/输出口扩展的应用;8通道10位模数转换(A/D),转换速度500ns;6通道数字量输入(DI),每个通道具有光电隔离功能;5通道数字量输出(DO),每个通道电流可达 500mA ;2路异步通信接口(串口 SCI);CAN 总线通信接口;3路 MTBUS总线接口(包括并行接口、IIC接口、同步通信接口(SPI));扩展卡电源级联接口;扩展卡信号级联接口;5V电源扩展接口;CPLD 可编程JTAG口。

图3-8扩展版功能图

3.3.4 传感器模块

图3-9 红外传感器

3.3.4.1红外传感器

1.测量射程范围:10-80cm

2.最大允许角度:>40°

3.电源电压:4.5-5.5V

4.平均功耗:33-40mA

5.峰值功耗:约200mA 图3-9 红外传感器

6.更新频率/周期:25Hz/40ms

7.模拟输出噪声:<200mV

8.精度和采集的AD位数以及转化计算公式相关,10AD一般能达到0.1CM.

9.测量距离与输出模拟电压关系:2.4V~0.4V六足机器人机器人的红外传感器共包含两种器件:红外发射管和红外接收管可以安装于六足机器人机器人的正前方,两只红外发射管安装于红外接收管的两侧;同时红外发射管也可以安装于六足机器人机器人的正前方,两只红外接受管安装于红外发射管两侧。因而可以说六足机器人机器人提供给了用户更多的发挥自主创新的空间。

红外发射管可以发出红外线,红外线在遇到障碍后被反射回来,红外接收管接收到被反射回来的红外线以后,通过A/D转换送入CPU进行处理。六足机器人机器人的红外传感器能够看到前方10cm∼80cm。

该六足机器人整体结构设计较矮,减小了机器人体积利于机器人通过狭小的结构,行动更为灵活,同时将重心降低,使其在行走的时候更为平稳。并设计了六条轮腿复合式的机械腿,使该机器人实现以三角步态步行前进,并可以通过轮动前进或实现换向,旨在于让机器人在或松软下陷或崎岖坎坷的路面上依旧平稳行进,以达到废墟勘探,遗迹探索的功能(整体结构如图3-10所示)。

图3-10整体结构图

3.4 系统结构

3.4.1 蓝牙控制

图3-11蓝牙模块

六足机器人的移动使用BT18蓝牙模块,并使用手机APP-blinker进行动作控制,传输距离20米,响应速度很快。

3.4.2 轮式移动功能

图3-12 轮式移动

六足机器人每条腿的末端都采用轮式结构,可以实现腿部保持不变的情况下,轮式运动而实现机器人移动、转向等功能。

轮式移动有3种模式,正常移动,下蹲移动,越障移动等模式。

正常移动模式(如图3-11所示):适用于正常平坦地面快速移动,常用于俯视侦察。它可以通过离散的点接触地面保持身体水平,因此接触地面小、不易翻倒、稳定性更高等优势。

图3-13正常移动形态

下蹲移动模式(如图3-12所示):适用于低洼或洞穴快速移动。它可以通过调节腿的伸展程度调整重心的位置,因此不易翻倒、速度迅速等优势。

图3-14下蹲移动形态

越障移动模式(如图3-13所示):适用于地形不规则和崎岖不平越障移动。它可以通过调节不同腿的伸展程度调整重心的位置,因此不易翻倒、快速越障等优势【10】。

图3-15越障移动形态

3.4.3腿式移动功能

六足步行机器人的步态是多样的,其中三角步态是六足步行机器人实现步行的典型步态。三角步态走法是六足昆虫的基本走法,其规则是每次落脚和提脚前进时相应的一组足都是正三角型,这可以确保步态的稳定【1】。六足昆虫在地面上行进时,多以交替的三角步态运动,即在步行时将六只足分为两组,以身体一侧的前足、后足与另一侧的中足作为一组,其他三只足作为另一组。在同一时间内只有一组的三条足起行走作用:前足用爪固定物体后拉动虫体前进,中足用以支撑并举起所属一侧的身体,后足则推动虫体前进,同时使虫体转向,行走时虫体向前并稍向外转,三条足同时行动,形成一个稳定的三角形,然后再与另一组的三条足交替进行,通过两组足交替地摆动和支撑,从而实现昆虫的快速运动[。其步态如图3-15所示【2】。

图3-16 三角步态运动示意图

图3-17 轮腿收缩示意图

轮腿复合式六足机器人每条腿部还有2个总线舵机,可以利用腿部变形实现类似于人体行走和跑步等腿部动作【4】。

调整步态时的问题——先画了以单条腿为对象的示意图(见图3-16),接着试着将各机械腿分组,调整动作记录数据。

图3-18单腿运动示意图

4、程序概要

程序功能:

1. 嵌入式系统控制及C语言编程;

2. 蓝牙和Arduino的通信协议;

3. 总线舵机调试和运动控制策略;

4. 六足机器人的运动学和逆运动学。

主要逻辑图:

图4-1 程序设计逻辑图

嵌入式系统设计:

图4-2 接线图

轮腿式复合六足机器人使用Arduino mega作为主控,末端和腿部的舵机都使用统一主控器发送数据,两块舵机控制板接收到数据后根据特定和协议进行解算,解算完毕后将运动指令发送至每一个舵机上执行。采用12v电源供电,因为舵机数量多,电流过大,想稳定供电所以首选12VDC电源供电。

4.1 主程序设计

软件的主要功能是使机器人在向前行进的过程中能够避开障碍物,在本项目中一共采用两个远红外避障传感器实现(具体实现过程参见步态设计)。本项目程序采用模块化设计,通过程序调用实现功能,具体调用函数如下:

#include "ingenious.h"

int count=0;

int AD1=0;

int AD2=0;

int AD7=0;

int AD8=0;

int angle_right1 = 20; //六条腿型结构的初始化角度

int angle_right2 = 90;

int angle_right3 = 90;

int angle_right4 = 110;

int angle_right5 = 70;

int angle_right6 = 70;

int angle_left1 = 90;

int angle_left2 = 80;

int angle_left3 = 120;

int angle_left4 = 90;

int angle_left5 = 90;

int angle_left6 = 100;

void zhizou();

void youzou();

void zuozou();

void houtui();

void send(int com,int JointID,int angle) //舵机控制卡控制协议

{

serial_send(com,0x00AF);

serial_send(com,JointID);

serial_send(com,(char)angle);

serial_send(com,0x00FA);

}

void main()

{

serial_init(9600);

send(2,1,angle_right1); //初始化六条腿型结构

send(2,2,angle_right2);

send(2,3,angle_right3);

send(2,4,angle_right4);

send(2,5,angle_right5);

send(2,6,angle_right6);

send(1,1,angle_left1);

send(1,2,angle_left2);

send(1,3,angle_left3);

send(1,4,angle_left4);

send(1,5,angle_left5);

send(1,6,angle_left6);

sleep(10);

while(1)

{ AD1 = AD(1);

AD2 = AD(2);

if(AD1 < 180 && AD2 < 180 )

{

zhizou();

Mprintf(3," AD1=%d",AD1);

Mprintf(3,"AD2=%d",AD2);

Mprintf(7,"AD6=1",AD1);

}

else if (AD2 > 200 && AD1 < 180 )

{

youzou();

Mprintf(3," AD1=%d",AD1);

Mprintf(3,"AD2=%d",AD2);

Mprintf(5," AD7=%d",AD7);

Mprintf(5,"AD8=%d",AD8);

Mprintf(7,"AD6=1",AD1);

}

else if (AD1 > 200 && AD2 < 180)

{

zuozou();

Mprintf(3," AD1=%d",AD1);

Mprintf(3,"AD2=%d",AD2);

Mprintf(5," AD7=%d",AD7);

Mprintf(5,"AD8=%d",AD8);

Mprintf(7,"AD6=1",AD1);

}

else if(AD1 > 250 && AD2 > 250)

{

sleep(10);

houtui();

Mprintf(3," AD1=%d",AD1);

Mprintf(3,"AD2=%d",AD2);

Mprintf(5," AD7=%d",AD7);

Mprintf(5,"AD8=%d",AD8);

Mprintf(7,"AD6=1",AD1);

}

}

}

4.2 运动程序设计

六足步行机器人采用对称结构设计,其程序也具有相当强的相似性,其完成各个动作均能通过改变相应舵机的转动角度实现,所以在此只列出直行程序示例,完整程序请参阅附录;

直行程序例程:

void zhizou()

{

do

{ /*垂直方向*/

if(count==0)

{ //右1、3左2着地向下伸脚60°

if(angle_right1<120)

{

angle_right1=angle_right1+2;

send(2,1,angle_right1);

}

if(angle_left3>60)

{

angle_left3=angle_left3-2;

send(1,3,angle_left3);

}

if(angle_right5<120)

{

angle_right5=angle_right5+2;

send(2,5,angle_right5);

}

//左边1、3右2着地向上抬脚60°

if(angle_left1<120)

{

angle_left1=angle_left1+2;

send(1,1,angle_left1);

}

if(angle_left5<120)

{

angle_left5=angle_left5+2;

send(1,5,angle_left5);

}

if(angle_right3>20)

{

angle_right3=angle_right3-2;

send(2,3,angle_right3);

}

if(angle_left1>=120&&angle_left5>=120&&angle_right3<=60&&angle_right1>=120&&angle_left3<=90&&angle_right5>=120)

{

count = 1;

}

}

}while(count != 1);

/*另外三条腿的动作*/

/*水平方向*/

do

{

if(count==1)

{ //支脚前推60°右边1、3左边2

if(angle_right2<120)

{

angle_right2=angle_right2+2;

send(2,2,angle_right2);

}

if(angle_left4>60)

{

angle_left4=angle_left4-2;

send(1,4,angle_left4);

}

if(angle_right6<100)

{

angle_right6=angle_right6+2;

send(2,6,angle_right6);

}

//向后移脚60°左边1、3右边2

if(angle_left2<110)

{

angle_left2=angle_left2+2;

send(1,2,angle_left2);

}

if(angle_left6<130)

{

angle_left6=angle_left6+2;

send(1,6,angle_left6);

}

if(angle_right4>80)

{

angle_right4=angle_right4-2;

send(2,4,angle_right4);

}

if(angle_left2>=110&&angle_left6>=130&&angle_right4<=80&&angle_right2>=120&&angle_left4<=60&&angle_right6>=100)

{

count = 2;

}

}

}while(count != 2);

/*垂直方向*/

do

{

if(count==2)

{ //左脚2、右脚1、3收回脚

if(angle_right1>1)

{

angle_right1=angle_right1-2;

send(2,1,angle_right1);

}

if(angle_left3<170)

{

angle_left3=angle_left3+2;

send(1,3,angle_left3);

}

if(angle_right5>40)

{

angle_right5=angle_right5-2;

send(2,5,angle_right5);

}

//右脚2,左脚1、3向上抬脚90°

if(angle_left1>70)

{

angle_left1=angle_left1-2;

send(1,1,angle_left1);

}

if(angle_left5>70)

{

angle_left5=angle_left5-2;

send(1,5,angle_left5);

}

if(angle_right3<150)

{

angle_right3=angle_right3+2;

send(2,3,angle_right3);

}

if(angle_left1<=70&&angle_left5<=70&&angle_right3>=150&&angle_right1<=0&&angle_left3>=170&&angle_right5<=40)

{

count = 3;

}

}

}while(count != 3);

/*移动水平方向*/

do

{

if(count==3)

{ //向前前移右脚左边2右边1、3

if(angle_right2>60)

{

angle_right2=angle_right2-2;

send(2,2,angle_right2);

}

if(angle_left4<120)

{

angle_left4=angle_left4+2;

send(1,4,angle_left4);

}

if(angle_right6>40)

{

angle_right6=angle_right6-2;

send(2,6,angle_right6);

}

//向后移动左脚左边1、3右边2

if(angle_left2>50)

{

angle_left2=angle_left2-2;

send(1,2,angle_left2);

}

if(angle_left6>70)

{

angle_left6=angle_left6-2;

send(1,6,angle_left6);

}

if(angle_right4<140)

{

angle_right4=angle_right4+2;

send(2,4,angle_right4);

}

if(angle_left2<=50&&angle_left6<=70&&angle_right4>=140&&angle_right2<=60&&angle_left4>=120&&angle_right6<=40)

{

count = 0; //重复开始动作

}

}

}while(count != 0);

}

5、实验设计

5.1 实验调试

本研究在比较了基于行为的体系结构、基于知识的体系结构和混合式控制结构之后 ,选择混合式控制结构,将计划作为一种行为 ,与实时避障行为间采取并行处理方式。相对应地 ,传感器检测区域为避障区如果在避障区有障碍物 ,则由应激避障模块采取相应的避障行为;该模块具有最低优先级 ,在无任务情况下 ,机器人根据传感器选择无障碍物方向直线运行 。目的是在全局环境下 ,暂时无任务的机器人同样保持清醒的意识和一定的机动性 ,避免冲突 。趋向目标模块 。完成对机器人各模块进行任务分配和协调。当完成特定任务时,该模块选择规划模块,此时机器人采用的是基于知识的体系结构,当完成一般任务时,该模块选择实时避障模块,此时机器人采用的是基于行为的体系结构。针对不同的任务,机器人可以采用不同的处理方式,提高了系统的可靠性和反应能力。实时避障模块。机器人在运动过程中 ,如果红外线传感器测得近障区有障碍物存在,则机器人暂时停止趋向子目标的运动 ,实施应激避障行为,之后重新规划目标。

经多次试验证实:机器人步态平稳、行走良好,能自动识别障碍物和躲避障碍物,在出现突发障碍物时,机器人有一段思考时间,会出现一个小小的停顿,作出应急反应。机器人避障行走时智能控制,适应性强、抗干扰能力好。

实验一:实际操作。

先在自动模式下看其是否可以自主避障,观察其灵活性以及其动作是否流畅,美观,合理。此外,编写几个特定动作,如半蹲,直立,行走,停下等,利用手机蓝牙操控,看是否可以成功操控。

5.2 实验结果

5.2.1 设计成果

1.制作了一台小型六足机器人,该机器人长45cm,高15cm,宽25cm,每只腿上有两个自由度,通过串口通讯发送控制字符,实现机器人的运动试验。

2.通过物理样机的调试,验证了所规划运动姿态的可行性,获得了设计、控制和调试六足机器人的直接经验,为以后的研究工作积累了必要的技术储备。

5.2.2后续研究工作重点

本次课题的完成构建了六足机器人的物理样机。轮腿式机器人是一种兼具轮式和腿式机器人特性的复合式移动机器人。首先提出一种能适应复杂地形的串并混联式轮腿结构,并由此设计具有各向同性的六足轮腿式移动机器人。分析并建立了该机器人越障高度及跨沟宽度与其机构尺寸之间的数学关系,据此进行机器人设计。最后利用仿真试验验证了机器人跨越障碍和沟渠的能力。

6、结论与展望

6.1结论

完成了机器人的组装,并且完成了复杂的编程,使智能机器人能够避开障碍物行走。但由于我们的机器人是六足的,所以比较耗电。简单的说就是能够直走前方有一个传感器被遮挡则往反方向运动当两个传感器被遮挡是则向后运动,具有运动稳定性好,适应能力强,控制方便的优点,它可以轻易地跨过比较大的障碍并且机器人所具有的大量的自由度可以是机器人的运动更加灵活,对凹凸不平的地形的适应能力更强,复杂的肢体结构和简易灵巧的运动控制策略,因此多足机器人在未来有广阔的前景。

6.2展望

6.2.1 目前项目缺点

1、在自动模式下,检测到障碍后,机器人确实可以自主避障,但是在完全转向前,可能会有冗余动作,导致完成转向动作所需时间长。

2、虽然机身总体较小,但是相对有些长。

3、超声波传感器传回数据较单薄,可能会回避一些不用回避的障碍,或者无法回避一些形状不规则的障碍。

4、机器人在自动模式下的运动速度单一。

6.2.2 可改进的方案

虽然取得了一定的成果,但是还属于初步研究,今后要在以下方面取得改进和进一步的研究。

1.结构的进一步优化和选材的改进

改进制作机器人的材料,选用更轻巧坚固的材料,使机器人的重量减轻;选择更加紧凑的结构配置,使得机器人的物理样机性能更加坚固、稳定、美观。

2.驱动方式的改进

本次课题完成的机器人是外接电源供电的。下步的研究应该使机器人的电源内置与机器人本体当中。只有机器人本体脱离了电源线的限制,才能实现机器人的大范围自主活动,但是自带电源的容量有限制了机器人的活动时间。

3.增加机器人的功能

如运用六维力传感器、摄像头、红外传感器等,增加机器人对外部信息的搜集和处理能力,使得机器人具有自主识别环境的能力,在识别的基础上,根据客观环境的变化自主地选择合适的步态和行进的路径。 随着传感器系统的建立,使机器人具有语音识别能力和图像的识别能力。不断完善程序,使其具有绘图、写字等简单的功能。

7、参考文献

[1]郑嫦娥.王佳丽.王伟龙.刘晋浩.闫海龙.周琪涵.小型轮腿复合式越障车轮的设计与改进[J].机械科学与技术,2014,(11):1729-1732.

[2]周志鹏.代小林.张彬彬.姚善建.礼强.折叠轮腿式管道机器人结构设计与仿真分析[J].机械制造与自动化,2014,(5):158-161.

[3]田兴华.高峰.陈先宝.齐臣坤.四足仿生机器人混联腿构型设计及比较[J].机械工程学报,2013,(6):81-88.

[4]郭丽峰.陈恳.赵旦谱.吴丹.刘宗政.宾洋.一种轮腿式变结构移动机器人研究[J].制造业自动化,2009,(10):1-6.

[5]于涌川.原魁.邹伟.全驱动轮式机器人越障过程模型及影响因素分析[J].机器人,2008,(1):1-6.

[6]信建国.李小凡.王忠.姚辰.原培章.履带腿式非结构环境移动机器人特性分析[J].机器人,2004,(1):35-39.

[7]王韬.杨汝清.顿向明.张志伟.自主越障时关节轮式移动机器人的姿态设定[J].上海交通大学学报,2001,(1):59-63.

[8]葛耿育.基于异形轮组合的小型机器人越障性能研究[D].西南大学,2014,1-65.

[9]Hiroshi KIMURA.Eiji NAKANO.Youichi NONAKA.Development of Leg-Wheel Robot and Coopera

[10]程刚.竺长安.李川奇.陈宏.张屹.曾议.宋轶群.杨杰.突变地形下的复合结构移动越障机器人运动学建模与仿真[J].系统仿真学报,2006,(1):148-150.

[11]信建国.李小凡.王忠.姚辰.原培章.履带腿式非结构环境移动机器人特性分析[J].机器人,2004,(1):35-39.

[12]乔凤斌.杨汝清.六轮移动机器人爬楼梯能力分析[J].机器人,2004,(4):301-305.

[13]徐正飞.杨汝清.王韬.关节式移动机器人的越障运动[J].中国机械工程,2003,(12):1052-1055.

[14]段星光.黄强.李京涛.张明路.多运动模式的小型地面移动机器人设计与实现[J].中国机械工程,2007,(1):8-12.

[15]黄博.王鹏飞.孙立宁.复合运动模式四足机器人机构设计及分析[J].机械设计与研究,2006,(5):49-53.

[16]王挺.王越超.赵忆文.多机构复合智能移动机器人的研制[J].机器人,2004,(4):289-294.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值