Java and LEGO Robots 齐琨(Kun Qi) GC Senior Sales Consultant

Slides:



Advertisements
Similar presentations
簡單 GIF 製作 (1)Gifmake (2)PICASION.COM By Shark. Gifmake introduction(1) 1.You can create a picture. Just specify width and height in pixels, then you'll.
Advertisements

碧桂园集团开启全球人才招募之旅. 这里是社会精英云集的公司 这里是人才施展才华的好地方 这里是学习进步的好学校 这里是和谐的大家庭 这里是诚实守信、合法合规经营的公司 这里是讲道理、勇于自我修正的公司 这里是公平公正、论功行赏的公司 这里是欣欣向荣、不断总结好经验并付诸实践的公司 这里是为全世界建造又好又便宜的房子的公司.
湖南城市学院 Android 智能手机开发 信息科学与工程学院 主 讲:李 旎. 湖南城市学院 课程结构 Android 平台概述 – 平台介绍 开发环境: – 构建 Android 开发环境 Android 的基本操作 -- 五种基本操作 应该程序: – 应用程序结构 典型应用: – 用户界面 –
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
授課老師 鍾 明志 學生 施淑容 699D0002 楊淑理 699D0009 吳婕瑄 699D0014 李明樺 699D0001 陳宗福 699D0015 吳善愉 699D0021 公關專家不告訴你的讀心術 商業心理學 報告 張潛 著 / 2007 / 智言館 許多判斷,只是偏見的重整。 美國哲學及心理學家.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
資訊軟體人才培育先導計畫102年度課程發展專案計畫 資訊軟體人才培育雲端計算與服務課程發展專案計畫- 雲端運算與行動計算課程
第六章 多媒体辅助教学系统 一、多媒体基本概念
Lego 機器人 基礎元件與感測器.
《 Java开发环境配置》 主讲人:耿力.
Java 2实用教程(第3版)教学课件 主讲教师:张国平
簡易電腦維修 日期:98年01月21日 報告人:吳建和 技士.
单片机应用技术 项目一 循环彩灯装置 第7讲 Keil软件的使用 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
自衛消防編組任務職責 講 義 This template can be used as a starter file for presenting training materials in a group setting. Sections Right-click on a slide to add.
第 八 章 交互结构(2).
北京科技大学天津学院 信息工程系 面 向 对 象 程 序 设 计 第1讲 Java初探 主讲:于静.
“走进三国” 读书汇报会 广州市玉岩中学 李玉明( ).
一例急性 淋巴细胞性白血病病人的护理查房 血液科.
第二章 B4A程式語言的開發環境 課程名稱:程式設計 授課老師:李春雄 博士
说课.
数据库应用与程序设计.
第1章 java简介及环境搭建 第1章 Java简介及开发环境搭建.
税务认定 永州市国家税务局纳税人学校.
Android發展環境Eclipse安裝
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
APP課程:Android程式設計開發環境與工具介紹
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
ARM裸机第一部分-ARM那些你得知道的事
CAA 第一章 安装 1 安装CATIA。在安装CATIA时,要把它装到根目录下,文件夹名称不能含有空格,(在此命名为CATIA)安装完后,用crack文件下JS0GROUP.dll拷贝到d:\CATIA\B14\intel_a\code\bin下的覆盖。 2 安装vc。装vc时选自定义,把里面的所有组件都选上。
Android開發環境建置與設定 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
Android SDK工具 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
YM100开发实验板 演讲人:熊小燕 2009年月12月16日
 FLYING EAGLE TECHNOLOGY INC/INFOBRIDGE CONSULTING GROUP
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
INTERACTIVE POWERPOINT PRESENTATION NETWORK 嶄新的互聯式投影片簡報網設計風格介紹
訪視委員 蒞臨指導 熱烈歡迎 Chrome text with reflection (Advanced)
开发Eclipse插件的基本步骤 插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要: 决定插件如何与平台集成
Android 课程讲义 智能手机开发
CH09 套件 物件導向程式設計(II).
Android開發環境建置與設定 建國科技大學 資管系 饒瑞佶 2010/10.
ARM裸机第一部分-ARM那些你得知道的事
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
XBRL未來發展趨勢 2009年12月 For information on applying this template onto existing presentations, refer to the notes on slide 3 of this presentation. The Input.
模块五: 数控系统参数的备份与恢复 本章学习内容.
Native Development Kit
探討樂高機器人的系統穩定性提升 對學生認知上的影響
2018/12/7 Java语言程序设计 教师:段鹏飞.
Java基础入门 第1章 Java开发入门 · Java语言的特点 · Java开发环境的搭建 · 环境变量的配置 · Java的运行机制.
Android盤點系統 組別:第九組 組員:四資工三B 4980E046 宋佩鴻 四資工三B 4980E054 詹典易
大義318「無線感測實驗室」 中國文化大學電機系.
湯馮斯創意積木工作坊 國中樂高機械積木社團介紹.
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
第六章 擷取輸入裝置的訊息和事件 鍵盤、滑鼠,是我們最常使用的輸入工具。我們是不是常常希望可以再按下某個按鈕後就可以有哪些功能出現呢?沒錯,這就是這一章節的重點,在第四章,我們提到了有關鍵盤、滑鼠、以及RS-232介面的事件及訊息偵測,讓我們更能掌控電腦週邊的硬體。
簡易 Visual Studio 2005 C++ 使用手冊
建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2 2013/2 V3 2014/9 V4
使用Android模拟器 本讲大纲: 1、模拟器概述 2、Android虚拟设备和模拟器 3、Android模拟器启动与停止 4、控制模拟器
01.Java语言概述 讲师:复凡.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
課程網站
Location Based Services - LBS
47th 结婚纪念 宿振东 & 赵蓉 Wedding Anniversary NOTE:
實驗十六:匯出APK安裝檔與軟體上架.
第6章 硬盘实用程序 GHOST 6.0 硬盘克隆(Clone)、硬盘分区拷贝工具
第4讲 类和对象、异常处理 ggao.
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
硬件基础知识及常见硬件故障处理.
社群定位資訊系統 葉國賢 組員: 吳俊億 鄧硯文 郭冠良 魏毓男
When using opening and closing presentation slides, use the masterbrand logo at the correct size and in the right position. This slide meets both needs.
Presentation transcript:

Java and LEGO Robots 齐琨(Kun Qi) GC Senior Sales Consultant kun.qi@oracle.com

拥有一个机器人是每个孩子的梦想

梦想可以成真

Program Agenda LEGO(乐高) NXT leJOS Java控制NXT机器人 演示

Lego NXT是什么? 可编程组合机器人玩具 硬件 编程 ARM7(32位) AT91SAM7S256(48Mhz) 256K的闪存,64K的内存 蓝牙、USB2.0 4个输入、3个输出 64*100像素单色LCD 编程 NXT-G/LeJOS/NXC/RobotC/…

LEGO设计工具 LEGO Digital Designer

LEGO编程语言 NXT-G

To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE

leJOS: 运行在LEGO上的Java 操作系统 http://lejos.sourceforge.net 是一个微型的Java VM,替代LEGO操作系统 最早来源于TinyVM项目,一个基于Java的用于Lego Mindstorm RCX固件 2000年移到到leJOS项目 使用C和ARM的汇编指令编写 一次只能运行一个Java程序 leJOS包括两个项目 leJOS NXJ leJOS RCX

leJOS NXJ LEGO NXT的Java环境 JavaVM的NXT固件,替换原有NXT的LEGO固件 Java 类库,classes.jar 实现NXJ API 提供替代的Java Runtime (java.*) 工具 链接工具,链接java类和classes.jar为二进制文件格式,上传至NXT运行 PC工具,烧录固件到NXT中,上传程序,调试工具等功能 PC API,开发与NXJ通讯的程序,在蓝牙和USB连接上使用Java Stream,或使用LCP(LEGO通讯协议)

为什么要用leJOS? 使用行业标准的Java语言 支持面向对象编程 开源项目,有很多贡献者 使用专业的IDE,Eclipse/Netbean 跨平台支持,Windows/Linux/Mac 比NXT-G更快(主要指开发效率) 全面支持蓝牙、USB、 I²C和RS485协议 提供精确的马达控制 支持Java 7语言特性

