最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

智能四足机器人设计

来源:动视网 责编:小OO 时间:2025-10-02 00:06:54
文档

智能四足机器人设计

四足机器人设计与总结报告指导老师:麦文学生:陈伟内容摘要本设计中,机器人的行走是根据四足动物的步行原理,将其运动过程分解,再结合实际模型,抽象出四足运动的基本原理,并制作出结构模型,通过对向前行走、原地左转弯、原地右转弯的控制,从而实现直行的行走。本设计采用采用MCU控制机器人的步态设计,通过CPLD强大的信号处理功能实现PWM从而对每个舵机进行控制,实现机器人的直行行走。同时预留了大量的端口,为以后实现寻路、显示、语音等功能提供条件。关键词:四足步行PWM步态规划Abstract    Th
推荐度:
导读四足机器人设计与总结报告指导老师:麦文学生:陈伟内容摘要本设计中,机器人的行走是根据四足动物的步行原理,将其运动过程分解,再结合实际模型,抽象出四足运动的基本原理,并制作出结构模型,通过对向前行走、原地左转弯、原地右转弯的控制,从而实现直行的行走。本设计采用采用MCU控制机器人的步态设计,通过CPLD强大的信号处理功能实现PWM从而对每个舵机进行控制,实现机器人的直行行走。同时预留了大量的端口,为以后实现寻路、显示、语音等功能提供条件。关键词:四足步行PWM步态规划Abstract    Th
四足机器人设计与总结报告

指导老师:麦文   学生:陈伟

内容摘要

    本设计中,机器人的行走是根据四足动物的步行原理,将其运动过程分解,再结合实际模型,抽象出四足运动的基本原理,并制作出结构模型,通过对向前行走、原地左转弯、原地右转弯的控制,从而实现直行的行走。

本设计采用采用MCU控制机器人的步态设计,通过CPLD强大的信号处理功能实现PWM从而对每个舵机进行控制,实现机器人的直行行走。同时预留了大量的端口,为以后实现寻路、显示、语音等功能提供条件。

关键词: 四足步行  PWM   步态规划

Abstract

    This design, the robot is walking quadruped walking under the principle of decomposition of their movement, combined with the actual model, to abstract the basic principles of four-legged movement, and create structural models, by walking forward, the original to turn left, turn right to control in situ, in order to achieve straight walking.

  The design uses the robot gait control by MCU design, by CPLD realization of a powerful signal processing functions to each servo PWM control, the robot walk straight. At the same time a large number of ports reserved for the future find its way to achieve, display, voice and other features provide the conditions.

Key words: quadruped walking   gait planning   PWM

引言

自从人类发明机器人以来,各种各样的机器人日渐走入我们的生活。仿照生物的各种功能而发明的各种机器人越来越多。作为移动机器平台,步行机器人与轮式机器人相比较最大的优点就是步行机器人对行走路面的要求很低,它可以跨越障碍物,走过沙地、沼泽等特殊路面,用于工程探险勘测或军事侦察等人类无法完成的或危险的工作;也可开发成娱乐机器人玩具或家用服务机器人。四足机器人在整个步行机器中占有很大的比重,因此对仿生四足步行机器人的研究具有很重要的意义。本课题的设计任务是完成四脚带智能的机器人,并能穿行于模拟楼道及迷宫场地。

一、方案设计与论证

方案一:采用专用芯片实现方案。

 

方案二:采用单片机控制CPLD实现方案。

       

方案三:采用可编程逻辑器件(FPGA)实现方案。

图1 

方案论证

方案一

本方案中的专用器件,一般为单片机内集成了PWM产生模块,最大优点是价格便宜且很可靠,但正是因为专用的特点,它的灵活性就很差,要买到符合需要的器件也不容易。目前常见的专用集成芯片一般只能提供6 路 PWM 发生器,如 MCS-80C196MH 、TMS320F240 和 ADMC331;最多能够提供 12 路PWM发生器,如 TMS320F2407。这些芯片内部仅集成了MCU+PWM发生器,只能完成机器人的基本行走,要扩展其他功能时,就必须再增加新的电路板,使得设计复杂,可靠性降低,最主要的是很难完成多个目标器件的同步触发,而且需要复杂的控制逻辑。因此专用器件的灵活性差,一旦设计出现失误,要想修改硬件周期就会很长。

