“创意之星”模块化机器人实验指导书(实验版)

时间:2019-05-14 12:34:08下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《“创意之星”模块化机器人实验指导书(实验版)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《“创意之星”模块化机器人实验指导书(实验版)》。

第一篇:“创意之星”模块化机器人实验指导书(实验版)

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

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

目 录

实验一 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;

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

array_rc[14]=90;array_rc[15]=170;array_rc[16]=90;array_rc[17]=170;array_rc[18]=90;array_rc[19]=170;array_rc[20]=90;array_rc[21]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90;array_rc[1]=170;array_rc[2]=90-30;array_rc[3]=170;array_rc[4]=90-40;array_rc[5]=170;array_rc[6]=90-30;array_rc[7]=170;array_rc[8]=90;array_rc[9]=170;array_rc[10]=90+30;array_rc[11]=170;array_rc[12]=90+40;array_rc[13]=170;array_rc[14]=90+30;array_rc[15]=170;array_rc[16]=90;array_rc[17]=170;array_rc[18]=90-30;array_rc[19]=170;array_rc[20]=90-40;array_rc[21]=170;rc_moto_control(array_rc);delay(50);array_rc[0]=90+40;array_rc[1]=170;array_rc[2]=90+30;array_rc[3]=170;array_rc[4]=90;array_rc[5]=170;array_rc[6]=90-30;array_rc[7]=170;array_rc[8]=90-40;

第二篇:Photoshop实验指导书

Photoshop实验指导书

目 录

实验一 图层的使用练习……………………………………………1 实验二 选区的创建和编辑练习……………………………………8 实验三 实验四 实验五 实验六 实验七 实验八 实验九 实验十

图像的绘制练习……………………………………………13 图像的编辑练习……………………………………………18 图像色彩的调整练习………………………………………21 路径的使用练习……………………………………………24 文本的应用综合练习………………………………………28 图层的高级使用练习………………………………………32 通道和蒙板的使用练习……………………………………36 滤镜的使用练习……………………………………………40

实验一 图层的使用练习

一、实验目的:让学生了解并掌握图层的基本使用方法

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、收集所需素材图片

2、打开Photoshop软件并先做好必要的设置

3、按照要求完成图片的处理

4、在实例操作中更好的去理解图层的概念

5、保存好修改后图片,并完成实验报告

五、实验内容:

1、第一步,选择你的目标图片。图片的颜色最好不要太过繁杂,而且,周围和中心颜色反差较大的图片效果会比较好。大家可以根据自己的喜好选择不同的图片,自己的相片也可以拿来使用。

2、复制背景层,将背景层 副本重命名为“1”;再次复制,将副本层重命名为2;照这样,将背景层复制4次,四个副本层分别命名为1、2、3、4。我们在这四个副本层中,分别制作构成图像的拼板。在这里我们只做了四个图层,大家也可以复制多个图层,依据自己的需要而定。

3、我们从位于图层面板的最顶端图层“1”开始,隐藏除图层“1”之外的所有层。用矩形选框工具选择一个矩形,这个矩形就是拼板的基础形状。用选择>变化选区命令(注意:这里选择变化选区命令,如果直接用Ctrl+T,变换的则为选区内的图像),将选区扭转、做自由变换,然后反选,删除选区图像,取消选择。

4、按照刚才的方法,依次显示每个图层,用选框工具选择不同大小的矩形选框,自由变换,反选后删除。适当注意选区大小以及变换的位置,尽量在作图的时候考虑到美观的效果。

5、下面我们要为拼板添加立体效果。打开背景层,这样你会较容易看清图像的变化。选择图层“1”,双击图层,进入图层样式面板,先选择斜面和浮雕,你可以按照默认样式(大多数时侯,默认样式也能够看得出效果)选择确定,如果对拼板有特殊要求,可以更改数值。当然也可以尝试投影等其他效果。直到 调整到自己满意的效果,这里仅使用了浮雕效果的默认值。

6、设置好一个图层样式,其他的图层如果需要相同效果,重复设置就较为麻烦,多层应用同一种样式的情况下,我们可以复制图层样式。有两种方式可以 5

实现图层样式的复制:一种是点击右键,选择复制图层样式菜单,然后在需要的图层中点击右键粘贴即可。另一种是用鼠标点击你希望复制的样式,不要放松鼠标,把它拖动到需要复制的图层中,放松鼠标,新图层就应用了你所拖动的样式。拖动的过程中,鼠标一直显示为抓手工具的形状。如果你希望只应用某一种图层样式,那么拖动的方法更为快捷,可选择所有的样式(拖动效果的选项),也可选择其中某种效果。依次对其他图层进行设置。

7、最后,根据自己需要可调整图层位置。(图07)

掌握了这个方法后,可以选择不同的图片制作不同数量拼板图像,不过要注意图层顺序,达到合理的叠放顺序。还可以稍微改变阴影不透明度等细节。

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够更好的理解有关图层的概

念。

2、较好地完成此试验,可自行完成书上或其他关于图层的简单操作的一些练习和实例。

3、教师可依据内容做实例的调整。

实验二 选区的创建和编辑练习

一、实验目的:让学生了解并掌握选区工具、描边、填充、渐变等工具的使用方法

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、收集所需素材图片

2、打开Photoshop软件并先做好必要的设置

3、按照要求完成图片的处理

4、在实例操作中更好的去熟练工具的使用方法

5、保存好修改后图片,并完成实验报告

6、参照此试验步骤可完成课后的习题练习以及相关的一些练习

五、实验内容:

1、新建一个空白文档,具体参数设置可自己定义。

2、把前景色设置为R:113,G:165,B:248,背景色设置为白色。

3、选择渐变工具,在“渐变编辑器”对话框中进行设置。设置好后,选择线性渐变方式填充背景色。(效果如图)

4、选择椭圆选框工具然后对其进行羽化。

在渐变的背景上,拖动鼠标绘制一个圆形选区,5、以背景色(白色)填充选区,创建出雪花的效果,快捷键为Ctrl+Delect,再多次重复这两步操作(创建选区、羽化及填充白色),以得到多个雪花,注意每次创建的选区的大小和羽化的强度是不同的。得到如图的效果。

6、打开配套光盘中“卡通.gif”图片,以此图片的外型作为我们雪人的外型。(为了选取的方便,我们使用魔棒工具到我们所需要的选区,这样选择较为方便)。

选取空白的区域,然后反选得

7、将选择好的选区,拖动到我们的窗口中去,并选择“选择/变换选区”命令,把拖进来的选区大小进行调整,并放置到合适的位置。