为什么要用leJOS? 支持高级导航设备 支持蒙特卡罗定位 支持卡尔曼滤波 提供行为类来支持复杂机器人行为 支持大量第三方传感器 支持通过蓝牙或USB的远程事件记录 支持PC远程控制和跟踪NXJ程序 提供了浮点运算等数学运算函数

为什么要用leJOS? 支持java.io访问flash文件系统 支持多线程 支持监听和事件 支持gc安全内存管理 支持8位WAV文件播放 提供了大量的样例 支持NXT到NXT的通讯 支持GPS设备 ……

准备leJOS环境 To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE 准备leJOS环境

环境准备—Windows 获取介质 JDK 5/6/7 USB驱动 蓝牙模块(可选) 要使用32bit的 http://www.oracle.com/technetwork/java/javase/downloads/ USB驱动 最新的Fantom Driver 1.1.3 http://mindstorms.lego.com/en-us/support/files/Driver.aspx Win7专业版+(或setup.ini->AllowWindowsStarter=1) 蓝牙模块(可选) 蓝牙设备及驱动

leJOS NXJ软件 0.9.1 beta版 http://lejos.sourceforge.net/nxj-downloads.php leJOS_NXJ_0.9.1beta-3_win32_setup.exe (21.9 MB) IDE Eclipse/Netbean 必须使用32bit

安装leJOS 安装步骤

建立NXT的Java运行环境 写入leJOS到LEGO NXT NXT刷固件,将NXJ固件使用leJOS的Flash工具写入到NXT中 环境变量 NXJ_HOME LEJOS_NXT_JAVA_HOME PATH=%NXJ%\bin;%PATH%

选择IDE,连接你的NXT 以Eclipse为例 安装新软件 lejos - http://lejos.sourceforge.net/tools/eclipse/plugin/nxj/

第一个程序 Hello,World 与新建类的方式相同 屏幕输出的两种方式 LCD类 System.out.println

编译和上传程序 Eclipse方式 运行->LeJOS NXT Program 插件完成Link、上传和运行的工作

编译和上传程序 手工方式 nxjc.bat,使用javac编译源码,生成class文件 nxjlink.bat,生成LE格式的nxj文件 nxjc HelloWorld.java nxjlink.bat,生成LE格式的nxj文件 nxjlink –o HelloWorld.nxj HelloWorld nxjupload.bat,上传nxj文件到NXT,执行程序 (–r参数) nxjupload –r HelloWorld.nxj nxj.bat,集成link和上传功能 nxj –r –o HelloWorld.nxj HelloWorld

leJOS的按键 按键 名称 说明 回车/开机 菜单选择 左 右 退出/关机 当位于顶层菜单时,关机

leJOS的菜单

控制轮式小车 To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE 控制轮式小车

控制伺服电机 Motor类 Motor类是对NXT 马达的抽象 马达需要连接A/D 端口 A端口 B端口 C端口 类 方法 说明 Motor.A forward() 向前转动 backward() 向后转动 stop() 快速停止 getTachoCount() 返回马达角度 setSpeed(int speed) 设置每秒的角度值 rorate(int angle) 旋转angle角度 rorateTo(int angle) 旋转到angle角度 rorate(int angle,boolean immediateReturn) 如果是true,则方法立即返回 rorateTo(int angle,boolean immediateReturn) …… Motor类 Motor类是对NXT 马达的抽象 马达需要连接A/D 端口 A端口 B端口 C端口

轮式小车 DifferentialPilot类 控制两轮驱动的小车高层类,每个轮子都有自己的马达 两个轮子的连接端口 轮子的直径 两个轮子间的距离

演示—两轮小车运行 To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE 演示—两轮小车运行

I/O和传感器 LCD、按键、声音、电池、光线传感器、声音传感器

I/O LCD和按键 LCD,显示8行16列,图片模式,100×64像素 按键实例 LCD.drawString(String str, int x, int y) LCD.drawInt(int i, int x, int y) LCD.drawInt(int i, int places, int x, int y) LCD.clear() 按键实例 Button.ENTER(1) Button.LEFT(2) Button.RIGHT(4) Button.ESCAPE(8) Button.isDown()

I/O 声音和电池 播放声音lejos.nxj.Sound 电池lejos.nxj.Battery playTone(int aFrequency, int aDuration),播放音频 systemSound (boolean aQueued, int aCode),播放系统声音 playSample(File aWAVfile),播放8bit的wav文件 电池lejos.nxj.Battery getVoltage(),获取电压