方案二

本方案采用一片51单片机和一片复杂可编程逻辑器件(CPLD)实现了PWM的产生。由于CPLD具有他特有的并行处理能力和大量的I/O接口,可以同时控制几十甚至上百个舵机同时工作,可以为后续的工作留出一定的空间,但由于CPLD内部没有CPU因此一些复杂逻辑实现起来就很困难,实际应用中还需要MCU协同工作。在调试时,不仅要修改单片机的程序,还要去修改CPLD,使得调试变得复杂起来,不是很灵活,而设计机器人的行走,又需要大量的调试,如果采用本方案,就会花大量的时间在调试工作上。可见灵活的调试成为设计难题。

    方案三 

本方案采用现场可编程门阵列芯片FPGA( Field Programmable Gate Array)嵌入51单片机IP核作为控制器,利用C语言编程控制嵌入FPGA的单片机,产生控制信号,从而控制PWM发生器(FPGA内部模块)输出不同的PWM信号。FPGA内部包含的逻辑门数从几百至几万,具有可任意配置的几百个寄存器和I/O口,并且开发周期短, 可灵活配置实现多种功能而无需改动硬件电路等优点。

综上所述,由于时间和精力有限,考虑到还有很多功能还需要扩展,权衡利弊我们决定选择方案二。

二、肢体的结构设计

该机器人由机身、四足、控制电路板、电源和8个舵机(伺服器)组成。每个足安装了2个舵机,每个足就有了2个关节,以满足机器人向任意方向的行走。我们的机器人是由8个舵机驱动的,整个机器人的结构设计也是以舵机为基础的,所以在介绍机器人的结构设计前有必要把舵机的结构及工作特性作一下介绍。

2.1、舵机的结构

本设计中使用了金属齿扭矩CDS5401舵机(如图4所示),该舵机是大扭矩、金属输出轴、输出轴具有双滚珠轴承支撑的高品质舵机。控制为模拟信号最大控制精度能达到1度。其参数如表1所述:

图2 本设计中使用的舵机

表1 舵机参数

项目数据说明
型号SolidMotion CDS5401双端输出轴
长/宽/高40/19.8/38mm

标准舵机。可兼容大部分型号,包括Futaba、JR、Hitec等品牌
供电4.8~7.4VDC

推荐4.8~6V
最大扭矩@6V13kgf.cm即1.2Nm
最大电流@6V2.5A堵转电流。持续不能超过20s
空载速度0.22sec/60degree
重量55g
接口3线制GND/VCC/SIG
输出轴铜合金25牙,花键
一个舵机内部包括了一个小型直流马达;一组变速齿轮组;一个反馈可调电位器;及一块电子控制板。其中,高速转动的直流马达提供了原始动力,带动变速(减速)齿轮组,使之产生高扭力的输出,齿轮组的变速比越大,伺服马达的输出扭力也愈大,也就是说越能承受更大的重量,但转动的速度也愈低。机器人正是依靠舵机的两个输出转矩作为驱动的来源。图3是我们所用舵机的三维模拟图:

图3 舵机的三维模拟图

2.2、舵机的控制方法

标准的舵机有3条导线,分别是:电源线(红色)、地线(棕色)、控制线(橘黄色),如图4所示。

图4 标准舵机示意图

电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源。注意给舵机供电电源应能提供足够的功率。控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20 ms(即频率为50 Hz)。当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。

该型号舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用图5来表示。

图5  舵机输出转角与输入信号脉冲的宽度的关系

2.3、舵机安装

最常用的基本构型是一个可以自由控制转动角度, 并锁定在给定角度的动力关节,使用舵机作为动力,因此此处称为舵机动力关节,如图6所示。

图6  舵机动力关节

其安装方法如图7所示。

图7  舵机的安装

图9说明:、舵机,、U形安装架,、舵盘,、V形舵机支撑构件,和、十字螺丝,另外还有自锁螺母。

