四、项目总结
完成的设计:
1.仿生学原理分析 2.机构学理论分析
11
3.自动控制系统设计 4.计算机软件开发 5.传感器检测控制系统设计 6.电机驱动电路设计 达到的要求:
1.控制系统对12路驱动器的稳定角度控制,速度控制。 2.整体结构与行走步态稳定性达到要求。 3.多种静态步态与传感器检测控制一体化的实现。 4.机器人能够快速准确探测前方障碍物,针对不同情况探索行进路线。
项目成果总结:
项目已经设计制作出三代机器人样本实物,经过实际行走测试,稳定性,速度,蔽障性能等参数达到甚至超过预先设定的指标。
机器人相关参数与性能指标如下:
重量:460g
尺寸:160*100*40mm 平均行走速度:0.06m/s 平均功率:1.2A*5V=6W 探测响应时间:约0.5s
能够在平地上进行前进、后退、左转、右转等稳定步行能够准确探测前方障碍物,根据不同情况执行合适的步态,探索行走路径
12
五.附录程序:
//===========主程序 main.c================//
#include #include
uchar sign,rooptime,roopnum; uchar direc; uchar canmove=1; uchar run=0;
char parameter[12]={9,-9,-15,3,9,-3,-13,6,8,9,-14,-10}; void sys_init(void) { DDRA=0xe0; DDRB=0xff; DDRC=0xff; DDRD=0x0f; PORTA=0x1f; PORTB=0x00; PORTC=0x00; PORTD=0xf0; TCCR2=0x0a; OCR2=10; TIMSK|=0x80; Lcd_init(); _delay_ms(1000);
13
}
void residual(void) {
uchar i,j; for(i=0;i<12;i++) f[i]+=parameter[i]; for(i=0;i<12;i++) for(j=0;j<7;j++) m[i][j]+=parameter[i]; }
void gait1(void)//动作函数 前进 { uchar i; roopnum=4; rooptime=6; sign=0; i=0;
m[i][0]=140;m[i][1]=150;m[i][2]=150;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=1;
m[i][0]=150;m[i][1]=160;m[i][2]=150;m[i][3]=140;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=2;
m[i][0]=150;m[i][1]=150;m[i][2]=160;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=3;
m[i][0]=150;m[i][1]=160;m[i][2]=150;m[i][3]=140;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=4;
m[i][0]=150;m[i][1]=150;m[i][2]=140;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=5;
m[i][0]=150;m[i][1]=140;m[i][2]=150;m[i][3]=160;m[i][4]=0;m[i][5]=0;m[i][6]=150;
14
i=6;
m[i][0]=160;m[i][1]=150;m[i][2]=150;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=7;
m[i][0]=150;m[i][1]=140;m[i][2]=150;m[i][3]=160;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=8;
m[i][0]=140;m[i][1]=150;m[i][2]=150;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=9;
m[i][0]=150;m[i][1]=160;m[i][2]=150;m[i][3]=140;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=10;
m[i][0]=150;m[i][1]=150;m[i][2]=160;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=11;
m[i][0]=150;m[i][1]=160;m[i][2]=150;m[i][3]=140;m[i][4]=0;m[i][5]=0;m[i][6]=150;
for(i=0;i<12;i++) f[i]=m[i][3]; residual(); }
void gait2(void)//动作函数 后退 { uchar i; roopnum=4; rooptime=6; sign=0; i=0;
m[i][0]=150;m[i][1]=150;m[i][2]=140;m[i][3]=150;m[i][4]=0;m[i][5]=0;m[i][6]=150;
i=1;
m[i][0]=150;m[i][1]=160;m[i][2]=150;m[i][3]=140;m[i][4]=0;m[i][5]=0;m[i][6]
15