机器人实验指导书

2025-01-13 版权声明 我要投稿

机器人实验指导书(精选8篇)

机器人实验指导书 篇1

电子科技大学机械电子工程学院工程训练中心

目 录

实验一 MULTIFLEX控制卡编程实验..............................................1 实验二 多自由度串联式机械手..................................................9 实验三 简易四足机器人.......................................................15 实验四 轮式机器人运动控制实验...............................................20 实验五 机器人传感系统实验...................................................25 实验六 自主避障机器人实验...................................................28 实验七 追光的机器爬虫.......................................................37 实验八 开放性实验:设计自己的机器人.........................................46

创意之星模块化机器人实验

实验一 MultiFLEX控制卡编程实验

一 实验目的

1.了解MultiFLEX控制卡的基本结构; 2.了解WinAVR+AVRStudio编译环境的使用;

3.了解C 语言环境下编写控制程序,并编译、下载到MultiFLEX 控制器中执行的流程 4.熟悉关于AVR 单片机的I/O口有关的寄存器的概念、作用

5.理解函数gpio_mode_set(),write_gpio(),read_gpio()的定义,掌握其用法 6.熟悉并掌握利用5中的3 个函数控制MultiFLEX 控制卡的16 路IO 口

二 实验原理

AVR 单片机与I/O 口有关的寄存器有3 个:PORTX,DDRX,PINX(X 为端口编号)。DDRX 说明X 端口的输入输出状态,例如:如PORTA=0x0F=0000 1111,则引脚PA0-PA3均为输出(1 为输出),引脚PA4-PA7 均为输入(0 为输入)。

PORTX 说明X 端口的输入输出的具体信息,例如:当PORTA=0x0F 时,若PORTA=0X33=00110011,则引脚PA0、PA1 为输出,且输出信号为高(1);引脚PA2、Pa3 为输出,但输出信号为低(0);PA4、PA5 为输入且输入有效;至于PA6、PA7 虽然DDRA 已经将其设置为输入,但是PORTA 使其输入无效,所以PA6、PA7 的输入信号读不出来。

PINX 为输入端口的具体信息(PINX 只能读取不能写入),例如:当DDRA=0x0F,PORTA=0x33时,如果读取PINA 即char temp=PINA,则temp=--XX0011,其中为输入的引脚只有PA4-PA7,PA4 与PA5 状态为XX,X 为输入信号,而PA6、PA7 的输入为--,-为一个不确定的数。

1.gpio_mode_set()在SYSTEM.C 中的定义如下:

void gpio_mode_set(uint16 temp16)//设置16 位GPIO 模式,IO0-IO7 全为输出,IO8-IO15 { DDRE =(uint8)(temp16>>8);//IO8~IO15 路TTL I/O 模式设置 DDRC =(uint8)temp16;//IO0~IO7 路TTL I/O 模式设置 } 2.write_gpio()在SYSTEM.C 中的定义如下:

void gpio_mode_set(uint16 temp16)//设置16 位GPIO 模式 { DDRE =(uint8)(temp16>>8);//IO8~IO15 路TTL I/O 模式设置 DDRC =(uint8)temp16;//IO0~IO7 路TTL I/O 模式设置 }

3.read_gpio()在SYSTEM.C 中的定义如下: uint16 read_gpio(void){ uint16 temp16;temp16 =(uint16)EXT_IO2_IN;temp16 =(temp16<<8)| EXT_IO_IN;return temp16;} 而EXT_IO_IN 等在public.h 中的宏定义如下 #define EXT_IO_IN PINC //8 路数字输入口

创意之星模块化机器人实验

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根 232电缆

1根 USB转232电缆

1根 UP-MRcommander 控制软件

1套

四 实验步骤

1.WinAVR 以及AVRStudio 软件的安装

在“MultiFLEX 控制卡AVR MCU 开发资料”目录下,打开“WinAVR”文件夹,双击“WinAVR-20060421-install.exe”完成WinAVR 的安装;然后打开“AVR Studio”文件夹,根据文件夹里面的安装说明进行AVRstudio 的安装,并将其升级到最新版本。

注意:请先安装WinAVR 再安装AVRStudio,这样WinAVR 才能自动嵌入到AVRStudio。2.用AVRStudio 建立一个工程

首先打开我们刚刚安装好的AVRStudio,会出现如下窗口:

图1-1 AVRStudio新建项目

点击图1-1中的选框1 中的按钮可以新建一个工程,点击选框2 中的按钮可以打开一个工程,选框3 是最近你所打开的文件,你可以选中快速将其打开。在这里,我们点击1(NewProject),会出现如下窗口:

图1-2 AVRStudio工程文件选项

在图1-2窗口中我们可以设置关于新工程的一些基本信息。在选框1(Projec tType)中,第一项AtmelAVRAssembler 指汇编工程文件,第二项AVRGCC 指建立后的文件为C 语言

创意之星模块化机器人实验

工程文件,在此我们选择AVRGCC(如果没有安装WinAVR 则此处不会出现AVRGCC 选项)。在选框2 中,我们可以确定工程名(Project name)以及初始文件名(Initial file),在此我们不妨均取名为test。在选项框3 中,我们可以确定工程所在的文件夹位置,在此我们不妨将路径设为D:test。在选项卡2 中如果选中Create folder,则会在3 中确定的文件夹中新建一个以工程名为文件夹名的文件夹,所有与该工程有关的文件会放在此文件夹内;在选项卡2 中选中Create initial file 会生成一个初始.c 文件,方便我们编写程序。以上设定完成后我们点击Next 进行下一步设置,会弹出如下窗口:

图1-3 AVRStudio单片机型号选项

在图1-3窗口中我们可以设置一些关于计算机调试的一些信息。在选项框1 之中我们设置程序调试平台,在此我们选择AVRSimulator。在选项框2 中我们可以选择单片机类型,你可以根据实际需要选择,在此我们选择ATmega128(本实验以创意之星控制板为平台,所以选择创意之星的控制核心ATmega128,AVRStudio 可以进行软件模拟单片机的运行过程,但本书中不作介绍)。选择完成后我们点击Finish,这样一个新工程就初步建立了。然后会出现如下窗口。

图1-4 AVRStudio程序编辑窗口

图1-4中选框1 为菜单栏,选框2 为工具栏,选框3 为工程管理树,选框4 为程序编辑栏,选框5 为编译信息栏。作为我们的第一个代码实验,我们可在选框4 中输入程序:

#include #define BEEP_ON PORTG |= _BV(PG3)

创意之星模块化机器人实验

#define BEEP_OFF PORTG &= ~_BV(PG3)int main(void){ int i,j;PORTG = 0;DDRG = 0xff;while(1){ for(i=0;i<0xFF;i++){for(j=0;j<0xFF;j++);} BEEP_ON;for(i=0;i<0xFF;i++){for(j=0;j<0xFF;j++);} BEEP_OFF;} } 然后在菜单栏选择“Project——》Configuration Options”

图1-5 AVRStudio选项菜单

会弹出如下窗口:

图1-6 AVRStudio选项设置

在控制核心工作频率(Frequency)一栏输入14745600,由于创意之星采用的晶振是此频率,故如此设置。其他选项均采用默认设置即可,然后点击确定。保存文件,然后在菜单

创意之星模块化机器人实验

栏选择“Build——》Build”(或者按F7),如下图所示:

图1-7 AVRStudio编译下拉菜单

在编译信息栏会出现相应的编译信息,显示是否有错误,其中显示“Build succeeded with 0 Warnings„”说明我们编译正常通过,这时,在我们当初设置的工程所在的文件夹的default 文件夹“D:testtestdefault”里会出现很多新文件,这些都是程序编译的结果,其中有个test.hex 文件是程序烧写文件,将这个文件经过烧录软件下载至MultiFLEX 控制板后程序就能运行,至于如何烧写我们将在后面进行介绍。

3.将*.hex 文件烧录至MultiFLEX 控制卡中

首先我们要安装烧写软件PonyProg2000,打开实验指导书配套光盘,在“MultiFLEX控制卡AVR MCU 开发资料ponypro”目录下,运行ponyprogV206f.exe,安装完毕后运行,有两个提示会出现,都选择确认,最终正确运行的PonyProg2000 如下图所示:

图1-8 PonyProg2000界面

首先我们应该对软件进行总线时序校准,在Setup 中选择Calibration 即可。然后进行下载方式设置,点击“Setup——》InterfaceSetup”

图1-9 PonyProg2000下载方式设置

创意之星模块化机器人实验

会出现如下窗口:

图1-10 PonyProg2000I/O设置

由于“创意之星”配置的是并行下载线,所以我们应该选择Parallel,在下拉选项中选择AvrISPI/O,如上图所示,其他选项按其默认设置,不予更改,然后点击“OK”完成设置。

然后我们进行目标芯片的选择:点击“Device——》AVR micro”,在弹出的选项框中选择ATmega128,如下图所示,这样我们就完成了目标芯片的选择。

图1-11 PonyProg2000芯片设置

现在我们用并口下载线将电脑和MultiFLEX 控制卡进行连接。下图是“创意之星”提供的并口下载线以及其线序:

图1-11 创意之星”提供的并口下载线

下图是MultiFLEX 控制卡的功能区域图,将下载线的5 针插头与其中的H 区的5 针插头相连接,注意线序

创意之星模块化机器人实验

图1-12 MultiFLEX 控制卡的功能区域图

连接完成后给控制卡通上电源(程序烧写过程中不允许断电,请确保电源的可靠性)。然后在刚才打开的PonyProg2000 中点击“File——》Open Device File”或者点击图标打开我们前面生成的test.hex 文件(应该在“X:testtestdefault”文件夹中),然后点击“Command——》Write All”或者点击图标,然后程序就会开始烧写至控制卡里面。

当PonyProg2000 显示烧写成功时我们的第一个实验程序就顺利的烧写进MultiFLEX 控制卡中了,正常情况下我们会听到控制卡蜂鸣器发出急促的“嘟嘟嘟”的声音,如果没有任何现象请你检查以上步骤是否按要求完成或者检查下载线有没有插反、控制卡是否正常供电,修改有问题的地方后再生成hex 文件进行烧录,直至蜂鸣器出现规则的嘟嘟声为止。

4.编写C 程序实现对16 路I/O 口的控制

方便大家看懂源程序,对于MultiFLEX 控制卡,已经在系统程序里面进行了处理,同学们只需要调用相关的函数即可对控制卡的IO0-IO15 这16 个引脚进行控制。

(1)控制卡的IO0-I03 分别与4 个LED 灯连接

(2)控制卡的I015 与1 个碰撞传感器(实质上是一个开关)连接(3)控制卡与电脑之间用并口下载线正确连接(4)控制卡电源线正确连接 输入实验程序: #include “Public.h” #include “Usertask.h” void user_task(void){ uint8 io_in;uint8 io_out;uint8 temp8;uint16 temp16;gpio_mode_set(0x00FF);write_gpio(0xFF00);while(1){ temp16 = read_gpio();io_in =(uint8)(temp16>>8);

创意之星模块化机器人实验

