Robolab 29 编程指南中文版83-111页.pdf

上传人:asd****56 文档编号:70322536 上传时间:2023-01-19 格式:PDF 页数:31 大小:8.63MB
返回 下载 相关 举报
Robolab 29 编程指南中文版83-111页.pdf_第1页
第1页 / 共31页
Robolab 29 编程指南中文版83-111页.pdf_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《Robolab 29 编程指南中文版83-111页.pdf》由会员分享,可在线阅读,更多相关《Robolab 29 编程指南中文版83-111页.pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、ROBOLAB编程指南(中文版)ROBOLAB 2.9ROBOLAB 2.9 第四章:数据采集和虚拟仪器 20 红魔个人认为使用传感器没必要拘泥于传感器的设计初衷,用巧妙的方法可以扩展传感器的功能,用超声波来测量风扇的转速就是一个不错的方法哦!第四章:数据采集和虚拟仪器 21 程序在原有的基础上做了点修改,也很简单明了的。第四章:数据采集和虚拟仪器 22 由于风扇叶片有一定的宽度,所以在测量时被叶片阻挡的时间并不很短暂,就会在图像上留下平头方波的样子,测量得到的图像完全符合实际情况。下面红魔来给大家分析下如何来分析上传的图像吧 由于风扇是有两片叶片,所以就可以从图像上看到低谷一次就表示超声波被

2、叶片阻挡一次,那么两次遮挡就代表风扇旋转了半圈。从测量来说读取第一次低谷起始时刻和第三次低谷时刻之间的时间就是风扇旋转一周所用的时间了。用这个方法测量低速旋转的风扇来说是很准的哦!第四章:数据采集和虚拟仪器 23 红魔测完风扇的转速也休憩够了,想去消化消化,四下观望看到了一个更有意思的装置。第四章:数据采集和虚拟仪器 24 踩着踩着红魔感觉有点乏味,于是就有了点新的思考 于是就有了以下于是就有了以下.第四章:数据采集和虚拟仪器 25 4.虚拟仪器的小实验“转速实时测量”4.虚拟仪器的小实验“转速实时测量”第四章:数据采集和虚拟仪器 26 进入前面板后就出现了两个数字显示图标它们分别对应了后台中

3、的两个建立的指示器,选第二个数字显示后点右键选择快捷菜单选项如下图所示。为的是给红魔更换个类似时速表的图标,那看起来才够有意思哦。第四章:数据采集和虚拟仪器 27 第四章:数据采集和虚拟仪器 28 第四章:数据采集和虚拟仪器 29 这里真是有趣哦,又休闲又学到了不少,简直就和自己设计了个游戏机一样,哈哈!第五章:乐高机器人其它开发平台介绍 第五章第五章 乐高机器人其它开发平台介绍乐高机器人其它开发平台介绍 5.1 乐高机器人软件平台 乐高机器人软件平台 随着乐高机器人被各个年龄层次的爱好者所广泛接受,不仅仅在中小学中被用来培养学生的创新实践能力,而且在一些国内外的大学和研究机构中也用来作为机器

4、人教学和实验的重要工具。正是由于乐高机器人具有很高的易组合性和扩展性,自从 1998 年乐高公司将“头脑风暴”机器人推出以来,除了我们所熟知的功能强大的图形化编程软件 RoboLab 以外,一些个人或大学也在根据自身研究的需求,开发出各种基于不同语言的开发平台,如 Basic,C 语言,Python 等,并且已被应用在乐高机器人的编程控制上。特别是新一代乐高 NXT 机器人的推出,凭借其强大的 32 位 ARM 处理芯片,蓝牙通讯功能,更多的扩展接口和技术组件,乐高机器人所蕴含的巨大开发潜力被越来越多的个人和团体所关注,希望通过其灵活的搭建方式去解决更多实际问题和组件各种自动化、机器人模型。目

5、前,针对乐高机器人开发的软件平台和工具软件主要有如下一些:软件名称软件名称 功能与特性功能与特性 语言环境语言环境 开发商开发商 RoboLab 乐高官方机器人套装开发软件,可以实现对 RCX、NXT 的编程。ROBOLAB 的编程环境共分为 3 个级别:初学者级别(Pilot Level)、发明家级别(Inventor Level)、研究者级别(Investigator Level),每个级别又分数个等级,由浅入深,共有 13 个等级,使用者可以根据年龄、水平来选择不同的编程等级。图形化编程方式 G 语言 美国国家仪器公司(National Instrument)LEGO MINDSTORM

