双足竞步机器人的设计与实现 王冰,朱旭光,贺智宇,刘子龙,崔哲源** 作者简介:王冰(1990-),男,学生,人工智能 通信联系人:朱旭光(1980-),男,讲师,计算机应用技术. E-mail: xuguang_zhu@yahoo.cn (辽宁工程技术大学电子与信息工程学院,辽宁葫芦岛 125105) 5 摘要:本文介绍了一个六个自由度的小型双足机器人的设计、调试与实现。包括机械结构设 计、电路设计与制作,机器人步态规划算法研究,利用Atmega8 芯片实现了对六个舵机的 分时控制,编写VC 上位机软件,通过串口通信对双足竞步机器人进行调试,通过人体仿生 学调试出机器人的步态规划。实现了双足竞步机器人稳定向前行走、立正、向前翻跟头、向 后翻跟头。并在2011 中国机器人大赛暨robocup 公开赛荣获双足竞步机器人大学组(狭窄 10 足印)项目比赛二等奖。 关键词:机器人,串口通信,步态规划 0 引言 机器人是近年来发展起来的综合学科,它集机械、电子、计算机、材料、传感器、控制 30 技术及人工智能等多门学科于一体。反映着一个国家智能化和自动化的水平,同时也是一个 国家高科技实力的重要标志。 双足机器人具有传统的轮式,履带式机器人无法比拟的优越性,步行的环境要求很低, 能适应复杂的地面情况,例如台阶、斜坡、不平整的路面等,活动的盲区较小。因此能够代 替人类在有辐射、有粉尘、有毒环境中作业。此外,双足机器人的能耗较小。与其他机器人 35 相比具有体积小、重量轻、动作灵活等特点。通过研究表明,足式机器人的能耗通常低于轮 式和履带式。双足机器人还是工程上少有的高阶、非线性、非完整约束的多自由度系统,这 对机器人的运动学、动力学及控制原理的研究提供了一个非常理想的实验平台。综上,双足 机器人的研究具有十分重大的科研意义,可以推动仿生学、人工智能、计算机仿真学、通讯 等相关学科发展[1]。 40 双足竞步机器人是一种没有上身的双足机器人,是机器人进行研究理想平台,同时也是 全国机器人大赛的指定项目,我们利用这个机会对双足竞步机器人进行研究,并与其他高校 进行交流,相互学习,共同进步。 1 双足竞步机器人总体设计方案 使用8.4V 电源,通过7805、7806 稳压芯片分别给Atmega8 芯片和舵机供电,外部加 45 max232 电路实现PC 与单片机的串口通信,利用RB-150MG 舵机(全金属齿、大扭矩、大 转角范围的机器人专用伺服舵机)控制机器人的六个自由度,仿照人体步态规划自主设计的 机械结构,使其重心低、走路平稳。 使用AVR STDIO 软件编写单片机程序,利用Atmega8 T0 定时器输出PWM 值,使舵 机在0-180 度精确转动,使用VC++6.0 编写机器人上位机调试软件。在VC 中插入MSComm 50 控件,方便实现了与下位机的通信,精确控制舵机的转动角度。对机器人步态规划起到了重 要的作用。简单、快捷的完成机器人的行走、翻跟头[2]。 2 双足竞步机器人的硬件设计 2.1 机械结构设计 要使机器人能够平稳的行走,首先要设计好机械结构。我们选用了6 个舵机作为机器人 55 腿的6 个关键,因为舵机的理论旋转角度是180 度,所以我们把腿部和膝盖的4 个舵机竖直 放置,脚步的2 个舵机水平放置。在选材方面,我们主要用的是铝合金板为主要的框架材料, 也用了一些塑料的电路板做底板。机器人的2 个手臂也是用的金属做支撑,以保证机器人行 走时的稳定,也减少了舵机震动所带来的影响[3]。 60 图1 机械结构 Fig.1 Mechanical design 2.2 电路设计 选用atmega8 芯片作主控制器,ATmega8 特点:8K 字节的系统内可编程Flash, 512 字 节 EEPROM,1K 字节 SRAM,32 个通用I/O 口线,32 个通用工作寄存器,三个具有比 65 较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线 串行接口,10 位6 路ADC,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口, 以及五种可以通过软件进行选择的省电模式。 电源采用8.4V 的锂电池,通过7805 稳压后的5V 给芯片供电,通过7806 稳压后的6V 给舵机供电,这样避免了舵机和控制电路之间的干扰,并且更有力的保证舵机的供电。 70 选用max232 芯片作串口设计的单电源电平转换,其特点符合所有的RS-232C技术标准, 只需要单一 +5V 电源供电,片载电荷泵具有升压、电压极性反转能力,能够产生+10V 和-10V 电压V+、V- ,功耗低,典型供电电流5mA,内部集成2 个RS-232C 驱动器,内部集成两 个RS-232C 接收器。 选用RB-150MG 舵机控制机器人六个自由度。其特点为全金属齿大扭矩大转角范围的 75 机器人专用伺服舵机,其内部采用的电机为直流有刷空心杯电机,内部采用无铁转子,具有 能量转换效率高、激活制动响应速度快、运行稳定性可靠、自适应能力强、电磁干扰少等优 点,与同等功率的铁芯电机相比体积小、重量轻;舵机反馈电位器采用导电塑料电位器,其 精度和耐磨程度大大优于线饶电位器;电机控制集成电路(IC)采用数字芯片与功率开关组成 H 桥电路,电压控制双极性驱动方式具有反应速度更快、无反应区范围小、定位精度高、抗 80 干扰能力强兼容性好等优势 图2 控制原理图 Fig.2 Control schematic 85 3 双足竞步机器人的软件设计 3.1 AVR 单片机程序设计 RB-150MG 舵机的控制信号为PWM 信号,通过改变占空比进而改变舵机转动的角度。 通过多次实验,测得脉宽在0.5ms-2.5ms 时,对应舵机在0 度-180 度区间转动,并呈线性关 系。由于atmega8 的8 位pwm 控制精度不高,为了可以精确调整舵机所转角度并能分时控 90 制6 路pwm,利用atmega8 t0 定时器软件仿真pwm 信号输出[4]。 为了实现方便调试双足竞步机器人步态规划,我们设计pc 上位机与avr 单片机进行串 8.4V 直流电源 7805 稳压芯片 7806 稳压芯片 Atmega8 主控芯片 RB-150MG 舵机 PWM 口通信,设置avr 单片机串口接收中断,接收对应舵机编号和该舵机pwm 参数,并实时改 变舵机角度,实现机器人仿真行走。 AVR 单片机主要程序 95 //主函数 int main() { DDRC=0xff; //DDRC 拉高 PORTC=0x3f; 100 UBRRH = (CPU/BAUD/16-1)/256; UBRRL = (CPU/BAUD/16-1)%256; //设置波特率 UCSRB |= (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //接受中断使能 UCSRC=(1<<URSEL) | (1<<UCSZ1)|(1<<UCSZ0); UCSRA = 0x00; 105 TCCR0 = 0; TCCR0 |= (1<<CS00) ; // 无分频 TIMSK = 1; //T/C0 溢出中断使能 TCNT0 = 205; //0.1ms 溢出中断 sei(); //开总中断 110 delay(2000); run(); while(1); } //串口接收中断 115 SIGNAL(SIG_UART_RECV) { static int j=0; if(j==0) { 120 k = UDR; j++; } else { 125 duo[k] = UDR; j=0; } } //定时器T0 中断 130 SIGNAL(SIG_OVERFLOW0) { i++; TCNT0 = 105; if(i>=800) 135 {i=0;PORTC=0x3f;} if(i==(20+duo[1])) PORTC &=~ (1<<0); if(i==(20+duo[2])) PORTC &=~ (1<<1); 140 if(i==(20+duo[3])) PORTC &=~ (1<<2); if(i==(20+duo[4])) PORTC &=~ (1<<3); if(i==(20+duo[5])) 145 PORTC &=~ (1<<4); if(i==(20+duo[6])) PORTC &=~ (1<<5); } 3.2 PC 上位机调试软件设计 150 选用VC++6.0 开发环境,利用MFC 应用程序框架设计PC 上位机调试机器人软件。添 加串口MSComm 控件,添加对话框控件,每当通过滑动条改变舵机参数值触发串口响应函 数,发送对应舵机编号和该舵机pwm 参数,并在编辑框生成AVR 单片机程序,再用正则 表达式分析代码在上位机实现机器人的仿真行走,将调试出稳定的步态程序下载到单片机, 实现机器人的规定动作。上位机调试方法可以大大加快机器人的开发周期,并且能够让步行 155 机器人行走稳定,上位机具有操作简单、修改容易、使用灵活等特点 图3 上位机调试与仿真界面 Fig. 3 PC debugging and emulation interface 160 上位机主要代码 //串口初始化 if(! m_comm1.GetPortOpen())//判断串口是否已经打开 { m_comm1.SetCommPort(1); //选择串口号1 165 m_comm1.SetPortOpen(TRUE); //打开串口 m_comm1.SetRThreshold(2); //收到两个字节引发OnComm 事件 m_comm1.SetInputMode(1);//输入模式选为二进制 m_comm1.SetSettings("9600,n,8,1"); //设置串口参数,波特率9600,无奇偶校验,1 位 停止位,8 位数据位 170 MessageBox("串口初始化完毕","提示"); //提示串口成功初始化 } //滑动条控件触发响应函数 void CMyDlg::OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) { 175 // TODO: Add your control notification handler code here if(m_comm1.GetPortOpen()) { int a=1; m_edit1=m_slide1.GetPos(); //获取当前滑动条参数 180 m_edit2=m_slide1.GetPos()*180.0/85.0; UpdateData(false); CString string=""; char c1='\0',c2='\0'; c1=(char)a; 185 c2=(char)m_edit1; string+=c1; string+=c2; m_comm1.SetOutput(COleVariant(string)); //发送舵机编号和该舵机参数 if((auto1==1)&&(m_slide1.GetPos()!=b1)) 190 { b1=m_slide1.GetPos(); CString c3; c3.Format("duo[1]=%d;delay(10);",m_slide1.GetPos()); m_edit13+=c3; 195 duo1[d1][0]=1; duo1[d1][1]=m_slide1.GetPos(); d1++; UpdateData(false); } 200 } *pResult = 0; } 4 双足竞步机器人步态规则 步态是在步行过程中,机器人各个关节在时间和空间上的一种协调关系,通过各个关节 205 的运动轨迹来描述,步态规划的目标是产生期望步态[5]。步态规划是机器人稳定步行的基础, 也是双足竞步机器人研究的一个关键技术。 为了保证双足竞步机器人的行走稳定,在狭窄足的竞步机器人中要保证机器人的重心在 行走中不变才能让机器人处于稳定状态。因此,在一个行走周期,先左侧身,右腿迈步,右 脚落地,然后右侧身,左脚迈步,左脚落地[6]。行走方式如下,所示。侧身的幅度要根据机 210 器人的机械结构和重心的位置决定,这样才能保证行走中的稳定,当调试结束后用上位机软 件生成avr 单片机程序。 5 总结 通过对机器人机械结构的设计,和软件调试,完成了机器人的规定动作。用软件弥补了 机械结构的缺陷与不足,为以后在机器人方面研究打下了基础,通过本次设计锻炼我们的动 学术论文网Tag:代写论文 代写经济论文 代写代发论文 代写毕业论文 |