由这样的三个舵机、两个U形支架以及两个V形舵机支撑构件级联成一个三自由度的足。在行走过程中每个足都可以在水平方向和垂直方向运动,另外还有最靠近地的那个舵机在机器人行走过程中可以起微调作用,让机器人的行走更那平稳和自然。本设计中,与地相接触的4个舵机(A1、B1、C1、D1)就是这样安装的。A1、B1、C1、D1的位置将在下面简绍。

2.4、构件的级联

该关节由两部分组成:舵机+安装架,以及联结舵机的转动关节(V形舵机支撑构件)。本设计中的A2、B2、C2、D2就是这样安装的,如图8所示。

图8   构件的级联

2.5、整体结构介绍

将机器人的四足分别编号:左前足记为D足,左后足记为B足,右前足记为C足,右后足记为A足。每只足上的三个舵机从地到上分别编号为1、2,例如:A足从下到上分别为A1、A2,B足从下到上分别为B1、B2。图中标的左右、上下和前后表示相应关节相对身体运动的方向。

图9  机器人结构中舵机的分组及运动方向说明

图10 机器人关节侧面示意图

在图9的俯视图中,可以清楚的了解舵机安装的位置,在图10的侧面视图中可以更好的标示出关节的运动方向。如图中所示:A2、B2、C2、D2可以使相应的腿前后摆动,在行走过程中作出迈步动作,以及推动机器人向前、向左和向右移动;而A1、B1、C1、D1可以相对地面上下运动,在行走过程中作出抬腿和向下收腿的动作,以保证机器人在迈步过程,迈步的那只脚不至于腿触地。这8个舵机的协调使用,会让机器人行走变得更灵活、平稳、更加自然。

                                                                                                          

三、步行原理及步态、路径规划

3.1、行走原理

该机器人利用四足行走,在行走过程中,最重要的是身体的平衡,也是最难控制的一点。利用三角形的稳定性,在任何时刻让机器人至少有三足着地,一足离地后再迈步的方法,再通过收腿等动作来调节重心,使每只脚都可以完成离地后迈步的动作,这样可以更稳定的实现其行走功能,在这里我们称为“单足行为”。

每一条腿有两种状态:向前走和向后走,对于每一个动作状态来讲,分为两步:迈腿和收腿。机器人开始行走时对它的每一个舵机进行初始化,然后从A脚、B脚、C脚、D脚依次运动,当B脚运动后四只脚又恢复到运动开始时的状态,以此为行走的一步,然后以此为周期连续不断的运动,这样机器人就可以向前行走了。机器人在行走时四条腿之间的时序关系如图11所示。

 

图11 四条腿的时序关系

3.2、行走步态及动作时序

3.2.1、初始化

由于在安装舵机时每一个舵机相对于身体的角度不同,所以在控制机器人行走时将会遇到舵机状态的不确定性,解决此困难的方法就是在打开电源机器人开始行走时对每个舵机进行初始化。这样一来无论机器人开始行走之前,每个舵机的状态时什么,我们都能很好的控制它在行走时的状态的一致性。初始化时每个舵机的状态如表2所示。

表2 各舵机的初始化角度

舵机序号初始化角度
A190°

A2180°

B190°

B2180°

C190°
C2180°

D190°
D2180°

  

注:表中90°(包括下面文章中出现的角度)是指舵机相对于自身的角度而非相对于地的角度。

3.2.2、向前行走

在机器人向前行走的过程中,各个舵机在协调工作一个周期后,即机器人行走一步后,舵机的状态应恢复到初始化的状态,以此循环,就可以让机器人不停的向前平稳的行走,将每个周期按照时间的先后分为10个状态。每个状态都用一定的时间间隔,这个时间间隔可以根据需要而改变,这样就可以让机器人走慢或者走快。

每个状态的动作及运动情况如表3所示。 

表3 机器人向前行走时的动作及时序

状态舵机序号动作动作后的角度
1A1

抬起105°
2A2向前165°

3A1放下90°

4B1抬起105°
5B2

向前165°

6B1

放下90°

7C1

抬起105°
8C2向前165°
9C1放下90°
10D1抬起105°
D2向前165°
11D1放下90° 
12A2

B2

C2

D2

复位180°

180°

180°