8、同样选择渐变工具,选择较浅的蓝色,为我们刚才调整好的雪人的选区填充渐变效果。并选择“编辑/描边”命令为我们的选区进行描边,得到我们的小雪人大体形态。(如图所示)

9、选择工具箱中的椭圆选框工具,配合我们键盘的Shift键,绘制一个正圆的选区,用黑色填充选区,得到雪人的黑眼睛的效果。

10、用同样的办法创建比刚才较小些的正圆选区,用白色为其填充,得到眼睛的白色部分。(注意:如果在创建之后,需要对眼睛进行调整的话,就在不同的图层上创建,调整好之后,若是觉得图层过多,可再进行合并)

11、运用类似的方法,创建三角形选区(可使用多边形套索工具得到三角形的选区)或是圆形选区,填充不同的色彩,并进行描边,得到鼻子和钮扣等形态。效果如图所示

12、下面我们为小雪人做个小帽子,我们选择配套光盘中的树叶的文件,使用树叶的外型作为帽子的选区,方法和我们获得雪人的方法相同,这里不再重复。同样为选区填充渐变效果。完成我们小雪人的绘制。

13、我们也可以为图像再增加些装饰,同学们在制作的时候,颜色的选取可以有所改变,但是要注意色彩的搭配和整体的协调性。

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、教师可依据内容做实例的调整。可依据学生掌握的情况和课时的具体情况,选择相同类型的试验。

实验三 图像的绘制练习

一、实验目的:让学生了解并掌握图像绘制工具的使用方法和综合应用的能力

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、打开Photoshop软件并先做好必要的设置

2、按照要求完成图形的绘制

3、在实例操作中更好的去熟练工具的使用方法

4、保存图片,并完成实验报告

5、颜色的选择、文件大小等可依据自己的需要、喜好进行修改

6、可尝试不同的方法创建,如月亮的创建方法,把所学知识综合运用

7、参照此试验步骤可完成课后的习题练习以及相关的一些练习

五、实验内容:

1、新建一个空白文档,具体参数设置可自己定义。

2、为背景填充颜色。

3、新建图层,选择椭圆工具,注意创建方式的选择,将前景色设置为白色,在图像窗口的左下方按住Shift键绘制白色圆形。

4、分别将前景色设置为玫红色、浅玫红色、粉红色和浅粉色,再绘制4个圆形,如下排列。

(提示:若对于圆形的位置需要调整,可把圆形分别建在不同的图层中,方便进行调整)

5、新建图层,将前景色分别设置为浅黄色和白色,在图像窗口右下方绘制两个圆形。

6、选择工具箱中的魔棒工具,选取白色圆形,按Delete键将其删除,然后选取图像窗口中的黄色图形,将选区变换并填充为黄色与浅黄色。

7、自由变换,逆时针旋转,完成变换并取消选区,得到月亮的形态。

(提示:也可用其他方法完成月亮的绘制,如选区的使用,用选区的加减来完成,也是可以的,而且能够拓展思维并对以前所学的知识进行复习。)

8、新建图层,是用工具箱中的多边形工具,将工具属性栏设置为如图所示,将前景色设置为白色,在图像窗口中下方创建五角星形。

9、选择工具箱中的线条工具绘制白色线条。

10、选择雪花图形,绘制雪花的形态。

11、使用画笔工具写出文字,完成最后效果。

(注意:图层的使用,需要修改的,就放在不同的图层中,方便修改)16

13、我们也可以为图像再增加些装饰,同学们在制作的时候,颜色的选取可以有所改变,但是要注意色彩的搭配和整体的协调性。

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验四 图像的编辑练习

一、实验目的:让学生了解并掌握图像编辑工具的使用方法

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、打开Photoshop软件并先做好必要的设置

2、按照要求完成图形的绘制

3、在实例操作中更好的去熟练工具的使用方法

4、保存图片,并完成实验报告

5、颜色的选择、文件大小等可依据自己的需要、喜好进行修改

6、参照此试验步骤可完成课后的习题练习以及相关的一些练习

五、实验内容:

1、打开配套光盘的实例素材名为果树的图片,使用图案生成器命令,打开图案生成器对话框。

2、使用举行工具在图像中绘制一格区域作为样本,并在位移下拉列表中选择垂直选项。

3、单击生成按钮产生图案,如不满意可单击再次生成。

4、单击好,应用生成的图案,然后选择图像菜单的图像大小命令打开对话框,取消其中的约束比例复选框,在宽度文本框中输入文件大小。

(可依据自己的喜好,更换作为背景的图片,但是要注意整体色彩的协调性)

5、打开“香蕉”文件使用抽出工具抽出图像。

(注意抽出时边缘的处理要仔

细)

6、按照此方法,依次完成其他水果图片的抽出工作,一定要注意抽出边缘的细节部分,注重细节的处理,在后面对图片合成时才会有好的效果,希望同学们无论处理什么样的图片都要注意细节处理,以达到更好的视觉效果。

7、使用移动工具把需要合成的各水果图片移到图片中去。

8、依据图片大小进行调整,使用变换工具进行大小的调整。(注意等比例的放缩)

9、注意图层顺序的调整。

10、载入文字选区,进行描边,也可自己进行文字输入。

11、进行适当调整,完成最后效果。

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验五 图像色彩调整练习

一、实验目的:让同学们了解并掌握色彩调整工具的使用及综合应用,熟悉各个色彩命令的相互配合

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

四、实验步骤:

1、打开Photoshop软件并先做好必要的设置

2、按照要求完成图形的绘制

3、在实例操作中更好的去熟练工具的使用方法

4、保存图片,并完成实验报告

5、颜色的选择、文件大小等可依据自己的需要、喜好进行修改

6、参照此试验步骤可完成课后的习题练习以及相关的一些练习

五、实验内容:

1、打开文件,文件整体较暗,可以先调整其亮度。

2、使用亮度/对比度的命令对整个画面进行调整。

3、使用磁性套索工具选取人物图像。

(提示:为了选取的比较细致,我们常会把画面放大,放大后观察较仔细,但不能显示全部,在使用磁性套索工具的同时,如果需要使用抓手工具观察其他地方,就按住空格键,就会出现小手的图标,可以移动观察地方,在使用套索工具时不能在工具栏中切换到抓手工具,否则没选完的选区就会应用。)

4、反选人物外的景物图像,悬着色相/饱和度的命令,在打开的对话框中选中“着色”复选框,并进行设置。