temp8=(io_in&0x80);if(temp8==0){ io_out=0x01;while(io_out){ write_gpio(~((uint16)io_out));delay(5);//延时5×20MS=0.1s io_out<<=1;write_gpio(~((uint16)io_out));delay(5);} } else write_gpio(0xFF00);} } 五 实验要求

记录实验程序及实验现象

创意之星模块化机器人实验

实验二 多自由度串联式机械手

一 实验目的

1.了解串联式机器人、自由度和空间机构学、机器人运动学的基本概念; 2.熟悉四自由度串联式机械手;使用配套动作程序,然后自己给机器人编写动作; 3.掌握创意之星机器人套件的搭建和装配技巧

4.熟悉并掌握舵机控制函数rc_moto_control()以及延时函数delay()的使用方法,理解其函数定义

5.熟悉并掌握利用函数控制舵机运动

二 实验原理

舵机控制数据命令包括两个值一个是最终到达的旋转终止角度,另外一个是速度范围0-255,255代表最大速度。

舵机控制函数rc_moto_control()的定义如下: 函数原型:

void rc_moto_control(uint8 *point)

参数说明:

*point 指向24字节舵机控制数据,控制数据定义见控制板舵机控制命令 返回值:

说明:

设定12路舵机角度控制 void rc_moto_control(uint8 *point){

} uint8 {

} Sys_PWMDataAccount();//根据舵机旋转角度PWMangle和舵机速度PWMspeed这if(*(point+(i*2))<= 180)

PWMangle[i] = *(point+(i*2));//控制字必须小于i;for(i=0;i<12;i++)

180度,大于180度控制字丢弃

PWMspeed[i] = *(point+(i*2+1));//舵机速度控制字

两个量计算舵机控制量

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根 232电缆

1根 USB转232电缆

1根 舵机

5个 舵机延长线

5根 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

四 实验步骤

1.结构组装

其结构(3D模型图,线缆和其他细节没有在图上表示出来)示意图如下:

创意之星模块化机器人实验

图2-1 腰部旋转关节3D模型图

图2-2 机械手3D模型图

此部分组装完成后,用手旋转橙红色U-3-3-3 构件,应该和腰关节舵机的输出轴牢固地连接在一起,不能有松动、晃动或者卡住的现象。

组装其他部分。需要2 个基本构形A,1 个基本构形B,以及一个基本构形E。各个基本构形之间可以用通用连接件(D8x4、D8x6 塞子)连接,也可以用螺栓和螺母连接。需要注意的是,如果用通用连接件连接,最终完成的机械手的刚度会差一些;如果用螺栓/螺母连接,则需要仔细思考连接的先后顺序,不能先把各个基本构形组装出来之后再拼装,否则可能由于空间限制而无法进行拧螺丝等操作。

例如,连接DOF2 和DOF3 的两个基本构形的时候,就需要预先把DOF3 上的U3-3-3 红色U 型构件连接到DOF2 的舵机架上。

2.连接电缆

按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:

图2-3 指定关节的舵机连线图

创意之星模块化机器人实验

3.调整初始姿态

打开控制卡的电源,我们会发现机器手开始运动到初始姿势之后会锁定该姿势。为了使用附带的动作程序,我们需要手动调整每个关节的姿势,调整完毕后应该如下图所示:

图2-4 舵机初始位置图

4.写入动作程序

调整之后,再次打开电源。我们应该看到组装完成的机械手保持如上图所示的状态。此时在UP-MRcommander 软件中调入“UP-MRcommander机械臂机械臂.mra”这个动作文件,并下载执行。机械臂就可以运动起来了。

5.建立自己的动作程序

现在我们来编写自己的动作程序。动作程序的编写过程就是建立一个个的动作,并设计每个动作的姿态,以及持续时间。这一步中我们的目标是编写一个机械手的程序,它可以让机械手把一个纸团从他的左侧夹起,放到右侧,并如此重复。

编写动作的几个要点是:

要在“在线调试”的状态下对每个动作进行调试;如下图所示,选中“在线调试”复选框,即进入了在线调试状态。这种状态下,在UP-MRcommander 界面上的任何改动动作的操作都回立刻被机器人执行。利用在线调试功能可以很方便地为机器人编写每一个动作。

图2-5 在线调试

舵机的运动速度可以在0~255 之间调节。但是对于机械手来说,舵机的运动速度在50~150 比较合适。由于机械手的每个关节舵机(尤其是底座部位的舵机)的负载很大,如果速度太快的话,舵机会很快速地启动和停止,有可能损伤舵机本身,甚至有可能误伤操作者。

如果设定舵机的速度较慢,并且动作的执行时间太短的话,相应的动作可能还没有执行完毕就已经进入了下一个动作。没有执行完的动作将被忽略。

如下图2-6所示,你很难搞明白左图的动作程序是什么。相对的,右图的动作程序每一步都进行了命名,如果我们要修改动作程序,很容易找出需要修改的地方来调试。

创意之星模块化机器人实验

图2-6 舵机动作命名

6.编写C 程序实现对舵机的控制

用“创意之星”机器人套件搭建的机器人的主要关节都是由舵机驱动的,在打开电脑上的工程文件(“D:创意之星8.3.1 控制卡原始程序MultiFLEX.aps”),我们选择USERTASK.C 对其进行编辑。输入如下程序:

#include “Public.h” #include “Usertask.h” void user_task(void){ uint8 array_rc[23]={0};array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90;array_rc[7]=170;array_rc[8]=90;array_rc[9]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90-16;array_rc[1]=50;array_rc[2]=90+40;array_rc[3]=60;array_rc[4]=90-60;array_rc[5]=60;array_rc[6]=90+55;array_rc[7]=85;array_rc[8]=90+40;

创意之星模块化机器人实验

array_rc[9]=128;rc_moto_control(array_rc);delay(50);array_rc[0]=90-22;array_rc[1]=128;array_rc[2]=90+8;array_rc[3]=70;array_rc[4]=90-29;array_rc[5]=60;array_rc[6]=90-65;array_rc[7]=60;array_rc[8]=90+70;array_rc[9]=128;rc_moto_control(array_rc);delay(50);array_rc[0]=90+10;array_rc[1]=128;array_rc[2]=90-33;array_rc[3]=70;array_rc[4]=90+45;array_rc[5]=60;array_rc[6]=90-38;array_rc[7]=60;array_rc[8]=90-63;array_rc[9]=128;rc_moto_control(array_rc);delay(50);array_rc[0]=90+10;array_rc[1]=128;array_rc[2]=90-11;array_rc[3]=70;array_rc[4]=90-54;array_rc[5]=60;array_rc[6]=90+79;array_rc[7]=60;array_rc[8]=90-47 array_rc[9]=128;rc_moto_control(array_rc);delay(50);} 然后打开SYSTASK.C 文件,将处于最后的main()函数进行细微改动。int main(void){

创意之星模块化机器人实验

Sys_Init();WORK_LED_ON;while(1){ //system_task();user_task();} } 至此我们就顺利完成了用c 语言实现机器人关节运动控制。根据以上程序 可增加舵机的控制动作,并记录修改的程序。

五 实验要求

记录实验程序及实验现象

创意之星模块化机器人实验

实验三 简易四足机器人

一 实验目的

1.熟悉四足机器人,使用配套光盘中提供的动作程序机器人; 2.熟悉UP-MRcommander 软件调试机器人运动步态的技巧。3.掌握“创意之星”机器人套件的搭建技巧。

4.熟悉并掌握舵机控制函数rc_moto_control()以及延时函数delay()的使用方法,理解其函数定义

5.熟悉并掌握利用函数调试机器人的步态

二 实验原理

1.舵机控制方法

舵机控制数据命令包括两个值一个是最终到达的旋转终止角度,另外一个是速度范围0-255,255代表最大速度。

舵机控制函数rc_moto_control()的定义如下: 函数原型:

void rc_moto_control(uint8 *point)

参数说明:

*point 指向24字节舵机控制数据,控制数据定义见控制板舵机控制命令 返回值:

说明:

设定12路舵机角度控制 void rc_moto_control(uint8 *point){

} 2.多足机器人的步态

步态规划是多足机器人运动的重要研究步骤。其研究的内容是如何让机器人的各条腿协调、连续地运动,产生整体的前进、后退、左转、右转等运动。一种最简单的步态规划方法是,观察真实的四足动物的运动,并提取每个动作的关键帧,得到步行过程中各关节的姿态、速度数据,再使用这些数据来控制机器人。uint8 {

} Sys_PWMDataAccount();//根据舵机旋转角度PWMangle和舵机速度PWMspeed这if(*(point+(i*2))<= 180)

PWMangle[i] = *(point+(i*2));//控制字必须小于i;for(i=0;i<12;i++)

180度,大于180度控制字丢弃

PWMspeed[i] = *(point+(i*2+1));//舵机速度控制字

两个量计算舵机控制量

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根 232电缆

1根 USB转232电缆

1根 舵机

4个

创意之星模块化机器人实验

舵机延长线

4根 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

四 实验步骤

1.结构组装

本实验中需要组装的简易四足机器人三视图及轴测视图如下:

图3-1 简易四足机器人三视图

从图3-1中可以看到,机器人具有4 个自由度(DOF1~DOF4),使用4 个基本构形A 构成了机器人的身体,它们之间使用I 形连接件连接。每个舵机的输出轴上连接了一个I 形连接件,作为机器人的腿。如果大家对机器人刚度有较高要求的各部件连接件最好用螺纹副固定。在腿的末端使用了橡胶防滑垫,以增大腿部与地面的摩擦力。机器人的装配爆炸图如下图所示:

图3-2 装配爆炸图

创意之星模块化机器人实验

2.连接电缆

按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:

图3-3 指定关节的舵机连线图

3.调整初始姿态

与前面的实验相同,在完成机器人的组装后,为了使用配套光盘中附带的动作程序,我们需要手动调整每个关节的初始姿态。调整方法如前面实验所述。调整完毕后各关节的初始姿态应该如下图所示:

图3-4 舵机初始状态图

4.写入动作程序

调整之后,再次打开电源。我们应该看到组装完成的机械手保持如图3-4所示的状态。此时在UP-MRcommander 软件中调入“UP-MRcommander蛇形机器人10 关节蠕动-步距0.125波长-正弦波.mra”这个动作文件,并下载执行。此时把机器人放到地上,注意观察它的运动方式。

通常情况下,使只有4 个自由度的四足机器人运动起来并且能够前进、后退,是一个很困难的事情。普通的四足机器人至少有8 个自由度,有些甚至有12 个自由度。这个4 自由度的简易四足机器人能够前进、后退,甚至能够笨拙地转弯。

5.编写C 程序实现对舵机的控制

用“创意之星”机器人套件搭建的机器人的主要关节都是由舵机驱动的,在打开电脑上的工程文件(“D:创意之星8.3.1 控制卡原始程序MultiFLEX.aps”),我们选择USERTASK.C 对其进行编辑。输入如下程序:

#include “Public.h” #include “Usertask.h” void user_task(void){ uint8 array_rc[23]={0};array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90;

创意之星模块化机器人实验

array_rc[7]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90+70;array_rc[1]=170;array_rc[2]=90-6;array_rc[3]=170;array_rc[4]=90-66;array_rc[5]=170;array_rc[6]=90-8;array_rc[7]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90+62;array_rc[1]=170;array_rc[2]=90-60;array_rc[3]=170;array_rc[4]=90-64;array_rc[5]=170;array_rc[6]=90+49;array_rc[7]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90+34;array_rc[1]=170;array_rc[2]=90-58;array_rc[3]=170;array_rc[4]=90-18;array_rc[5]=170;array_rc[6]=90+40;array_rc[7]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90+12;array_rc[1]=170;array_rc[2]=90-51;array_rc[3]=170;array_rc[4]=90-18;array_rc[5]=170;array_rc[6]=90+38;array_rc[7]=170;rc_moto_control(array_rc);delay(50);

创意之星模块化机器人实验

array_rc[0]=90+12;array_rc[1]=170;array_rc[2]=90-58;array_rc[3]=170;array_rc[4]=90-18;array_rc[5]=170;array_rc[6]=90+36;array_rc[7]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90+60;array_rc[1]=170;array_rc[2]=90-60;array_rc[3]=170;array_rc[4]=90-64;array_rc[5]=170;array_rc[6]=90+44;array_rc[7]=170;rc_moto_control(array_rc);delay(50);} 然后打开SYSTASK.C 文件,将处于最后的main()函数进行细微改动。int main(void){ Sys_Init();WORK_LED_ON;while(1){ //system_task();user_task();} } 至此我们就顺利完成了用c 语言实现四足机器人关节运动控制。

五 实验要求

记录实验程序及实验现象

创意之星模块化机器人实验

实验四 轮式机器人运动控制实验

一 实验目的

1.了解轮式机器人的概念和了解采用全向驱动方式在生活、科研、工作中的应用; 2.熟悉轮式机器人;使用配套光盘中提供的动作程序,然后自己为机器人编写动作;在UP-MRcommander 软件中,熟悉直流电机的控制;

3.掌握对于具有多种执行器(舵机、电机或者其他)的机器人,掌握搭建和调试要领。4.掌握“创意之星”机器人套件的搭建和调试要领。5.熟悉并掌握电机控制函数dc_moto_control()的使用方法 6.熟悉并掌握利用函数dc_moto_control()控制4 路直流伺服电机

二 实验原理

电机控制数组长度为8,可控制4路舵机,电机运动函数要求array_dc[偶数]为电机转动速度,array_rc[奇数]为电机转动时间。电机控制函数dc_moto_control()的定义如下:

函数原型: void dc_moto_control(uint8 *point)

参数说明:*point 指向8字节直流电机控制数据,控制数据定义见控制板电机控制命令 返回值:

说明:

设定4路直流电机控制

void dc_moto_control(uint8 *point){

cli();

Timer1_100ms_M1 = 0;Timer1_100ms_M2 = 0;Timer1_100ms_M3 = 0;Timer1_100ms_M4 = 0;MotoTime[0] = *(point+1);MotoTime[1] = *(point+3);MotoTime[2] = *(point+5);MotoTime[3] = *(point+7);sei();if(0x80 == *point)M1_T;else if(*point < 0x80){

} else {

}

//设定各个电机的运行时间0.1MS-25.5S

//MOTO1停止

OCR0 = 70 +(uint8)(((uint16)(0x7f0x80)* 145)/100);M1_R;

//MOTO2停止 if(0x80 == *(point+2))M2_T;else if(*(point+2)< 0x80){

创意之星模块化机器人实验

}

} else {

} OCR2 = 70 +(uint8)(((uint16)(0x7f0x80)* 145)/100);M2_R;

//MOTO3停止 if(0x80 == *(point+4))M3_T;else if(*(point+4)< 0x80){ } else { } if(0x80 == *(point+6))M4_T;else if(*(point+6)< 0x80){ } else { } M4_R;

M4_L;M3_R;M3_L;

//MOTO4停止

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根 232电缆

1根 USB转232电缆

1根 舵机

4个 舵机延长线

4根 电机

4个 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

创意之星模块化机器人实验

四 实验步骤

1.结构组装

图4-1 轮式机器人结构图

组装完成的轮式机器人应该如下图所示:

图4-2 轮式机器人三视图

2.连接电缆

按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:

创意之星模块化机器人实验

图4-3 轮式机器人连线图

3.调整初始姿态

打开控制卡的电源,机器人会锁定初始姿势。为了使用配套光盘中附带的动作程序,我们需要手动调整每个关节的姿势,调整方法如前面实验所述。调整完毕后应该如下图所示:

图4-4 轮式机器人初始状态

4.写入动作程序

调整之后,再次打开电源。我们应该看到组装完成的轮式机器人保持如图4-4所示的状态。此时在UP-MRcommander 软件中调入“UP-MRcommander全向四驱小车+机械臂机械臂+四驱车.mra”这个动作文件,并下载执行。轮式机器人就可以运动起来了。

5.建立自己的动作程序

观察机器人的运动,并且通过UP-MRcommander 软件的在线调试功能,弄清楚每个舵机、直流电机与软件界面中相应滑块的对应关系。

把机器人的轮子架空,拖动软件界面上的电机调速滑块和电机运行时间滑块,观察电机在不同速度运行的情况,以及不同的运行时间。可以用手握住轮子,体会一下不同速度时电机的力量大小。

熟悉了电机的控制操作之后,我们可以编写自己的运动程序,控制机器人按照一定的顺序运动。

6.编写C 程序实现对4 路电机的控制

电机是机器人非常重要的组成部件之一,我们已经知道了怎样用“创意之星”机器人套件提供的上位机程序通过控制卡对电机进行控制。在本实验中,我们都只讨论怎么对USERTASK.C 进行编辑,其余步骤跟前面相同,不再赘述。对四路电机进行控制的USERTASK.C程序如下所示:

#include “Public.h” #include “Usertask.h” void user_task(void)

创意之星模块化机器人实验

{ uint8 array_dc[7]={0};uint8 i;array_dc[0] = 0;array_dc[1] = 30;array_dc[2] = 0xFE;array_dc[3] = 30;array_dc[4] = 0;array_dc[5] = 30;array_dc[6] = 0xFE;array_dc[7] = 30;dc_moto_control(array_dc);delay(150);

for(i=0;i<(128/10+1);i++){ array_dc[0] = 0+i*10;array_dc[1] = 2;array_dc[2] = 255-i*10;array_dc[3] = 2;array_dc[4] = 0;array_dc[5] = 2;array_dc[6] = 0;array_dc[7] = 2;dc_moto_control(array_dc);delay(10);}

array_dc[0] = 0x80;array_dc[1] = 2;array_dc[2] = 0x80;array_dc[3] = 2;array_dc[4] = 0x80;array_dc[5] = 2;array_dc[6] = 0x80;array_dc[7] = 2;dc_moto_control(array_dc);delay(10);delay(50);} 整个工程编译后电机将以上循环规律转动。但机器人是无法规律运动的,要求同学根据UP-MRcommander 软件中调入“UP-MRcommander全向四驱小车+机械臂机械臂+四驱车.mra”这个动作文件中的参数设置,修改对4 路电机的控制程序,实现机器人运动。

五 实验要求

记录实验程序及实验现象

创意之星模块化机器人实验

实验五 机器人传感系统实验

一 实验目的

1.熟悉关于AVR 单片机的A/D 口的概念、作用

2.熟悉并掌握函数ADC_Read(uint8 Channel,uint8 *data)的使用方法,理解其函数 定义

3.熟悉并掌握利用函数ADC_Read()读取来自MultiFLEX 控制卡A/D 口的模拟信号

二 实验原理

A/D 口(ADC 模拟/数字信号转换器)是MultiFLEX 控制卡的又一重要组成部分之一。A/D 口可以进行数字信号与模拟信号的转化,在这里仅简单介绍A/D 口的模拟信息采集过程:传感器输出的模拟信号到达A/D 口后,单片机会对输入的连续模拟信号进行定时采集,进而得到一系列时间间隔一定的离散信号,用这些离散的点信号来代替以前连续的曲线信号,由于两次采集之间的时间间隔极短,所以由连续信号转化为离散信号的误差极小,在普通工程应用领域我们可以忽略两者之间的误差。

A/D口函数ADC_Read()的定义如下: 参数说明:

Channel : ADC通道选择 0-7 *

函数原型:

void ADC_Read(uint8 Channel,uint8 *data)//读取8路模拟量

*data : 返回8位ADC数据

返回值: 无

说明: 读取8路模拟量 {

} uint8 i;

//每次读取两次抛弃前一次的数据,防止转换通道的时候读ADMUX =((ADMUX & 0xf8)|(Channel & 0x07));for(i=0;i<2;i++){

} ADCSRA |= _BV(ADSC);_delay_loop_1(60);while(ADCSRA & _BV(ADSC))_delay_loop_1(60);*data = ADCH;

//读取AD数据

//读取8路模拟量 void ADC_Read(uint8 Channel,uint8 *data)取到上一个通道的输入

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根 232电缆

1根 USB转232电缆

1根 传感器

若干 舵机

4个

创意之星模块化机器人实验

舵机延长线

4根 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

四 实验步骤

1.控制卡的AD0 与光强传感器连接 2.控制卡PWM0 与舵机连接

3.控制卡与电脑之间用并口下载线正确连接 4.控制卡电源线正确连接 5.建立自己的程序 实验程序1: #include “Public.h” #include

“Usertask.h” void user_task(void){

} 整个实验的运行结果应为:开机后,PWM0口的舵机在0-180度之间运动,其位置与外部光照强度成正比(外部光照强度通过光强传感器采集,采集频率2Hz)。

实验程序2: #include “Public.h” #include

“Usertask.h” void user_task(void){

uint8 uint8 AD0_in;rc_array[23]={0};uint16 temp;uint8

i;for(i=0;i<24;i=i+2){

} while(1){

} ADC_Read(0,&AD0_in);temp=((uint16)AD0_in*180)/255;rc_array[0]=(uint8)temp;rc_array[1]=80;rc_moto_control(rc_array);delay(25);rc_array[i]=90;rc_array[i+1]=128;uint8 uint8 AD0_in;rc_array[23]={0};

创意之星模块化机器人实验

} uint8 while(1){

} i=0;ADC_Read(0,&AD0_in);rc_array[0]=i*180;rc_array[1]=AD0_in;delay(25);i++;if(i>1)i=0;

rc_moto_control(rc_array);实验结果:开机后,舵机在0-180度之间往复运动,其转动速度与外部光照强度成正比(外部光照强度通过光强传感器采集,采集频率2Hz)。

6.同时控制多个舵机的程序编写

参考上述程序,编写程序同时使用4个光强(或温度)传感器分别控制4个舵机的转角位置的程序。

五 实验要求

记录程序及实验现象

创意之星模块化机器人实验

实验六 自主避障机器人实验

一 实验目的

1.回顾控制卡的各种控制函数

2.提高灵活应用各种控制函数控制机器人各种执行器的能力 3.提高搭建只能程序,使机器人拥有一定人工智能的能力

二 实验原理

机器人在没有遇到障碍物的时候会一直向前运动。当传感器遇到障碍物之后,由于传感器自生延时以及处理器的需要处理时间,所以机器人会由于惯性继续向前运动一段距离,我们就需要机器人推后一定的补偿距离,以保证和障碍物之间的距离为一个确定的范围。其次机器人会根据检测到障碍物的传感器不同而采取不同的策略:如果是左边传感器检测到障碍物之后,机器人应该向右转避开障碍物;如果是右边的传感器检测到障碍物的话机器人应该向左转;如果两个传感器都有障碍物的话机器人应该随机采取一个旋转方向(为简化程序,我们假设此时机器人仍向右转)。并且机器人左转与右转的角度不应该相同,否则在特殊情况下机器人会陷入死循环,在一个地方不停的循环的左转右转。当机器人转向后,如果机器人前方仍然有障碍物的话机器人应该重复后退专项操作,如果前方已经没有障碍物的话机器人应该继续向前引动。以下是程序框图:

图6-1 自主避障机器人的程序框架

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根

创意之星模块化机器人实验

232电缆

1根 USB转232电缆

1根 电机

4个 舵机

4个 舵机延长线

4根 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

四 实验步骤

1.结构组装

图6-2 结构组装图

由图6-2可知,整个全向运动作业机器人由1 个机器手构型,1 个控制盒,4 个基本构型D,4 个零件I9 以及相应的连接件构成。为简化起见,上图中并没有显示出具体的连接件,大家可以在考虑机器人系统刚性的情况下采用自己喜欢的连接方式。本实验的全向运动作业机器人结构主体和前面里面的四轮小车基本相似,下部的驱动部分大不相同,采用的是前面介绍的基本构型D。请同学们组装的时候认真体会这种驱动结构的优缺点。

组装好后的全向作业机器人如下图所示:

创意之星模块化机器人实验

图6-3 全向作业机器人

在此我们将其机器手部分去掉,为其加上两个检测障碍物用的红外传感器。加上的红外传感器装配图如下图所示:

图6-4 红外传感器示意图

加上的红外传感器装配体由1 个L5-3,2 个V2-2 以及两个红外传感器构成,各零件之间用螺纹副连接(红外传感器与V2-2 之间靠过盈配合)。为了增加系统刚性,红外传感器装配体与全向运动机器人之间也用螺纹副连接。改装好的机器人如下图所示:

创意之星模块化机器人实验

图6-5 改装后的全向运动机器人

改装后的全向运动机器人的各个舵机以及电机与控制卡的连接顺序以及开机后各舵机的初始位置依然同全向运动机器人一样,不做改动(机器手部分忽略),而加上的两个红外传感器则分别插在控制卡的IO0 以及IO1 上。至此我们的机器人就改装完毕了。

2.连接电缆

按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:

图6-6 电缆连接图

3.C 语言程序编写

打开我们的上位机程序UPMRobot.exe,用串口线将控制卡与电脑连接好,给机器人通上电,在上位机程序里打开设置相应串口并且打开在线调试功能。

通过在线调试,可以把机器人调整到假设机器人遇到某种情况时所需要执行的运动状态,然后点击如下图所示的红框框住的指令栏,分别点击舵机、电机、I/O 输出、蜂鸣器会弹出不同的窗口,这个窗口就是上位机给控制卡发出的使机器人执行当前运动设置的指令,这个指令遵守模块化机器人电脑与控制卡之间的通讯协议,通过查阅“创意之星”实验里的模块化机器人通讯协议,经过简单分析,就可以提取出在Usertask.C 中调用的控制函数的参数,将这些控制参数提交给控制函数并执行,机器人就会如现在在线调试般运动。通过在31

创意之星模块化机器人实验

线调试提取机器人运动信息,可以使我们的程序编写过程大大简化。

图6-7 UPMRobot界面

先在在线调试模式下设定一个机器人的运动状态,然后电机指令栏里的舵机按钮,会弹出如下信息:

图6-8 舵机数据

而在模块化机器人通讯中关于舵机指令的规定如下:

图6-9 舵机控制指令

通过分析,可以看到在弹出窗口里舵00——舵11 之间的24 个数据,实际上就是让机器人运动到此状态下的舵机控制函数rc_moto_control()的运动参数。将此24 个数依次赋予一个拥有24 项的数组(例如unsigned char rc_array[23];),然后将此数组数组名(数组地址)传递给舵机函数,在Usertask.C 中调用命令“rc_moto_control(array);”即可使机器人按照当前在线调试状态所设置的运动状态运动。

类似的,在在线调试模式下设定一个机器人的运动状态,然后电机指令栏里的舵机按钮,32

创意之星模块化机器人实验

会弹出如下信息:

图6-10 电机数据

在的模块化机器人通讯中关于电机指令的规定如下:

图6-11 电机控制指令

经过分析,M00-M03 之间的8 个数就是在Usertask.C 中调用dc_moto_control()函数实现当前运动状态的参数。我们不妨建立一个数组“unsigned chardc_array[7];” 然后将上述数据依次赋予此数组,然后再Usertask.C 调用语句“dc_moto_control(dc_array);”机器人机会按照当前在线调试所确定的状态运动。通过反复尝试,最终我们建立的使全向运动机器人实现自动避障的USERTASK.C程序如下所示:

#include “public.h” #include “Usertask.h” void user_task(void){ uint8 array_dc[7]={0};uint8 array_rc[23]={0};uint16 temp16;gpio_mode_set(0);temp16 = read_gpio();if((temp16 & 0x0003)==3){ array_dc[0] = 0;array_dc[1] = 50;array_dc[2] = 0xFE;array_dc[3] = 50;array_dc[4] = 0;array_dc[5] = 50;array_dc[6] = 0xFE;array_dc[7] = 50;

创意之星模块化机器人实验

dc_moto_control(array_dc);} else if(((temp16&0x0003)==2)||((temp16&0x0003)==0)){ beep_set(5);

array_dc[0] = 0xFE;array_dc[1] = 5;//0.5 秒 array_dc[2] = 0;array_dc[3] = 5;array_dc[4] = 0xFE;array_dc[5] = 5;array_dc[6] = 0;array_dc[7] = 5;dc_moto_control(array_dc);delay(30);array_rc[0]=90+20;array_rc[1]=170;array_rc[2]=90-20;array_rc[3]=170;array_rc[4]=90-20;array_rc[5]=170;array_rc[6]=90+20;array_rc[7]=170;rc_moto_control(array_rc);delay(50);

array_dc[0] = 0x80+55;array_dc[1] = 10;array_dc[2] = 0x80+55;array_dc[3] = 10;array_dc[4] = 0x80+55;array_dc[5] = 10;array_dc[6] = 0x80+55;array_dc[7] = 10;dc_moto_control(array_dc);delay(50);array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90;

创意之星模块化机器人实验

array_rc[7]=170;rc_moto_control(array_rc);delay(50);} else { beep_set(5);array_dc[0] = 0xFE;array_dc[1] = 5;array_dc[2] = 0;array_dc[3] = 5;array_dc[4] = 0xFE;array_dc[5] = 5;array_dc[6] = 0;array_dc[7] = 5;dc_moto_control(array_dc);delay(30);array_rc[0]=90+20;array_rc[1]=170;array_rc[2]=90-20;array_rc[3]=170;array_rc[4]=90-20;array_rc[5]=170;array_rc[6]=90+20;array_rc[7]=170;rc_moto_control(array_rc);delay(50);

array_dc[0] = 0x80-55;array_dc[1] = 15;array_dc[2] = 0x80-55;array_dc[3] = 15;array_dc[4] = 0x80-55;array_dc[5] = 15;array_dc[6] = 0x80-55;array_dc[7] = 15;dc_moto_control(array_dc);delay(50);array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;

创意之星模块化机器人实验

array_rc[6]=90;array_rc[7]=170;rc_moto_control(array_rc);delay(50);} } 下载完成后,如果操作正确,我们会看见拥有自主避障功能的全向运动小车在地面运动。

