西电智能系统平台实验.docx
《西电智能系统平台实验.docx》由会员分享,可在线阅读,更多相关《西电智能系统平台实验.docx(8页珍藏版)》请在冰豆网上搜索。
西电智能系统平台实验
班级:
021051
学号:
02105035
姓名:
戴涛
实验5-6AS-UII机器人实验
一、实验目的
了解AS-UII的内部结构以及系统结构,熟练的操作机器人;能够完整的组装一个AS-EIM工程创新模块中级套件;掌握能力风暴编程,深刻理解流程图编程方法。
二、原理简介
AS-UII是面向教育的新一代智能移动机器人。
AS-UII有一个功能比较强大的微处理系统和传感器系统,而且它还能扩展听觉、视觉和触觉,成为真正意义上的智能机器人。
AS-UII是专门为大学进行课程教学、工程训练、机器人竞赛、科技创新以及研究服务开发的新型移动智能机器人。
1.图形化交互式C语言简介
图形化交互式C语言(简称VJC)是用于能力风暴机器人系列产品的软件开发系统,具有基于流程图的编程语言和交互式C语言,为开发智能机器人项目、程序与算法、教学等提供了简单而又功能强大的平台。
该系统不仅可以用直观的流程图编程,也可以用JC代码编写更复杂高级的机器人程序。
有了流程图和JC语言两种编程方法,VJC能够在编写机器人程序中发挥最大的创造力。
VJC操作简便,有活泼明快的图案和简短的文字说明,可以很方便地用图形模块搭建程序流程图,搭建流程图的同时,动态生成无语法错误的JC代码。
流程图搭建完毕,JC程序就已经编写完成。
可以立即下载程序到机器人中运行,还可以在JC代码编辑环境中对程序进行编辑,注释和修改等。
流程图用图框表示各种操作,直观形象,易于理解。
流程图能够比较清楚地显示出各个框图之间的逻辑关系,因此它是表示算法的较好工具。
图形化编程用常规的计算机语言编程,需要输入繁杂的程序代码,并且编写的程序还要符合特定的“语法”。
而图形化编程不需要记忆计算机语言的语法,也不需要输入程序代码,只要按照“先做什么,后做什么”的初步设想,就可以编出程序。
图形化交互式C语言(VJC)正是按这个思想设计的,使用VJC软件,同学们不用关心语言实现的细节,且能避免语法错误,有利与集中精力寻求解决问题的方法。
VJC的图形化编程采用的是流程图模型,它由图形模块及带有箭头的方向线组成。
常用的模块有五类:
执行器模块(蓝色矩阵)、单功能传感器模块(紫色平行四边形)、带判断功能的传感器模块(紫色菱形),控制模块(红色菱形)和程序模块(黄色矩形流程图支持多任务程序、子程序调用、浮点数和整数、全局变量、简单表达式、复合条件判断以及循环嵌套等。
)每一种类型的模块都可以完成一定的功能,只要按逻辑连接这些模块就可以编出程序。
一般的程序乃至复杂的程序都能够用流程图编写。
2.VJC6.0界面介绍
JC代码编辑界面打开VJC6.0,选择“JC代码程序”,就进入JC代码编辑界面。
它由这样几个部分组成的:
菜单栏、工具栏、状态栏、JC代码编辑窗口、较好信息窗口。
流程图编辑界面:
选择“流程图程序”,就进入流程图编程界面。
它由这样几个部分组成的:
菜单栏、工具栏、模块库、垃圾箱、流程图生成区、JC代码显示区(必须单击“JC代码”按钮才能显示)。
交互信息窗口可以显示:
编译结果、机器人程序中的全局变量、函数名列表、机器人正在运行的进程表、交互式语句的执行结果。
JC程序下载后,可以在交互信息窗口中看到编译的结果。
如果下载的JC程序有语法错误。
用鼠标双击编译结果中的错误,光标会自动跳转到出错的JC语句所在行。
3.流程图编程
模块是编程的基本单元,其操作也是经常要用到的。
VJC的图形模块分以下几类:
执行器模块、传感器模块、控制模块、程序模块库、多功能扩展卡模块(多功能扩展卡模块只适用于AS-M、AS-MII、AS-UII)、伺服电机驱动模块(伺服电机驱动模块适用于AS-M、AS-MII、AS-UII)以及通讯模块(通讯模块只适用于AS-UII)。
不同型号的机器人的模块库略有不同,下面对图形模块库分类介绍其使用方法。
流程图编程详尽描述如下:
进入VJC1.6开发版的流程图编辑界面,编写此程序的步骤如下:
用鼠标点击左边“控制模块库”,从中选择“多次循环”。
将此图标拖到流程图生成区,与主程序相连。
鼠标右键“多次循环”图标,就会出现相应的对话框,将循环次数改为4次。
从“执行器模块库”中,选择“直行”模块,连接在流程图中,在“直行”模块上右击鼠标,就会出现一个参数设置框。
根据要求选择合适的速度和时间,这时机器人就可以完成走直线的任务。
再选择“转向”模块,连接在流程图中,鼠标右击“转向”模块,出现设置参数的对话框,在“速度”和“时间”状态栏内,填写适当的值,使机器人右转90度。
最后从程序模块中,把“结束”模块添加上去,放在循环体外,就完成了一个走四边形的机器人程序编写。
程序编写完毕,接下来就要把编号的程序下载到机器人里运行、调试了。
首先把机器人和计算机用串口连接线连接起来,打开机器人电源开关,然后点击工具栏中的“下载”按钮,在界面中就会出现一个“智能下载程序”对话框,待看到“下载成功”字样时,拔下串口连接线,间机器人带到宽敞的地方,按下机器人身上的“运行”键,机器人就开始走四边形了。
也许会发现机器人走的不很规则,转弯的角度不正确,那么就需要修改“直行”和“转向”模块中的参数,再下载,运行。
多任务的编程方法,以下是一个多任务的例子:
例1:
边唱歌边跳舞的机器人
将“程序模块库”里“任务开始”移入到流程图生成区,这样就生成了两个任务(主任务和一个任务),分别在主程序和任务下编写让机器人跳舞和唱歌的程序,下载程序运行,机器人就能一边跳舞一边唱歌了。
例2:
机器人走四边形
要求让机器人完成“前进→转弯→前进→转弯→前进→转弯→前进→转弯”的动作,机器人需要完成四个“前进→转弯”动作。
编程时,而要让机器人完成一个“前进→转弯”,需要气动电机,使机器人以一定的速度向前运行一段时间,然后停下,以左轮为中心旋转90度再停下。
这个动作使用两个模块就这样就走完了四边形的一边。
要让机器人走四个边,有一个简便的方法,就是循环上述步骤,循环重复4此,机器人就能够走完一个四边形了。
4.程序的下载及运行
程序编写完毕,用串口连接线一端接机器人控制面板上的“下载口”,另一端接计算机的一个九针串口,打开机器人电源开关,按工具栏上的“下载”按钮,或者使用菜单栏上的“工具(T)-下载当前程序(D)”命令,你就可以下载程序了。
这是会出现一个智能下载对话框,并显示下载进程。
等待出现“下载成功!
”字样时,关闭对话框。
拔下机器人上的串口连接线,按下机器人的“运行”按钮,机器人就开始运行下载的程序了。
三、程序说明
第一次:
实验1:
流程图如下
实现机器人声音检测,如果分贝小于某个数值就执行“前进”操作,并且一直处于红外检测和避障操作,红外检测只要检测到和障碍物的距离小于一定值的话就执行“左转”操作,然后前进,再检测,如果满足条件,将再次左转,一直到避开障碍物。
如果失灵碰撞到障碍物,那么“躲避碰撞”程序将检测到碰撞后向左转,一直循环到避开障碍物。
在主程序运行过程中,检测亮度并显示的子任务也在并行执行,通过光传感器将检测到的光亮度显示在机器人的显示屏上。
实验2:
光感小车,组装图如下
流程图如下
智能光感小车——小车会根据前方的两个光传感器来判断行驶方向。
如果左边的光感器检测到光强度大于100,则马达一反转,如果小于100,则再检测右边光感器的光强度,如果大于100,则马达二反转,否则两个马达都正转。
这样就实现了小车跟随强光走,从而避开障碍物,因为遇到障碍的一面其光感强度必然减小,从而向光强的那个方向转向。
第二次
机器手臂,组装图如下
流程图如下
第一个循环控制底座马达,即马达1。
第二个循环控制机器臂的升降,即马达2和4。
第三个循环控制机器夹的开合。
模拟口输入为三个磁传感器,根据外界磁力的大小来进行响应。
这样就可以用磁棒来控制机器手臂,让其可以上下左右都可以旋转,实现抓取东西。
通过实验,可以看到我们组的机器手臂可以实现全部功能。
唯一不足就是地盘齿轮损坏,导致地盘旋转不是很顺畅,其他部位均可正常运行。
四、实验总结
通过这两次实验,基本掌握了JC6.0的编程,它可以用流程图编程,可视化强,而且简单,非常适合初学者学习。
通过这两次实验,基本了解了机器人编程操作,增加了动手实践能力,也增加了对机器人的兴趣。
五.实验代码
intma_1=0;
intmcm_1=0;
voidmain()
{
start_process(task_0());
start_process(task_1());
while
(1)
{
ma_1=analogport(7);
if(ma_1>50)
{
mcm_1=(mcm_1&0b11111100)|0b1;
write(0x4000,mcm_1);
}
else
{
mcm_1=(mcm_1&0b11111100)|0b11;
write(0x4000,mcm_1);
}
}
}
voidtask_0()
{
while
(1)
{
ma_1=analogport(6);
if(ma_1>50)
{
mcm_1=(mcm_1&0b110011)|0b1000100;
write(0x4000,mcm_1);
}
else
{
mcm_1=(mcm_1&0b110011)|0b11001100;
write(0x4000,mcm_1);
}
}