180°

四、电路设计

4.1、主控板设计

4.1.1、MCU配置

    本设计中的单片机主要是用来实现步态时序的控制,通过汇编程序对P2口的输出,控制CPLD对应引脚不同脉宽的输出,达到控制舵机的目的。虽然单靠CPLD也能完成步态时序,但是本设计的MCU是为了后续功能的扩展作。在P1口,预留了与传感器通讯的引脚,为后续的寻路功能的实现作准备。P0口是用作LCD输出的,由于本设计功能简单,所以没有做显示方面的程序。P3.0用作开关,主要是达到启动时的初始化,避免电流瞬间改变对信号的影响带来的时序混乱。P3口的其他引脚用作与USB下载线的通信。ALE为CPLD提供时钟频率的6分频(即2MHz)作为CPLD中PWM的信号源。

具体配置见图12所示

图12.1MCU引脚配置

 图12.2USB通信电路

4.1.2、CPLD配置

 本设计中CPLD主要实现的功能是产生20Ms的脉冲信号和进行PWM并根据MCU输入代码的不同,对不同舵机输出不同的脉宽信号。所以52到58和61脚分别对应对MCU的P2口的输入。76、77、78、79、81、82、83、84对应舵机A1、A2、B1、B2、C1、C2、D1、D2的输出。另外62脚是MCU上ALE产生的2MHz信号的输入,用于脉宽的调制。关于PWM在下节会作专门的介绍,在这里就先略去。

4.2、PWM脉宽调制(Pulse Width Modulation)信号产生

在本设计中是利用脉宽调制(PWM)来控制舵机的转动角度。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。那么一只足上的两个舵机之间的相互干扰就很小,彼此之间的转动也不会受到大的干扰,使得机器人的行走更加精确、稳定。本设计中具体的PWM发生是通过FPGA来完成的,我们先从MCU的ALE得到一个2MHz的脉冲信号CLOCK,通过程序进行分频,得到一个50Hz的信号(周期为20MS)CLOCK_M,在通过程序使得50Hz的信号与指定数量的2MHz的信号想与,得到需要脉宽的信号(周期20MS)。

4.3、程序流程图

图13 程序流程图

4.4、程序

4.4.1单片机程序

         LJMP    MAIN

          ORG     000BH

          LJMP    STRER

          ORG     0100H

MAIN:  MOV     30H,#00H

MOV     31H,#11H    

MOV     32H,#21H

MOV     33H,#10H

MOV     34H,#31H

MOV     35H,#41H

MOV     36H,#30H

             MOV     37H,#51H

MOV     38H,#61H

MOV     39H,#50H

MOV     3AH,#71H

         MOV     3BH,#81H

         MOV      3CH,#70H

             JB       P3.0,K1

             LCALL    START

START: MOV      A,30H

            MOV      P2,@A

            LCALL    DELAY

S1:    INC      A

            MOV      P2,@A

            LCALL    DELAY

            MOV      B,A

            SUBB     B,3CH

            JNZ      B

            CALL     S1

            LACLL    START

DELAY: MOV      TL0, #0B0H          ;延时2秒 

MOV      TH0, #3CH 

            MOV      R0,#40

            DEC      R0

            JNZ      R0

            CALL     DELAY

            RET

END

4.4.2、CPLD程序

LIBRARY ieee;

USE ieee.std_logic_11.all;

USE ieee.std_logic_arith.all;

USE ieee.std_logic_unsigned.all;

PROCESS(

INP2  : IN STD_LOGIC_VECTOR(7  DOWNTO 0);

OUT_0: OUT STD_LOGIC;

OUT_1: OUT STD_LOGIC;

OUT_2: OUT STD_LOGIC;

OUT_3: OUT STD_LOGIC;

OUT_4: OUT STD_LOGIC;

OUT_5: OUT STD_LOGIC;

OUT_6: OUT STD_LOGIC;

OUT_7: OUT STD_LOGIC;

CLOCK: IN STD_LOGIC_VECTOR;)

SIGNAL:(CLOCK_M;CLOCK_OUT1;CLOCK_OUT2;CLOCK_OUT3;CLOCK_OUT4;)

