leJOS运行在LEGO上的Java操作系统课件_第1页
leJOS运行在LEGO上的Java操作系统课件_第2页
leJOS运行在LEGO上的Java操作系统课件_第3页
leJOS运行在LEGO上的Java操作系统课件_第4页
leJOS运行在LEGO上的Java操作系统课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaandLEGORobots齐琨(KunQi)

GCSeniorSalesConsultantkun.qi@拥有一个机器人是每个孩子的梦想

梦想可以成真ProgramAgendaLEGO(乐高)NXTleJOSJava控制NXT机器人演示LegoNXT是什么?硬件ARM7(32位)AT91SAM7S256(48Mhz)256K的闪存,64K的内存蓝牙、USB2.04个输入、3个输出64*100像素单色LCD编程NXT-G/LeJOS/NXC/RobotC/…可编程组合机器人玩具LEGO设计工具LEGODigitalDesignerLEGO编程语言NXT-GTofillashapewithanimage.Useexistingpicturebox,DONOTdeleteandcreatenewpicturebox.Rightclickontheshape.Atthebottomofthesubmenuselect

“FormatShape”Select“Fill”atthetopofthe“FormatShape”dialogbox.Select“PictureorTexturefill”fromtheoptions.Andselect“File”underthe“Insertfrom”option.Navigatetothefileyouwanttouseand

select“Insert”Onthe“Format”tab,intheSizegroup,clickon“CroptoFill”intheCroptoolanddragtheimageboundingboxtothedesiredsizeDELETETHISINSTRUCTIONNOTEWHENNOTINUSE是一个微型的JavaVM,替代LEGO操作系统最早来源于TinyVM项目,一个基于Java的用于LegoMindstormRCX固件2000年移到到leJOS项目使用C和ARM的汇编指令编写一次只能运行一个Java程序leJOS包括两个项目leJOSNXJleJOSRCXleJOS:运行在LEGO上的Java操作系统leJOSNXJJavaVM的NXT固件,替换原有NXT的LEGO固件Java类库,classes.jar实现NXJAPI提供替代的Java

Runtime(java.*)工具链接工具,链接java类和classes.jar为二进制文件格式,上传至NXT运行PC工具,烧录固件到NXT中,上传程序,调试工具等功能PCAPI,开发与NXJ通讯的程序,在蓝牙和USB连接上使用JavaStream,或使用LCP(LEGO通讯协议)LEGONXT的Java环境为什么要用leJOS?使用行业标准的Java语言支持面向对象编程开源项目,有很多贡献者使用专业的IDE,Eclipse/Netbean跨平台支持,Windows/Linux/Mac比NXT-G更快(主要指开发效率)全面支持蓝牙、USB、I²C和RS485协议提供精确的马达控制支持Java7语言特性为什么要用leJOS?支持高级导航设备支持蒙特卡罗定位支持卡尔曼滤波提供行为类来支持复杂机器人行为支持大量第三方传感器支持通过蓝牙或USB的远程事件记录支持PC远程控制和跟踪NXJ程序提供了浮点运算等数学运算函数为什么要用leJOS?支持java.io访问flash文件系统支持多线程支持监听和事件支持gc安全内存管理支持8位WAV文件播放提供了大量的样例支持NXT到NXT的通讯支持GPS设备……准备leJOS环境

Tofillashapewithanimage.Useexistingpicturebox,DONOTdeleteandcreatenewpicturebox.Rightclickontheshape.Atthebottomofthesubmenuselect

“FormatShape”Select“Fill”atthetopofthe“FormatShape”dialogbox.Select“PictureorTexturefill”fromtheoptions.Andselect“File”underthe“Insertfrom”option.Navigatetothefileyouwanttouseand

select“Insert”Onthe“Format”tab,intheSizegroup,clickon“CroptoFill”intheCroptoolanddragtheimageboundingboxtothedesiredsizeDELETETHISINSTRUCTIONNOTEWHENNOTINUSE环境准备—Windows