6、S Edu NXT 乐高官方 NXT 机器人开发软件。基于 LabVIEW引擎开发的简单易用的拖放式、图形化界面编程软件。图形化编程方式 美国国家仪器公司(National Instrument)Microsoft Robotics Studio(MSRS)微软开发的可在不同机器人上编程的软件平台。其中可以实现对 NXT 和 RCX2.0 的编程与开发。MSRS包 括 一 个 可 视 化 编 程 环 境Visual Programming Language,模拟机器人仿真环境Visual Simulation Environment 和一个结合 Visual Studio 2005 使用的服务

7、运行时程序库 Runtime Visual C#,Visual Basic,Python,Visual Programming Language(VPL)微软(Microsoft)RobotC 卡内基-梅隆大学最新开发的一款基于标准C语言的编程环境,支持对 NXT,RCX 的编程。界面简单,易于操作,适用于对机器人 C 语言编程的初学者。C 语言 卡内基-梅隆大学(Carnegie Mellon University)Bricx Command Center 一款由个人开发的集成化开发环境(IDE)。通过使用NQC,NBC和NXC语言可以对NXT和RCX进行编程,是目前除 RoboLab 之外

8、最为常用的乐高机器人编程软件。NQC NBC NXC John Hansen 表 5-1 第五章:乐高机器人其它开发平台介绍 除了以上所列出的常用乐高机器人编程软件平台外,还有许多小型工具软件和控件可以实现对 NXT 和 RCX 的编程与控制。软件名称软件名称 软件描述软件描述 作者作者 SDK,HDK,BDK 乐高官方的软件、硬件和蓝牙开发工具包 乐高公司 LabVIEW Toolkit for LEGO MINDSTORMS NXT 用于 LabVIEW 的乐高 NXT机器人开发软件包 美国国家仪器公司(National Instrument)BrickTool 应用于 PC 机与 NXT

9、 之间通讯的蓝牙工具软件 John Hansen ICommand 用于对 NXT 远程控制的JAVA API 控件 Brian Bagnall NXT#用于.NET 编程开发的乐高NXT 函数库 Bram NXT Perl API 基于 Perl 语言的 NXT API 控件 Michael Collins Ruby-NXT 基于 Rudy 语言的 NXT 远程控制的函数库 Rubyforge.org LibNXT 基于 C 语言的 NXT 通讯函数库 David Anderson NXTender 基于 JAVA 的控制软件,用于NXT 控制 PC 主机 Sivan Toledo NXTC

10、 一种类似于 C 的 NXT 开发软件,可以转换为 NBC 代码 Phillip Van Eeden MindSqualls 用 于NXT远 程 控 制的.NET/C#函数库 Niels NXTRICedit 用于创建NXT中LCD图像的编辑软件 Andreas Dreier Dashboard LEGO NXT 可视化 NXT 控制软件 RoboDNA NXTDirector 基于 Palm 平台掌上电脑的NXT 控制软件 Razix NXTBrowser 用于Mac计算机上的NXT文件系统浏览器 Carstenm 表 5-2 下面我们就将结合一些简单的应用实例来介绍上述乐高机器人软件平台的

11、简单使用和程序开发。第五章:乐高机器人其它开发平台介绍 5.2 Microsoft Robotics Studio 5.2.1 走近微软机器人工程开发平台走近微软机器人工程开发平台 大家在乐高机器人的设计搭建中一定发现了其上百种机械零件,多种电子传感器和电机可以任意组合成各种机械结构、自动化系统,因此凭借如此的灵活性和多样性,乐高机器人无疑已经成为从小学到高校,甚至研究机构的首选实验器材和教学工具。正是因为有着如此巨大的优势,以及乐高机器人在世界上的知名度和普及程度,所以成为微软在机器人领域里的第一个合作伙伴,并且在其最新推出的机器人工程开发平台中也包括了对乐高 NXT 和RCX 机器人的支持

12、。下面我们就将要开始探索在微软机器人工程开发平台中使用乐高 NXT 机器人。首先,让我们来看看,都有哪些机器人可以在这个机器人平台中运行。作为一款通用型的机器人工程开发平台,它可以支持乐高的 NXT 机器人、RCX2.0 头脑风暴机器人和慧鱼机器人,除了这些教学上常用的机器人器材之外,微软机器人工程平台还支持许多特种机器人,甚至是工业机器人,例如,iRobot 公司的 Roomba 机器人吸尘器,Kuka 工业机器人,Robotsoft 公司的移动机器人等。图 5-2-1 正因为其有着强大的通用性和兼容能力,用户不需要考虑机器人低层部分的硬件结构和驱动,根据自己的需要,只需通过几步操作,就可制

