配色: 字号:
Robot-51智能车图形化编程平台软件 系统设计报告
2014-10-08 | 阅:  转:  |  分享 
  






















Robot-51智能车图形化编程平台软件

系统设计报告































































VersionHistory

Date VersionNo. Description Author 2012-5-20 <1.0> 2012-7-20 <2.0>









































































第一章基于机器人项目驱动的嵌入式实训平台系统的背景与概述 1

1.1嵌入式系统开发背景简介 1

1.2基于机器人项目驱动的嵌入式实训平台系统概述 2

1.2.1机器人主控器系统 4

1.2.2机器人传感器系统 4

1.2.3机器人执行系统 5

1.2.4编程软件 5

第二章Robot51智能车图形化编程平台软件设计报告 5

2.1软件概述 5

2.1.1软件特色 5

2.1.2软件开发环境 6

2.2系统的安装 6

2.2.1系统要求 6

2.2.2安装 6

2.2.3运行 6

2.3软件界面 6

2.3.1菜单栏 6

2.3.2工具栏 7

2.3.3模块库区 7

2.3.4子程序库 8

2.3.5资源中心 8

2.3.6流程图程序生成区 8

2.3.7C代码显示区 9

2.4模块的基本操作 9

2.4.1添加模块 9

2.4.2删除模块 9

2.4.3设置参数 10

2.4.4模块的拖放 10

2.5模块说明 10

2.5.1执行器模块库 10

2.5.2控制模块库 14

2.5.3程序模块库 18

2.6常见问题及解决办法 24

2.6.1程序启动失败 24

2.6.2流程图显示不完全 24

2.6.3无法将程序下载到机器人中 24





















第一章基于机器人项目驱动的嵌入式实训平台系统的背景与概述

我们结合多年的教学经验和科研积累,采用C8051F360小型微控制器进一步扩大SiliconLaboratories功能最密集的小型微控制器产品线,最适合需要精准动作控制和信号处理的消费与工业电子应用。在此基础上我们设计了。该实验平台设计配置灵活、接口丰富,支持经济适用的JTAG实时调试或低成本的串行端口监控调试,是一款理想的、高性能价格比的现代嵌入式系统实验平台和嵌入式系统开发评估综合平台。本实验平台提供了各类实验,涵盖了键盘、显示、网络通信、音频、操作系统等多个方面,并且在实验课题安排上注意了课题难度的层次性和连贯性,可以基本满足各个应用层面的要求。



图1-2-机器人控制系统框图

图1-2-机器人控制器系统硬件框图

图1-2-机器人主控制器系统软件框图

图1-2-传感器系统硬件框图

第二章Robot51智能车图形化编程平台软件设计报告

2.1软件概述

Robot51智能车图形化编程平台软件是一个为用户提供全面的机器人教育与竞赛解决方案的综合系统。系统集入门与高级应用于一体,实时提供最新的机器人解决方案与该领域的最新信息,丰富用户的机器人知识储备,为钻研机器人技术、开展机器人教学、参加机器人竞赛提供有力的支持。

2.1.1软件特色

图形化编程也被称为“积木式编程”,是本软件系统的特色,采用完全的积木式编程方法,每一个积木模块都可以完成一定的功能,只要按程序编写的逻辑连接这些模块就可以很快的完成一个程序的编写,软件使用简单直观,用鼠标就可以进行绝大部分操作。机器人控制用程序流程图实现,流程图是用一些图框表示各种操作。用图形表示算法,直观形象,易于理解。流程图能够比较清楚的显示出各个框之间的逻辑关系,因此它是表示算法的较好工具。借助本系统提供的图形化开发环境,用户只需要按照自己的设计目标选取、拖拽相应的功能模块绘制流程图,并设置好各模块的参数,系统就会自动生成相对应的类C语言代码,进而通过编译、下载过程实现对机器人、智能车单片机功能的控制,这就使得开发人员不用对语言实现的细节及底层原理有太多、太深的掌握,同时也避免了编程中经常会出现的语法错误,大大提高了开发效率。

系统功能模块丰富,系统模块库分为执行器模块库、控制模块库和程序模块库,其中执行器模块库包含绝大多数实用的机器人系统模块,如开启、停止伺服电机、移动、延时等操作;控制模块库包含重循环嵌套,条件判断,中断循环等功能;程序模块库具有调用子程序、调用系统函数、子程序返回等功能;而且随着软件的不断更新、完善,系统模块库将更加丰富、健全,将支持更多的硬件平台。

另外软件系统还集成了高效的编译下载系统,采用面向对象的编译技术,消除了传统编译处理过程中的阶段分割,改在交互式开发环境IDE编辑器中调用编译器执行编译操作,这样无需离开编辑器就可执行程序,更方便地完成从源代码到目标代码的生成过程,是集词法分析、语法分析、语义处理、优化和目标代码生成等操作于一体,大大降低了维护的难度,提高了系统的运行速度和灵活性。