五 实验要求

记录程序及实验现象

创意之星模块化机器人实验

实验七 追光的机器爬虫

一 实验目的

1.回顾控制卡的各种控制函数

2.提高灵活应用各种控制卡函数控制机器的能力 3.提高搭建c 程序,使机器人拥有一定人工智能的能力

二 实验原理

机器人的追光行为应该细分为寻找光源、追逐光源等基本行为,在两个基本行为之中又夹杂着若干的逻辑判断,例如周围光源是否达到人造光源光强标准,是否追踪到光源,光源是否丢失等等。其具体分析如下所述:

机器爬虫开机复位后,首先应该开始寻找光源:机器人开始采集传感器数据,并沿某方向(例如向左)原地打转直至传感器采集的数据大于某一阈值δ(在自然条件下环境光比较温和,传感器采集数据处于一个比较低的范围,若传感器采集值忽然增大,说明机器人逐渐朝向光源方向),然后机器人继续转相,直至两传感器采集数据之差小于或等于另一阈值Δ 时说明机器人现在已经朝向光源方向。

当机器爬虫锁定光源大概方向后即开始追光:爬虫朝光源方向运动,运动过程中不断根据传感器采集的数据修正自己的方向:如果两传感器采集数据之差仍不大于Δ 时说明光源未丢失;如果光源之差大于Δ(光源移动等原因导致)说明机器人已经丢失光源,如果此时单个传感器值仍大于δ 则机器人朝次方向转向,如果两个传感器的数据均小于δ 则说明光源已经彻底丢失,机器人应该重复追光行为。初步的框架图如下所示:

图7-1 机器人追光框架图

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根

创意之星模块化机器人实验

串口下载线

1根 232电缆

1根 USB转232电缆

1根 传感器

2个 舵机

8个 舵机延长线

8根 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

四 实验步骤 结构组装

机器爬虫的结构组装如下图所示:

图7-2 机器爬虫的结构组装图

机器爬虫每个腿部构型由2 个基本构型B,1 个L1-1,一个L3-1 以及相应的连接件构成。四只腿两两对称,组装的时候需注意。机器爬虫的头部构型由1 个基本构型B,2 个光强传感器,1 个L3-3,2 个V2-2 以及相应的连接件构成。机器爬虫控制盒由2 个电路板底座,6 个U1-2-1,1 块电路板以及相应的连接件构成。整个机器爬虫由1 个头部构型,4 个腿部构型,1 个控制盒,1 个支撑架,1 个L5-1,1 个电池组以及相应的连接件构成。建议腿部与躯干用螺钉连接以保证机体的稳定性。

组装好后的机器爬虫如下图所示

创意之星模块化机器人实验

图7-3 机器爬虫全图

由于两个光强传感器平行不利于分辨光源方向,所以我们要对机器爬虫的头部进行改装。改装的机器人头部如下所示:

图7-4 光强传感器安装图

机器人头部由1 个U1-2-1,一个V2-2,两个D8x6 轮轴,两个红外传感器以及一些连接螺钉装配而成,两传感器之间呈大概30 度夹角。改装后的机器爬虫如下所示:

创意之星模块化机器人实验

图7-5 机器爬虫初始状态

四只腿中八个舵机与控制卡的连接顺序还是和前面的四足爬虫一样。头部的左、右(以爬虫为基准的左右)光强传感器分别连接至控制卡的AD0 和AD1 接口上。

2.连接电缆

按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:

图7-6 机器爬虫电缆连接图

3.C 语言程序编写

借助上位机软件在线调试步通过反复尝试,最终建立的使四足机器爬虫实现追光行为的USERTASK.C程序如下所示:

#include “public.h” #include

“Usertask.h” uint8 { uint8

rc_array[10][24]={{0xAD,0x67,0x5A,0x67,0x11,0xDC,0x5C,0xD9,0xAD,0x67,0x67,0x67,0x0A,0x67,0x60,0x67},move_on_flag=0;

void move_on1(void)

{0xAD,0x67,0x50,0x67,0x11,0x67,0x66,0x67,0xAD,0x67,0x5D,0x67,0x0A,0x67,0x6A,0x6

创意之星模块化机器人实验

7,0x5A ,0x80}, {0xAD ,0x67 ,0x4B ,0x67 ,0x11 ,0x67 ,0x6B ,0x67 ,0x8F ,0xDC ,0x71 ,0xD9 ,0x0A ,0x67 , {0xAD ,0x67 ,0x46 ,0x67 ,0x11 ,0x67 ,0x70 ,0x67 ,0xAD ,0xDC ,0x85 ,0xD9 ,0x0A ,0x67 , {0x8F ,0xDC ,0x5A ,0xD9 ,0x11 ,0x67 ,0x75 ,0x67 ,0xAD ,0x67 ,0x80 ,0x67 ,0x0A ,0x67 ,0 {0xAD ,0xDC ,0x6E ,0xD9 ,0x11 ,0x67 ,0x7A ,0x67 ,0xAD ,0x67 ,0x7B ,0x67 ,0x0A ,0x67 {0xAD ,0x67 ,0x69 ,0x67 ,0x11 ,0x67 ,0x7F ,0x67 ,0xAD ,0x67 ,0x76 ,0x67 ,0x28 ,0xDC ,0 {0xAD ,0x67 ,0x64 ,0x67 ,0x11 ,0x67 ,0x84 ,0x67 ,0xAD ,0x67 ,0x71 ,0x67 ,0x0A ,0xDC ,0 {0xAD ,0x67 ,0x5F ,0x67 ,0x2F ,0xDC ,0x70 ,0xD9 ,0xAD ,0x67 ,0x6C ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x5A ,0x67 ,0x11 ,0xDC ,0x5C ,0xD9 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 ,}

void move_on2(void){ uint8 rc_array[10][24]={{0xAD ,0x67 ,0x5A ,0x67 ,0x11 ,0xDC ,0x5C ,0xD9 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 ,0x60 ,0x67}, {0xAD ,0x67 ,0x50 ,0x67 ,0x11 ,0x67 ,0x66 ,0x67 ,0xAD ,0x67 ,0x5D ,0x67 ,0x0A ,0x67 ,0

0x6F ,0x67 }, 0x74 ,0x67 }, x79 ,0x67}, ,0x7E ,0x67}, x6A ,0xD9}, x56 ,0xD9}, 0x5B ,0x67}, 0x60 ,0x67}};uint8 {

} rc_moto_control(rc_array[i]);delay(6);i;for(i=0;i<10;i++)x6A ,0x67}, {0xAD ,0x67 ,0x4B ,0x67 ,0x11 ,0x67 ,0x6B ,0x67 ,0xAD ,0x67 ,0x58 ,0x67 ,0x28 ,0xDC ,41

创意之星模块化机器人实验

0x56 ,0xD9}, {0xAD ,0x67 ,0x46 ,0x67 ,0x11 ,0x67 ,0x70 ,0x67 ,0xAD ,0x67 ,0x53 ,0x67 ,0x0A ,0xDC ,0 {0xAD ,0x67 ,0x41 ,0x67 ,0x2F ,0xDC ,0x5C ,0xD9 ,0xAD ,0x67 ,0x4E ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x3C ,0x67 ,0x11 ,0xDC ,0x48 ,0xD9 ,0xAD ,0x67 ,0x49 ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x37 ,0x67 ,0x11 ,0x67 ,0x4D ,0x67 ,0x8F ,0xDC ,0x5D ,0xD9 ,0x0A ,0x67 , {0xAD ,0x67 ,0x32 ,0x67 ,0x11 ,0x67 ,0x52 ,0x67 ,0xAD ,0xDC ,0x71 ,0xD9 ,0x0A ,0x67 , {0x8F ,0xDC ,0x46 ,0xD9 ,0x11 ,0x67 ,0x57 ,0x67 ,0xAD ,0x67 ,0x6C ,0x67 ,0x0A ,0x67 ,0 {0xAD ,0xDC ,0x5A ,0xD9 ,0x11 ,0x67 ,0x5C ,0x67 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 ,} void move_on(void){

}

void turn_left(void){ uint8 rc_array[10][24]={{0xAD ,0xDC ,0x5A ,0xD9 ,0x11 ,0x67 ,0x5C ,0x67 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 ,0x60 ,0x67},x42 ,0xD9}, 0x47 ,0x67}, 0x4C ,0x67}, 0x51 ,0x67}, 0x56 ,0x67}, x5B ,0x67}, 0x60 ,0x67}};{

} rc_moto_control(rc_array[i]);delay(6);uint8 i;for(i=0;i<10;i++)if(move_on_flag==0)move_on1();else move_on2();move_on_flag++;if(move_on_flag>1)move_on_flag=0;{0xAD ,0x67 ,0x64 ,0x67 ,0x11 ,0x67 ,0x66 ,0x67 ,0xAD ,0x67 ,0x71 ,0x67 ,0x0A ,0x67 ,0x

创意之星模块化机器人实验

6A ,0x67}, {0xAD ,0x67 ,0x69 ,0x67 ,0x11 ,0x67 ,0x6B ,0x67 ,0xAD ,0x67 ,0x76 ,0x67 ,0x28 ,0xDC ,0 {0xAD ,0x67 ,0x6E ,0x67 ,0x11 ,0x67 ,0x70 ,0x67 ,0xAD ,0x67 ,0x7B ,0x67 ,0x0A ,0xDC , {0xAD ,0x67 ,0x73 ,0x67 ,0x2F ,0xDC ,0x5C ,0xD9 ,0xAD ,0x67 ,0x80 ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x78 ,0x67 ,0x11 ,0xDC ,0x48 ,0xD9 ,0xAD ,0x67 ,0x85 ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x7D ,0x67 ,0x11 ,0x67 ,0x4D ,0x67 ,0x8F ,0xDC ,0x71 ,0xD9 ,0x0A ,0x67 , {0xAD ,0x67 ,0x82 ,0x67 ,0x11 ,0x67 ,0x52 ,0x67 ,0xAD ,0xDC ,0x5D ,0xD9 ,0x0A ,0x67 , {0x8F ,0xDC ,0x6E ,0xD9 ,0x11 ,0x67 ,0x57 ,0x67 ,0xAD ,0x67 ,0x62 ,0x67 ,0x0A ,0x67 ,0 {0xAD ,0xDC ,0x5A ,0xD9 ,0x11 ,0x67 ,0x5C ,0x67 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 , } void turn_right(void){ uint8 rc_array[10][24]={{0xAD ,0x67 ,0x5A ,0x67 ,0x11 ,0xDC ,0x5C ,0xD9 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 ,0x60 ,0x67}, {0xAD ,0x67 ,0x50 ,0x67 ,0x11 ,0x67 ,0x52 ,0x67 ,0xAD ,0x67 ,0x5D ,0x67 ,0x0A ,0x67 ,0

x56 ,0xD9}, 0x42 ,0xD9}, 0x47 ,0x67}, 0x4C ,0x67}, 0x51 ,0x67}, 0x56 ,0x67}, x5B ,0x67}, 0x60 ,0x67}};delay(10);uint8 {

} rc_moto_control(rc_array[i]);delay(6);i;for(i=0;i<10;i++)x56 ,0x67}, {0xAD ,0x67 ,0x4B ,0x67 ,0x11 ,0x67 ,0x4D ,0x67 ,0x8F ,0xDC ,0x71 ,0xD9 ,0x0A ,0x67 ,43

创意之星模块化机器人实验

0x51 ,0x67}, {0xAD ,0x67 ,0x46 ,0x67 ,0x11 ,0x67 ,0x48 ,0x67 ,0xAD ,0xDC ,0x85 ,0xD9 ,0x0A ,0x67 , {0x8F ,0xDC ,0x5A ,0xD9 ,0x11 ,0x67 ,0x43 ,0x67 ,0xAD ,0x67 ,0x80 ,0x67 ,0x0A ,0x67 ,0 {0xAD ,0xDC ,0x6E ,0xD9 ,0x11 ,0x67 ,0x3E ,0x67 ,0xAD ,0x67 ,0x7B ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x69 ,0x67 ,0x11 ,0x67 ,0x39 ,0x67 ,0xAD ,0x67 ,0x76 ,0x67 ,0x28 ,0xDC ,0 {0xAD ,0x67 ,0x64 ,0x67 ,0x11 ,0x67 ,0x34 ,0x67 ,0xAD ,0x67 ,0x71 ,0x67 ,0x0A ,0xDC ,0 {0xAD ,0x67 ,0x5F ,0x67 ,0x2F ,0xDC ,0x48 ,0xD9 ,0xAD ,0x67 ,0x6C ,0x67 ,0x0A ,0x67 , {0xAD ,0x67 ,0x5A ,0x67 ,0x11 ,0xDC ,0x5C ,0xD9 ,0xAD ,0x67 ,0x67 ,0x67 ,0x0A ,0x67 , }

void user_task(void){

0x4C ,0x67}, x47 ,0x67}, 0x42 ,0x67}, x56 ,0xD9}, x6A ,0xD9}, 0x65 ,0x67}, 0x60 ,0x67}};delay(10);uint8 {

} rc_moto_control(rc_array[i]);delay(6);i;for(i=0;i<10;i++)uint8 uint8 uint8 light_sensor_left;light_sensor_right;light_gate=130;