(提示:色彩可按书上进行设置,也可选择自己所喜欢的色彩进行更该,选区若是有些细节部分需要修改,可使用增减选区的方法进行细节上的修改,不需要全部重新选择,浪费时间。

5、再次反选,使用选区减的方式把人物的上半部分选区减去,剩下的就是裙子的部分。

(提示:需要的选区可使用存储的方式存储起来,需要的时候可直接载入,另要善用载入选区,参考我们前面课堂上讲解选取玫瑰花的花和叶子部分的方式。先把整个人物的选区存储下,然后把裙子的选区也存储下,留在后面备用。)

6、用同样的方法把裸露的右脚部分去除。

7、使用色彩平衡命令,在弹出的对话框中选中中间调单选按钮,并进行设置,为裙子上色,色彩可自定。

8、选择上半身的选区。

(提示:在上面我们已经存储了两个选区,现在我们可以更为方便的选区上半身的选区,首先载入整个人物的选区,然后再载入裙子的选区,选择从选区中减去,这样我们就可以很方便的选择上半身的选区了。)

9、用同样的方法选取不同的部分,进行上色,注意选区要选取的较仔细,进行细节上的调整,完成实验。

10、可使用同样的方法完成课后的练习或是相同的效果,也可为自己的照片做上色的处理。

最后完成效果图

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验六 路径的使用练习

一、实验目的:让同学们了解并掌握路径的使用方法

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、打开Photoshop软件并先做好必要的设置

2、按照要求完成图形的绘制

3、在实例操作中更好的去熟练工具的使用方法

4、保存图片,并完成实验报告

5、颜色的选择、文件大小等可依据自己的需要、喜好进行修改

6、参照此试验步骤可完成课后的习题练习以及相关的一些练习

五、实验内容:

1、首先新建文档,大小自定。

2、输入文字,选择文字图层,然后选择菜单栏中图层选项中文字/创建工作路径选项。

3、转换到钢笔工具,把锚点进行调整,如图。

(提示:可删除多余的节点,把两个字的路径组合在一起)

4、用同样的方法可编辑其他字的路径。

5、按照自己的想法对字体路径进行修改,可更换不同的文字,如自己的名等,注意路径修改后曲线的平滑,学会控制锚点,创建出自己想要的路径。

6、路径创建好之后就可以根据自己的喜好为文字填色、描边等处理,可随意更改背景颜色,注意图层的选择,在使用描边、填充颜色命令时注意图层的选择。(最好是先新建图层,再填充或是描边,这样背景可随时方便更换修改)

7、根据自己需要对路径进行填色等处理。(注意选好图层)

8、可使用图层属性等再做些效果,也可自由变换,复制图层,进行透明度的调整等,各人可依据自己进行调整。(如图)

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、实例中的具体的文件大小、具体文字、修改方式、色彩方面不做具体规定,可自行进行调整。

4、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验七 文本应用综合练习

一、实验目的:让学生了解并掌握文本工具的使用方法和一些参数的设置并对以前所学的知识进行综合应用。

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

(一)、首先我们制作扇子的骨架部分:

1、在Photoshop中新建一个700×700像素,背景色为白色的文件,将其命名为“扇子”。

2、新建图层1,在图层1上拖拽一个长条选区。按G键选择工具箱中的油漆桶,并在选择栏中点选图案,用木质图案填充。(注意一定要新建图层)

3、扇子骨架除了有木质表面外,还应是略有厚度的的薄片,因此,我们要

为其制作立体的感觉。保持选区,单击图层面板下的添加图层样式的按钮,对选区进行浮雕和倒角设计,并调整各项参数,同时因为制作完扇子后还要对其投影效果做整体设置,所以此处先暂时不设投影效果。

4、一个扇子有十多个扇片,一一制作会很麻烦,而且还要进行围绕中心的排列,那将十分烦琐。这里我们使用快捷键来完成重复变换的操作:首先,我们取消选区,调整扇片尺寸至适中,复制刚才制作好的一个扇片的图层,在新的复制图层上使用快捷键Ctrl+T对图像进行变换操作。(注意:这步的操作直接影响到我们后面的再次变换的操作,所以要细心调整好位置,我们下步的操作将会以此次的变换的位置、角度,进行多次变换)。

5、多次配合Ctrl+Shift+Alt+T键可快捷的完成扇子骨架的多个扇片。完成之后会出现多个图层,若较为满意,可以把多个图层合并成一个图层,完成扇子骨架的制作。

(二)、扇面的制作(扇面的制作可参造书上制作扇面的方法进行制作,把文字和图片结合起来)

1、利用椭圆和套素工具建立扇面选区,新建图层,用白色填充选区,并将透明度设置为85%。这样我们在新图层上操作时能方便的利用下面的扇骨做参考。(注意:这里同学们可以把建立的扇面选区进行存储选区的操作,以方便我们之后对扇面添加图片时图片的裁剪)

2、面不是一个简单的平面,而是有诸多的逻辑折痕的,也就是说,它要有立体感觉。Photoshop制作立体图形往往借助于图层样式、光照效果和颜色渐变。此处我们用渐变工具来刻画扇子的折痕。用多边形套索框选出一个长条选区,点选黑白渐变,渐变模式为线性渐变,填充选区。依次作好整个扇面。

3、仅有黑白色两种颜色的扇子太单调了,下面将它美化一下。找一张自己喜欢的山水花鸟画(或者别的,只要你看好就行)。载入当前文件,裁切至适当大小。(在裁剪时就可以载入我们前面存储的选区了,这样就不要再重新选择选 30

区了)。将该图层置于骨架之上,模式设置为正片叠底,透明度为85%。然后添加一个淡淡的投影。(可以再进行些修饰),完成。

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、实例中的具体的文件大小、具体文字、修改方式、色彩方面不做具体规定,可自行进行调整。

4、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验八 图层的高级应用练习

一、实验目的:让同学们掌握图层的高级应用,并能够熟练的进行应用

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、打开相关的文件素材,对图象进行合成,如图。

2、新建图层,并使用矩形工具绘制选区,并填充颜色,填充颜色后调整图层的透明度,使其具有玻璃的半透明效果。(提示:这里创建玻璃和后面创建门的选区的部分,我们都可以只做一半,这样可以为我们节省时间,另一半相同的部分,我们直接使用图层复制就可以完成,而且还可以保持一致性。)

3、创建门的选区。(提示:书上给我们提供了选区加减的方式来完成门的选区的创建,而且是两边相同的选区一起做的,在这里我们可以在新的图层当中去完成一扇门的制作,另一边复制就可以了。创建选区的方法也可选用其他的方法,如路径复制,使用路径创建等)

(使用选区加减的方法,注意要选取减的方式)

(也可使用减的方式,把中间小的矩形路径进行复制)

4、对选区填充颜色,做图层效果的处理,使其更具有立体感。(注意要新建图层,只有在单独的图层上填充,我们后面才方便对图层进行复制,完成另一扇门的制作。

5、复制门的图层,为使两扇门的对称,可使用自由变换中的水平翻转的选项。

6、添加相应的图片和文字等,对画面进行细节上的调整,可完成最后的效果。(可自行设计文字等效果,可参考我们路径中制作文字效果的事例,创建个性化的字体,注意整体美观)

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、实例中的具体的文件大小、具体文字、修改方式、色彩方面不做具体规定,可自行进行调整。

4、引导学生使用不同的工具,使同学们可以自己开动脑筋,也有利于所学工具的掌握和综合应用的能力。

5、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验九 通道与蒙版练习

一、实验目的:让学生掌握通道与蒙板工具的使用方法,并能够熟练的进行应用

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

(一)制作背景

1、新建图像文件,设置好参数,注意颜色模式一般情况下我们都是选择RGB的色彩模式。

2、使用渐变工具为背景填充颜色。

3、打开“纹理”图片,把文件大小更改为我们新图像文件的大小,复制粘贴到我们新文件中。

4、把纹理图层通过通道载入纹理的选区,在复制的图层上填充白色,并调整不透明度。

5、完成后取消选区。

(二)制作显示器中的海豚

1、沿显示器边缘勾画路径,注意路径的细节,然后配合Ctrl键为图片创建矢量蒙板。(注意添加矢量蒙板在背景图层上不能够使用,要把背景图层转化为普通图层,或是把背景图层复制一份,为复制的图层添加矢量蒙板,添加图层蒙板也是一样)

2、把海豚的图像复制到文件中,并调整透明度。调整透明度是为了能够看的清楚下面显示器图层,方便选取。把图片放置到合适的位置,为了突出显示器画面的逼真效果,所以我们要使海豚感觉像从显示器中跃出。

3、把图像中多余的部分使用图层蒙板或矢量蒙板遮挡。再把透明度调整回来。

(三)制作文字效果

可参考路径的练习自己创建文字效果。完成最后效果

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、实例中的具体的文件大小、具体文字、修改方式、色彩方面不做具体规定,可自行进行调整。

4、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

实验十 滤镜的应用练习

一、实验目的:让同学们掌握滤镜的使用方法,并能够熟练的进行应用

二、实验要求:要求能够按照试验指导书的步骤完成给定的练习

三、实验器材:装有Photoshop的计算机

四、实验步骤:

1、新建一个文件,将前景色设置为灰色填充背景。

2、选择工具箱中的“椭圆选框工具”,按住Shift键在文件中绘制一个正圆选区,并填充白色(注意新建图层)切换至“路径”面板,将选区转化为路径。

3、选择路径,按Ctrl+T键调出自由变换控制框,注意快捷键的使用。(shift+alt)键为以变换中心点为中心的变换方式。

4、设置前景色为黑色,使用工具箱中的“横排文字工具”,在属性栏中设置适当的字体和字号,在路径上输入文字,并适当调整文字的间距和位置,5、可使用同样方法或使用字体变换完成如图的文字。

6、保持前景色为黑色,分别输入其他的文字。

7、按住Ctrl+Shift键连续单击“图层”面板中所有文字图层的缩览图,得到它们相加后的选区,切换至通道面板,单击“将选区存储为路径”按钮,得到Alpha 1,取消选区。

8、选择Alpha 1,执行菜单栏中的“滤镜”“模糊”“高斯模糊”命令,参考设置半径为0.5,执行菜单栏中的“滤镜”“杂色”“添加杂色”命令,参考设置数值为2,勾选单色选项。(所有的具体数值可依据各自的图象大小等不同的情况,依据画面的变化自行调整。)

9、选择菜单栏中的“滤镜”“渲染”“光照效果”命令,设置弹出的对话框(图为参考参数。)

10、如果画面效果不是很满意,可依据不同的情况对画面进行亮度等调整。(提示:可使用色阶或曲线等工具)

11、新建一个文件,设置宽度为1像素,高度为3像素,分辨率为72,背景为透明的文件,选择工具箱中的“铅笔工具”,设置大小为1像素,绘制如图所示。

12、选择“编辑”“定义图案”命令,将图像定义为图案。

13、按Ctrl键单击文字“5”的图层缩览图,调出选区,执行菜单栏中的“选择”“修改”“收缩”命令,把选区缩小些。参考数值可为2-5之间,图象较大的也可设置的大些。

14、在所有图层上方新建一个图层“图层2”,并填充选区,取消选区,设置图层的填充为0%。

15、单击“添加图层样式”按钮,在弹出的下拉列表中选择“斜面和浮雕”和“图案叠加”选项。

16、按住Ctrl键单击图层1调出选区,执行菜单栏中的“选择”“修改”“收缩”命令,设置收缩量为10。

17、在所有图层上方新建一个图层“图层3”,填充选区,取消选区,设置图层3的填充为0%。并为其添加图层样式,效果如下。

18、我们的硬币为金色,所以要对颜色进行处理。(参考第六章的练习完成最后效果。)

依据此实例可以完成一些类似的钱币或纪念币的制作。

六、实验报告:

1、结合实例能够更好的提高学生的兴趣,也能够在学生制作的过程中发现问题。

2、较好地完成此试验,可自行完成书上或其他有关的一些练习和实例。

3、实例中的具体的文件大小、具体文字、修改方式、色彩方面不做具体规定,可自行进行调整。

4、教师可依据内容做实例的调整。可依据学生掌握的情况更换其他实例,实例可以不同,能够达到相同的实验目的就可以了。

第三篇:电子商务实验指导书2010

电子商务实验指导书

适用课程:电子商务 制 定 人:向兵

教 研 室:电子商务教研室

桂林电子科技大学商学院

2010 年 9 月

实验一 B2C电子商务

一、实验目的

通过本实验,使学生

(1)熟悉B2C电子商务网站的页面布局、排版风格和功能、特色等;(2)了解典型B2C电子商务网站的购物流程;(3)掌握B2C电子商务网站的特点。

二、实验要求

(1)全面浏览指定B2C电子商务网站;

(2)独立完成在指定B2C电子商务网站购物流程;

(3)能通过对典型B2C电子商务网站观察研究和实际操作,掌握B2C电子商务的特点。

三、实验内容

(1)登陆当当网www.xiexiebang.com,查看当当网的页面布局和板块划分,了解当当网的功能和特点;点击进入帮助板块并详细阅读,掌握在当当网购物所需的各类知识。

(2)在当当网注册一个新账号,把“恭喜您注册成功!”页面截图并保存下来。(3)在当当网上搜索并选择至少两本书(一本计算机类,一本经济类)和一件其它商品放入购物车。将以上商品都放入购物车后,把购物车页面截图并保存下来。

(4)对购物车中的订单进行确认(如非实际愿意购买,不必提交订单),把“2.确认订单信息”页面截图并保存下来。

四、实验思考题

(1)当当网提供了哪些功能?有什么特色?

(2)当当网的购物流程是怎样实现的?

(3)当当网还有哪些不足或者不完善的地方?试着提出自己的改进或完善的建议。(4)以当当网为例,说明B2C电子商务的特点。

五、实验结果

新建一个的WORD文档并以“学号+姓名”命名,将以上实验结果(包括实验内容中要求截图的和实验思考题答案)保存在新建的WORD文档中,然后将该文档上传到ftp服务器上的指定位置。

实验二 C2C电子商务

一、实验目的

通过本实验,使学生

(1)熟悉C2C电子商务网站的页面布局、排版风格和功能、特色等;(2)了解典型C2C电子商务网站的购物流程;(3)掌握C2C电子商务网站的特点;

(4)分析C2C电子商务网站和B2C电子商务网站的异同。

二、实验要求

(1)全面浏览指定C2C电子商务网站;

(2)独立完成在指定C2C电子商务网站购物流程;

(3)能通过对典型C2C电子商务网站观察研究和实际操作,掌握C2C电子商务的特点;(4)分析C2C网站在保护买家权益上采取的特别措施及其原因。

三、实验内容

(1)登陆淘宝网www.xiexiebang.com,查看淘宝网的页面布局和板块划分,了解淘宝网的功能和特点;点击进入帮助中心并详细阅读,掌握在淘宝网购物所需的各类知识。

(2)在淘宝网注册一个新账号,把注册成功页面截图并保存下来。(3)进行支付宝账户激活,并把激活成功的页面截图并保存下来。

(4)在淘宝网上搜索一些感兴趣的商品放入购物车。将以上商品都放入购物车后,把购物车页面截图并保存下来。

(5)通过阿里旺旺或QQ与购物车中某件商品的卖家进行购物相关的洽谈,把洽谈记录保存下来。

(6)对购物车中的订单进行确认(如非实际愿意购买,不必完成支付),把正式提交前的页面截图并保存下来。

四、实验思考题

(1)淘宝网提供了哪些功能?有什么特色?(2)淘宝网的购物流程是怎样实现的?

(3)淘宝网为了保障买家权益提供了哪些措施?

(4)淘宝网还有哪些不足或者不完善的地方?试着提出自己的改进或完善的建议。(5)以淘宝网为例,说明C2C电子商务的特点。

五、实验结果

新建一个的WORD文档并以“学号+姓名”命名,将以上实验结果(包括实验内容中要求截图的和实验思考题答案)保存在新建的WORD文档中,然后将该文档上传到ftp服务器上的指定位置。实验三 网上商店的规划、设计与实现

一、实验目的

通过本实验,使学生

(1)熟悉开设C2C网店的要求和步骤;(2)掌握个人网店开设的基本分析思路;

(3)熟悉典型C2C网站为卖家提供的各种服务;(4)掌握个人网店装饰和布局的各种技巧和经验。

二、实验要求

(1)全面浏览指定C2C电子商务网站;

(2)独立完成在指定C2C电子商务网站上开设个人网店;(3)完成对个人网店的装饰,并反复修改直到满意;

(4)分析C2C网站在保护买家权益上采取的特别措施及其原因。

三、实验内容

(1)登陆淘宝网www.xiexiebang.com,熟悉在淘宝网上开设个人网店所需要的条件和步骤,并做好相关准备。

(2)选择自己淘宝网店的经营范围(即出售何种商品或服务),并说明理由。(3)分析自己淘宝网店的目标客户范围。

(4)分析自己淘宝网店如何实现盈利,并预测盈利前景。

(5)确定自己淘宝网店如何“装修”:采用何种风格装饰,如何进行页面和板块布局,色调和搭配等。

(6)根据以上的准备和分析、计划,在淘宝网上注册商家,并初步搭建好自己的淘宝网店(提供个人网店网址)。

四、实验思考题

(1)淘宝网为商家提供了哪些服务?有什么特色?

(2)在淘宝网上开个人网店有什么感想?

(3)讨论:大学生开设淘宝网店有实际意义么?可以作为未来个人创业的路径么?

五、实验结果

新建一个的WORD文档并以“学号+姓名”命名,将以上实验结果(包括实验内容中要求分析、实现的和实验思考题答案)保存在新建的WORD文档中,然后将该文档上传到ftp服务器上的指定位置。实验四 网上商店经营与管理

一、实验目的

通过本实验,使学生

(1)熟悉网上商店的管理;

(2)掌握网上商店的经营方法;

(3)掌握网上商店的推广策略和方法。

二、实验要求

(1)进一步完善对个人网店的装饰;

(2)丰富个人网上商店的商品种类和数量,让商品信息更翔实、图文并茂;

(3)独立完成对网店的经营和管理;

(4)运用各种策略和方法推广自己的网店,促进销售。

三、实验内容

(1)提出对个人网店经营和管理的计划,并实施之。(2)记录一些商品交易的过程,并保存洽谈记录。(3)统计商品交易数量,分析变化情况,并分析。

(4)运用各种方法推广自己的网店,记录过程并分析对销售的影响。

四、实验思考题

(1)个人网店经营和管理过程中有哪些经验和体会?(2)自己的个人网店有哪些不足的地方?如何改进?(3)如果你毕业后再一次重开网店,你会如何做?

五、实验结果

新建一个的WORD文档并以“学号+姓名”命名,将以上实验结果(包括实验内容中要求分析、实现的和实验思考题答案)保存在新建的WORD文档中,然后将该文档上传到ftp服务器上的指定位置。

第四篇:《数据结构》实验指导书

《数据结构》实验(训)指导书

电气与信息工程学院实验中心

前 言

《数据结构》是计算机相关专业的一门核心基础课程,也是很多高校研究生入学考试专业课必考课程之一。它主要介绍线性结构、树型结构、图形结构三种逻辑结构元素的存储实现,在此基础上介绍一些典型算法及时、空效率分析。这门课程的主要任务是培养学生的算法分析、设计能力及良好的程序设计习惯。通过学习,要求学生能够掌握典型算法的设计思想及程序实现,能够根据实际问题选取合适的存储方案,设计出简洁、高效、实用的算法,为后续课程的学习及软件开发打下良好的基础。学习这门课程,习题和实验是两个关键环节。学生理解算法的最佳途径是上机实验。因此,实验环节的好坏是学生能否学好《数据结构》的关键。为了更好地配合学生实验,特编写该实验指导书。

一、实验目的、要求和任务

计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习编写计算机程序仅仅了解计算机语言是不够的,还必须掌握数据组织、存储和运算的一般方法,这是数据结构课程中学习和研究的内容。由于数据结构的原理和算法较抽象,而该课程一般在本科低年级开设,对于计算机程序设计知识的初学者,理解和掌握其中的原理就显得较为困难。

1.熟练掌握C语言的编辑、编译、调试程序。2.会书写类C语言的算法,并将算法转变为程序实现。

3.正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。4.有较强的逻辑分析能力。

5.针对问题的不同选择合适的数据结构,提高算法设计的能力和动手实验的技能。

6.学会分析研究计算机加工的数据结构的特性,以便为应用设计的数据选择适当的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分析的技术。

7.本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,符合软件过程的规范,从而培养学生的数据抽象能力。

8.通过若干数据结构应用实例,引导学生学习数据类型的使用,为今后学习面向对象的程序做一些铺垫。

二、实验基本内容及学时分配

为了达到实验目的,本课程安排了4个实验单元,训练的重点在于基本的数据结构,而不是强调面面俱到。各实验单元与教科书的各章只具有粗略的对应关系,一个实验题常常涉及到几部分教学内容。总学时:8学时。

1、线性表(2学时)

(1)熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;(2)以线性表的各种操作(建立、插入、删除等)的实现为重点;

(3)通过本次实验帮助学生提高C语言的编程能力(特别是函数参数、指针类型、链表的使用)。

2、数组和广义表(2学时)(1)掌握稀疏矩阵的压缩存储

(2)掌握稀疏矩阵的转置算法

3、树与二叉树(2学时)

常见的二叉树遍历算法有先序遍历,中序遍历和后序遍历算法。实现简单的先序遍历,中序遍历和后序遍历算法。

4、排序(2学时)

常见的内部排序算法,插入类排序算法,如直接插入排序和希尔排序;交换类排序算法,如冒泡排序和快速排序;选择类排序算法,如简单选择排序、树形选择类排序和堆排序。实冒泡排序或者直接插入排序算法。

三、说明

该课程采用理论与实践相结合的教学方法,集知识性与趣味性于一体,达到良好的教学效果。硬件要求:在多媒体教室讲解及演示。为保证教学顺利进行,要求实验室提供电脑等设备。学生每次上机实验都必须遵守实验室的有关规定。

四、实验报告规范 实验报告的内容包括:

1、实验目的:说明实验所验证的知识点。

2、需求分析:以无歧义的陈述说明程序设计的任务、约束条件、输入输出要求、对功能的规定及模型。

3、逻辑设计:说明本程序中用到的所有抽象的数据类型的定义、主程序的流程以及各程序模块之间的层次调用关系。

4、详细设计:逻辑设计中定义的所有数据类型的实现,核心算法的设计描述、人机界面设计、函数之间调用关系的描述,主要功能的算法框架,测试数据设计。

5、测试分析:测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。

6、心得:软件设计与实现过程中的经验与体会,进一步改进的设想。

7、程序清单:源程序中应有足够的注释。如果提交源程序软盘,列出程序文件名。

五、如何提高上机效率

为了提高上机的效率,真正达到实验目的,要求同学做好实验前的准备工作,写好实验预习报告,即实验报告规范中的1)、2)、3)、4)部分,编写好程序,并用一组测试数据手工执行程序静态检查程序是否有错,通过阅读、执行程序或给别人讲解自己的程序而深入全面地理解程序逻辑,提高程序的正确性。对C语言程序不熟悉的同学,上机时最好带上C语言程序设计的教材,以备查阅。调试中遇到问题,应认真分析,确定可疑点,设置调试断点或输出断点处变量的值,以便发现问题,迅速排除问题,加快调试速度。