传感器 光线传感器和声音传感器 NXT提供了四个传感器,光线传感器、声音传感器、超声传感器和触碰 传感器 光线传感器,需要指定端口LightSensor(SensorPort port) 声音传感器,接收不同的频率响应SoundSensor(SensorPort.S1)

物体探测 超声传感器和触碰传感器 机器人探测路上的对象,做出特定行为 <<interface>> FeatureDetector FeatureDetectorAdapter RangeFeatureDetectector TouchFeatureDetectector

物体探测 超声传感器 自动检测和数据报告 通过监听器接口分离“活动—响应”代码 一个代码段响应多个传感器 int MAX_DISTANCE = 50; // 最大探测距离,单位为厘米 int PERIOD = 500; // 探测周期,单位为毫秒 UltrasonicSensor us = new UltrasonicSensor(SensorPort.S4); FeatureDetector fd = new RangeFeatureDetector(us, MAX_DISTANCE, PERIOD); Feature result = fd.scan(); if(result != null) { System.out.println("Range: " + result.getRangeReading().getRange()); }

物体探测 超声传感器和触碰传感器组合 UltrasonicSensor us = new UltrasonicSensor(SensorPort.S4); // 端口4连接超声传感器 FeatureDetector detector1 = new RangeFeatureDetector(us, MAX_DETECT,RANGE_READING_DELAY); // 端口2连接左触控传感器 Touch leftBump = new TouchSensor(SensorPort.S2); FeatureDetector detector2 = new TouchFeatureDetector(leftBump, 10, TOUCH_Y_OFFSET); // 端口3连接右触控传感器 Touch rightBump = new TouchSensor(SensorPort.S3); FeatureDetector detector3 = new TouchFeatureDetector(rightBump, -10, TOUCH_Y_OFFSET); FusorDetector fusion = new FusorDetector(); fusion.addDetector(detector1); fusion.addDetector(detector2); fusion.addDetector(detector3); fusion.addListener(myFeatureListener);

NXJ支持的第三方硬件

演示—物体探测和声音播放 To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE 演示—物体探测和声音播放

线程 leJOS在下面的情况下会单独开线程 如果监听在使用,那么按钮和传感器端口会开始一个监听线程 每个电机都会开始一个调节器线程 蓝牙类会开始一个可以与分开的蓝牙芯片对话的线程 每个定时器会打开一个定时器线程 Class Indicators extends Thread{ … … } … Indicators id = new Indicators(); id.setDaemon(true); id.start();

监听 leJOS实现了监听器线程来侦听特定事件 按键侦听,无论程序在做什么,发生按键事件时都会被检测到 按键侦听 传感器端口侦听 特定按键的侦听,需要注册单独的事件 addButtonListener

错误处理和调试 异常 数据终止 远程调试 支持绝大多数的Java标准异常 也可以自定义 NXJ崩溃,屏幕会显示指针和错误信息 PC使用Rconsole,USB或蓝牙 RConsole.println()

几个工具 NXJ File Browser,查看和操作NXJ上的文件 NXJ FlashG NXJ Monitor,监控线程运行情况

leJOS和Android To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE leJOS和Android

leJOS和Android 下载Android SDK 安装Eclipse插件 http://developer.android.com/sdk/index.html 安装Eclipse插件 http://developer.android.com/sdk/eclipse-adt.html 配置LeJOS-Droid工程,确保pccomms.jar在build path中 样例工程 TachoCount,获取电机转数 BTSend,蓝牙发送 RCNavigationControl,蓝牙控制小车行动

演示—两轮驱动小车 To fill a shape with an image. Use existing picture box, DO NOT delete and create new picture box. Right click on the shape. At the bottom of the submenu select “Format Shape” Select “Fill” at the top of the “Format Shape” dialog box. Select “Picture or Texture fill” from the options. And select “File” under the “Insert from” option. Navigate to the file you want to use and select “Insert” On the “Format” tab, in the Size group, click on “Crop to Fill” in the Crop tool and drag the image bounding box to the desired size DELETE THIS INSTRUCTION NOTE WHEN NOT IN USE 演示—两轮驱动小车

Graphic Section Divider