int8 sub_gate=30;int8 int8_temp;while(1){

ADC_Read(0,&light_sensor_left);ADC_Read(1,&light_sensor_right);if(light_sensor_left>light_gate)

创意之星模块化机器人实验

}

} {

} else turn_right();if(light_sensor_right>light_gate){

} else turn_left();int8_temp=(int8)(light_sensor_left-light_sensor_right);if(int8_temp){

} else {

}

int8_temp=0-int8_temp;

if(int8_temp>sub_gate)turn_right();else move_on();

if(int8_temp>sub_gate)turn_left();else move_on();下载完成后,如果操作正确,我们会看见拥有追光行为的四组机器爬虫在地面运动,我们可以不断的变换手电筒的位置,检验编程效果。

五 实验要求

记录动作程序及现象

创意之星模块化机器人实验

实验八 开放性实验:设计自己的机器人

一 实验目的

1.回顾控制卡的各种控制函数

2.提高灵活应用各种控制卡函数控制机器的能力 3.提高搭建c 程序,使机器人拥有一定人工智能的能力 4.回顾“创意之星”机器人套件的搭建和调试要领。

二 实验原理

根据自己的爱好搭建出自己喜欢的机器人。但是仅仅搭建出一个机器人构型只能体现出我们的动手能力,如何把这个机器人搭好、搭妙则需要我们有较强的创新能力。搭建的过程中注意个部分结构的强度、刚度、稳定性。注意给机器人的各运动部分留下充足的空间,避免机器人运动时产生干涉。自己定义一定的顺序,连接指定关节的舵机的电缆到MultiFLEX 控制卡上。

三 实验器材

计算机

1台 MultiFLEX 控制卡

1块 控制卡电源线

1根 串口下载线

1根 232电缆

1根 USB转232电缆

1根 传感器

2个 舵机

若干 舵机延长线

若干 创意之星机器人构件

1套 UP-MRcommander 控制软件

1套

四 实验步骤

1.根据自己的爱好搭建出自己喜欢的机器人

2.将自己设计的机器人的各个舵机、电机与控制卡相连 3.将自己设计的机器人的传感器分别插在控制卡上 4.控制卡与电脑之间用并口下载线正确连接 5.编程、下载、运行。观察结果。实验范例:

仿生蛇形机器人的制作 1 结构组装

机器蛇的蛇身由10个基本构型B 串联构成,蛇头由一个V2-

2、两个基本构型H以及相应的连接件构成。推荐机器蛇各基本构型之间用螺纹副连接方式以增强机器蛇结构的稳定性及可靠性。

图8-1 仿生蛇形机器人结构

创意之星模块化机器人实验

2.连接电缆

按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:

图8-2 仿生蛇形机器人连线图

3.调整初始姿态

打开控制卡的电源,我们会发现机器蛇开始运动到初始姿势之后会锁定该姿势。为了使用附带的动作程序,我们需要手动调整每个关节的姿势,调整完毕后应该如下图所示:

图8-3 仿生蛇形机器人初始状态

4.C 语言程序编写

借助上位机软件在线调试步通过反复尝试,最终建立的仿生蛇形机器人的USERTASK.C程序:

#include “Public.h” #include “Usertask.h” void user_task(void){ uint8 array_rc[23]={0};array_rc[0]=90;array_rc[1]=170;array_rc[2]=90;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90;array_rc[7]=170;array_rc[8]=90;array_rc[9]=170;array_rc[10]=90;array_rc[11]=170;array_rc[12]=90;array_rc[13]=170;

创意之星模块化机器人实验

机器人实验指导书 篇2

近年来,随着CAD/CAM技术的长足发展,先进的机器人离线编程系统已成为世界各国的研究热点。喷涂机器人的喷涂效果和效率与机器人的运动轨迹、被涂工件表面形状、喷枪参数等诸多因素有关。为了迎合汽车、航天、造船等工业领域的要求,研究喷涂机器人喷涂模型以及基于该模型的复杂曲面上的轨迹优化方法已经成为新的研究热点。实际生产中,机器人喷涂作业的优化目标主要有两个:一是提高工件表面的涂层均匀性;二是缩短喷涂时间。然而,这两个优化目标是相互制约的。李发忠等[1,2]提出在有凹凸结构的曲面上进行喷涂轨迹优化,并采用一种基于CAD的轨迹优化算法以提高曲面漆膜厚度的一致性,但并未考虑喷涂时间的优化问题,无法进一步提高喷涂机器人的工作效率。赵德安等[3]提出采用遗传算法对喷涂机器人喷枪轨迹进行优化,但该方法只能在一定程度上提高喷涂效率,不能提高喷涂效果,且该方法没有经过喷涂实验论证。Sheng等[4,5,6]按照工件几何特点,在对复杂曲面进行分片处理后,通过建立优化目标函数来设计喷涂机器人喷枪的路径模式和走向,但该方法并未考虑涂层均匀性优化问题,无法实现复杂曲面上的轨迹优化。Chen等[7,8,9]利用平面上的喷涂模型对涂层重叠区域宽度进行优化,生成喷枪空间路径,在曲率变化较小的曲面上实现了沿指定空间路径的喷涂机器人喷枪轨迹的优化,并通过实验的方法推出平面上的涂层累积速率模型,建立了曲面上的喷涂模型,但该方法并未考虑喷涂时间的优化问题,无法进一步提高复杂曲面上的喷涂效率。文献[10]中曾提出了一般性自由曲面交界处的喷涂机器人喷枪轨迹优化方法,对涂层厚度均匀性进行了优化,但该方法不能解决复杂曲面上的优化喷涂问题。

针对上述问题,本文提出一种曲面上的喷涂机器人喷枪轨迹优化设计方法。在对曲面进行分片后,采用黄金分割法求解涂层重叠区域宽度的最优值,并讨论了分片后的喷枪轨迹优化组合问题,采用改进的粒子群算法进行求解,最后进行了仿真和实验研究。

1 喷涂模型的建立

喷枪位置和姿态在固定的笛卡儿坐标系XYZ中可定义为一个6维的时间矢量函数:

a(t)=(p(t),o(t))T

其中,p(t)=(Px(t),Py(t),Pz(t))T表示喷枪相对于固定笛卡儿坐标系XYZ的位置;o(t)=(Oψ(t),Oθ(t),Oφ(t))T表示喷枪相对于XYZ轴的角度。

确定喷涂模型是喷涂机器人喷枪轨迹优化设计中的一个重要步骤,在此之前,必须先确定涂层累积速率的数学表达式。本文通过在平面工件上进行喷涂实验以获得实验数据从而推出涂层累积速率函数表达式。为了简化模型,假设喷涂时的外界环境因素(温度、气压、湿度等)和喷枪本身技术参数(喷枪张角、喷射压力、涂料黏度等)都为恒定。只要喷枪的设置和喷涂参数保持不变,涂料流速率通量就不变,因而简化的模型也可应用于更为复杂的工件。喷涂模型的建立可参考文献[2]。

2 复杂曲面上喷枪轨迹优化

2.1 复杂曲面分片及每片上喷枪轨迹优化

复杂曲面分片步骤如下[6]:①对复杂曲面进行三角网格划分;②按照划分后的相邻三角面片之间拓扑结构连接生成若干个面片,保证每个面片为单连通区域且可近似看作为一个平面。

图1所示为平面上的喷涂过程[3]。图1中,R为喷涂半径,v为喷枪移动速度,w为两个喷涂行程的涂层重叠区域宽度,x表示喷涂半径内某一点s到第一条路径的距离,s′为点s在路径上的投影,O为喷枪中心投影点,则点s的涂层厚度为

qs(x)={q1(x)0xR-wq1(x)+q2(x)R-w<xRq2(x)R<x2R-w

q1(x)和q2(x)分别表示两条相邻路径上喷涂时点s的涂层厚度, q1(x)和q2(x)计算公式为

q1(x)=20t1f(l1)dt0xRq2(x)=20t2f(l2)dtR-wx2R-w}(1)

t1=R2-x2/v

t2=R2-(2R-w-x)2/v

l1=(vt)2+x2

l2=(vt)2+(2R-w-x)2

式中,t1、t2分别为两条相邻喷涂路径上喷枪在点s喷涂时间的一半;l1、l2分别为点s到两条相邻喷涂路径上的喷枪中心投影点的距离;t为喷枪从点O运动到点s′的时间。

由式(1)可得

qs(x,w,v)=1vJ(x,w)(2)

其中,J为x和w的函数。为了使工件表面涂层厚度尽可能均匀,取点s的实际涂层厚度与理想涂层厚度之间的方差为优化目标函数:

minw[0,R],vE1(w,v)=02R-w(qd-qs(x,w,v))2dx(3)

式中,qd为理想涂层厚度。

由于最大涂层厚度qmax和最小涂层厚度qmin决定了工件表面上涂层厚度的均匀性,因此,qmax和qmin也需要进行优化:

minw[0,R],vE2(w,v)=(qmax-qd)2+(qd-qmin)2(4)

由式(2)~式(4)可得

minw[0,R],vE(w,v)=12R-wE1(w,v)+E2(w,v)(5)

又由式(1),最大涂层厚度和最小涂层厚度表达式可写为

qmax=1vJmax(w)qmin=1vJmin(w)}(6)

E(w,v)v=0,由式(2)、式(5)、式(6)可得

v=12R-w02R-wJ2(x,w)dx-Jmax2(w)-Jmin2(w)qd(12R-w02R-wJ(x,w)dx+Jmax(w)+Jmin(w))

由此看出,喷枪速率v可表示成w的函数,因此,E(w,v)的最小值只与w有关。可采用黄金分割法[11]求出w的优化值,从而可得到每一面片上的优化轨迹。