实验室要求:

不能旷课,不迟到,不穿拖鞋进实验室

实验需预习报告(不能单纯抄写,预习程序代码)实验报告(总结,注释,实验结果)

目 录

实验一 线性表实验(设计性实验)..........................................4 实验二 数组和广义表实验(设计性实验)....................................6 实验三 树与二叉树(设计性实验)..........................................8 实验四 排序(设计性实验)................................................9

实验一

线性表实验(设计性实验)

一、实验目的

1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。2.掌握线性表的顺序存储结构的定义及C语言实现。

3.掌握线性表的链式存储结构——单链表的定义及C语言实现。4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。5.掌握线性表在链式存储结构——单链表中的各种基本操作。

二、实验内容

1.顺序线性表的建立、插入及删除。2.链式线性表的建立、插入及删除。

三、实验仪器设备与器材 上机电脑

四、实验步骤

1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。

2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。

3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。

五、实验提示

1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组实现线性表的顺序存储。

在此,我们利用C语言的结构体类型定义顺序表: #define MAXSIZE 1024 typedef int elemtype;/*

线性表中存放整型元素 */ typedef struct { elemtype vec[MAXSIZE];int len;/*

顺序表的长度 */ }sequenlist;将此结构定义放在一个头文件sqlist.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。

2.注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。