13、造属于自己的机器人,降低了机器人开发的门槛,使得更多的人有机会去接触机器人的设计。并且,同样的程序不仅可以在 NXT机器人上运行,甚至可以在 RCX 或其它的机器人上执行,做到了一种与硬件无关联的编程方式。打个比方,通过微软机器人工程开发平台对于机器人的编程就像我们在 Windows 上操作计算机一样,例如程序员要编写一个光驱读盘的程序,他只需要在程序中调用几个读盘 第五章:乐高机器人其它开发平台介绍 的命令就可以将光盘中的数据读入到硬盘中,而无需对光驱中的马达和激光头做任何控制,而且我们是否发现,同样的程序是不是都可以在不同型号类型的计算机中运行呢?这一切的硬件操作都要归功于安装在计算机中的

14、 Windows 操作系统,是它根据程序员所编写的指令,替我们完成了这一系列复杂的操作。因此,微软机器人工程开发平台就像我们使用的Windows 操作系统一样,方便了更多人编写在计算机上可操控机器人的商用软件,这也意味着以后我们就可以通过智能型手机操控可爱的机器狗或清扫机器人。了解了微软机器人平台的这些特点之后,就让我们来实际认识一下这个强大开发平台的组成部分。整个开发平台主要由三部分组成,包括:?基于.NET 的服务运行时库(Services-oriented Runtime)?可视化编程工具(Visual Programming Language)?机器人 3D 仿真环境(Visual S

15、imulation Environment)1服务运行时库:服务运行时库:为了使用户开发更加便利,在微软机器人工程开发平台中提供了许多机器人服务程序库,这些程序库就好比是许多机器人程序模块,包括各种传感器、电机马达、显示窗口等各类服务程序,通过在开发软件中任意组合这些功能模块,使得利用 WEB 网页或 Windows界面访问机器人的传感器或传动装置变得简单易行。图 5-2-2 图 5-2-2 所示为协调器接收触动传感器发出的信号,通过消息机制在 Windows 的消息框中显示出“Hello World”字样的一个流程,其中的每个部分就是一个服务程序。要实现这个简单而有趣的程序,我们就需要使用一

16、个能编写这些程序的开发软件,而在 Microsoft Robotics Studio 中是不带有编写代码程序的软件。目前,我们只能通过 Microsoft Visual Studio 2005 中的 Visual C#、Visual Basic 或 Microsoft IronPython 来运行这些服务程序库。用户可以通过微软网站下载到免费的 Microsoft Visual Studio Express Editions for writing C#和 VB.Net。2可视化编程工具:可视化编程工具:由于上述提到的这些编程开发软件适用于有一定编程基础的爱好者来深度挖掘机器人控制程序,而对于

17、一般用户,微软机器人工程开发平台则提供了一套基于图形的可视化编程工具,可以让非专业程序员在简单的图形编程环境中轻松编写机器人程序。这套基于数据流的可视化编程工具 Visual Programming Language(VPL)类以于 Robolab 的编程方式,用户通过拖放已有的程序模块并通过连线来组合自己的机器人控制程序,例如,可以将一个触碰传感器模块与判断分支和马达模块相结合来编写一个简单的机器蚂蚁的运动程序。此外,我们还可以将此简单的程序封装成一个大的模块程序,这样就可以实现程序的重复利用,以后只需在其它的程序中加入这一模块程序,即可以实现机器蚂蚁的功能了。协调器 协调器 Orchest

18、rator 消息框消息框 Message Box 触动传感器触动传感器 Bumper 第五章:乐高机器人其它开发平台介绍 图 5-2-3 3机器人机器人 3D 仿真环境:仿真环境:在机器人的程序设计中,仅仅完成代码的编写还不能够算是真正设计出一套可用的程序,还需要结合机器人实际工作进行调试,从中发现问题并加以改进。在乐高机器人的设计中,我们也经常遇到环境光值测量、电机马达调速、运动姿态纠正等调试工作,因而脱离了机器人实体,我们很难保证设计程序的可靠性。然而,在很多情况下,受到条件限制无法得到真正的机器人用来调试。因此,在微软机器人工程平台中所提供的机器人 3D 仿真软件正好解决了这个矛盾,方便