2.1.2软件开发环境

本系统采用集成开发环境(IDE)NetBeans7.0.1及Access数据库完成系统的开发工作,借助流行的JAVA语言及Swing技术实现,由于JAVA语言所具有的跨平台性,就使得任何系统只要有了JAVA虚拟机的支持,都可以安装、运行本软件,这也为软件占有更大的市场打下了基础。

2.2系统的安装

2.2.1系统要求

操作系统:由于软件开发用的JAVA语言具有跨平台性,本软件可运行在任何安装有JAVA虚拟机支持的系统。

硬件要求:本软件对硬件要求不高,需要有一个空余的串口,其他如硬盘空间、内存大小、处理器性能要求都比较低。

2.2.2安装

在Robot51智能车图形化编程平台软件安装程序内找到相应的自安装软件Setup.exe,双击可开始安装,按安装向导提示便可完成安装,需要注意的是安装时需要系统管理员权限。

2.2.3运行

安装完成后,在桌面上将出现Robot51智能车图形化编程平台软件的图标,双击可运行程序;也可从开始中的程序菜单中打开。

2.3软件界面



2.3.1菜单栏



文件:新建、打开、保存等文档的基本的操作;

视图:隐藏/显示工具栏、状态栏、C语言代码、消息栏,流程图放大/缩小等操作;

子程序:子程序的建立,保存,调用;

系统工具:机器人程序的仿真(正在完善中),编译下载,机器人测试;

系统维护:进行系统参数的设定;

帮助:打开帮助文件,检测软件更新,关于软件的介绍。

2.3.2工具栏



新建文件:建立新的程序流程图文件,C代码文件,Logo文件等;

打开文件:打开流程图文件,C代码文件,Logo文件等;

保存文件:保存当前处于编辑状态的文件;

代码编辑:图形编程界面与代码编辑界面的变换;

放大:放大流程图视图;

缩小:缩小流程图视图;

编译下载:下载机器人操作系统,下载用户程序;

关闭系统:保存并关闭积木式系统;

程序选择:进行主程序及其包含的子程序间的切换;

消息栏:实时更新最新的信息。

2.3.3模块库区



模块区采用树形结构,双击各个模块库名称即可打开所属模块。

执行器模块库:包含机器人的各类动作操作。明细如下图:

控制模块库:包含各种程序流程图的流程图控制模块。明细如下图:



程序模块库:包含程序进程操作以及子程序的调用模块。明细如下图:



2.3.4子程序库

列出当前所有的厂家提供的函数库与用户自定义的函数,供用户随时调用。



2.3.5资源中心

实时更新本地资源数据库,保持与服务器上的信息同步。



2.3.6流程图程序生成区

流程图显示、编辑界面。通过拖放方式,可以方便的将某个模块拖至流程图区。



2.3.7C代码显示区

显示通过流程图自动生成的机器人操作C源程序,支持语法高亮显示,可以对当前的文档进行代码编辑,



2.4模块的基本操作

2.4.1添加模块

在模块库区选择模块,按下鼠标,拖放至目的区域,待方向线变红色时,松开鼠标,完成操作。

->—>

2.4.2删除模块

选择删除目标,单击鼠标右键,选择删除模块,确认即完成操作。



如果删除的模块是条件旁断、循环模块,则应至模块起始处删除。在删除此类模块时,将删除该模块所包含的所有的模块。

2.4.3设置参数

选择设置对象,双击打开设置窗口,或者通过右键快捷菜单,选择模块属性,便弹出参数设置对话框。



2.4.4模块的拖放

选择目标模块(可按住”Ctrl”多选),拖放至目的区域即可(既可插入至流程图,也可以放置于空白区域).如果多个模块是非连续的,则无法直接插入至流程图!提示:空白区域的IF,For,While,连续的两个普通模块间可以插入模块.



2.5模块说明

2.5.1执行器模块库

2.5.1.1移动模块

该模块主要完成机器人的直行、转向动作。0、1号电机分别代表机器人的左、右电机。通过功率大小滚动条的拖拉或者功率数值输入框的输入可以设定电机的运行功率。“-”表示电机反转。功率绝对数值越大,电机转速越快。



2.5.1.2延时模块

该模块主要实现延续机器人的上一个动作状态。主要和移动模块或者扩展电机模块相搭配,实现机器人移动或者某个动作的延续性。如让机器人以100%的功率向前直行5秒钟,延时模块可如下设置:



相应的程序代码为:



2.5.1.3停止模块

该模块主要实现停止电机运转。可实现所有电机停止运转,也可以设定停止一个或几个电机。停止所有电机,则勾选“停止所有电机”。