3.单链表的结点结构除数据域外,还含有一个指针域。用C语言描述结点结构如下:

typedef int elemtype;typedef struct node { elemtype data;//数据域

struct node *next;//指针域

}linklist;

注意结点的建立方法及构造新结点时指针的变化。构造一个结点需用到C语言的标准函数malloc(),如给指针变量p分配一个结点的地址:

p=(linklist *)malloc(sizeof(linklist));该语句的功能是申请分配一个类型为linklist的结点的地址空间,并将首地址存入指针变量p 中。当结点不需要时可以用标准函数free(p)释放结点存储空间,这时p为空值(NULL)。

六、实验总结与思考

1.如果按由表尾至表头的次序输入数据元素,应如何建立顺序表。2.在main函数里如果去掉L=&a语句,会出现什么结果?

实验二

数组和广义表实验(设计性实验)

一、实验目的

1.掌握稀疏矩阵的压缩存储 2.掌握稀疏矩阵的转置算法

二、实验内容

1.实现上三角阵的压缩存储。

2.用三元组顺序表存储稀疏矩阵,并实现矩阵的转置。

三、实验仪器设备与器材 上机电脑

四、实验步骤

1.创建一个数组。2.输入数据

3.给定矩阵任一元素的下标,4.打印给定下标所对应的数据。5.创建三元组顺序表。a22 7.A输出对应的矩阵。