19、了手头没有机器人的程序员在这个虚拟的环境中调试机器人。这款3D 仿真软件中使用了多用于游戏开发中的 AGEIA PhysX Technology 虚拟物理环境技术,使得仿真效果更加逼真。但是虚拟场景毕竟与真实环境不同,有许多隐藏的物理因素,像噪声干扰等不能完全被模拟在软件中,因而通过仿真环境调试下的机器人与实际机器人的工作情况仍有不同。图 5-2-4 第五章:乐高机器人其它开发平台介绍 5.2.2 基础小实验基础小实验 在前面的介绍中,我们略微认识了微软机器人工程开发平台的各个组成部分,下面我们就将使用其中的Visual Programming Language 来编写一个乐高NXT机器人的无

20、线导航控制程序。在这个程序中,我们的乐高 NXT 机器人将使用 2 个电机马达、一个 NXT 控制器并且和一个能在计算机上运行的导航方向盘。我们先打开 Microsoft Robotics Studio1.0 下的 Visual Programming Language 程序,出现如图 5-5 的程序界面。图 5-2-5?基础活动栏(Basic Activities):提供我们编程中常用的模块,包括活动模块(Activity)、变量模块(Variable)、计算模块(Calculate)、数据模块(Data)、数据合并模块(Join)、分支汇总模块(Merge)、判断分支(If)、条件选择分支

21、(Switch)、列表模块(List)、列表功能模块(List Functions)和注释模块(Comment)。?服务程序库(Services):提供以开发的用于机器人功能开发的程序模块集,包括我们常用的游戏控制手柄(Game Controller)、电机模块(Generic Motor)、碰触传感器(Generic Contact Sensor)、乐高控制器(LEGO NXT Brick)等。?项目资源栏(Project):显示现在编辑项目的使用文件和配置。?属性栏(Properties):显示和编辑选定模块的属性和功能。?工具栏(Tools):提供包括文件编辑、选项设定、程序调试运行等功

22、能。步骤步骤 1:选择程序模块:选择程序模块 为了能在计算机上显示导航方向盘的界面,我们在服务程序库(Services)中选择导向对话框(Direction Dialog)并拖放到主编程区域中。然后,从基础活动栏(Basic Activities)中依次将计算(Calculate)模块、条件选择模块(Switch)、数据模块(Data)按顺序添加到编程区域中,如图 5-2-6 所示。第五章:乐高机器人其它开发平台介绍 图 5-2-6 步骤步骤 2:连接各个模块并设置参数:连接各个模块并设置参数 完成了上述图标的选择后,我们就需要将这些图标用连线的方式将它们串联成一组程序,并在各个模块中设定相应

23、的参数完成编程,其用法与 Robolab 类似,最后在服务程序栏(Services)中选择电机控制模块(Generic Differential Drive)去驱动乐高 NXT 机器人的左右两个电机马达,见图 5-2-7 所示。图 5-2-7 当我们在计算机里的导航方向盘中按下某一个方向键后,所选按钮的名称就会从Direction Dialog 中输出,经过 Switch 分支判断所得到的消息是什么按键命令,然后输出到相应分支的数据设定模块中,给定电机的马达功率,最后控制电机马达以所设的功率运行。注意,在微软机器人工程开发平台中,对于马达功率的控制范围用-1 到 1 内的数值表示。第五章:乐高

24、机器人其它开发平台介绍 步骤步骤 3:选择机器人并执行程序:选择机器人并执行程序 完成了前两步的设定,我们导航机器人的程序编写也就告成了。接着就要做一项非常重要的工作,即机器人的选择。我们在前面的介绍这种已经知道微软机器人工程开发平台作为一款通用的软件,可以用于各种不同的机器人。因此,我们就要在一些输入或输出的模块中进行选择设定,告诉程序所要使用的机器人。在此。我们使用的是乐高 NXT 机器人。右击程序中的 Generic Differential Drive 图标,选择 Set Configuration 并在弹出的页面中单击Import Manifest 按钮,出现如图 5-2-8 的选择

25、界面。图 5-2-8 在 这 个 界 面 中,可 供 我 们 选 择 的 机 器 人 种 类 有 许 多,我 们 可 以 选 择LEGO.NXT.TriBot.manifest.xml 用 于 控 制 手 边 的NXT机 器 人,也 可 以 选 择LEGO.NXT.Tribot.Simulation.manifest.xml在微软机器人工程平台中的3D仿真器中运行乐高NXT 机器人。最后,按 F5 或工具栏菜单中的 Start 命令启动程序实现我们所编写的程序。在微软机器人工程平台中,要控制乐高 NXT 机器人只有通过蓝牙的方式进行程序传输和联机,当启动我们的程序后,系统会自动下载一个名为MS

