双足步行机器人
一:项目目标:
1. 掌握舵机控制方式
2. 了解机器人串口通讯方式
3. 掌握双足机器人步伐调整原理
二:项目描述:
行走机器人是现在机器人研究领域的一个热点,无论是SONY公司不断更新的“阿西莫”机器人,还是每年在机器人世界杯上不断推陈出新的足球机器人,大家都把目光瞄在了更加拟人化的双足类人机器人。 基于双足平台的机器人要正常工作首先需要能够平稳的行走,目前对腿型行走机构的研究主要基于仿生学原理与动态控制原理,SONY公司的“阿西莫”主要基于仿生学原理,这种研究方式也是双足机器人
舞蹈比赛与双足机器人足球比赛中常见的控制方式,因为这种控制方法让初学者更容易上手,能够从最简单的步伐控制开始了解双足机器人控制的基本原理。 本公司所开发的步行机器人创新套件就是立足与这样一个事实,初接触类人机器人的同学可以按照我们的说明组装出自己的双足机器人套件,从而从每一个关节开始了解双足机器人的组成,然后使用我们的软件编程环境逐步的调试机器人的步伐,让机器人走出一个个流畅的步伐,我们相信,当一堆杂乱无章的舵机零件经过你的双手变成一个能够流畅行走的双足机器人的时候,你一定能够体会到知识给你带来的喜悦。
三:项目原理与具体内容:
1. 舵机
型号与相关参数:
MG995
金属齿轮结构 双滚珠轴承
连接线长度30厘米
尺寸:40mmX20mmX36.5mm
重量:62g
技术参数:无负载速度0.17秒/60度(4.8V)
0.13秒/60度(6.0V)
扭矩:11KG
使用温度:-30~~+60摄氏度
死区设定:4微秒
工作电压:3.0V-7.2V
图1
接线说明:黄色(信号线),红色(电源线),暗红(地线)
2舵机控制卡
图
2
舵机控制卡功能说明:
主控制器为AT89C2051
能够控制八个舵机的运动 可以选择电池供电或外部电源供电 能够使用串口直接和MT-U控制器直接通信 有舵机驱动器和双足步伐控制器两种工作状态
(一)舵机控制卡工作方式:
当做为舵机控制卡使用时,AT89C2051中的程序为《舵机控制(中断)》里面的51arm20080623.c
当作为舵机控制卡使用的时候,控制卡最
多可以同时控制八个舵机的运动,在上电状态
下(舵机控制器不和其他的控制部件进行通
讯),8个舵机控制端口分别输出周期为20ms,
宽度为1.5ms的脉宽调制波。因此,按照舵
机的控制原理,如果各个控制端口上接有舵
机,则各个舵机输出角为90度。如果控制卡
此时没有外接控制器,则舵机一直保持再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) 装配图
再用户开始自己的创意之旅之前,我们的开发人员针对创新套件的机构特点安装除了一个双足的行走平台,并把相关的参数和调试说明告知大家,算是起到一个抛砖引玉的作用。
A双足平台安装步骤:
步骤1:
2: 步骤
步骤3
步骤4
步骤4
图3
每个舵机按照上图标记的序号连接到相应的舵机接口上。
以图中看到的面为双足平台的正面,则可以知道每个舵机关节转动时的角度变化倾向如下图所示:
图4
图中的圆圈代表舵机的转盘,1、5号舵机的转轴向左右方向摆动,若把图3所示的到方向看做正前方,则舵机转盘的转动方向如图4所示。 (4)行走实验
通过上面的说明,我们已经了解了双足步行机器人的各个组成部件及其工作原理,又通过第三步
舵机模块与控制卡组装成了一个双足平台。下面我们将使用MT-U控制器通过串口控制双足平台走出流畅的步伐。 MT-T控制器接口:
图4 使用四芯的串口线将MT-U扩展板上的串口与舵机控制卡上的串口相连,连接方式按照普通的串口协议进行连接(注意:由于我们已经在内部做过变换,两个串口的连接方式为TXD—TXD,RXD--RXD)。
此时,在MT-U机器人中的程序为:
#include
#include "ingenious.h" //前面两句为MT-U编程环境的连接文件 int state=0; int
//舵机的转动值,初始状态为90度
int angle2=90; int angle3=90; int angle4=90; int angle5=90; int angle6=90; int angle7=90; int angle8=90;
void send(int com,int motoID,int angle)
//MT-U控制舵机转动的串口协议子函数
angle1=90;
{
serial_send(com,0x00AF); serial_send(com,motoID); serial_send(com,(char)angle); serial_send(com,0x00FA);
}
void main() {
serial_init(9600); //初始化串口波特率
send(2,1,angle1); //设置舵机的初始化角度 send(2,2,angle2); send(2,3,angle3);
send(2,4,angle4); send(2,5,angle5); send(2,6,angle6); send(2,7,angle7); send(2,8,angle8); sleep(2000); while(1) {
if(state==0) 腿关节的第一个动作 {
if(angle4
//
if(angle4
angle4=angle4+2; send(2,4,angle4); }
if(angle8
angle8=angle8+2; send(2,8,angle8); } } else
//第
{
state=1;
}
}
if(state==1)
腿关节的第二个动作
{
if(angle1
{
angle1=angle1+2;
send(2,1,angle1);
}
else
{
//
}
}
if(state==2)
{
if(angle260)
{
if(angle2
{
angle2=angle2+2;
send(2,2,angle2);
}
if(angle3>60)
{
angle3=angle3-2;
send(2,3,angle3);
}
}
else
{
state=3;
}
}
if(state==3)
{
if(angle4>80||angle8>80)
{
if(angle4>80)
{
angle4=angle4-2;
send(2,4,angle4);
}
if(angle8>80)
{
angle8=angle8-2;
send(2,8,angle8);
}
}
else
{
state=4;
}
}
if(state==4)
{
if(angle2>90||angle3
{
if(angle2>90)
{
angle2=angle2-2;
send(2,2,angle2);
}
if(angle3
{
angle3=angle3+2;
send(2,3,angle3);
}
}
else
{
state=5;
}
}
if(state==5)
{
if(angle660) {
if(angle6
{
angle6=angle6+2;
send(2,6,angle6);
}
if(angle7>60)
{
angle7=angle7-2;
send(2,7,angle7);
}
}
else
{
state=6;
}
}
if(state==6)
{
if(angle4
if(angle4
{
angle4=angle4+2;
send(2,4,angle4);
}
if(angle8
{
angle8=angle8+2;
send(2,8,angle8);
}
}
else
{
state=7;
}
}
if(state==7)
{
if(angle6>90||angle7
{
if(angle6>90)
{
angle6=angle6-2;
send(2,6,angle6);
}
if(angle7
{
angle7=angle7+2;
send(2,7,angle7);
}
}
else
{
state=2; //机器人的腿关节持续行走
}
}
sleep(100);
}
}
(二)双足步伐控制器:
此工作状态是双足平台发货时的状态,AT89C2051里面的程序是《步行机器人简易行走程序》
以上的介绍是针对控制卡作为舵机控制器时的使用步骤,如果没有外接控制器,也可以直接把舵机控制卡的控制核心AT89C2051作为双足平台的步伐控制器,此时用户需要使用51编程器直接针对51单片机进行编程,在我们的舵机控制卡上单片机的控制端口与舵机号的对应关系是:
P1.7→servo1 P1.6→servo2
P1.5→servo3 P1.4→servo4
P1.3→servo8 P1.2→servo7
P1.1→servo6 P1.0→servo5
根据我们提供的接口方式,用户就可以自己使用AT89C2051控制双足机器人的行走。
以上资料如有疑问,请拨打公司客服电话:021-64850709-22
双足步行机器人
一:项目目标:
1. 掌握舵机控制方式
2. 了解机器人串口通讯方式
3. 掌握双足机器人步伐调整原理
二:项目描述:
行走机器人是现在机器人研究领域的一个热点,无论是SONY公司不断更新的“阿西莫”机器人,还是每年在机器人世界杯上不断推陈出新的足球机器人,大家都把目光瞄在了更加拟人化的双足类人机器人。 基于双足平台的机器人要正常工作首先需要能够平稳的行走,目前对腿型行走机构的研究主要基于仿生学原理与动态控制原理,SONY公司的“阿西莫”主要基于仿生学原理,这种研究方式也是双足机器人
舞蹈比赛与双足机器人足球比赛中常见的控制方式,因为这种控制方法让初学者更容易上手,能够从最简单的步伐控制开始了解双足机器人控制的基本原理。 本公司所开发的步行机器人创新套件就是立足与这样一个事实,初接触类人机器人的同学可以按照我们的说明组装出自己的双足机器人套件,从而从每一个关节开始了解双足机器人的组成,然后使用我们的软件编程环境逐步的调试机器人的步伐,让机器人走出一个个流畅的步伐,我们相信,当一堆杂乱无章的舵机零件经过你的双手变成一个能够流畅行走的双足机器人的时候,你一定能够体会到知识给你带来的喜悦。
三:项目原理与具体内容:
1. 舵机
型号与相关参数:
MG995
金属齿轮结构 双滚珠轴承
连接线长度30厘米
尺寸:40mmX20mmX36.5mm
重量:62g
技术参数:无负载速度0.17秒/60度(4.8V)
0.13秒/60度(6.0V)
扭矩:11KG
使用温度:-30~~+60摄氏度
死区设定:4微秒
工作电压:3.0V-7.2V
图1
接线说明:黄色(信号线),红色(电源线),暗红(地线)
2舵机控制卡
图
2
舵机控制卡功能说明:
主控制器为AT89C2051
能够控制八个舵机的运动 可以选择电池供电或外部电源供电 能够使用串口直接和MT-U控制器直接通信 有舵机驱动器和双足步伐控制器两种工作状态
(一)舵机控制卡工作方式:
当做为舵机控制卡使用时,AT89C2051中的程序为《舵机控制(中断)》里面的51arm20080623.c
当作为舵机控制卡使用的时候,控制卡最
多可以同时控制八个舵机的运动,在上电状态
下(舵机控制器不和其他的控制部件进行通
讯),8个舵机控制端口分别输出周期为20ms,
宽度为1.5ms的脉宽调制波。因此,按照舵
机的控制原理,如果各个控制端口上接有舵
机,则各个舵机输出角为90度。如果控制卡
此时没有外接控制器,则舵机一直保持再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) 装配图
再用户开始自己的创意之旅之前,我们的开发人员针对创新套件的机构特点安装除了一个双足的行走平台,并把相关的参数和调试说明告知大家,算是起到一个抛砖引玉的作用。
A双足平台安装步骤:
步骤1:
2: 步骤
步骤3
步骤4
步骤4
图3
每个舵机按照上图标记的序号连接到相应的舵机接口上。
以图中看到的面为双足平台的正面,则可以知道每个舵机关节转动时的角度变化倾向如下图所示:
图4
图中的圆圈代表舵机的转盘,1、5号舵机的转轴向左右方向摆动,若把图3所示的到方向看做正前方,则舵机转盘的转动方向如图4所示。 (4)行走实验
通过上面的说明,我们已经了解了双足步行机器人的各个组成部件及其工作原理,又通过第三步
舵机模块与控制卡组装成了一个双足平台。下面我们将使用MT-U控制器通过串口控制双足平台走出流畅的步伐。 MT-T控制器接口:
图4 使用四芯的串口线将MT-U扩展板上的串口与舵机控制卡上的串口相连,连接方式按照普通的串口协议进行连接(注意:由于我们已经在内部做过变换,两个串口的连接方式为TXD—TXD,RXD--RXD)。
此时,在MT-U机器人中的程序为:
#include
#include "ingenious.h" //前面两句为MT-U编程环境的连接文件 int state=0; int
//舵机的转动值,初始状态为90度
int angle2=90; int angle3=90; int angle4=90; int angle5=90; int angle6=90; int angle7=90; int angle8=90;
void send(int com,int motoID,int angle)
//MT-U控制舵机转动的串口协议子函数
angle1=90;
{
serial_send(com,0x00AF); serial_send(com,motoID); serial_send(com,(char)angle); serial_send(com,0x00FA);
}
void main() {
serial_init(9600); //初始化串口波特率
send(2,1,angle1); //设置舵机的初始化角度 send(2,2,angle2); send(2,3,angle3);
send(2,4,angle4); send(2,5,angle5); send(2,6,angle6); send(2,7,angle7); send(2,8,angle8); sleep(2000); while(1) {
if(state==0) 腿关节的第一个动作 {
if(angle4
//
if(angle4
angle4=angle4+2; send(2,4,angle4); }
if(angle8
angle8=angle8+2; send(2,8,angle8); } } else
//第
{
state=1;
}
}
if(state==1)
腿关节的第二个动作
{
if(angle1
{
angle1=angle1+2;
send(2,1,angle1);
}
else
{
//
}
}
if(state==2)
{
if(angle260)
{
if(angle2
{
angle2=angle2+2;
send(2,2,angle2);
}
if(angle3>60)
{
angle3=angle3-2;
send(2,3,angle3);
}
}
else
{
state=3;
}
}
if(state==3)
{
if(angle4>80||angle8>80)
{
if(angle4>80)
{
angle4=angle4-2;
send(2,4,angle4);
}
if(angle8>80)
{
angle8=angle8-2;
send(2,8,angle8);
}
}
else
{
state=4;
}
}
if(state==4)
{
if(angle2>90||angle3
{
if(angle2>90)
{
angle2=angle2-2;
send(2,2,angle2);
}
if(angle3
{
angle3=angle3+2;
send(2,3,angle3);
}
}
else
{
state=5;
}
}
if(state==5)
{
if(angle660) {
if(angle6
{
angle6=angle6+2;
send(2,6,angle6);
}
if(angle7>60)
{
angle7=angle7-2;
send(2,7,angle7);
}
}
else
{
state=6;
}
}
if(state==6)
{
if(angle4
if(angle4
{
angle4=angle4+2;
send(2,4,angle4);
}
if(angle8
{
angle8=angle8+2;
send(2,8,angle8);
}
}
else
{
state=7;
}
}
if(state==7)
{
if(angle6>90||angle7
{
if(angle6>90)
{
angle6=angle6-2;
send(2,6,angle6);
}
if(angle7
{
angle7=angle7+2;
send(2,7,angle7);
}
}
else
{
state=2; //机器人的腿关节持续行走
}
}
sleep(100);
}
}
(二)双足步伐控制器:
此工作状态是双足平台发货时的状态,AT89C2051里面的程序是《步行机器人简易行走程序》
以上的介绍是针对控制卡作为舵机控制器时的使用步骤,如果没有外接控制器,也可以直接把舵机控制卡的控制核心AT89C2051作为双足平台的步伐控制器,此时用户需要使用51编程器直接针对51单片机进行编程,在我们的舵机控制卡上单片机的控制端口与舵机号的对应关系是:
P1.7→servo1 P1.6→servo2
P1.5→servo3 P1.4→servo4
P1.3→servo8 P1.2→servo7
P1.1→servo6 P1.0→servo5
根据我们提供的接口方式,用户就可以自己使用AT89C2051控制双足机器人的行走。
以上资料如有疑问,请拨打公司客服电话:021-64850709-22