JDK5/6/7要使用32bit的/technetwork/java/javase/downloads/USB驱动最新的FantomDriver1.1.3/en-us/support/files/Driver.aspxWin7专业版+(或setup.ini->AllowWindowsStarter=1)蓝牙模块(可选)蓝牙设备及驱动获取介质leJOSNXJ软件0.9.1beta版/nxj-downloads.phpleJOS_NXJ_0.9.1beta-3_win32_setup.exe(21.9MB)IDEEclipse/Netbean必须使用32bit安装leJOS安装步骤建立NXT的Java运行环境NXT刷固件,将NXJ固件使用leJOS的Flash工具写入到NXT中如果刷机失败,可以从LEGO官网中找到固件刷回,NXT不会变砖环境变量NXJ_HOMELEJOS_NXT_JAVA_HOMEPATH=%NXJ%\bin;%PATH%写入leJOS到LEGONXT选择IDE,连接你的NXT安装新软件lejos-/tools/eclipse/plugin/nxj/以Eclipse为例第一个程序与新建类的方式相同屏幕输出的两种方式LCD类System.out.printlnHello,World编译和上传程序运行->LeJOSNXTProgram插件完成Link、上传和运行的工作Eclipse方式编译和上传程序nxjc.bat,使用javac编译源码,生成class文件nxjcHelloWorld.javanxjlink.bat,生成LE格式的nxj文件nxjlink–oHelloWorld.nxjHelloWorldnxjupload.bat,上传nxj文件到NXT,执行程序(–r参数)nxjupload–rHelloWorld.nxjnxj.bat,集成link和上传功能nxj–r–oHelloWorld.nxjHelloWorld手工方式按键名称说明回车/开机菜单选择左右退出/关机当位于顶层菜单时,关机leJOS的按键leJOS的菜单控制轮式小车

Tofillashapewithanimage.Useexistingpicturebox,DONOTdeleteandcreatenewpicturebox.Rightclickontheshape.Atthebottomofthesubmenuselect

“FormatShape”Select“Fill”atthetopofthe“FormatShape”dialogbox.Select“PictureorTexturefill”fromtheoptions.Andselect“File”underthe“Insertfrom”option.Navigatetothefileyouwanttouseand

select“Insert”Onthe“Format”tab,intheSizegroup,clickon“CroptoFill”intheCroptoolanddragtheimageboundingboxtothedesiredsizeDELETETHISINSTRUCTIONNOTEWHENNOTINUSE控制伺服电机Motor类是对NXT马达的抽象马达需要连接A/D端口A端口B端口C端口Motor类类方法说明Motor.Aforward()向前转动backward()向后转动stop()快速停止getTachoCount()返回马达角度setSpeed(intspeed)设置每秒的角度值rorate(intangle)旋转angle角度rorateTo(intangle)旋转到angle角度rorate(intangle,booleanimmediateReturn)如果是true,则方法立即返回rorateTo(intangle,booleanimmediateReturn)如果是true,则方法立即返回……轮式小车控制两轮驱动的小车高层类,每个轮子都有自己的马达两个轮子的连接端口轮子的直径两个轮子间的距离DifferentialPilot类演示—两轮小车运行Tofillashapewithanimage.Useexistingpicturebox,DONOTdeleteandcreatenewpicturebox.Rightclickontheshape.Atthebottomofthesubmenuselect

“FormatShape”Select“Fill”atthetopofthe“FormatShape”dialogbox.Select“PictureorTexturefill”fromtheoptions.Andselect“File”underthe“Insertfrom”option.Navigatetothefileyouwanttouseand