2.2 喷枪轨迹优化组合

为了使喷涂机器人在喷涂作业时喷涂时间最短,必须对曲面分片后每片上的喷枪轨迹进行优化组合[3]。为简化问题,将曲面分片后的每一面片上的轨迹看成是一条边。可用一个无方向的连接图G(V,E,C,ω:E→Z+)来表示喷枪轨迹优化组合(tool trajectory optimal integration,TTOI)问题,其中,V表示顶点集,E表示边集,C表示E的任意一个子集,ω表示边的权(实际喷枪轨迹的长度)。TTOI问题就是在图G中求出一条经过所有边且只经过一次的具有最短距离的回路。设M={dij} (i,j=1,2,…,n)是由图G中不在同一条边上的顶点i和顶点j之间的最短轨迹所组成的集合,且各顶点间的最短距离矩阵可使用Floyd算法算出。图2所示是一个有5条边的连接图G,图中实线表示边,虚线表示从一个顶点到其他任意一个不在同一条边上的顶点的轨迹。

2.3 利用粒子群算法求解TTOI问题

粒子群算法与其他优化算法相比,易于实现,没有很多参数需要调整,且不需要梯度信息,是解决优化组合问题的有效工具。算法中,每个个体为一个粒子,每个粒子代表着一个潜在的解。设zi=(zi1,zi2,…,ziD)为第i个粒子的D维位置矢量,根据适应度函数计算zi当前的适应值,即可衡量粒子位置的优劣,而TTOI问题中可选取计算喷枪轨迹长度最小值为适应度函数。vi=(vi1,vi2,…,viD)为粒子i的飞行速度,即粒子移动的距离;pi=(pi1,pi2,…,piD)为粒子迄今为止搜索到的最优位置;pg=(pg1,pg2,…,pgD)为整个粒子群迄今为止搜索到的最优位置。每次迭代中,粒子可根据下式更新速度和位置:

式中,r1、r2为 [0,1]之间的随机数;c1、c2为学习因子。

由此,TTOI问题的粒子群算法步骤为:①初始化。初始化粒子位置z(0)i=(zi1,zi2,…,ziD)(i=1,2,…,m);初始化每个粒子的速度v(0)i=(vi1,vi2,…,viD)(i=1,2,…,m);选择速度最大阈值ε和最大迭代次数Nmax,令迭代次数k=0。②测量每个粒子的适应值,表示为D(0)i,令p(0)i=z(0)i。③迭代次数kk+1;更新速度v(k+1)id;更新位置z(k+1)id。④测量每个粒子的适应值,表示为D(k)i,取D(k)=min(D(k)1,D(k)2,…,D(k)m),更新p(0)ip(0)g。⑤若D(k-1)-D(k)D(k)εk<Nmax,则跳转到③;若kNmax,循环停止,输出计算结果。

3 仿真

利用MATLAB软件对喷涂机器人喷枪轨迹优化组合问题进行仿真。为了与下面喷涂实验中的工件相符合,这里假设复杂曲面工件被分为5片,则连接图G中的边数为5,顶点数m=10。算法中,为保证算法精度,最大循环次数Nmax=100;为保证粒子不跳过最好解且能够对搜索空间进行充分搜索,取ε=1000;为保证精度且减小计算量,粒子个数取20。而学习因子c1和c2可以使粒子具有自我总结和向群体中优秀个体学习的能力,从而向自己的历史最优点以及群体内历史最优点靠近,这两个参数对算法的收敛性作用不是很大,但适当调整这两个参数可以使收敛速度变快。通过多次调整c1和c2值,并分析c1和c2值对最优适应值的影响后,可得出以下结论:即对于TTOI问题来说取c1=c2=2是一个较好的选择。图3所示是算法中得出的最优解的进化曲线,可看出,喷涂轨迹长度随进化过程呈单调下降趋势,最后趋于定值。由于喷涂机器人工作过程中一般不考虑避障问题,环境信息已知且相对较简单,故粒子群算法收敛速度较快,从图3中可看出,进化大约80代后轨迹长度基本不再变化,算法收敛。

4 实验研究

为研究方便,选取本科研团队中喷涂机器人离线编程系统的实验工件作为喷涂对象[2]。该工件的三角网格图形(允许误差2mm)如图4所示。

实验中,为了更加符合实际生产需要,减小实验点上的涂层厚度的测量误差,并能够充分检验粒子群算法的优越性和可靠性,需要适当提高理想涂层厚度值并加大喷涂半径。因此,这里假设理想涂层厚度qd=50μm, 涂层厚度最大允许偏差qw=10μm,喷枪喷出的圆锥形涂料底面半径R=60mm。则通过平板上的喷涂实验数据得到涂层累积速率为

f(r)=115(R2-r2)(μm/s)

生成并优化平板上的喷枪轨迹后,得到喷涂机器人喷枪速率(匀速)和每两个喷涂行程的涂层重叠区域宽度分别为v=256.3mm/s和w=50.2mm。算法中各个参数设置如下: qd=50μm, qw=10μm,R=60mm,喷涂距离h=100mm,匀速喷涂时v=256.3mm/s,优化喷涂时以v=256.3mm/s作为算法迭代的初始值,该复杂曲面工件被分为5片,粒子群算法中的参数设置参照仿真实验中的参数:ε=1000,粒子个数取20,c1=c2=2,Nmax=100。实验中采用江苏大学自主研发的喷涂机器人离线编程系统分别以优化轨迹喷涂和非优化轨迹喷涂两种情况进行喷涂实验。离线编程系统中复杂曲面工件底部部分优化喷涂轨迹如图5所示,图6a所示为喷涂实验过程。喷涂后采用涂层测厚仪在工件上均匀测取200个离散点的涂层厚度。优化轨迹喷涂后的采样点的涂层厚度如图6b曲线所示,实验结果数据如表1所示。可看出,优化轨迹喷涂不仅涂层的均匀性更佳,而且更节约时间,与非优化轨迹喷涂相比,对该复杂曲面工件的喷涂时间缩短了25%,从而提高了生产效率。

4 结语

针对曲面上涂层厚度的均匀性与喷涂时间相互制约的问题,提出一种曲面上喷涂机器人喷枪轨迹优化设计方法,并使用改进粒子群算法对复杂曲面上喷涂机器人喷枪轨迹优化组合问题进行求解。该方法在满足涂层厚度均匀性要求的同时,提高了喷涂机器人的喷涂效率,仿真和喷涂实验结果验证了算法的可行性和有效性。提出的算法还可以用于其他类型机器人轨迹规划,如机器人研磨复杂曲面的轨迹规划、复杂曲面上清洁机器人轨迹规划等。

参考文献

[1]李发忠,赵德安,姬伟,等.面向凹凸结构曲面的喷漆机器人轨迹优化研究[J].江苏科技大学学报(自然科学版),2008,22(4):64-67.

[2]李发忠,赵德安,张超,等.基于CAD的喷涂机器人轨迹优化[J].农业机械学报,2010,41(5):213-217.

[3]赵德安,陈伟,汤养.基于遗传算法的喷涂机器人喷枪路径规划[J].中国机械工程,2008,19(7):777-779.

[4]Sheng W H,Xi N,Song M,et al.Automated Cad-guided Robot Path Planning for Spray Painting ofCompound Surfaces[C]//IEEE/RSJ InternationalConference on Intelligent Robots and Systems.Tankamutsa,Japan,2000:1918-1923.

[5]Sheng W H,Xi N,Chen H P.Suface Partitioningin Automated CAD Guided Tool Planning for Addi-tive Manufacturing[C]//IEEE/RSJ InternationalConference on Intelligent Robots and Systems.LasVegas,Nevada,2003:2072-2077.

[6]Sheng W H,Chen H P,Xi N.Tool Path Planningfor Compound Surfaces in Spray Forming Processes[J].Automation Science and Engineering,2005,2(6):240-249.

[7]Chen H P,Sheng W H.Automated Robot Trajecto-ry Planning for Spray Painting of Free Form Sur-faces in Automotive Manufacturing[C]//Proceed-ings of the 2002IEEE International Conference onRobotics and Automation.Washington D C,2002:450-455.

[8]Chen H P,Xi N,Sheng W H,et al.Optimal SprayGun Trajectory Planning with Variational Distribu-tion for Forming Process[C]//Proceedings of the2004IEEE International Conference on Robotics andAutomation.New Orleans,LA,2004:45-50.

[9]Chen H P,Sheng W H,Dahl J.Optimizing MaterialDistribution for Tool Trajectory Generation in Sur-face Manufacturing[C]//Proceedings of the 2005IEEE/ASME Internation Conference on AdvancedIntelligent Mechatronics.Monterey,CA,2005:1389-1394.

[10]Chen Wei,Zhao De’an.Tool Trajectory Optimiza-tion of Robotic Spray Painting[C]//IEEE Interna-tional Conference on Intelligent Computation Tech-nology and Automation.Changsha,2009:419-422.

女极客的机器人实验 篇3

这个问题正是Cynthia Breazeal前进的动力。Breazeal是美国麻省理工学院(MIT)媒体实验室的个人机器人小组创始人,也曾是该小组的主管,绝对称得上是社交机器人领域里的领军人物。最近,她从大学辞职,希望能专心开发出史上首个家用社交机器人——Jibo。Breazeal的发明有一个宏大的愿景,那就是让人性化的高科技机器人走进千家万户。

Breazeal认为:“它(机器人)不仅要具有自然的沟通能力,还要能理解人类的思维方式。每当我们体验这个世界,做决定并采取行动,我们当然会考虑相关信息,但我们也会考虑其他因素。机器人可以有社交功能,也能有真情实感,更是实实在在的物体。不仅如此,只要支持人类全面体验的技术越多,人类自身的本领就会越强大。社交机器人可以算是历史上首次在上述所有这些层面内对人类体验的一种综合体现。”

多年以来,Breazeal一直在研究人性化的机器人,希望赋予他们人际交往的技巧,探究它们如何推进儿童教育、医治慢性病、高级护理等各种类型的工作。甚至,社交机器人还可以帮助家庭成员更好地相处、互动。例如利用相关技术,它们可以让住在千里之外的祖父看到自己的孙女,并且和她玩实时游戏。

Breazeal介绍,除了增进交互,机器人技术也能有效地鼓励人们改进言行。机器人可以扮演教练,指导用户锻炼身体。Breazeal发现,和人类相似的外形、沟通手段、动作和互动方式可以产生比其他技术形式更持久、更重要并且更符合人们期望的成果。

她说:“如果可以创造一种人性化的技术,让人感到它对所有人一视同仁,那么人们就会更有能力,也会把事情做得更好。”

相比于美国动画片《杰森一家》里的保姆机器人Rosie,Breazeal开发的Jibo则是完全不同的一类机器人。虽然罗西非常友好,也能给家人提供帮助,但Jibo给人的感觉更像一位新家庭成员,因为它可以促进人际互动。目前,Breazeal已经在众筹网站Indiegogo上面募集到了230万美元,远远超出了他们设定的10万美元融资目标。Jibo不仅拥有智能手机具备的所有功能,也能发出提醒、发送信息(它可以识别所有家庭成员)、讲故事(兼具音效、图像和动作效果)、充当人类的替身(利用一部可追踪拍摄的摄像头帮助召开视频会议),以及充当家庭助手,而这些都不必让用户自己动手来操作。想象一下,只需说一个简单的词语或者做个简单的动作,Jibo就能为全家人拍下珍贵的合影,无需任何一位家庭成员站出来为其他成员拍合照,牺牲拍照者本人的出镜机会;因公出差的人也可以利用机器人的视频聊天功能,在家族聚餐时和其他家庭成员聊天,或者哄孩子上床睡觉。Jibo甚至还可以下订单、订外卖。

Breazeal从事的研究工作还能进一步拓展上述体验。她说:“技术赋予了人类巨大的潜力,让人可以实现大规模生产并且降低成本。上帝知道,人们需要更多平价的技术支持。这是无可非议的需求,但技术专家、科学家、工程师若要创造一种技术,让它更好地支持人类、体现人类自身价值,目前还有很大空间需要提高。” 译 | Tino

机器人实验指导书 篇4

实验序号:实验7

一、实验目的

熟悉使用存储过程来进行数据库应用程序的设计。

二、实验平台

1、利用实验1所安装的RDBMS及其PL/SQL执行引擎。编程工具自选。

三、实验内容和要求

对学生-课程数据库编写存储过程,分别完成以下一些功能:

1.统计“离散数学”课程的成绩分布情况,即按照各分数段来统计人数。2.统计任意一门课程的平均成绩

3.将学生选课成绩从百分制改为等级制(即分数最高的前10%(包括10%)是A, 分数在前10%~30%(不包括10%)是B,分数在前30%~50%(不包括30%)是C,分数在前50%~90%(不包括50%)是D,剩下的是E)