停止一个或几个电机,取消勾选“停止所有电机”,选择停止对象。



2.5.1.4启动电机模块

该模块主要实现扩展电机的使用。使用时,可打开任意一个电机。操作同移动模块。



2.5.1.5显示模块

该模块主要实现信息的打印输出。支持多参数输出。

使用时,在显示信息输入框中输入要显示的内容,如:“helloworld!”。

当需要显示端口值或者某个变量的值时,单击“引用”按钮打开“引用”窗口。



如:要显示模拟端口5的数值,则在工具栏中点击“模拟输入”,选择第“5”端口,确定退出。显示多个参数,则多次点击“引用”,以增加显示参数。

2.5.1.6音乐模块

该模块主要用于生成音乐。依据乐理,选择音符与节拍,单击“>>”按钮,增加至音符列表。其中,时间框显示的时间与节拍是相对应的。用户可以自行输入发音延续时间进行自定义。如果您的计算机有内置扬声器,还可以通过单击“试听”按钮视听当前的音乐。



2.5.1.7伺服电机模块

该模块包含八个子模块,主要完成伺服电机的初始化、定位与关闭。

“开始伺服”模块用于所有伺服电机的初始化。该模块不需要设定任何参数。

“关闭伺服”模块用于关闭所有伺服电机。该模块同样不需要设定任何参数。

“伺服电机0”至“伺服电机5”主要用于0-5号伺服电机的定位。在实际应用过程中,要对伺服电机进行操作,必须先初始化伺服电机。将某伺服电机进行连续的定位,可以使用For循环来控制。

例1:只完成伺服电机0定位到500的位置这一目的可如下操作:



定位参数可以用双击相应的伺服电机模块进行设置。



例2:让控制机器人左右手的伺服电机0,伺服电机1从0运动至1000的位置,



多次循环的设置如下:循环变量为“i”,起始值为0,循环次数1000,步进量100。如图:



伺服电机0模块参数设置:打开设置窗口,点击“引用”按钮,选择“全局变量”,在下拉列表中选择刚才声明的变量“i”。



伺服电机1设置同理。

2.5.2控制模块库

该库主要实现流程图的流程控制。主要有:多次循环模块,条件循环模块,中断循环模块,条件判断模块。

2.5.2.1多次循环模块

该模块将直行循环体内的操作x次,x的大小由用户自行设定,除非用户中断循环。

参数设置界面如图:



选中“高级设置”可以自定义一些高级选项。如下图:



循环变量的设置:主函数双击“开始”;子程序双击“函数func”(注:这里是“函数func”,函数名不同,则显示不同)打开函数属性管理窗口。



选取目标函数,切换至“函数变量”页面,单击工具栏中的“增加变量”,输入变量名称、选择数据类型即可。默认的变量名称为“unknown”,数据类型为“int”。

起始值:循环开始时赋予循环变量的数值,通常为0。通过“引用”框的选择,可以将某个变量作为起始值。

循环次数:循环结束值。通过“引用”框的选择,可以将某个变量作为循环次数。

步进量:每次循环,循环变量的变化值,通常为1。其他步进量主要用于伺服电机的控制。

2.5.2.2条件循环模块

该模块主要实现永远循环,以及符合某个条件才执行循环的功能。

永远循环:为条件循环的默认循环。打开设置窗口,直接确定退出即可。



条件循环:不选择“永远循环”,出现条件的设置窗口。同条件判断模块的条件设置。

2.5.2.3中断循环模块

主要用于循环的退出。如果有多重循环嵌套,则只是退出当前循环,如:



2.5.2.4条件判断模块

该模块完成if….else功能。既如果条件成立执行某个操作,否则(不成立)执行另一个操作。如:条件如果成立,则“移动”,否则“停止”。



条件的设置:双击“条件判断”打开设置窗口。

条件分为“旁断类条件”,“表达式条件”,“常用操作”三大类。一个条件可以包含这三类条件。分别设置条件,点击“增加条件”,可以实现多条件的判断。

判断类条件:实现某个变量大小的旁断或者某个变量是什么的旁断。

如:设置条件旁断“3号模拟口的模拟量是否大于127”,可如下进行:

在“变量”下拉框中选择“模拟输入”,在“端口”下拉框中选择端口“3”



然后选择判断符“大于”,输入目标数值大小,这里是127。单击“增加条件”按钮,完成条件添加。“确定”退出。



表达式条件:

实现运算式的大小判断。

如:设置条件判断“模拟3号口与模拟4号口的差值是否大于10”,设置如下:

单击“引用”打开引用变量窗口。



这里选择“模拟输入”,端口“3”。

选择预算符“减去”



模拟4号口操作同模拟3号口。