26、RS2006的程序到NXT的控制器中并自动运行,作为一个监控程序,它会自动采集机器人上传感器的信息和执行PC主机对于NXT的控制命令。当完成蓝牙连接并成功在计算机上运行所编写的程序后,我们会在 IE 浏览器中看到一个 NXT 机器人的控制网页和我们所期望看到的导航方向盘。第五章:乐高机器人其它开发平台介绍 图 5-2-9 此外,如果你选择的是乐高 NXT 机器人的模拟器后,会在计算机中出现如图的仿真界面,按导航方向盘中的按键也同样能够操控其中的乐高 NXT 机器人运行,如图 5-10。图 5-2-10 除了以上所提到的功能之外,微软机器人工程平台还有许多有趣的模块可以供用户自由开发,例如可以增

27、加游戏手柄来代替导航方向盘,使用 MSN 来远程控制你的乐高机器人等,有待大家进一步的探索和开发。第五章:乐高机器人其它开发平台介绍 5.3 RobotC 5.3.1 探索探索 RobotC RobotC 是美国卡内基-梅隆大学(Carnegie Mellon University)最新开发的一款基于 C语言对 NXT,RCX 和 VEX 机器人进行编程的集成化开发软件。作为支持多机器人平台的开发环境,它即可以方便机器人爱好者们使用代码的方式给乐高机器人编程,又可以作为大学普及机器人知识与 C 语言的实用教学工具。在图形化编程中,由于软件编程方式的高集成度,势必造成编译后的程序代码容量偏大,执

28、行效率偏低。而 C 语言却有着高灵活性、移植性等特点,因而提高了机器人程序的执行效率,简单说就是使程序更强壮,因而也可以作为机器人比赛中编程方式的一个较好选择。说了那么多 RobotC 的优点,下面我们就一起来看看 RobotC 在使用上与其它软件有什么不同。1软件工作界面软件工作界面 当我们打开 RobotC 的软件界面时,可以发现其与 Robolab 在工作环境上存在着很大的差异。它没有可供我们放置程序图标的窗口,也没有出现那些在 NXT 和 RCX 编程时常用的马达、传感器、判断等程序模块,取而代之的是一个较大空间的程序代码编辑窗口和一些基本工具栏。图 5-3-1 从图 5-3-1 中可

29、以发现,RobotC 的工作界面主要由三个部分所组成。分别是用于编辑 C 语言程序代码的代码编辑窗口;用于下载和调试的工具栏与菜单;和能够浏览所有 RobotC 函数和命令的代码模版窗口。第五章:乐高机器人其它开发平台介绍 代码编辑窗口:代码编辑窗口:与其它使用 C 语言或 Basic 语言编程的软件相同,RobotC 也提供了一个基本的代码编辑窗口,用户可以在此窗口内键入自己的 C 语言代码。RobotC 中的 C 语言使用方法与标准C 语言语法基本相同,具体的 C 语言用法请参见相关的 C 语言教程和 RobotC 中的帮助文件。在该窗口中编辑 C 语言时一定会注意到,位于窗口的左侧有一排

30、递增的数字标号,这就是程序的行数标识,其作用就是使得用户可以清楚地得知自己程序的长度以及当前语句所在的位置。同时,当程序编译出错时,也可以通过该行数标识迅速地找到提示警告的语句,方便修改。此外,在编写程序的过程中,为了能使用户更直观地了解所输入语句的正确性,系统也会根据用户输入代码的不同,对不同命令采用各种颜色提示。例如,对于已经定义好的函数和语句,如 Motor()、Wait1Msec()、while 和 if 等关键字,在编写程序时系统就会使用蓝色字体着重突出。而这些函数的参数则使用红色字体作为提示。这样,当我们编写程序时就可以立即得知所输入命令的正确性,发现其并未被系统识别时,则需要注意

31、是否存在拼写或使用上的差错。对于一个刚入门的编程者来说,对所编写的程序添加注释无疑是相当重要的一项工作。在 RobotC 中,同样也可以使用“/”来为某一行的语句加注注释,也可以使用“/*”和“*/”来为程序添加多行注释内容。与前面提到的系统颜色提示相似,当使用了注释功能后,这些注释文字也都将变为绿色,并程序代码中显示。值得注意的是,所添加的注释内容在程序编译时并不会被系统所加载,因而也不会在机器人程序中被运行,仅仅是作为方便程序员阅读程序时所作的解释而已。代码模版窗口:代码模版窗口:为了便于刚接触 RobotC 的用户全面地了解和掌握其中的系统函数和命令,RobotC 在软件界面的左侧提供了