21五、实验提示 aaa6.输入矩阵中的数据。11a11a313233a21221.对于如下对称矩阵: Aaaa424341a31a32a331个位置,a21存入到第二个位置,将它们存入到一个线性数组中B,不存非零元素,a11存入到第a41a42aija44aij的位则aij能存到第几个位置,我们要以用梯形公式算面积。置是它上面的元素之和再加上左边的元素之和。

它上面的元素之和为((1+(i-1))×(i-1)/2,左边的元素为(j-1)所以这个元素存储的位置为k=i(i-1)/2+j-1。

因为矩阵A为对称矩阵,(另一部分没有写出),所以另一部分的元素为 k=j(j-1)/2+i-1.所以存在关系k=i(i-1)/2+j-1(i>j)和k=j(j-1)/2+i-1(i

2.结点结构

struct triple{ int i,j;//非零元的行下标和列下标 elemtype e;//非零元数据} 三元组顺序表存储类型 struct tsmatrix{ triple data[12500];aaa44

int mu,nu,tu;} 三元顺序表的转置 方法:(1)将矩阵行列互换,(2)重排矩阵

六、实验总结与思考

1.如何存储三对角阵?

2.如何用行逻辑链接顺序表及十字链表存储稀疏矩阵?

实验三

树与二叉树(设计性实验)

一、实验目的

1.掌握稀疏矩阵的压缩存储 2.掌握稀疏矩阵的转置算法

二、实验内容

1.练习二叉树的建立与存储 2.练习二叉树的遍历

三、实验仪器设备与器材 上机电脑

四、实验步骤

1.建立自己的头文件BT.H,内容包括二叉链表的结构描述、二叉树的建立、二叉树的先序、中序与后序遍历算法。

2.建立二叉树,并通过调用函数,,输出先序遍历、中序遍历与后序遍历的结果。

五、实验提示

建立二叉树的代码如下: BTCHINALR * createbt(){ BTCHINALR *q;struct node1 *s[30];int j,i,x;printf(“建立二叉树,输入结点对应的编号和值,编号和值之间用逗号隔开nn”);printf(“i,x = ”);scanf(“%d,%c”,&i,&x);while(i!= 0 && x!= '$')

{q =(BTCHINALR*)malloc(sizeof(BTCHINALR));/*建立一个新结点q*/

q->data = x;q->lchild = NULL;q->rchild = NULL;

s[i] = q;/*q新结点地址存入s指针数组中*/

if(i!= 1)/*i = 1,对应的结点是根结点*/

{j = i / 2;/*求双亲结点的编号j*/

if(i % 2 == 0)s[j]->lchild = q;/*q结点编号为偶数则挂在双亲结点j的左边*/

else s[j]->rchild = q;} /*q结点编号为奇数则挂在双亲结点j的右边*/

printf(“i,x = ”);

scanf(“%d,%c”,&i,&x);} return s[1];/*返回根结点地址*/ }

六、实验总结与思考

1.如何用孩子兄弟表示法存储树? 2.熟悉及难赫夫曼树。

实验四

排序(设计性实验)

一、实验目的

1.掌握常用的排序方法,并掌握用高级语言实现排序算法的方法; 2.深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用; 3.了解各种方法的排序过程及其时间复杂度的分析方法。

二、实验内容

统计成绩

给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:

(1)按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;(2)按名次列出每个学生的姓名与分数。

三、实验仪器设备与器材 上机电脑

四、实验步骤

1.定义结构体。2.定义结构体数组。

3.定出主程序,对数据进行排序。

五、实验提示

#define n 30 typedef struct student { char name[8];int score;} student R[n];main(){ int num, i, j, max, temp;printf(“n请输入学生成绩: n”);for(i=0;iR[max].score)max=j;

if(max!=i){ temp = R[max];R[max]=R[i];R[i]= temp;} if((i>0)&&(R[i].score

六、实验总结与思考

1.快速排序算法解决本问题。2.较各种排序算法的优缺点及。

3.使用其它排序算法实现该问题(直接插入排序、希尔排序、简单选择排序、堆排序等)。

第五篇:《数据结构》实验指导书

数 据 结 构 实 验 指 导 书

南京工程学院

信息管理与信息系统教研室

2014年3月

实验一 线性表操作

一、实验目的

1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。2.掌握线性表的顺序存储结构的定义及C语言实现。

3.掌握线性表的链式存储结构——单链表的定义及C语言实现。4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。5.掌握线性表在链式存储结构——单链表中的各种基本操作。

二、实验内容

1.顺序线性表的建立、插入及删除。

2.链式线性表的建立、插入及删除。

三、实验步骤

1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。

3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。

四、实现提示

1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组实现线性表的顺序存储。

在此,我们利用C语言的结构体类型定义顺序表: #define MAXSIZE 1024 typedef int elemtype;/* 线性表中存放整型元素 */ typedef struct { elemtype vec[MAXSIZE];int len;/* 顺序表的长度 */ }sequenlist;将此结构定义放在一个头文件sqlist.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。

2.注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。

3.单链表的结点结构除数据域外,还含有一个指针域。用C语言描述结点结构如下:

typedef int elemtype;typedef struct node { elemtype data;//数据域

struct node *next;//指针域

}linklist;注意结点的建立方法及构造新结点时指针的变化。构造一个结点需用到C语言的标准函数malloc(),如给指针变量p分配一个结点的地址:

p=(linklist *)malloc(sizeof(linklist));该语句的功能是申请分配一个类型为linklist的结点的地址空间,并将首地址存入指针变量p 中。当结点不需要时可以用标准函数free(p)释放结点存储空间,这时p为空值(NULL)。

五、思考与提高

1.如果按由表尾至表头的次序输入数据元素,应如何建立顺序表。2.在main函数里如果去掉L=&a语句,会出现什么结果?

实验二

栈和队列的应用

一、实验目的

1.掌握栈的顺序表示和实现 2.掌握队列的链式表示和实现

二、实验内容

1.编写一个程序实现顺序栈的各种基本运算。2.实现队列的链式表示和实现。

三、实验步骤

1.顺序栈(1)初始化顺序栈;(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈 2.链队列

(1)初始化并建立链队列(2.)入链队列(3)出链队列(4)遍历链队列

四、实现提示

1./*定义顺序栈的存储结构*/ typedef struct { ElemType stack[MAXNUM];int top;}SqStack;

/*初始化顺序栈函数*/ void InitStack(SqStack *p)

{q=(SqStack*)malloc(sizeof(SqStack));/*申请空间*/} /*入栈函数*/ void Push(SqStack *p,ElemType x){if(p->toptop=p->top+1;/*栈顶+1*/ p->stack[p->top]=x;} /*数据入栈*/ } /*出栈函数*/ ElemType Pop(SqStack *p){x=p->stack[p->top];/*将栈顶元素赋给x*/ p->top=p->top-1;} /*栈顶-1*/ /*获取栈顶元素函数*/ ElemType GetTop(SqStack *p){ x=p->stack[p->top];} /*遍历顺序栈函数*/ void OutStack(SqStack *p){ for(i=p->top;i>=0;i--)printf(“第%d个数据元素是:%6dn”,i,p->stack[i]);} /*置空顺序栈函数*/ void setEmpty(SqStack *p){ p->top=-1;} 可参考代码: #include “stdio.h” #define StackSize 100 typedef int ElemType;main(){

SqStack S;

ElemType e;

int N;

/*初始化顺序栈*/ /*入栈*/ /*出栈*/ /*遍历顺序栈*/ getch();}

2./*定义链队列*/ typedef struct Qnode { ElemType data;struct Qnode *next;}Qnodetype;typedef struct { Qnodetype *front;Qnodetype *rear;}Lqueue;

/*初始化并建立链队列函数*/ void creat(Lqueue *q)

{ h=(Qnodetype*)malloc(sizeof(Qnodetype));/*初始化申请空间*/ h->next=NULL;q->front=h;q->rear=h;for(i=1;i<=n;i++)*利用循环快速输入数据*/ { scanf(“%d”,&x);Lappend(q,x);} /*利用入链队列函数快速输入数据*/ } /*入链队列函数*/ void Lappend(Lqueue *q,int x){ s->data=x;s->next=NULL;q->rear->next=s;q->rear=s;} /*出链队列函数*/ ElemType Ldelete(Lqueue *q){ p=q->front->next;q->front->next=p->next;if(p->next==NULL)q->rear=q->front;x=p->data;free(p);} /*释放空间*/ /*遍历链队列函数*/ void display(Lqueue *q){ while(p!=NULL)/*利用条件判断是否到队尾*/ { printf(“%d-->”,p->data);p=p->next;} } 可参考如下代码: #include “stdio.h” #define MaxSize 100 typedef int ElemType;main(){

LinkQueue Q;

ElemType e;

/*初始化并建立链队列*/

/*入链队列*/ /*出链队列*/

*遍历链队列*/

}

DestoryQueue(&Q);

getch();}

五、思考与提高

1.读栈顶元素的算法与退栈顶元素的算法有何区别? 试写一个算法,判别读入的一个以‘@’为结束符的字符序列是否是‚回文‛。实验三 树操作

一、实验目的

1.通过实验,掌握二叉树的建立与存储 2.通过实验,掌握二叉树的遍历方法

二、实验内容

1.练习二叉树的建立与存储 2.练习二叉树的遍历

三、实验步骤

1.建立二叉链表的结构描述、二叉树的建立、二叉树的先序、中序与后序遍历算法。

2.建立二叉树,并通过调用函数, 输出先序遍历、中序遍历与后序遍历的结果。

四、实现提示

1.采用递归方法建立二叉树:

首先建立二叉树的根 结点,然后建立其左右子树,直到空子树为止。

2.先序遍历、中序遍历与后序遍历二叉树。#include #include typedef int Status;typedef char ElemType;typedef struct BiTNode { ElemType data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;/*建立二叉树*/

BiTree CreateBiTree(BiTree &T){ } /*先序遍历*/ Status PreOrderTraverse(BiTree T){ } /*中序遍历*/ Status InOrderTraverse(BiTree T){ } /*后序遍历*/ Status PostOrderTraverse(BiTree T){ }

int main(){ BiTree T;CreateBiTree(T);PreOrderTraverse(T);printf(“n”);/*先序遍历*/ InOrderTraverse(T);printf(“n”);/*中序遍历*/ PostOrderTraverse(T);printf(“n”);/*后序遍历*/

return 0;}

五、思考与提高

编写递归算法,计算二叉树中叶子结点的数目。

下载“创意之星”模块化机器人实验指导书(实验版)word格式文档
下载“创意之星”模块化机器人实验指导书(实验版).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    B2B实验指导书

    电子商务B2B实验指导书 【实验目的】 通过本次实验,在一方电子商务模拟平台上,模拟现实商务环境中的厂商和外贸公司角色,完成商务环境中各种活动,实现整个B2B的工作流程,从而进一......

    《操作系统》实验指导书

    《操作系统》实验指导书 (适用于计科、网络工程、软件工程、信计专业) 计算机科学与技术学院 2010-5 目录 前言 ................................................................

    电子商务实验指导书

    《电 子 商 务 概 论》 实验指导书 鲁江 编写 仲恺农业工程学院管理学院 2010仲恺农业工程学院管理学院《电子商务概论》实验指导书 《电子商务概论》实验指导书 电子商务实......

    策划实验指导书

    《策划理论与实务》实验指导书目 录 实验一 策划学的基本原理1-10……………………………………………………2 实验二 策划学的效应1-8……………………………………………......

    国际贸易实验指导书2015

    国际贸易综合实验 指 导 手 册 学 院: 商 学 院 专 业: 国际经济与贸易 指导教师: 张明英 2015年月8 日 目 录 第一篇 实验准备 ...............................................

    数控机床实验指导书

    实验一、普通机床结构认识 一、实验目的 掌握常用的械加工设备结构特点,通过具体结构认,掌握机床的具体工作过程。 二、实验用设备 1、车床 2、铣床 3、牛头刨床 4、钻床 三、......

    数据结构实验指导书

    目 录 实验规则················································2 实验环境···················......

    数据通信实验指导书

    数 据 通 信 验 指 导 书信息技术学院 实 目 录 实验一 数字通信的基带码型 ................................................................ 3实验二 2ASK数字调制......