这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 六足机器人

共1条 1/1 1 跳转至

六足机器人

工程师
2011-03-15 14:34:06     打赏
六足机器人(详细资料)
写于: 星期日 22 五月 @ 06:28:27
 
智能机器人开发机械六脚昆虫用最少的舵机(三个)控制六个脚实现了前进、后退、左转、右转的复杂运动,在此基础上可添加其他相关模块从而可实现其他功能(如走迷宫等),功能还有极大扩展空间。

机械六脚昆虫


学生姓名:王珂


机械六脚昆虫摘要
机械六脚昆虫用最少的舵机(三个)控制六个脚实现了前进、后退、左转、右转的复杂运动,在此基础上可添加其他相关模块从而可实现其他功能(如走迷宫等),功能还有极大扩展空间。

(点击放大)

 

Part A: 设计工序
1. 用SOLIDWORKS建立三维实体模型
SOLIDWORKS2005是一个采用Microsoft Windows图形用户界面的机械设计自动化应用程序。使用此软件,我们能够快速地按照其设计思想绘制草图。尝试运用各种特征与不同尺寸。以及生成模型和制作详细的工程图。

 


图一。前视图

图二。后视图

图三。等轴视图

2.虚拟检查机械部分运转及可实现性
SOLIDWORKS2005是一个采用Microsoft Windows图形用户界面的机械设计自动化应用程序。使用此软件,我们能够快速地按照其设计思想绘制草图。尝试运用各种特征与不同尺寸。以及生成模型和制作详细的工程图。

3.通过SOLIDWORKS输出图纸并加工(总工时大约2个月)

Part B: 机械部分特点及运动原理
特点:六脚三个舵机的控制方式是已知的实现复杂运动的所需最少舵机的实现方式,总共实现前进,后退,前左传,后左传,前右转,后右转六种运动姿态,这也为实现后续控制所要求的复杂运动提供了机械基础。本机械部分采用了前进,后退,前左,后右的四种方式(使在避障时带来的位移误差减小)。

 

一共用了三个舵机,两个分别在两边,一个在中间,每一边的前腿和后腿是联动的,只有一个自由度,只能做前后移动;中间两条腿是联动的,只能做左右摆动。行走原理是:中间的舵机左右摆动,左中腿和右中腿交替着地,以使两边的腿分时产生推动身体向前的动作,即:左中腿着地时,右前腿和右后腿起作用,当右中腿着地时,左边前后两条腿起作用。中间的舵机在运动相位上始终与两边的腿相差90度;当左右两个舵机同相位时,机器人转弯;当左右两个舵机相位相差180度时,机器人前进或后腿


Part C: 机械六腿运动具体分析

前进:第一步,5脚支撑并抬高4、6脚使其离地,同时2脚离地,1、3脚接触地面并并向后划动,实现了半步,接着2脚支撑并抬高1、3脚使其离地,同时5脚离地,4、6脚接触地面并向后划动。
后退则改向后划动为向前划动。
右转:第一步,5脚支撑并抬高4、6脚使其离地,同时2脚离地,1、3脚接触地面并并向后划动,实现了半步,接着2脚支撑并抬高1、3脚使其离地,同时5脚离地,4、6脚接触地面并向前划动。
左转则相反。

机械部分控制与总控采取分离制度,一方面避免舵机工作产生大电流干扰总控,另一方面机械部分与总控部分分离,这样机械部分还可应用与其他场合。
机械控制部分主要元件:1片89S51。用C编程,主程序控制三个舵机的工作的时序,在不工作时使S51进入掉电模式中(省电,避免给总控带来干扰),工作时由总控提供中断使其进入工作模式,有三个IO用来作为信号,000前进,001后退,010左转,011右转。


Part D: 舵机控制程序
//移动规则:(正负相对左脚)
//向前走:左右舵机初试值相同(1300)(+20度,-20度),中间舵机
//(1500)(0度)
//半个周期中从前向后迈的脚(左)从(+20度)到(-20度) (1700)
//中间舵机从(0度)到(+10度)(1400)再到(0度),中间右脚
//先着地

//向后走,左右舵机初试值相同,半个周期中从后向前迈的脚(左)从
//(-20度)到(+20度),中间舵机从(0度)到(+10度)再到(0度)
//中间右脚先着地

//向右走,左右舵机初始值相反,中间左脚先着地(0--10-0)(1600)

//向左走,左右舵机初始值相反,中间右脚先着地(0-+10-0)

//P1_0控制左舵机,P1_1控制右舵机,P1_2控制中间舵机
//P1_6,P1_7作为标志,00前走,01向后走,10向左走,11向右走
//timer0产生20ms的脉冲,timer1用来做基数用作比较

#include "AT89x51.h"
bit flag;

void wahaha_int0(void) interrupt 0 using 1
{
PCON=0;
}

void timer0(void) interrupt 1 using 1
{
TR0=0;
P1_0=!P1_0;
P1_1=!P1_1;
P1_2=!P1_2;/*输出取反*/
TH0=0xB1; TL0=0xE0; /*重新定义计数初值*/
flag=0;
TR0=1;
}

void delay(unsigned char times)
{
unsigned int i;
for (i=0;i




关键词: 六足     机器人     机械     舵机     控制    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]