32、一个代码模版的窗口栏,在该窗口栏中列出了所有 20 个大类的系统函数库,其中包括,蓝牙控制函数、NXT 液晶显示函数、IO 口输入输出函数、电机和传感器等各类丰富的库函数。用户除了直接将所需的函数从代码编辑窗口处输入之外,也可以通过代码模版窗口中选取所需要的函数命令,并将其拖放到代码编辑窗口中,并根据提示输入相应的函数参数,完成语句的编写。仔细的读者可以发现,该方法与 Robolab 中拖动程序图标的方式有些接近。只不过不同的是,在 Robolab 中我们拖放的是图标而在 RobotC 中而是拖动程序代码和函数来完成机器人程序的编写。除了在代码模版窗口中能够直观的了解所有系统函数之外,当我们双

33、击该窗口中的某一函数时,软件会自动弹出一个帮助窗口,对所点击的函数进行解释说明,这样就能够更好的帮助用户了解函数的意义和其正确的使用方法。工具栏与菜单:工具栏与菜单:与其它所有 Windows 程序一样,RobotC 也有自己的工具栏和菜单。在工具栏中,除了我们常见的文件新建、打开、保存、打印等这些文件操作图标之外,对于 RobotC这样的编程软件来说控制程序的运行、停止、单步调试等Tips C 语言是 1972 年由美国的 Dennis Ritchie 设计发明的,并首次在UNIX 操作系统的 DEC PDP-11 计算机上使用。它由早期的编程语言BCPL 发展演变而来。随着微型计算机的日益

34、普及,出现了许多 C 语言版本。由于没有统一的标准,使得这些 C 语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为 C语言制定了一套 ANSI 标准,成为现行的 C 语言标准。第五章:乐高机器人其它开发平台介绍 功能是必不可少的,因此在该软件中也加入了更多的编程元素,我们通过软件上方的工具栏就能够迅速地完成这些功能,实现对乐高机器人的编程与控制。下面我们就来一一了解一下这些有特色的菜单功能。?File:文件操作菜单。包括文件的新建、打开、保存、打印、最近使用文件等。?Edit:编辑菜单。主要提供用户在编辑代码时的复制、粘贴,查找、标记程序段等功能。?View:

35、视图菜单。通过该菜单,我们可以查找到所用系统函数被定义的头文件,并且可以方便的在当前所编辑文件与各个头文件之间实现切换。另外,View 菜单下的 Preferences 选项可以对 RobotC 进行功能设置,包括机器人的选择,软件存盘路径,代码编辑器,调试器和编译器等参数的设置。?Robot:机器人菜单。这是 RobotC 中功能最多也是最重要的菜单。其中包括程序的编译与下载,机器人的调试与测试工具包,机器人工作平台的选择,电机和传感器的设置和乐高机器人固件下载等功能。我们在使用 RobotC 时的大部分工作都将通过这个菜单中的选项来完成。?Windows:窗口菜单。可以选择基本软件功能和专

36、家级软件功能。当用户选择了专家级 功能之后,则能够在 View 菜单中显示多个与当前编辑文件有关的头文件;在 Robot 菜单的 NXT Brick 子菜单中也增加了 Test I2C 菜单,可以对 NXT机器人进行 I2C 测试。?Help:帮助菜单。提供最基本的 RobotC 使用帮助及示例程序。2调试工具调试工具 我们之所以要介绍 RobotC,除了它提供了一种使用 C 语言对 NXT 和 RCX 进行编程控制的选择之外,另一个重要的原因,同时也是 RobotC 一项突出的特点,就是它有着一套完整的测试和调试工具。这个重要的工具对于乐高机器人爱好者来说,特别是想研究 NXT 高级功能的用

37、户是非常合适的。下面我们就来探究一下几个有用的测试和调试工具。Program Debug(程序调试):(程序调试):打开 Robot 菜单下的 Debugger 选项,在 RobotC 的界面上便会弹出 Program Debug 对话框。这是一个总的调试控制窗口,通过该对话框中的控制按钮就能够启动和停止已下载到NXT 机器人上的程序,并且选择数据的刷新频率。与此同时,我们也可以在 Robot 菜单下的Debug Windows 里选择更多的测试工具,如Global Variables,NXT Devices,Task Status,Event Variables,Task Stack,Sys

38、tem Parameters,Datalog。一旦选择了这些工具,那么在联机运行状态下,也会随着程序调试窗口的启动而一起运行,便于用户立即监视机器人的运行状态。NXT Devices(NXT 设备):设备):NXT Devices 测试工具主要是用来监测与 NXT 机器人相关的一些硬件性能指标,如马达功率、传感器返回数值和 NXT 控制器的电池电量等。从图 5-3-3 中我们可以看到,整个监测界面分为两个部分,即马达和传感器设定区域与设备数值监测区域。用户能够在设定区内设置 NXT 控制器中连接 3 个输出端口的电机运行速度,或 4 个输入端口的传感器类型,并且选择返回数据的类型,如用于触动传