BEGIN

PROCESSC(CLOCK: IN STD_LOGIC_VECTOR;            --产生周期20Ms脉冲信号CLOCK_M

CLOCK:OUT STD_LOGIC_VECTOR;)

VARIABLE COUTER:STD_LOGIC_VECTOR(15 DOWNTO 0;)

BEGIN

IF CLOCK>EVENT AND CLOCK=‘1’ THEN

       IF     COUNTER<=20000;

          COUNTER=COUNTER+1;

        ELSE   

              CLOCK_M= NOT CLOCK_M;

          COUNTER=0;

         END  IF;

END;

ENTITY pwm IS              --产生20Ms周期1.30Ms脉宽信号CLOCK_OUT1

        GENERIC

        (

            pulse_width : INTEGER:= 2600

        );

    

        PORT

        (

            clock_out 1: OUT STD_LOGIC;

        

            clock_m : IN STD_LOGIC;

            clock : IN STD_LOGIC;

            reset : IN STD_LOGIC

        );

    

END pwm;

ARCHITECTURE pwm_architecture OF pwm IS    

BEGIN

    

        PROCESS(clock, clock_m, reset)

            VARIABLE delay_counter : INTEGER;

        BEGIN        

            IF (reset = '0') THEN

                clock_out1 <= '0';

                delay_counter := 0;            

            ELSE

                IF(clock = '1' AND clock'EVENT) THEN

                    IF (clock_m = '1') THEN                

                        IF (delay_counter = pulse_width) THEN

                            clock_out1<= '0';

                        ELSE

                            clock_out1 <= '1';

                            delay_counter := delay_counter+1;

                        END IF;

                    ELSE

                        clock_out1 <= '0';

                        delay_counter := 0;

                       END IF;

                   END IF;

                END IF;

        

            END PROCESS;

END pwm_architecture;

ENTITY pwm IS             --产生20Ms周期1.45Ms脉宽信号CLOCK_OUT2

        GENERIC

        (

            pulse_width : INTEGER:= 2900

        );

    

        PORT

        (

            clock_out2 : OUT STD_LOGIC;

        

            clock_m : IN STD_LOGIC;

            clock : IN STD_LOGIC;

            reset : IN STD_LOGIC

        );

    

END pwm;

ARCHITECTURE pwm_architecture OF pwm IS    

BEGIN

    

        PROCESS(clock, clock_m, reset)

            VARIABLE delay_counter : INTEGER;

        BEGIN        

            IF (reset = '0') THEN

                clock_out2 <= '0';

                delay_counter := 0;            

            ELSE

                IF(clock = '1' AND clock'EVENT) THEN

                    IF (clock_m = '1') THEN                

                        IF (delay_counter = pulse_width) THEN

                            clock_out2<= '0';

                        ELSE

                            clock_out2 <= '1';

                            delay_counter := delay_counter+1;

                        END IF;

                    ELSE

                        clock_out2 <= '0';

                        delay_counter := 0;

                    END IF;

                END IF;

            END IF;

        

        END PROCESS;

END pwm_architecture;

ENTITY pwm IS              --产生20Ms周期2.05Ms脉宽信号CLOCK_OUT3

        GENERIC

        (

            pulse_width : INTEGER:= 4100

        );

    

        PORT

        (

            clock_out3 : OUT STD_LOGIC;

        

            clock_m : IN STD_LOGIC;

            clock : IN STD_LOGIC;

            reset : IN STD_LOGIC

        );

    

END pwm;

ARCHITECTURE pwm_architecture OF pwm IS    

BEGIN

        

        PROCESS(clock, clock_m, reset)

            VARIABLE delay_counter : INTEGER;

        BEGIN        

            IF (reset = '0') THEN

                clock_out3 <= '0';

                delay_counter := 0;            

            ELSE

                IF(clock = '1' AND clock'EVENT) THEN

                    IF (clock_m = '1') THEN                

                        IF (delay_counter = pulse_width) THEN

                            clock_out3 <= '0';

                        ELSE

                            clock_out3<= '1';

                            delay_counter := delay_counter+1;

                        END IF;

                    ELSE

                        clock_out3 <= '0';

                        delay_counter := 0;

                    END IF;

                END IF;

            END IF;

        

        END PROCESS;

END pwm_architecture;     --产生20Ms周期2.20Ms脉宽信号CLOCK_OUT4

ENTITY pwm IS

        GENERIC

        (

            pulse_width : INTEGER:=4400

        );

    

        PORT

        (

            clock_out4 : OUT STD_LOGIC;

        

            clock_m : IN STD_LOGIC;

            clock : IN STD_LOGIC;

            reset : IN STD_LOGIC

        );

    

END pwm;

ARCHITECTURE pwm_architecture OF pwm IS    

BEGIN

    

        PROCESS(clock, clock_m, reset)

            VARIABLE delay_counter : INTEGER;

        BEGIN        

            IF (reset = '0') THEN

                clock_out <= '0';

                delay_counter := 0;            

            ELSE

                IF(clock = '1' AND clock'EVENT) THEN

                    IF (clock_m = '1') THEN                

                        IF (delay_counter = pulse_width) THEN

                            clock_out <= '0';

                        ELSE

                            clock_out4 <= '1';

                            delay_counter := delay_counter+1;

                        END IF;

                    ELSE

                        clock_out4 <= '0';

                        delay_counter := 0;

                    END IF;

                END IF;

            END IF;

        

        END PROCESS;

END pwm_architecture;

PROCESS(INP2)                --步态执行

      BEGIN

       CASE INP2 IS

         WHEN “00000000”=>OUT_0<=clock_out1; OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out4;OUT_3<=clock_out4; OUT_5<=clock_out4;

OUT_7<=clock_out4;

WHEN “00010001”=>OUT_0<=clock_out2;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out4;OUT_3<=clock_out4; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “00100001”=>OUT_0<=clock_out2;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out4; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “00010000”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out4; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “00110001”=>OUT_0<=clock_out1;OUT_2<=clock_out2; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out4; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “01000001”=>OUT_0<=clock_out1;OUT_2<=clock_out2; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “00110000”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “01010001”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out2;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out4;OUT_7<=clock_out4;

WHEN “01100001”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out2;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out3;OUT_7<=clock_out4;

WHEN “01010000”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out3;OUT_7<=clock_out4;

WHEN “00010001”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out2;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out3;OUT_7<=clock_out4;

WHEN “10000001”=>OUT_0<=clock_out1;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out2;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out3;OUT_7<=clock_out3;

WHEN “01110000”=>OUT_0<=clock_out2;OUT_2<=clock_out1; OUT_4<=clock_out1;OUT_6<=clock_out1;OUT_1<=clock_out3;OUT_3<=clock_out3; OUT_5<=clock_out3;OUT_7<=clock_out3;

WHEN others=>null;

END CASE;

END;

总结

本设计是的步态时序是我在生活中观察四足动物行走中总结出来的,由于时间仓促,硬件没有做出来,很多功能都没有实现,设计的可行性还不得而知需要在调试中发现和问题并解决。但是,就这个课题本身而言,基本涉及到了整个大学的所有专业内容,虽然不“精”,但是作为本科层次的学习我认为目的基本达到。希望以后工作之后还有机会和老师交流。

致谢:

感谢麦老师的鼓励和在技术方面的支持,还有帮助过我的同学们,谢谢你们

参考文献:

白驹珩 雷晓平,单片计算机及其应用,电子科技大学出版社,2005.9

潘松 黄继业,EDA技术与VHDL(第二版),清华大学出版社,2007.1

文档

智能四足机器人设计

四足机器人设计与总结报告指导老师:麦文学生:陈伟内容摘要本设计中,机器人的行走是根据四足动物的步行原理,将其运动过程分解,再结合实际模型,抽象出四足运动的基本原理,并制作出结构模型,通过对向前行走、原地左转弯、原地右转弯的控制,从而实现直行的行走。本设计采用采用MCU控制机器人的步态设计,通过CPLD强大的信号处理功能实现PWM从而对每个舵机进行控制,实现机器人的直行行走。同时预留了大量的端口,为以后实现寻路、显示、语音等功能提供条件。关键词:四足步行PWM步态规划Abstract    Th
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top