单击“增加表达式”按钮,系统将打开引用界面,这里选择“常量”页,“比较”输入框选择“大于”,数值为“3”:



最后增加条件完成条件设置。“确定”退出。

常用操作:

主要实现“START”,“STOP”按钮的操作判断:



条件间的逻辑关系:

如果已经设置一个条件,再增加一个条件,会自动弹出条件间关系的设置窗口。依据需要,选择相应的逻辑关系既可。

“和”关系:“条件1”和“条件2”,“和”关系表示两个条件都成立,则条件成立。

“或者”关系:“条件1”或者“条件2”,表示两个条件中有一个成立,则条件成立。

“非”关系:“条件1”非“条件2”,表示条件1成立条件2不成立,则条件成立。



2.5.3程序模块库

该库包含的模块主要完成系统函数的调用,表达式的赋值,进程开启关闭以及子程序调用等高级功能。

2.5.3.1调用系统函数

系统内部集成了丰富的函数,很多函数并没有定义到模块中去。通过此模块可以调用这些函数,如下图:



其中:无返回值类函数起到“过程”的作用,只完成任务,不返回任何值。

返回值为数值类型的函数将返回一个结果。

2.5.3.2表达式定义模块

主要实现变量的赋值(初始化)。一个表达式定义模块可以包含多个表达式定义。

参数的设置首先需要添加变量。单击“引用”打开变量引用窗口。“增加”可以增加一个表达式定义。

如:往模块里增加“i=ananlog(3)”,操作如下:

如果还未设置变量则先打开函数属性定义变量。在下拉框中选择对应的变量“i”





单击“引用”打开引用窗口。选择“模拟输入”,端口选择“3”,确定退出。



单击“增加”完成表达式的添加。

2.5.3.3进程模块

(1)关于进程

所谓的进程就是一个并发执行的子程序,在机器人平台中来讲,开启一个进程意味着系统会给这个进程分配50ms的执行时间.

进程的实体就是某个函数.

如下面这段程序:()

voidmain()

{

start_process(music());

while(1)

{

tone(1000.0,1.0);

}

}

voidmusic()

{

while(1)

{

beep();

}

}

再看这个:(由于music里面是个死循环,程序将不会再往下,我们只能听到连续不断的beep声,tone(1000.0,1.0)将不会发生.)

voidmain()

{

music();

while(1)

{

tone(1000.0,1.0);

}

}



voidmusic()

{

while(1)

{

beep();

}

}

进程函数的定义和普通函数的定义没有任何区别(函数管理)。一个程序可以包含多个进程,这些进程将同时被执行。

进程的操作依靠进程标志进行。进程标志实际是一个int型变量,同建立普通变量没有区别。

下面用具体的例子说明进程的开启与关闭。



准备工作:声明进程标志变量名为ret,数据类型为int,增加函数func。

(2)开启进程模块

选择一个函数,单击“增加”,将此函数增加为进程。如果误操作,可以“删除”。



如果该函数有参数,则自动在“参数”一栏中列出,用户可单击“修改”进行函数参数的设置。

如果以后不对该进程进行操作,可以忽略进程标志的设置。如果以后需要关闭该进程,则必须给该线程设置一个进程标志返回值,这里我们选择ret。确定退出。

(3)关闭进程模块

选择当前关闭目标进程,单击“>>”按钮,完成退出。





注意:一个开启线程模块可以拥有多个线程的开启,一个关闭线程模块也可以拥有多个线程的关闭。

2.5.3.4调用子程序

子程序的调用操作类似与线程开启。下面以实际例子进行说明。



准备工作:增加函数migong。



选择migong函数,增加为“子程序条用模块”拥有的函数,如果该函数有参数,通过“修改”按钮可以修改参数的值。

如果该函数有返回值,而且需要使用这个返回值,则可以通过“选择返回值变量”下拉框给该函数设定。

2.5.3.4子程序返回

该模块主要用于子程序的返回值定义。

如:定义fire函数,fire函数的返回值定义为int类型。1表示灭火成功,0表示灭火失败。



2.6常见问题及解决办法

2.6.1程序启动失败

请确认操作系统安装正常,并且数据库驱动升级文件已经正确安装。

2.6.2流程图显示不完全点击“程序选择”下拉框即可

2.6.3无法将程序下载到机器人中(1)、检查当前选择的串口是否为机器人实际连接的串口。请“取消”下载,然后“刷新串口”,选择串口,重新下载。(2)、检查是否已经打开机器人的电源。下载操作系统,将电源开关拨往左边的“系统”档位;下载用户程序,将电源开关拨往右边的“下载程序“档位。(3)、如果提示框中出现编译错误的提示,则请提示,修改源程序的错误。

















Robot-51智能车图形化编程平台软件系统设计报告







献花(0)
+1
(本文系guitarhua首藏)