智能机器人教学大纲软件部分.docx
《智能机器人教学大纲软件部分.docx》由会员分享,可在线阅读,更多相关《智能机器人教学大纲软件部分.docx(19页珍藏版)》请在冰豆网上搜索。
智能机器人教学大纲软件部分
智能机器人教学大纲(软件部分)
课程类型:
选修课
先修课程:
英语,计算机基础
授课对象:
中小学生(小学生只讲授第一部分)
教学安排:
上学期学习,每周上两节课(小学生每周上一节课,剩下的课时留给学生根据所学的知识对机器人应用)
程序的开发环境:
VJC1.0
教学目的:
让学生掌握一种编程语言,学会程序设计的基本思想,提高编程能力,培养学生的抽象思维及创新精神,为学习其他计算机高级语言打下基础。
通过本学期的学习,提高学生的动手能力、实验能力,学生能够了解如何使用智能机器人,如何使机器人实现自己的目的,学生能够设计出新颖的功能完整的程序,使机器人的行为更加真实可靠。
教学要求:
教师课上不仅要讲解程序设计的理论知识,还要让学生自己动手设计,最好在有实验场地的机房上课。
这样可以讲一些程序的功能,当时就给学生演示这段程序在机器人上的实现,学生理解起来更加透彻。
学生自己也可以随时下载程序,在场地里调试。
课上也要穿插运用小组讨论和个别化教学的方式,课下要根据本课程的内容留一些作业,为了使学生巩固知识。
这些作业最好是贴近机器人灭火和足球项目的,这为了使学生下学期能更好投入到灭火和足球的项目设计中来。
教学内容:
第一部分流程图程序
第1章流程图环境的总体认识
(一)课程内容:
1.1开发环境VJC1.0的安装、进入和退出
1.2流程图界面的认识
(二)学习目的与要求:
本章的学习在于对VJC1.0的流程图界面有一个总体的认识,使得
以后的学习操作更加熟练。
本章总的要求是:
了解VJC1.0的安装、进入和退出的步骤,了解流
程图界面的工具栏、菜单栏的使用。
本章重点:
菜单栏、工具栏的使用;各种模块的位置。
(三)考核的知识点与考核要求:
1.开发环境VJC1.0的安装、进入和退出,要求达到“识记”层次。
2.流程图界面的认识,要求达到“识记”层次。
2.1工具栏的使用
2.2菜单栏的使用
2.3工作区域模块库的认识
第2章流程图编程方法
(一)课程内容:
2.1程序的模块
2.1.1流程图的定义及其与模块的关系
2.1.2模块的基本操作
2.2流程图模块的定义及用法
2.2.1执行器模块
2.2.2传感器模块
2.2.3控制模块
2.2.4程序模块
2.3变量
2.3.1变量百宝箱的介绍
2.3.2变量百宝箱的应用
(二)学习目的与要求:
本章是流程图编程的基础,模块是构成程序基本点,因此,对模块的熟练
操作是为以后能更好的编程。
本章总的要求是:
理解流程图与模块的关系,能够熟练的对模块操作。
掌握各模块的功能及参数设置。
了解执行器模块所对应的机器人硬件设备、传感器模块所对应的传感器。
会用子程序和任务编程。
了解变量百宝箱的配置以及各种变量的取值、应用。
本章重点:
由模块组成流程图的方法;模块的操作;变量的使用。
(三)考核的知识点与考核要求:
1.程序的模块,要求达到“领会”层次。
1.1使用模块的连接构成程序,模块的断开并将其拖到垃圾箱中可删除模块
1.2右键单击模块,对模块设置的方法。
2.执行器模块和传感器模块,要求达到“简单应用”层次。
2.1执行器各模块的使用,每个模块控制机器人硬件的方法
2.2传感器各模块的使用,每个模块判断传感器接收检测值的方法
3.控制模块和程序模块,要求达到“综合应用”层次。
3.1各种循环和条件判断的使用,加入执行器和传感器模块构成一段程序
3.2能建立子程序和任务,并用这两种方法编程
4.变量,要求达到“简单应用”层次。
4.1各种变量的名称和取值范围
4.2变量在模块中的使用
4.3变量在程序中的控制及变化
第3章程序设计
(一)课程内容:
3.1流程图的设计思想及方法
3.2程序的诞生
3.2.1由流程图生成程序
3.2.2设置模块中的变量
3.3综合应用所学的模块设计出一个有意义的功能全面的程序。
(二)学习目的与要求:
本章是流程图编程的拓展和一些编程技巧,不论模块如何搭建,都要编出能够实现最终目的的程序,因此,本章设计程序上突出了“由浅入深、由粗至细”的编程原则。
将要实现的功能用模块逐渐细化,每个模块分别调试,最终
编出一个完整的程序。
本章总的要求是:
能够画出流程图来表示实际问题,会由流程图转换为用各种模块搭建的程序图,通过调整各模块中的变量实现全部功能。
本章重点:
流程图表示实际问题的方法;流程图转为程序图的方法。
难点:
流程图表示实际问题;调整模块中的变量。
(三)考核的知识点与考核要求:
1.流程图,要求达到“综合应用”层次。
1.1列出将要实现的功能
1.2将各个功能按照顺序和调用关系画出流程图
2.生成程序,要求达到“综合应用”层次。
2.1将流程图中的各项功能用模块表示
2.2将各模块搭建起来,构成一个完整的程序图
3.调整变量,要求达到“简单应用”层次。
3.1通过不断的下载调试来调节变量取值,直到实现全部功能为止。
第二部分JC代码程序
第4章JC代码环境的总体认识
(一)课程内容:
4.1JC程序的进入和退出
4.2JC程序的编辑界面
4.2.1菜单栏
4.2.2工具栏
4.2.3JC程序的编辑窗口
4.2.4交互信息窗口
4.3JC程序与流程图两个界面之间的切换
(二)学习目的与要求:
通过本章的学习来了解JC代码的编程环境,比较一下和流程图界面有什么不同,使得以后的学习操作更加熟练。
本章的总体要求是:
了解编辑界面,熟练的使用菜单兰和工具栏,弄清交互信息窗口所显示的内容,能够了解状态栏的信息。
熟练的进行JC程序与流程图两个界面之间的切换。
本章重点:
工具栏、菜单栏的使用;交互信息窗口的查看;JC程序与流程图两个界面之间的切换。
(三)考核的知识点与考核要求:
1.JC代码环境的认识,要求达到“识记”层次。
1.1工具栏的使用
1.2菜单栏的使用
1.3交互信息窗口的查看
2.两个界面的联系,要求达到“识记”层次。
2.1JC程序与流程图两个界面的相同点与不同点
2.2JC程序与流程图两个界面之间的切换
第5章JC语言的基础知识
(一)课程内容:
5.1数据对象
5.1.1变量
5.1.2常量
5.1.3数据类型
5.2语句与表达式
5.2.1运算符及运算方法
5.2.2语句的表示方法
5.2.3表达式的使用
5.3运算优先级和次序
(二)学习目的与要求:
本章可以看作设计JC语言程序前的准备,每一段程序都是由若干条语句组成的,而每一条语句又是由变量、常量、表达式、语句定义符等若干个语言点组成。
本章就是学习这些零散的语言点,为以后能够编出更完美的程序。
本章的总体要求是:
了解变量、常量、表达式的概念,会用变量、常量构成各种表达式。
对不同的数据类型能做出及时的判断。
会使用各种运算符并熟练的计算各种表达式。
本章重点:
变量、常量的概念;语句的写法;表达式的使用;数据类型的掌握;运算优先级和次序。
难点:
语句的写法;表达式的使用。
(三)考核的知识点与考核要求:
1.数据对象,要求达到“领会”层次。
1.1变量的定义和初始化
1.2变量和常量的使用
1.3定义不同的数据类型和数据类型的转换
2.语句与表达式,要求达到“简单应用”层次。
2.1单目运算符、双目运算符和三目运算符的使用,易混淆运算符的区别。
2.2语句的写法
2.3表达式的计算
3.运算优先级和次序,要求达到“识记”层次。
3.1不同运算符的计算次序
3.2同一运算符两边的计算次序
第6章程序设计初步
(一)课程内容:
6.1顺序结构
6.1.1顺序结构的程序设计思想
6.1.2顺序结构中常见的语句
6.2选择结构
6.2.1选择结构的程序设计思想
6.2.2if---else语句的使用
6.2.3选择结构的程序举例
6.3循环结构
6.3.1循环结构的程序设计思想
6.3.2while和for语句的使用
6.3.3循环结构的程序举例
6.4综合应用三种基本程序结构进行编程
(二)学习目的与要求:
本章学习程序设计的三种基本结构,任何一个完整的程序都是由这三种基本结构组成的。
因此,能够熟练的掌握这三种基本结构,对今后的高级程序设计和完成软件工程项目是有好处的。
本章的总体要求是:
理解三种结构的设计思想。
会熟练的使用其代表语句编出程序。
在同一程序中使用三种基本结构搭配。
本章重点:
选择结构的设计;环结构的设计。
难点:
三种结构配合使用
(三)考核的知识点与考核要求:
1.顺序结构,要求达到“简单应用”层次。
1.1顺序结构的设计思想
1.2用前面学的各种语句搭建顺序结构
2.选择结构,要求达到“综合应用”层次。
2.1选择结构的设计思想
2.2if---else语句的使用并将顺序结构嵌入
3.循环结构,要求达到“综合应用”层次。
3.1循环结构的程序设计思想
3.2while和for语句的使用并将顺序结构和选择结构嵌入
4.综合设计,要求达到“综合应用”层次。
4.1三种结构一起使用、相互嵌套,设计出一个有意义的功能全面的程序,并在机器人上运行。
第7章函数
(一)课程内容:
7.1执行器控制函数
7.1.1执行器控制函数功能和用法
7.1.2执行器控制函数与流程图程序中对应的模块
7.1.3执行器控制函数与机器人硬件对应的部位
7.2传感器输入函数
7.2.1传感器输入函数功能和用法
7.2.1传感器输入函数与流程图程序中对应的模块
7.2.2用传感器输入函数接收机器人上传感器检测的值
7.3浮点运算函数
7.3.1浮点运算函数的用法
7.3.2浮点运算函数的数学表达式
7.4内存读写函数的用法
7.5自定义函数
7.5.1自定义函数的设计思想及使用方法
7.5.2自定义函数的调用、参数传递和返回值
7.6其他函数的意义和用法
(二)学习目的与要求:
本章的目的是为了使程序的功能更加全面,更好的控制机器人,使机器人的运行更加符合实际,更加美观。
自定义函数可以使程序层次清晰、有条理,从而便于维护。
本章的总体要求是:
会使用执行器控制函数和传感器输入函数,了解它们对应的硬件和流程图程序中的模块。
会使用浮点运算函数,知道其数学意义。
了解自定义函数的设计思想,能够用自定义函数编程,准确的实现函数调用、参数传递和返回值类型一致。
本章重点:
执行器控制函数和传感器输入函数的使用;浮点运算函数的计算;自定义函数的编程。
难点:
使用自定义函数编程。
(三)考核的知识点与考核要求:
1.执行器控制函数,要求达到“识记”层次。
1.1执行器控制函数功能和用法
1.2辨认执行器控制函数与机器人硬件对应的部位
2.传感器输入函数,要求达到“识记”层次。
2.1传感器输入函数功能和用法
2.2辨认传感器输入函数所使用机器人上的传感器
3.浮点运算函数,要求达到“简单应用”层次。
3.1浮点运算函数的用法
3.2浮点运算函数的数学表达式
4.自定义函数,要求达到“综合应用”层次。
4.1用自定义函数编程
5.其他函数,要求达到“识记”层次。
5.1其他函数的意义和用法
第8章高级程序设计
(一)课程内容:
8.1多任务
8.1.1多任务的概述及设计思想
8.1.2创建新任务
8.1.3撤销任务
8.2数组
8.2.1数组的定义和初始化
8.2.2数组的用法
8.2.3数组作为函数参数传递
8.3指针
8.3.1指针的定义及在内存中的地址引用
8.3.2指针的用法
8.3.3指针作为函数参数传递
8.4综合应用本学期所学的全部知识设计出完整、新颖的程序
(二)学习目的与要求:
本章将学习一些比较难的数据结构,但这些都是高级软件项目中不可分离的。
因此,学好本章要有前面扎实的基础,多任务是实现多功能程序不可缺少的设计方法。
数组是处理大量数据的一种方法。
指针是在内存中引用多个变量的方法。
本章的总体要求是:
理解多任务原理,会用多任务设计多功能程序。
理解数组使用方法,能够处理大量数据,理解数组作为参数传递。
了解指针工作原理,会用指针引用地址、取值和设值,理解指针作为参数传递。
结合本学期的全部知识设计程序。
本章重点:
多任务程序设计;数组的应用;指针的应用。
难点:
数组的应用;指针的应用。
(三)考核的知识点与考核要求:
1.多任务,要求达到“综合应用”层次。
1.1时间片工作原理
1.2多任务编程
1.3撤销多任务的方法
2.数组,要求达到“综合应用”层次。
2.1数组的定义和初始化
2.2数组的用法
2.3数组作为函数参数传递
3.指针,要求达到“综合应用”层次。
3.1指针的定义及在内存中的地址引用
3.2指针的用法
3.3指针作为函数参数传递
4.综合设计,要求达到“综合应用”层次。
4.1结合本学期的全部知识和实用价值设计完整的程序,并在机器人上运行。
第9章常见问题处理
(一)课程内容:
9.1自检
9.1.1自检的情况
9.1.2自检的方法
9.2更新操作系统
9.2.1更新操作系统的情况
9.2.2更新操作系统的方法
9.3错误处理
9.3.1编译错误处理
9.3.2运行错误处理
(二)学习目的与要求:
本章就是结合前面所学的情况介绍一些常见的错误和异常,教给学生一些改错的办法,从而提高编程效率。
本章的总体要求是:
能够进行自检操作、更新操作系统,能够及时判断常见错误并改正。
本章重点:
自检操作;更新操作系统;错误的判断与处理。
难点:
错误的判断与处理。
(三)考核的知识点与考核要求:
1.自检,要求达到“识记”层次。
1.1自检的操作
2.更新操作系统,要求达到“识记”层次。
2.1更新操作系统的方法
3.错误处理,要求达到“领会”层次。
3.1错误的判断
3.2错误的处理方法
关于“考核知识点与考核要求”中有关提法的说明:
在本大纲的“考核要求”中,将各个知识点区分为“识记”、“领会”、“简单应用’’和“综合应用”四个能力层次。
其含义是:
“识记”:
要求学生能了解和记住根据本课程中规定的有关概念并能够根据考核的不同要求,做出正确的判断并能运用这些知识加深对后继内容的理解。
“领会”:
要求学生能够理解和运用本课程中规定的内容,并能够根据考核的不同要求做出相关问题的联系和分析。
“简单应用”:
要求考生能根据相关知识点的内容进行基本的运算及推理应用。
“综合应用”:
要求考生能够应用本课程中规定的多个知识点,分析和解决较复杂的应用。
软件部分实例
——控制灭火机器人的程序
课程类型:
选修课
先修课程:
智能机器人
授课对象:
中学生
教学安排:
下学期学习,每周两节课
教学目的:
学生通过动手实践,对机器人的认识上升到一个较高的层次,加强学生的动手能力、编程能力及团结协作能力,培养学生的创新精神。
让学生具有对机器人的开发意识。
教学要求:
这是综合运用所学的知识,设计出一个非常实用的机器人。
教师应尽可能的开发学生的想象力,因此,教师在教学时,应起指导作用,而不是纯粹的讲授,根据不同的设计方法进行分别指导。
在制作中,应培养学生采用软、硬件同步进行的方法,按部就班的制作。
在编程时,要及时用程序对所控制的硬件进行检测,待合适之后,再进行下面的制作,避免上一步的错误影响到下一步。
教学环境必须在工具齐备的有灭火场地的机房,这样便于学生调试程序。
程序的算法描述:
机器人听声音起步,按照左手规则(见附录)遍历房间,在遍历的同时寻找火源,当找到火源时,就驶向火源,走到火源前的白线时,停下来启动电机灭火,灭完火停止电机运行。
程序的流程图:
是否
是否
是否
是否
灭火机器人的JC代码程序(仅供参考):
inta;/*记录红外检测数值*/
intb;/*判断是否检测到白线*/
intc=0;/*记录白线次数*/
intl,r;/*存放火焰传感器值*/
intm;/*存放麦克风检测到的值*/
floats;
voidmain()
{
while
(1)/*听声音起步*/
{
m=microphone();
if(m>120)break;
}
drive(100,0);/*越过起点的白色圆*/
wait(0.3);
while
(1)
{
l=photo
(1);/*l、r时刻检测是否有火焰*/
r=photo
(2);
a=ir_detector();
b=analogport(5);
/*********************左手规则********************/
if(a==1)drive(100,70);
if((a==2)||(a==4))drive(0,60);
if(a==0)
{
motor(1,12);
motor(2,120);
}
/************************************************/
printf("l=%dr=%d\n",l,r);
b=analogport(5);
if(b<185)/*检测遇到白线的次数*/
{
c=c+1;/*记录*/
if(c==4)/*对第4号房间灭火*/
{
PutOut_4();/*调用第4号房间灭火程序*/
break;
}
if(l<250||r<250)/*是否发现火焰*/
{
drive(60,0);
wait(0.2);
break;
}
/******************在无火焰的情况下,退出房间***********************/
drive(-100,0);
wait(0.4);
drive(0,78);
wait(0.25);
drive(100,0);
wait(0.3);
/******************************************************************/
}
printf("c=%d\n",c);
b=analogport(5);
}
while
(1)/*机器人行使到火焰面前*/
{
l=photo
(1);
r=photo
(2);
if(l{
motor(1,10);
motor(2,95);
}
if(l>r&&(l<245||r<245))/*右边有火源,向右走*/
{
motor(1,95);
motor(2,10);
}
b=analogport(5);
if(b<180)/*遇到火焰前面的白线就停止*/
{
stop();
break;
}
}
resettime();
while
(1)/*灭火程序,采用左右摆动灭火的方法*/
{
l=photo
(1);
r=photo
(2);
s=seconds();
if(l{
motor(3,150);
drive(0,-10);
wait(0.1);
}
if(r{
motor(3,150);
drive(0,10);
wait(0.1);
}
if(s>=6.0)/*灭完火后,停止电机工作*/
{
stop_motor(3);
stop();
break;
}
}
}
voidPutOut_4()/*4号房间灭火*/
{
drive(0,100);/*在起点位置向右旋转180度*/
wait(0.36);
stop();
drive(100,0);/*驶离起点位置*/
wait(0.3);
while
(1)/*灭火方法和前三个房间基本相同*/
{
l=photo
(1);
r=photo
(2);
a=ir_detector();
/************************左手规则************************/
if(a==1)drive(100,70);
if((a==2)||(a==4))drive(0,60);
if(a==0)
{
motor(1,12);
motor(2,120);
}
/********************************************************/
if(l<=210||r<=210)/*发现火源后,驶过门口的白线*/
{
drive(60,0);
wait(0.4);
break;
}
}
while
(1)/*驶向火源*/
{
l=photo
(1);
r=photo
(2);
if(l{
motor(1,10);
motor(2,95);
}
if(l>r)
{
motor(1,95);
motor(2,10);
}
b=analogport(5);
if(b<180)/*遇到火焰前的白线就停止*/
{
stop();
break;
}
}
resettime();
while
(1)/*左右摆动灭火,和前面的方法一样*/
{
l=photo
(1);
r=photo
(2);
s=seconds();
motor(3,150);
if(l{
drive(0,-10);
wait(0.1);
stop();
}
if(r{
drive(0,