蓝牙NXT机器人编程指导.docx
《蓝牙NXT机器人编程指导.docx》由会员分享,可在线阅读,更多相关《蓝牙NXT机器人编程指导.docx(56页珍藏版)》请在冰豆网上搜索。
蓝牙NXT机器人编程指导
第1章:
NXT软件和硬件概述
本章将介绍以下内容:
●蓝牙机器人硬件系统
●蓝牙机器人软件系统
●给蓝牙机器人编写一个最简单的程序
1.1蓝牙机器人系统
1.1.1硬件组成
蓝牙机器人硬件是由NXT控制器、伺服电机、传感器等组成,如图1.1.1所示。
NXT控制器就像人的大
脑,伺服电机好比人的肌肉,提供动力,传感器就像人的五官,采集外界环境的数据,然后反馈回大脑进行处理。
1.NXT控制器介绍
性能参数特点描述
主处理器32位ARM7处理器AT91SAM7S256256K闪存,64K静态内存主频:
48MHZ
协处理器8位AVR处理器ATmega484K闪存,512字节静态内存主频:
9MHZ
蓝牙无线通讯蓝牙核心规范2.0+EDR系统支持串口规范内置47KRAM,外置8Mbit闪存
主频:
26MHZ
USB2.0通讯传输速度12Mbit/s
输入端口4个6线数字接口,支持数字和模拟接口1个高速端口,符合国际总线标准IEC61158TYPE-4/欧洲标准EN50170
输出端口3个六线数字接口,支持解码器信号输入
显示屏100x64象素黑白图像显示可视区域26mmx40.6mm
扬声器8位分辨率的输出频道支持2-16KHZ采样率
电源6节AA电池,1400mA的锂电池板
连接线6线工业标准连接线RJ12右侧卡口
2.NXT伺服电机特性
内置角度传感器可以测量速度和距离可以精准控制:
●当机器人运行时,可以校准速度
●控制精度可以精确到1度
●电机上的孔结构更容易固定和安装
●每个电机内置一个角度传感器,这使你能准确的控制电机转动,角度传感器测量电机转动能精确到1度电机转动1圈等于360度,因此如果你在程序里设定电机转动180度,电机输出时将转动半圈。
3.NXT传感器特性
触动传感器
性能上与RCX触动传感器一样,但NXT触动传感器
前端带有十字孔,方便我们制作缓冲器
触动传感器
性能上与RCX触动传感器一样,但NXT触动传感器
前端带有十字孔,方便我们制作缓冲器
光电传感器
可以读取周围环境光的强度
可以从红外发射管的反射光来读值
可以识别颜色,灵敏度更高
红外发光管是可以关掉的,从而达到只读取环境光的强度
声音传感器
能测量普通声音(dB)和用A计权测量的分贝(dBA)
能识别声音模式
能进行音调的识别,频率越高声音的音调越高
超声波传感器
能测量距离,范围在0-255cm之间,检测误差+/-3cm,检测角度150度
能识别物体,通过检测距离能识别物体运动
4.NXT蓝牙特性
蓝牙(BlueTooth)是一种低成本大容量短距离无线通讯新规范,蓝牙规范采用微波频段工作,传输速率每秒1MB字节,最少传输距离10米,通过增加发射功率可达到100米。
NXT蓝牙一般特性
●蓝牙V2.0(CLASSII)
●支持SPP(串行埠定义)
●传输范围至少10M,最大范围达到30M或甚至更远
●具有很强的安全性
NXT蓝牙的主要功能:
●与带有蓝牙功能的设备通讯。
如:
手机、电脑等
●能同时可以与3个设备连接
●可以搜索其它蓝牙设备
●能记住前一个连接的设备并快速连接
●可以将NXT隐藏
●可以关闭蓝牙以节省电源
1.1.2软件组成
TheLEGO®MINDSTORMS®EducationNXTSoftware是使用“LabView™引擎开发的图形化编程软件,该软件入门起点低,拓展面广,具有循序渐进式的友好的用户界面,整个编程界面只使用了43个命令图标,编程速度更快,功能更强大。
软件共分为”模块界面、编程区、控制面板、参数设置面板和教学区“五部分。
相比其它图形化编程软件,该软件在功能上做了很大提高,具体特点如下:
1.基于Labview图形化编程语言(G语言)
G语言(GraphicalLanguage)。
G语言是一个划时代的高效用的图形化编程开发环境,提供了一种更快捷的程序编写方法,编程环境直观明了,它有几百个模块组成,用一个个图形模块代替传统的编程语句,例如循环、条件等都有相应的图标,可以完成所有C语言和VB等语言的功能,设计者只需要把所需的图标从功能模块中抓取下来进行连线即可实现程序编写,无需编写任何代码,与传统编程的表现形式有根本区别,但其编程的逻辑思维与传统编程一样,和C、VB等一样都是计算机的编程语言。
所有这些特性使G语言更易于学习,从而减少程序开发时间,提高编程质量。
2.循序渐进式的友好的用户界面
交互式快速入门向导,三等级编程模块区,从易到难,从基本模块到高级模块。
38个编程模块,入门更加快方便、快捷。
3.任务驱动式的学习环境-39个活动案例
1.2软件安装
1.2.1系统配置要求
在我们安装LEGO®MINDSTORMS®EducationNXTSoftware软件之前,要确信电脑系统配置满足最低要求。
PC机配置要求
●操作系统要求是WindowsXP专业版或者家庭版,并且要带有SP2补丁
●处理器要求是英特尔奔腾处理器或者最小为800MHZ的处理器(推荐1.5G或者更高)
●内存最小为256M(推荐512兆M)要有大于300M可用的硬盘空间
●1个可用USB端口和CD-ROM光驱
●支持蓝牙适配器(可选)
1.2.2PC机上安装步骤
退出电脑上打开的程序窗口→将安装光盘插入光驱→如果你发现电脑没有自动安装软件→单击电脑屏幕左下角“开始”按钮,点击“运行”→并输入“G:
\autorun.exe(G为光驱的盘符)→接下来按照屏幕上提示的步骤安装就行了。
1.3硬件快速入门
1.3.1安装电池
NXT控制器需要安装6节AA电池,推荐使用碱性电池,NXT也可以使用AA/LR6类可充电电池,但是,NXT力量显示出来也许没使用碱性电池大。
当NXT显示电量低时,这个电量图象会不停的闪动
注意!
不能在NXT内使用不同类型的电池,要及时将用完电池取出,NXT长期不使用时要将里面电池取出,不能在NXT内直接对AA/LR6类充电电池充电
1.3.2NXT控制器全貌
1.NXT输入、输出端口
●NXT控制器是LEGO®MINDSTORMS®教育机器人的大脑,它有三个输出端口、四个输入端口和一个USB端口。
●伺服电机通过连接线可以连接到NXT控制器任意输出端口(A、B、C)上,也可以使用套装内转换线缆,将
●灯泡和RCX系列的电机连接到输出端口上,在NXT上电机或灯泡默认设置如下:
端口A:
此端口上电机或灯泡起到扩展功能的作用
端口B:
当机器人由两电机驱动运动时,B端口连接一个电机,通常是机器人左边的驱动部分
端口C:
当机器人由两电机驱动运动时,C端口连接一个电机,通常是机器人右边的驱动部分
●传感器通过连接线可以连接到NXT控制器任意输入端口(1、2、3、4)上,也可以使用套装内转换线缆,将RCX系列的传感器或第三方传感器连接到输入端口上,在NXT上传感器默认设置如下:
端口1:
连接触动传感器
端口2:
连接声音传感器
端口3:
连接光电传感器
端口4:
连接超声波传感器
2.NXT控制器各个面板操作说明
NXT控制器包含6个操作面版,分别为“MyFiles”、“TryMe”、“Settings”、“Bluetooth”、“View”、“NXTProgram”,下面简单介绍每个操作面版功能。
该彩单内可以保存在NXT上编写的程序和从电脑上下载的程序
可以测试程序里传感器和电机的工作状态
不需要在电脑上编写程序来控制机器人,可以通过在NXT控制器上编写程序控制机器人
该操作面版可以查看NXT不同设置,例如NXT扬声器、关机模式、NXT版本信息,还可以删除NXT内保存的程序
在查看菜单里,可以快速查看当前传感器和电机的工作状态和数据,能方便我们在程序设计中设置传感器和电机的参数值
可以通过蓝牙无线技术使NXT与其他蓝牙设备进行连接,如:
NXT设备、手机(带有蓝牙功能)和电脑。
你也可以使用蓝牙而无须USB连接线将程序从电脑上下载到NXT,你甚至可以下载程序到手机,用手机来控制NXT机器人。
3.NXT显示器上各标识的解释
1.3.3菜单详解
1.NXT主菜单-MyFiles
2.NXT主菜单-TryMe
3.NXT主菜单-NXTProgram
我们可以将在NXT上编写的程序进行保存,程序将被自动保存在“NXTFiles”中,以后可以在该文件夹中打开保存的程序。
现在来编写下以下程序,体会如何在程序中使用各种传感器
4.NXT主菜单-Settings
5.NXT主菜单-View
6.NXT主菜单-Bluetooth
1.3.4与电脑通讯
1.使用USB通讯
(1)PC机上连接NXT
(2)MAC机上连接NXT
将NXT连接到电脑之前要确信电脑上已经安装有LEGO®MINDSTORMS®EducationNXTSoftware
打开NXT电源,用USB连接线将NXT与电脑进行连接。
2.使用蓝牙无线通讯
3.蓝牙通讯的简单介绍(略)
1.4软件快速入门
1.4.1软件菜单介绍
1.菜单和工具栏
2.档案管理
1.4.2软件面板
NXT整个工作面板分为“模块面板”、“编程区面板”、“控制面板”、“参数设置面板”、“教学区面板”五个面板,下面对每个面板功能进行介绍。
1.模块面板介绍
如图中所示“模块面板”又分为“基本面版”、“完整面板”和“自定义面板”三个面板。
“基本面板”包括常用的7个功能模块,从上到下依次为“输出功能模块、记录功能模块、声音功能模块、显示功能模块、等待功能模块”、循环功能模块、分支功能模块”。
下面就每个图标功能作简单介绍:
模块
功能介绍
可以设置A、B、C三个输出端口连接方式,电机输出方向、能量级别
和延续时间等。
记录A、B、C端口输出动作,可以设置记录时间,然后通过“播放”
功能,将刚才NXT执行的动作复制出来。
通过程序下载声音文件到NXT,并保存在“SoundFiles”文件中,可以
选择软件自带的声音文件,也可以自己来编写。
可以显示图象和文本,我们可以通过将“数字转换为文本”功能,将
电机和传感器的数据适时显示在NXT屏幕上。
有时间和传感器等待,包括触动传感器、声音传感器、光电传感器和超声波传感器等待。
包括“无限循环、时间循环、传感器循环、次数循环和逻辑判断循环”
分支条件有传感器和参数值判断,传感器分支包括“触动、声音、光电、超声波、温度、角度、计时器、蓝牙通讯和NXT按妞”,参数值
分支包括“数字判断、逻辑判断和文本判断”。
“完整面板”里面包括了所有编程模块,能完成VB、C语言所有的功能。
我们可以将“基本面板”比
作为ROBOLAB编程里的“导航者”级别,那么“完整面板”就相当于“发明家”级别。
面板包括6个功能模块,每个功能模块里包含了子模块,从上到下分别为“基本功能模块、输出功能模块、传感器设置模块、结构模块、数据运算模块、高级功能模块”。
模块
功能介绍
包含“基本面板”里所有的功能模块
输出功能模块,包括单电机、灯泡、发送信息(通过蓝牙)、声音和NXT显示器输出模块
可以设置NXT传感器、RCX传感器、计时器传感器、NXT按钮和接收信息(通过蓝牙)模块
包括“等待、循环、分支”结构功能模块和停止输出功能模块
可以定义变量,能进行数据运算,包括加、减、乘、除、大小、、范围和逻辑判断
包括文本模块、数字转换文本模块、保持激活模块、文件存储模块、校准模块、重置电机模块
“自定义面板”分为自己定义的模块和网上下载的模块,通过自定义模块,我们可以设置自己的功能模块,比如说修改功能模块的参数或将几个不同的功能模块做成一个新的模块,实现一个新的功能,模块将自动保存在“我的文档”默认的“LEGOCreations”文件夹中,可以方便我们以后调用。
模块
功能介绍
能自己设计模块,根据需求可以设计成不同的图标,能进行个性化命名,将一段程序模块化可以把任务分解成若干小任务来单独完成,方便阅读
可以从网络上下载模块,满足自己的需求
2.控制面板
3.编程区介绍
编程区是我们完成程序编写的区域,可以关闭掉教学区域来增大编程区的窗口,方便我们编写和阅读。
左图为程序开始图标。
编写程序时直接将要使用的功能模块从“模块面板”中拖到编程区进行设置即可,可以用鼠标移动模块,能将模块拖拉到编程区的任意位置,操作简便。
4.参数设置面板
NXT软件中只有43个功能模块(不包括自定义模块),但每个功能模块都有对应的参数面板,通过修改参数可以使模块实现不同的功能,相比ROBOLAB软件中,NXT软件中每个模块集成了多方面的功能,下面举个例子看下。
完成A、C两电机输出,运行2秒后停止。
在ROBOLAB软件中程序编写如下:
在NXT软件中编写程序如下:
我们来比较一下,完成同一任务,在ROBOLAB软件中编写需要4个功能图标来实现,而在NXT软件中只需一个功能模块就能完成。
如上图①,模块对应的参数面板设置为图②,其中包括了电机输出端口设置、运行方向设置、转弯设置、电机能量级别设置、延续时间设置和停止设置,可以看出,在NXT软件中编写程序会更方便和简洁,修改起来也非常容易,直接在参数面板里修改。
1.4.3我的第一个程序-HELLOWORLD
到这里,我们已经了解和学习了NXT的硬件和软件,现在来编写一个简单的程序,理解程序是如何下载到NXT的。
第2章:
普通面板
本章将介绍以下内容:
●运动模块●判断模块
●等待模块●声音模块
●循环模块●显示模块
●记录/学习模块●NXT之间相互通讯
2.1运动模块
1.模块功能
使用这个模块控制机器人向前走或者向后走直线,还可以控制机器人走曲线。
通过运行特性确保机器人走多远。
⒈这个模块右上角的字母表示电机连接到NXT的哪个输出端口。
⒉这个图标表示机器人运行的方向。
⒊这个图标表示电机能量。
机器人速度也可能受其他条件影响,比如地面的摩擦力或者机器人是在上坡或者下坡。
⒋这个图标表示你设置电机的延续特性是没有限制,角度,圈数,或者时间。
⒈这个图标表示方向属性设置为“停止”。
该设置将停止所有电机。
3.设定运动模块
⒈选择你所要控制的电机端口。
如果你选择控制两个电机(举例:
B&C),电机将以相同的能量向前或者向后运动。
如果你选择三个电机,电机B&C保持同步。
⒉选择电机是向前,向后还是停止运行。
选择停止将会重置电机。
⒊如果使用两个电机驱动一辆小车(轮子在两侧),通过移动操纵滑条可以控制机器人走曲线的方向。
滑条移动到任意一端,小车原地旋转。
⒋滑条和输入框可以设置电机能量[0-100]。
⒌通过延续下拉菜单,可以设置电机永不间断的运行,或者一定时间(秒),圈数(默认)或者角度。
⒍选择电机完成动作后是刹车或是缓停。
如果你想让机器人停在一个精确的位置,将电机设置为刹车。
设置为刹车将会使机器人在运动完之后稍微向后后退一点,这将会使NXT非常耗电,因为为了精确定位。
⒎反馈工具箱可以检测电机转了多少角度或者几圈。
按重置按钮将会将数值重设为0。
3.电机对应机器人运行方向
当通过配置面板给机器人设置好电机运行方向后,有时会发现机器人并没有按照设定的方向来运行。
其实电机是有默认运行方向的,下图显示了电机默认向前转的安装方式:
下幅图表显示了电机数据中心接口的不同特性:
2.2等待模块
通过该模块机器人可以在继续运行之前等待一个特定的条件。
使用滑条或者键入数值设置一个触发值,当传感器的值低于或高于这个出发值的时候程序继续执行。
⒈等待模块右上角的数字表示传感器所连接的端口。
在下面会讲到根据需要可以在设置面板里面修改端口号。
⒉如果你选择了等待光电,等待声音或者等待超声波模块,这个图标显示触发值的设置点;橘黄色条越多,说明触发值越高。
如果你选择等待触动传感器,这图标将显示触动传感器的状态(反复碰撞,按下,或者弹开)。
2.设置等待模块
超声波传感器
通过超声波传感器,机器人能够判断离障碍物的距离。
⒈选择超声波传感器所连接的端口。
默认是连接在4端口的。
⒉如果选择左侧,则该模块在小于触发点时被触发;如果选择右侧,则大于触发点时被触发。
通过滑条来设置触发值或者在输入框内输入数值(如果定义为厘米,数值范围0-250或者如果定义为英寸,数值范围是0-100)。
注意根据所探测物体表面的反射率不同距离会有所差异。
⒊选择读取数值单位是厘米还是英寸。
⒋通过反馈箱可以实时读取超声波传感器的数值(0-250cm或者0-100英寸)。
读取数值为0表示传感器能够探测到的最近距离。
如果设置为厘米,数值为250时代表传感器所能探测到的最远距离。
如果设置为英寸,则所能探测到的最远距离为100。
注意:
超声波传感器的盲区为3cm。
声音传感器
声音传感器能够使机器人产生听觉,能够感应声音频率的高低。
⒈选择声音传感器所连接端口。
默认是连接在2端口的。
⒉使用滑条来设置触发值或者在输入框内输入数值来定义触发值。
如果选择滑条右侧,只有当监测到的数值大于触发值时传感器才会被触发;如果选择左侧,则只有当检测到的数值小于触发值时传感器才会被触发。
也可以通过数字旁的下拉菜单来选择是大于还是小于。
⒊反馈箱能够实时显示声音传感器所读取的数值(0-100)。
你可以通过它来试出不同的触发值。
光电传感器
选择“光电传感器”,你的程序将会等待光电传感器被一个特定的值触发。
⒈选择光电传感器所连接端口。
默认连接到三端口。
⒉通过滑条可以设置触发值,也可以在输入框里面键入触发值。
如果想大于触发值触发选择滑条右侧的圆形按钮,小于触发值触发则选择左侧的圆形按钮。
也可以通过滑条下发的下拉菜单来选择。
⒊如果选中“发光”,光电传感器将会打开自身的红灯并且检测是否有光返回;如果不选中,则直接接收反射光线。
(可以通过该设置减少不必要光线的干扰)
⒋反馈工具箱显示传感器实时监测到的数值。
通过它可以试出不同的触发值。
触动传感器
触动传感器能够让机器人产生触觉。
通过感知触动传感器被按下,松开还是按下后松开,来决定下一个动作什么时候开始执行。
⒈选择触动传感器所连接端口。
模块默认1端口连接触动传感器。
⒉选择触动传感器的状态,是按下,松开还是按下后松开继续执行下一个动作。
当你想迅速按下然后松开触动传感器后触发下一个动作选择按下后松开。
如果想触动传感器按下后触发下一动作选择按下。
如果当触动传感器松开时触发下一动作选择松开。
⒊通过反馈箱能实时监测触动传感器的状态。
当触动传感器被按下,显示数值1。
NXT按钮
NXT积木块上的四个按钮也可以当作传感器来使用,相当于触动传感器,同样有三种状态:
按下,松开和按下后松开。
⒈选择哪一个按钮(向左,向右,确认和返回)继续下一个动作。
⒉当想迅速按下再松开某个按钮来触发下一个动作,选择按下后松开。
想按下某个按钮后触发下一个动作,
选择按下。
想松开某个按钮后触发下一个动作,则选择松开。
(内置)角度传感器
通过角度传感器来设置电机所转的圈数或者角度值。
⒈选择电机所连接的端口。
⒉选择是向前还是向后。
⒊通过下拉菜单选择是角度还是度数。
⒋在程序运行前输入你所要运行的圈数或者角度值。
⒌通过反馈箱来实时显示角度传感器的数值。
使用重启按钮来对反馈箱进行清零。
计时器
如果选择计时器,则当NXT的内部时钟达到某一个特定时间值的时候才会触发下一动作。
⒈选择你所要监测的NXT计时器(1,2或者3)。
⒉在输入框内输入数值(秒)。
通过下拉菜单选择大于还是小于。
可以通过上下箭头来增加或减小数值(0-4294967)。
时间
通过时间模块来决定等待多长时间再继续执行下一个动作。
⒈选择等待的时间(秒)。
能够精确到0.1秒!
2.3循环模块
1.模块功能
通过循环模块可以重复执行某一段指令。
设置条件可以结束循环:
时间,循环的次数,一个逻辑信号或者传感器的状态。
你也可以设置一个死循环。
显示设置
⒈当循环模块属性设置为“永久”时,将会在模块尾部下端显示一个无限(∞)图标。
⒉如果选中设置面板上的“显示计数器”,会出现一个接头,可以将你所设置循环的次数作为一个输入值在程序中随时调用(如果你通过数据线连接到其他模块的数据中心)。
你也可以使用当前的数值控制循环本身。
⒊如果你选择传感器来控制循环,循环尾部将会显示你所选择的传感器。
例如,你选择了一个光电传感器控制循环,在循环尾部你将会看到一个光电传感器图标。
当然,传感器的相关信息也会显示在设置面板上。
2.添加模块到循环模块
如果循环模块已经放在了横梁上,你会看到循环模块内部有一小段横梁;将鼠标浮动到这段横梁上面拖拽则会得到添加模块的区域,将所要添加的图标拖拽过来即可。
当然你也可以直接将所添加的图标拖拽到那段横梁上,程序会自动将模块添加到循环模块内。
移动循环模块只有循环模块能够被选中,用鼠标左键选中模块本身就可以移动循环模块了;选中模块周围的部分或者模块内部是没办法来移动循环模块的。
3.设置循环模块
循环模块默认是无限循环。
同样循环模块也有很多,这里只以光电循环模块为例。
光电传感器
当选择了“光电传感器”,循环内部的程序模块将等待光电传感器测到一个特定的光值才会结束循环,程序继续向下执行。
⒈选择光电传感器连接的端口。
默认是连接到3端口。
⒉通过滑条可以设置触发值,也可以在输入框里面键入触发值。
如果想大于触发值触发选择滑条右侧的圆形按钮,小于触发值触发则选择左侧的圆形按钮。
也可以通过滑条下发的下拉菜单来选择。
⒊如果选中“发光”,光电传感器将会打开自身的红灯并且检测是否有光返回;如果没有选中,则直接接收反射光线。
⒋反馈工具箱显示传感器实时监测到的数值。
⒌如果选中设置面板上的“显示计数器”,会出现一个接头,可以将你所设置循环的次数作为一个输入值在程序中随时调用(如果你通过数据线连接到其他模块的数据中心)。
记数
如果选择了“记数”,那么循环内的任何程序都要等待记数器达到某一特定值后才能跳出循环。
⒈输入想要循环的次数。
举例,如果输入数值为“2”,那么程序执行两次后自动结束。
⒉通过选择“显示记数器”,能够从循环的左侧接口连接到右侧的记数器。
这样能够计算出循环的次数并且在到达设定的值后跳出循环。
逻辑
如果选择“逻辑”,需要通过其它模块的数据中心连接到其右侧的接口,循环内的程序将根据接收到信息的真假来结束循环。
⒈选择逻辑类型,真或者假。
⒉如果选择了配置面板上的“显示记数器”,在循环的左侧如同记数一样能够显示一个接口,通过数据线可以进行