select“Insert”Onthe“Format”tab,intheSizegroup,clickon“CroptoFill”intheCroptoolanddragtheimageboundingboxtothedesiredsizeDELETETHISINSTRUCTIONNOTEWHENNOTINUSEI/O和传感器LCD、按键、声音、电池、光线传感器、声音传感器I/OLCD,显示8行16列,图片模式,100×64像素LCD.drawString(Stringstr,intx,inty)LCD.drawInt(inti,intx,inty)LCD.drawInt(inti,intplaces,intx,inty)LCD.clear()按键实例Button.ENTER(1)Button.LEFT(2)Button.RIGHT(4)Button.ESCAPE(8)Button.isDown()LCD和按键I/O播放声音lejos.nxj.SoundplayTone(intaFrequency,intaDuration),播放音频systemSound(booleanaQueued,intaCode),播放系统声音playSample(FileaWAVfile),播放8bit的wav文件电池lejos.nxj.BatterygetVoltage(),获取电压声音和电池传感器NXT提供了四个传感器,光线传感器、声音传感器、超声传感器和触碰传感器光线传感器,需要指定端口LightSensor(SensorPortport)声音传感器,接收不同的频率响应SoundSensor(SensorPort.S1)光线传感器和声音传感器物体探测机器人探测路上的对象,做出特定行为超声传感器和触碰传感器FeatureDetectorAdapterRangeFeatureDetectectorTouchFeatureDetectector<<interface>>FeatureDetector物体探测自动检测和数据报告通过监听器接口分离“活动—响应”代码一个代码段响应多个传感器超声传感器intMAX_DISTANCE=50;//最大探测距离,单位为厘米intPERIOD=500;//探测周期,单位为毫秒UltrasonicSensorus=newUltrasonicSensor(SensorPort.S4);FeatureDetectorfd=newRangeFeatureDetector(us,MAX_DISTANCE,PERIOD);Featureresult=fd.scan();if(result!=null){System.out.println("Range:"+result.getRangeReading().getRange());}物体探测超声传感器和触碰传感器组合UltrasonicSensorus=newUltrasonicSensor(SensorPort.S4);//端口4连接超声传感器FeatureDetectordetector1=newRangeFeatureDetector(us,MAX_DETECT,RANGE_READING_DELAY);//端口2连接左触控传感器TouchleftBump=newTouchSensor(SensorPort.S2);FeatureDetectordetector2=newTouchFeatureDetector(leftBump,10,TOUCH_Y_OFFSET);//端口3连接右触控传感器TouchrightBump=newTouchSensor(SensorPort.S3);FeatureDetectordetector3=newTouchFeatureDetector(rightBump,-10,TOUCH_Y_OFFSET);FusorDetectorfusion=newFusorDetector();fusion.addDetector(detector1);fusion.addDetector(detector2);fusion.addDetector(detector3);fusion.addListener(myFeatureListener);NXJ支持的第三方硬件演示—物体探测和声音播放Tofillashapewithanimage.Useexistingpicturebox,DONOTdeleteandcreatenewpicturebox.Rightclickontheshape.Atthebottomofthesubmenuselect

“FormatShape”Select“Fill”atthetopofthe“FormatShape”dialogbox.Select“PictureorTexturefill”fromtheoptions.Andselect“File”underthe“Insertfrom”option.Navigatetothefileyouwanttouseand

select“Insert”Onthe“Format”tab,intheSizegroup,clickon“CroptoFill”intheCroptoolanddragtheimageboundingboxtothedesiredsizeDELETETHISINSTRUCTIONNOTEWHENNOTINUSE线程leJOS在下面的情况下会单独开线程如果监听在使用,那么按钮和传感器端口会开始一个监听线程每个电机都会开始一个调节器线程蓝牙类会开始一个可以与分开的蓝牙芯片对话的线程每个定时器会打开一个定时器线程ClassIndicatorsextendsThread{……}…Indicatorsid=newIndicators();id.setDaemon(true);id.start();监听leJOS实现了监听器线程来侦听特定事件按键侦听传感器端口侦听按键侦听,无论程序在做什么,发生按键事件时都会被检测到特定按键的侦听,需要注册单独的事件addButtonListener错误处理和调试异常支持绝大多数的Java标准异常也可以自定义数据终止NXJ崩溃,屏幕会显示指针和错误信息有问题的nxj文件远程调试PC使用Rconsole,USB或蓝牙RConsole.println()几个工具NXJFileBrowser,查看和操作NXJ上的文件NXJFlashGNXJMonitor,监控线程运行情况leJOS和AndroidTofillashapewithanimage.Useexistingpicturebox,DONOTdeleteandcreatenewpicturebox.Rightclickontheshape.Atthebottomofthesubmenuselect

“FormatShape”Select“Fill”atthetopofthe“FormatShape”dialogbox.Select“PictureorTexturefill”fromtheoptions.Andselect“File”underthe“Insertfrom”option.Navigatetothefileyouwanttouseand

select“Insert”Onthe“Format”tab,intheSizegroup,cli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论