要求:提交源程序并标识必要的注释。保证程序能正确地编译和运行,认真填写实验报告。

机器人实验指导书 篇5

实验指导书

实验七:创建活动图

课程名称:面向对象设计UML建模 适应课程:(1460460/1460466/14606617)

一.活动图的作用

〃活动图用于描述工作流程;用来描述处理和算法

二.上机实验目的:根据实际案例创建对应的活动图

三.实验内容:

1.熟悉活动图组成元素:

起始状态(Start state)终止状态(End state)转移(Transition)

活动(Activity)分支(Branch)决策(Decision)

分叉和汇合(Fork & Join)警戒条件(Guard condition)泳道(Swim Lane)

同步棒(Synchronization bar)

2.绘制“学生选课系统”中“Add Course”(添加课程)的活动图

(1)问题陈述:

1)管理员选择添加课程;

2)系统提示输入新课程信息;

3)管理员输入课程的各项信息;

4)统验证是否和已有课程冲突;

有冲突

(主脚本)

’提示课程冲突信息,要求重新输入;

2’ 返回 2)

(2)绘制活动图。

3.根据以下陈述,绘制“住宅工程建筑施工”活动图

问题陈述:

“住宅大楼在基础工程(包括地基和地下管道)完成后,就可以分别进行主

体结构和水电设备的安装。

①主体结构包括:砌筑主体结构、安装门窗、和室内装修;

②水电部分包括:水电准备、铺设室内管线、和安装水电设备;

当室内装修和安装水电设备均完成后,才能进行竣工验收。”

4.绘制“图书管理系统”的“借书”活动图

提示:借书主要活动有查找选择标题、查找有效书目和查找借书者(信息),如果查找顺利,则可登记借书。这时如果借书者预先有预订,则预定自

动取消。

5.绘制“订货服务系统”的活动图

提示:①本活动图可分为三个泳道:处理订货、顾客服务和财务结算;

② 活动图从接受定货开始(在顾客服务区),然后分别进行处理(学生

自己设计)……最后订货结束。

四.操作步骤:

1.在Use Case View 下,选Activity Diagram

进行命名(比如Add Course等);

2.需要设置泳道时,点击工具栏的Swimlane工具。进行泳道设置;

3.双击浏览器中New Swimlane, 可以命名或修改泳道名;

4.利用工具栏的Start State ,End State ,Activity ,Transition ,Decision ,Horizontal Synchronization等按钮来设计活动图。

五.实验结果

1.“学生选课系统”中“Add Course”(添加课程)的活动图如下:

图7—1 “学生选课系统”中“Add Course”的活动图

2.绘制“住宅工程建筑施工”活动图(请同学自己完成,此例可以不画出泳道)

3.“借书”用例的活动图如下:

图7—2 “图书管理系统”中“Lend Item”的活动图

4.“订货服务系统”的活动图(请同学自己完成)

六.评分标准

1.能正确绘制“学生选课系统” 中“Add Course”、“图书管理系统”的“借书”活动图和“住宅工程建筑施工”活动图者,可酌情给予60-80分的成绩。

2.有创造性发挥着,可得到80分以上的成绩。

*上机实验补充内容(第12章业务建模)

一.实验目的:业务建模

二.实验内容:

1.根据以下 “某零售店”的业务描述,建立零售店的业务模型:

〃零售店具有产品销售、送货、自主定价及退款等业务;

〃售货员负责销售产品;司机负责给顾客送产品;产品定价及退款等事宜由零售店经理负责。

零售店的业务模型

注意:上图是从机构角度出发来显示业务实例和业务角色之间的交互。

2.以下是“银行信用业务”的业务描述,建立银行信用业务系统的业务模型:

〃银行的出纳员负责管理各个客户的账户;

〃对信用账户,则由专门的信用管理员来管理,信用管理员也同时负责对客户贷款资金的管理。

〃对于ATM则由分行服务器统一管理。(请同学自己完成)

3.根据以下陈述,创建“订货业务”的业务模型:

“采购员从仓库收到缺货通知单后,查阅订货合同。若已订货,则向供货单位发出催货请求。否则填写补充订货单脚供货单位。供货单位发货同时,向采购员发出提货通知单。”

(请同学自己完成)

实验步骤

1.右击工具栏,并选Customize…打开“自定义工具栏”窗口;

2.添加业务建模元素到工具栏中;

机器人实验指导书 篇6

为培养我校学生的实践创新能力,进一步激发学生对科技创新兴趣,迎接片区教研活动,展示我校创客教育成果,经学校研究决定举办“新城实验学校第二届科技节机器人大赛”。具体比赛方案如下:

一、比赛时间:

暂定5月25日星期五,下午2:30

二、比赛地点:

务本楼三楼篮球馆

三、比赛分组:

1.比赛以级部为单位。

2.一至六年级每班2个队,每队由2名学生组成。

3、七、八年级每班1个队,每队由2名学生组成。

四、比赛项目:

1.完美复制 参赛年级:

一、二年级 10 3 3 2.动力小车 参赛年级:三年级 3 1 1 3.豌豆射手 参赛年级:四年级 2 4.巡线 参赛年级:五年级 2 5.寻宝 参赛年级:六年级 2 6.Arduino任务 参赛年级:

七、八年级 4

五、比赛规则:

1、完美复制(一、二年级)二人配合,在规定的时间内观察指定的模型,最快正确复制出指定模型的为获胜者。参赛2名队员分工,1人负责观察,双手背在身后不得动手,只能用语言表达陈述模型结构,另1人负责搭建,不允许离开自己的座位,不允许有语言交流,且比赛期间2名队员不得转换角色。整个比赛过程中2队员需对向而坐。每组竞赛时间为5分钟,比赛期间参赛队伍可以多次往返观察模型,直至确认准确无误,然后向裁判申请计时结束,观察次数越少越好,时间越少越好。

2、动力小车(三年级)

以橡皮筋为动力,驱动小车,每辆车可以用2根橡皮筋,以行驶距离判定成绩。

比赛规则:搭建调试时间20分钟,搭建完成后2组选手同时比赛,比赛两轮,取最好成绩排名。

4、豌豆射手(四年级)

比赛规则:搭建时间30分钟,搭建完成后在等候区等待分组。2队一组。比赛时间2分钟,豌豆30个。

5、物归原主巡线(五年级)

比赛规则:搭建及调试时间40分钟,比赛时间3分钟

比赛开始机器人从蓝色区域出发运送红球,沿黑线循迹出发到达红色区域。然后由红色区域的队员手动停止机器人,然后拿下红球,放上蓝球,启动程序(必须使用手动切换程序,禁止使用任何传感器切换程序)越过三条黑线,停止在蓝色区域。机器人启动后不允许用手触碰机器人(规则允许的除外)。机器人出发必须完全在蓝色区域或红色区域(机器人正投影在区域内)。机器人到达红色区域时可以手动停止(机器人的某一部分必须接触红色区域)。机器人从红色区域出发运蓝球至蓝色区域时,机器人必须在中间三条黑线有停的动作。运球经过三条黑线其中的一条黑线时必须停止3秒钟(现场随即抽取一条黑线)。到达蓝色区域时可以手动停止或自动停止。每次运球只允许运送1个球(乒乓球)。运输过程中球必须放置在机器人上,不允许使用胶带、胶水、皮筋等固定球。

计分方法:每球1分,每违规一次扣1分,(手触碰机器人,在黑线没有停顿)

6、寻宝(六年级)

队伍组成:每队可由4名队员组成,每队有2轮上场机会。竞赛时间:比赛前将有30分钟调试自己的机器人,正式比赛时间为3分钟,3分钟时间内2个队同时在场地中争夺宝藏,分数高的队伍获胜。

宝藏的位置是在正式比赛前裁判随机放置的,宝藏距离墙壁至少10cm。两队的起始位置是在宝藏放置好以后,两队猜硬币决定的。当机器人用于寻找宝藏的传感器位于宝藏上方且机器人在此停留至少2秒钟后就认为机器人找到了宝藏,这时找到该宝藏的一方队员可以用手收起宝藏,其他队伍将没有机会找到该宝藏。机器人每获得一个宝藏将获得10分的奖励,机器人收集到最多4个宝藏后,必须将宝藏送至仓库,放入仓库是指机器人的任何一部分进入仓库并停留两秒钟。宝藏成功放置后,分数将增加一倍。否则,将不允许继续进行宝藏收集。

参赛双方的机器人不能破坏对方的机器人,也不能碰撞对方的机器人,如果机器人发生互相碰撞,不影响比赛的情况下可以继续比赛,如果任何一方因碰撞不能继续比赛,那么2队机器人将被放至起始区继续比赛,机器人货舱中的宝藏仍计算成绩。比赛中机器人因故障不能继续比赛时,该队可以将机器人放入起始区重新开始比赛,这时将被扣除10分。如果场地上所有的宝藏在3分钟时间内被找完,比赛自动结束。

7、Arduino任务(七、八年级)

根据所学电子电路板知识,由裁判老师现场出题5套,每题20分,全部完成队伍,用时少获胜。出题范围为,按键控制,LED灯闪烁方式控制等。

六、工作分工:

1、领导小组

张德刚 黄继成 张笃忠 周明波

2、比赛裁判

李山鹏 黄永民 杨 涛 杨忠民 闫 丹 王连英 张舒婷 王晓静 李恒超 李娜 刘蕊 逯鑫鑫 刘迎 蔡福花 沈延茹 姚晓英 陈新月(请各位班主任提前调好课,下午2:30前到达篮球馆,由李山鹏分配任务,杨涛、杨忠学现场培训规则)

3、音频、视频、务本楼字幕:黄永民 梁洪燊

4、赛场布置:

黄继成 张笃忠 周明波 李山鹏 黄永民 杨 涛 杨忠民 闫 丹

5、摄影:王 涛 李凤莹

6、奖状:梁洪燊

7、学生观众组织(四、五、六年级):孟凡森、张静、王 烁 杨晓辉 樊金雪

七、有关说明:

1、请各班主任按照参赛人数选好队员,每班两组,每组两人,一年级班主任请提前让参赛队员熟悉比赛规则。

2、比赛期间一、二、三年级在教室正常上课,班主任只带参赛队员于下午2:30到篮球馆,四、五、六年级携带板凳到篮球馆观摩比赛,注意赛场纪律、保持好卫生。

机器人实验指导书 篇7

1 基于.NET环境的实验教学管理平台

实验教学管理平台运行在.NET环境下, 使用SQL数据库存储数据, 平台应用C#.NET语言设计完成, 主要功能如下:

1) 实验素材库的建立。对于批阅机器人改革模式来说, 素材库是非常关键的, 需要将人工批阅的主观模型转换成机器人批阅的客观模型, 这就要求每个实验任务都需要进行精心设计。当实验任务为界面设计时, 只需要检测属性值, 不需要提供实验素材;而对于算法实现任务来说, 由于学生设计方法存在多种可能, 机器人检测实验结果out.dat文件是唯一的方法, 因此, 素材需要提供读、写数据的代码, 给出测试数据和结果文件等, 并要求学生在指定模块中编码, 按规定步骤运行, 生成实验的结果out.dat文件。

2) 检测点设置。无论是界面设计还是算法实现, 都应该人性化的提供检测点 (给分点) , 对于算法实现任务来说, 如果结果不正确, 除对学生结果文件与答案结果文件进行相似度匹配给分基础上, 可以通过检测点检测源代码并给出一定比例的分数。

3) 学生实验结果上传。

4) 学生成绩及评语查询。

实验教学管理平台及批阅机器人协同工作如图1所示。

2 批阅机器人

批阅机器人是笔者在前期设计完成Visual Basic无纸化考试系统基础上设计的又一款专用型应用软件。机器人软件在服务器后台隐藏运行, 实时扫描student_upload表, 查询学生提交记录中未批阅的首条记录, SQL语句为“select top 1 id from student_up⁃load where tag=0 and courseid=X order by uploaddate”, 如果记录存在, 机器人开始自动进行批阅程序的执行。

机器人批阅时首先分析该实验任务素材设计时是否需要检测结果文件, 主要过程如下:

1) 检测结果文件, 调用自定义函数Pi Pei Result (upload_result As String, daan_result As String) As Single, 该函数进行学生结果文件与答案文件的相似度分析, 从而给出分数;如果结果完全正确, 给出满分;如果结果匹配不正确, 需要进一步读取预设的检测点及分值数据, 调用Pi Pei (ss As String, jcd As String) As Boolean, 根据返回值累计检测点分数;

2) 不检测结果文件, 则直接读取检测点及分值数据, 调用自定义的Pi Pei函数检测打分。

3) 在检测匹配过程中, 如果检测点有误, 将预设的出错评语记录到变量comment中。