39、感器的布尔类型值、超声波和光电传感器的百分比数值,和超声波传感器的原始数据类型等。一旦我们设定完这些设备之后,便可以即时地通图 5-3-2 第五章:乐高机器人其它开发平台介绍 过上方数据监测区观察到各个传感器的数值变化与电机的运行情况,方便我们在实验时进行数据采集和调试。另外,在 Robot 菜单下的子菜单 NXT Brick 中 Poll Brick 选项也能用于 NXT 机器人的马达与传感器监测。与 NXT Devices 工具不同的是,Poll Brick 工具能够在 NXT 机器人程序不运行时实现对各个传感器数值的监测和马达的控制,而 NXT Devices则须先启动 Debugger

40、工具,并且在当前程序运行的过程中才能够实施监测。但在使用方面,两者均相同。图 5-3-3 Global Variables(全局变量):(全局变量):当我们编写程序时,不可避免地在程序中需要用到各种变量来暂存传感器的读数或辅助各类的数据计算。但你有没有想过在机器人程序运行时观察一下这些变量的变化呢?现在,RobotC 就提供了这样一个功能,通过 Global Variables 窗口,我们可以在程序运行时,监测255 个你所定义的全局变量的数值,这样一旦你发现程序计算的结果与预期有差异时,就可以通过观察全局变量的变化情况,跟踪程序的运行过程,进而进行调试与纠错。Task Status(任务状态

41、):(任务状态):与前面介绍的 Global Variables 监测窗口类似。在编程中,除了会定义较多变量之外,我们也习惯将机器人要完成的不同任务使用不同函数或过程进行区分,做成一个个任务某块的方式,方便相互调用。在 RobotC 中,我们同样可以采用 Task 的任务方式将这些程序区分开。通过 Task Status 窗口便能够在程序运行时同时监测多个任务的运行情况,并在窗口中显示各个任务的 PC 地址指针和 SP 堆栈指针,这些指针数据都将会随着程序的运行而发生变图 5-3-4 第五章:乐高机器人其它开发平台介绍 化。对于乐高机器人的高级用户或 C 语言爱好者来说,探究程序的运行状态是一

42、件有意义的事,同时也能提高自己对于 C 语言工作原理的理解。File Management(文件管理):(文件管理):在全新的 NXT 机器人中,已经不再像过去的 RCX 机器人仅能储存 5 个程序。NXT 的程序存储数量是没有限制的,因而如何有效得管理这些在 NXT 机器人上的文件,包括程序文件、声音文件、系统文件等,就显得十分重要。正因为如此,在 RobotC 中提供的文件管理器工具也将会成为我们日后管理 NXT 机器人程序的好帮手。通过文件管理器工具,我们能够在连接 NXT 机器人后看到当前已存于 NXT 上的文件名称、文件类型和文件大小。同时,利用其提供的多种功能按钮,我们可以实现程序

43、的运行、停止,文件的下载、删除等功能。有趣的是,这个文件管理器还具备文件上传的功能,即选中某个存于 NXT 里的文件之后,我们可以通过 Upload 将该文件从 NXT 机器人上传至我们的计算机中进行编辑,这一功能在同类的乐高机器人软件中是不多见的。图 5-3-6 图 5-3-5 第五章:乐高机器人其它开发平台介绍 Test I2C(I2C 测试):测试):RobotC 中提供的 Test I2C 工具是针对乐高高级用户所专门开发的测试工具。由于 NXT控制器的 4 个输入端口具备 I2C 通讯功能,很多外围器件如存储器、监控芯片等也提供 I2C接口。通过接口扩展,NXT 的每一个输入端口都可

44、以连接多个 I2C 芯片,而每一个芯片又可以实现多个输出、输入功能,因此 NXT 将不再受限于端口数量的限制。对于乐高发烧友来说就可以尝试自己开发一些数字传感器或外部扩充设备,使用 I2C 数字通讯协议与乐高NXT 控制器进行连接。目前,超声波传感器就是使用该方式的数字传感器。在 RobotC 的Test I2C 中,我们只须简单的选择输入端口,并设定返回的数据类型就能够实现对 I2C 设备的通讯测试。有着 I2C 的通讯协议的帮助,开发自己的乐高外扩设备就将变为一件较为简单的事。举个简单的例子,为了使传感器读数可以被保存下来,不因断电而丢失。我们可以给NXT 机器人增加一块 32K 字节的

45、24LC256 数据储存芯片,将芯片上的 I2C 引脚与乐高专用电线中对应引线相连接,并插入 NXT 控制器的输入端口。这样,就可以在程序中将传感器读入的大量数据通过 RobotC 中的 I2C 读写指令存入数据储存芯片中,实现大数据量的数据采集工作。可见,NXT机器人中的 I2C 接口不仅扩展了乐高机器人的应用范围,而且也满足乐高发烧友的 DIY 需求。图 5-3-7 第五章:乐高机器人其它开发平台介绍 图 5-3-8 5.3.2 基础小实验基础小实验 了解了那么多关于 RobotC 的功能特性和编程调试工具之后,我们就来实践动手操作一下 RobotC 的编程方式,看一看用 RobotC的

46、C 语言编程与 Robolab 的图标方式编程有何不同。这次我们的实验任务是要完成一个简单的 NXT 机器人黑线跟踪程序,通过这个简单的实验,使我们对于 RobotC 中控制的传感器、马达、判断分支的使用有简单的认识。步骤步骤 1:NXT 机器人设置机器人设置 当我们第一次使用RobotC对NXT机器人进行编程控制时,需要对 NXT 进行一下简单的设置,包括更新 NXT 的固件程序,以符合 RobotC 的运行要求。打开桌面上的 RobotC 程序,首先在Robot 菜单的子菜单 Platform Type 中选择将要使用的机器人平台。在这里,我们选择LEGO Mindstorms NXT 机

47、器人。第二步,就要更新当前 NXT 机器人的固件程序。同样在 Robot 菜单中选择 Download Firmware 选项,这时系统会自动地通过蓝牙发射器或 USB 方式搜索已连接的 NXT 机器人。当搜索完成,实现成功连接之后,便会在该对话框中更新显示目前 NXT 机器人的名称和设备地址。这时,便可点击 F/W Download 按钮,选择所要更新的 RobotC 固件程序,系统就会自动对 NXT 机器人固件进行刷新,待 NXT 机器人被重启之后就完成了初始化 NXT 的工作。以后再进行联机时,就无需进行此项设置了。图 5-3-9 步骤:定义电机马达和传感器步骤:定义电机马达和传感器 当

48、我们在设计一个 NXT 机器人时,都是由自己来定义某个传感器或马达所对应 NXT中的端口,但如何能将这些自己的设置告诉软件,让它去正确的找到所对应的传感器和马达呢?在Robot菜单下的Motors and Sensors Step选项中我们便可帮着我们完成该项定义。在这个实验中,我们所要使用的传感器并不多,机器人在黑线跟踪的过程中只须一个能够检测黑线的探测器即可,那就是光电传感 第五章:乐高机器人其它开发平台介绍 器。通过 Motors and Sensors Setup 选项就能用来对 NXT 控制器的输入输出端口进行分配,指定马达和传感器的类型。图 5-3-10 为了使光电传感器能够在程序

49、中被识别,因而在 Motor and Sensor Setup 中 A/D Sensors选项单的 S1 处,即 NXT 控制器输入端口 1 中设置所要使用的光电传感器。同时,可以给该传感器取名为 lightSensor。如此一来,在以后的程序编写中只须引用 SensorValue(lightSensor)命令便可实现对该光电传感器的访问。当完成了所有的这些设置后,软件自动地会在程序的开头处生成一段与用户所定义传感器相对应的语言代码。在完成了前面机器人感知部分的设计之后,接下来的工作就是要能够给机器人配备一个输出执行机构,即电机马达。为了能控制机器人前进和后退,我们就需要编写指令来开启我们事先

50、所设定的马达。在 RobotC 中我们可以使用 Motor 指令来完成这一操作。在 Motor 指令的括号中,参数 motorA 代表设置在 NXT 控制器A 输出端口的马达,motorB 代表 B 输出端口的马达。马达的功率级别用-100 到 100 来表示。步骤:编写控制语句并完成程序步骤:编写控制语句并完成程序 在编写程序前,我们不妨先考虑一下,完成这么一个任务需要让机器人进行哪些“思考”。在黑线跟踪这一任务中,机器人所要“思考”的内容很简单,即机器人的传感器检测到黑线之后使之远离黑线;当传感器脱离黑线的范围时,设法让机器人靠近黑线。这样一来,在机器人高速的运行中,就可以顺利地跟随黑线实

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