4) 检测结束后, 将tag值置1, 表示已测, 并将变量comment记录的内容保存到记录comment字段中。

3 成绩汇总与分析

所有成绩在批阅完成之后, 管理平台会提供一个查询接口, 完成以班级为单位的全部实验成绩的汇总, 给出每名学生的总成绩;并对成绩情况进行自动化分析, 为教师填写考试总结和成绩分析表提供重要依据。实际应用中, 笔者还设计了成绩单打印系统。

4 结论

批阅机器人方案提出之初, 得到老师们的支持和赞同;然而, 在设计过程中, 一些老师开始对批阅机器人能否取代人工产生了疑问。当Visual Basic课程批阅机器人设计完成并投入使用后, 立刻得到广大师生的一致好评;此外, 管理平台还能够自动汇总成绩, 给出成绩分析, 大大减轻了教师的工作量[2,3], 让教师可以有更多的时间认真指导学生实验或者多做一些其他的教研工作。笔者之所以能够顺利设计批阅机器人, 与之前自主成功研制Vi⁃sual Basic无纸化考试系统所积累的经验有着必然联系。

摘要:教师通过人工方式批阅Visual Basic课程的实验结果, 存在不细致、不及时、不公平的缺点, 本文提出由机器人代替教师完成实验批阅任务, 不但将教师从繁重的批阅工作中解脱出来, 还可以让学生几乎实时查看准确的实验成绩和评语。

关键词:机器人,实验教学管理平台,Visual Basic,人工批阅

参考文献

[1]于净.计算机程序设计 (第三版) [M].北京:中国医药科技出版社, 2014.

[2]张二元, 李萍.基于实验报告自动批阅的系统分析[J].科园月刊, 2010 (2) :72.

机器人实验指导书 篇8

[摘要]文章探讨了在C语言程序设计课程教学中引入机器人实验的必要性、意义及创新点,并讨论了在C语言课程教学中开展机器人实验应注意的几个问题。

[关键词]C语言课程 教育机器人 实验 教学改革

[作者简介]尹华(1975- ),女,赣南师范学院数学与计算机科学学院,讲师,主要从事计算机教学与应用研究;肖随贵(1956- ),男,赣南师范学院数学与计算机科学学院,教授,主要从事计算机教学与应用研究。(江西赣州341000)

[课题项目]本文系赣南师范学院质量工程项目课题“基于可编程控制机器人比赛的C语言系列课程创新实验项目”的研究成果。

[中图分类号]G424.21 [文献标识码]A [文章编号]1004-3985(2009)33-0182-02

一、“C语言程序设计”课程实验现状

目前,我国大部分高校的理工科专业都开设了“C语言程序设计”课程,而计算机科学与技术、网络工程等专业还开设了“C语言课程设计”“面向对象程序设计(C++)”等课程。通过系统地学习“C语言程序设计”课程,学生掌握了如何使用计算机语言进行程序设计,以及程序设计的基本思想、基本方法和技巧,达到通过学习相关课程使学生能够利用C语言解决实际问题的教学目标,并为后继课程打下坚实的基础。

“C语言程序设计”是一门实践性很强的课程,实验课时比重很大。例如,赣南师范学院的2008人才培养方案中C语言的实验课时增至32学时,占总学时的1/2。在进行实验教学中,大部分是验证性实验,最后是综合性实验。由于C语言的实验环境是在字符方式下进行的,实验过程比较枯燥,实验结果的表示单调,学生学习兴趣不高,学习效果不佳,导致学生的综合应用能力不高,甚至影响到后继课程的学习。因此,应该采取哪些措施,通过实验提高学生的学习兴趣,提高学生的动手能力和解决实际问题的能力,是实验教学改革的一项重要任务。为此,我们设计了一套能调动学生学习积极性、提高学生综合应用能力的实验项目。

二、在C语言教学实验中引入教育机器人

近年来,可编程控制机器人和可编程控制机器人学发展非常迅速。教育机器人是将机器人应用于教育领域,是由生产厂商专门开发的以激发学生学习兴趣、培养学生综合能力为目标的机器人成品、套装或散件。它除了机器人机体本身之外,还有相应的控制软件和教学课本等。

从教育机器人的发展情况来看,硬件技术方面已经非常成熟,设备的可靠性、灵活性、耐用性等性能都已得到社会的广泛认可。教育机器人的硬件配件多样,技术支持能力强,价格也相对便宜。控制操纵机器人的关键问题之一是软件设计,主要是通过C语言或VC++等程序设计语言进行程序设计,通过编程对机器人进行控制。这就给计算机专业的学生提供了广阔的开发平台,通过编程对机器人进行操纵,使其完成各种任务,培养了学生的综合应用能力。

用于实验创新的教育机器人种类繁多,依据可编程控制机器人可以设计出各种机器人,创造空间巨大,例如使用AS-ROBEI机器人工程创新套件就能设计一百万种机器人,如投球机器人、救火机器人、追光机器人等。

教育机器人已引起了国内很多学校的关注和重视,在教学活动中纷纷引入教育机器人并取得了良好的效果。

三、在C语言教学实验中引入教育机器人的意义及创新之处

“机器人是一种能够通过程序控制,自主完成某类任务的机器系统”,在“C语言程序设计”教学中通过“程序控制”与机器人动作紧密联系起来,应用各种程序使机器人完成各种动作(如搬运、灭火等),使教学与实验“动起来”“活起来”,提高了学生的学习兴趣、综合应用能力和创新能力,从而提高了教学质量。

在C语言教学中引入机器人实验有如下几点创新之处:(1)教育理念创新。通过引入可编程控制机器人,改变了传统的实验教学理念。一是实验中,教师引导学生自己设计与控制机器人,学生体验到学习的快乐;二是精心设计机器人实验,对学生实行个性化教育;三是通过教育机器人的实验,发展学生的多种能力,如分析能力、创造能力和实践能力等。(2)实验手段创新。创建可编程控制机器人实验室,构造开放的实验平台。(3)实验内容创新。在可编程控制机器人的开发平台上,充分发挥学生的想象力,设计制造各种各样的机器人,提高学生的创新能力。

在C语言教学活动中,通过引入机器人编程,并将其贯彻到整个教学与实验过程中,能够获得非常好的效果,具体表现为:(1)可以促进对C语言系列课程(如“C语言程序设计”“C课程设计”“C++”等)的改革创新,设计与开发创新性实验项目;(2)趣味性机器人实验,寓教于乐,激发学生学习热情;(3)构建创新实验跨越多个平台,帮助学生学习各种相关知识,锻炼学生的动手能力;(4)利用第二课堂培养学生实践能力和创新精神,组织学生参加各种机器人赛事,使学生的各种能力得到提高。

四、C语言课程开展机器人实验应注意的几个问题

在C语言教学中引进机器人实验是对传统教学与实验的深化与改革。在具体实施过程中,需要注意以下几方面的问题:

1.教育机器人的选型。在教学实验活动中,应根据专业特点、培养目标、实验经费选择合适的机器人机型,以保证实验的顺利进行。目前,国内教育机器人的生产厂商及品牌有很多,可供选择的空间较大。在选择机器人时应注意的是:首先,硬件要结构紧凑,简洁实用,软件使用C语言编程,提供字符界面或图形化界面编程,纠错能力强,功能强大;其次,结构要牢固,抗压抗摔,有较好的碰撞能力,功能较大;再次,所选机器人能满足教学和竞赛的需要;第四,有良好的售后服务体系,配套教学资源丰富。

2.实验室的设计。传统的计算机实验室环境较为较严肃、生硬和呆板。实验室的设计应该从教学和比赛的多个角度进行综合考虑,设计应遵循以下原则:(1)以人为本,营造一个有创新氛围的全新学习空间;(2)课桌四周有充分的活动空间和比赛空间;(3)力求体现学校特色,提升学校形象。

在机房空间较大的情况下可将机房与场地连在一起,便于管理;当机房面积较小时可将机房和场地分开,但距离不宜太远。场地建设依据活动的需要,因地制宜。一般来说,对于非比赛需要的场地,可以采用简易材料搭建,可让学生参与搭建过程。搭建过程应考虑搭建的场地是否适合机器人行进的路线,以及编程设计能否满足要求。学生参与搭建的过程中,分析、设计能力以及解决实际问题的能力都得到了提升。若是竞赛场地,则需要按竞赛规则和标准进行建设。

实验室建成后,应满足学生的系统化训练。学生可以利用该平台,动手组装和调试机器人,搭建检测电路,编写控制软件,获得全方位的、系统化的基础工程训练。针对计算机专业的高年级学生能进行创新训练。学生可以利用该平台,进行一些较深入的学习和研究,可以在该平台进行如人工智能,图像处理,语音识别,机器人自主导航,面向对象编程,软件工程,遗传算法等方面的研究及验证。

3.实验教学计划与实验项目的设计与制定。在设计制定相关实验项目时,应充分考虑人才培养目标、学生的特点以及学生的要求等因素,实验项目应紧密结合“C语言程序设计”等课程的知识点(如顺序、分支、循环、数据与函数等),将教学要求与机器人实验有机的结合在一起,使学生能够通过实验熟练地掌握相关知识和技能,并能激发学生的学习兴趣。

实验教学计划与实验项目的制定拟分四个阶段逐步进行。

第一阶段:以典型的智能机器人为对象,掌握基本程序的编制,电机的控制方法,以及最简系统的组装、编程、调试的方法,能够实现基本系统的各种控制,实现机器人的自主漫游等一些经典控制项目,从而使学生对机构设计、软件编制以及优化有一定的认识。

第二阶段:在第一阶段的基础上增加标准传感器,学生可以通过对典型传感器的学习,熟练掌握完整智能控制系统的编程与应用方法,为其他各种传感器与功能模块的应用打下基础。

第三阶段:在前两个阶段的基础上增加各种扩展传感器、创新模块套件及执行机构,学生熟练应用不同传感器,独立设计方案以及试验环境来实现不同功能。通过这个环节,一方面学生可以进一步了解不同传感器及执行机构的工作原理与应用方法,另一方面通过设计实验来培养学生解决实际问题的能力。

第四阶段:通过对智能小机器人的学习发展到可以使用其他各种高级机器人,以点带面,举一反三地推广到其他各种高级机器人控制系统的应用,并且逐渐增加难度,体现由浅入深、层层深入的原则。

4.教师角色转变及培训。教师必须熟练掌握机器人实验的要领,指导学生进行实验。教师应在教育观念上进行转变,教师不是教学的控制者,不是知识的灌输者,而应成为学生学习的引导者、帮助者,充分发挥学生学习的积极性、主动性,培养学生的创新思维。教师应在指导学生实验的过程中,引导学生领会与掌握机器人实验中所涉及的机械、电子、计算机等多种学科的知识,引导学生主动对知识进行学习与探索,不断提高自己的各种能力。以情驱“动”、任务驱“动”、协作互“动”都是为发展学生的教学目标服务。

5.虚拟机器人与实体机器人并用。虚拟机器人其实是厂商提供的一套仿真系统软件,用以模拟机器人运行。它是一个虚拟机器人的程序编辑平台和运行平台的集成环境。在实验经费和实验机器不足的情况下,使用虚拟机器人进行前期的教学和演示,能收到较好的教学效果,并且有助于学生学习编程语言、感官系统、仿真技术等知识。

在机器人仿真系统中检验程序的效果直观,容易分析程序设计中出现的问题。先通过仿真软件发现问题,问题解决后再到机器人上实践,这种做法有时候比直接利用机器人实践的效果要好。

目前,很多机器人仿真系统都支持C语言编程,如VJC仿真软件、NSTRSS 3D仿真系统、AI-CODE仿真系统等。下面以AI-CODE仿真系统为例,作一简要介绍。系统总体架构如图所示。

这套系统主要用于算法与程序设计,它是一个通用平台,支持多种语言(如C,C++,Java等),可以满足教学多样性的需要。它分为初级、中级和高级三个阶段,既可以通过图形化编方式(流程图式的编程方式)进行程序设计,也可以利用代码编辑器(CodeCanvas)转换到C、C++、java 等常用语言下的代码编程。所有设计的代码都可以在AIRobot 环境下以虚拟机器人的形式进行竞技、演示等各种交互,仿真能力很强。在仿真系统调试通过以后,再移植于实体机器人中运行,让机器人在真实环境中工作,以检验实际效果。

[参考文献]

[1](美)Robin R.Murphy.人工智能机器人学导论[M]. 杜军平,等,译.北京:电子工业出版社,2004.

[2]杨丽,李伟.机器人创新设计开放实验教学模式的构建[J].中国科教创新导刊,2009(5).

[3]彭绍东.论机器人教育(上)[J].电化教育研究,2002(6).

上一篇:6S推进工作管理办法下一篇:两会精神团日活动