Ex1-樂高基本車

Download Report

Transcript Ex1-樂高基本車

組裝及控制機器人
SoftwareEngineering LAB in NTCU
Outline
•
•
•
•
•
聲控自走車組裝
開發環境安裝及設定
Lejos控制NXT說明
實驗-聲控自走車
練習
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
開發環境安裝及設定
•
•
•
•
•
1. 安裝Java JDK
2. LEGO驅動程式安裝
3. 安裝Lejos Library
4. Firmware 更新成Lejos
5. Window XP 環境變數設定
SoftwareEngineering LAB in NTCU
開發環境安裝及設定
1. 安裝Java JDK 1.6
– 網址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk7u7downloads-1836413.html (Windows x86(32bit) or Windows x64(64bit))
2. LEGO驅動程式安裝
– 安裝LEGO原廠驅動程式NXT_Driver_v1.1
• LegoMindstormsNXTdriver32.msi(32bit) or
LegoMindstormsNXTdriver64.msi(64bit)
– 安裝Lejos Library
• 執行leJOS_NXJ_0.8.5-Setup.exe
3. 安裝LEGO Lejos驅動程式
• 執行libusb-win32-devel-filter-1.2.6.0.exe
SoftwareEngineering LAB in NTCU
開發環境安裝及設定
• 4. Firmware 更新成Lejos(人工智慧課程學生不需更新)
–
–
–
–
Setp0: 按住reset按紐約5秒
Setp1: 改變目錄至C:\lejos_nxj\bin目錄底下
Setp2: 執行nxjflash.exe
Setp3: 更新成功畫面如下所示
SoftwareEngineering LAB in NTCU
開發環境安裝及設定
• 5. Window XP環境變數設定
– • Path :再加入下列二個路徑
• C:\Program Files\leJOS NXJ\bin;(NXJ安裝路徑)
• C:\Program Files\Java\jdk1.6.0_07\bin;(Java安裝路徑)
SoftwareEngineering LAB in NTCU
Lejos控制NXT說明
• 1. Cross-Compile LEGO program
• 2. Lego機器人模組基本元件馬達的控制
SoftwareEngineering LAB in NTCU
Cross-compile Java program
• 1. Compile java program
– nxjc MySrceen.java
• 2. Upload to LEGO Robot
– nxj MySrceen
• 結果如下所示:
SoftwareEngineering LAB in NTCU
Lego機器人模組基本元件馬達的控制
NXT基本語法-馬達控制
Motor類別-靜態類別(Static) :
• 需Import的類別庫:
– import lejos.nxt.Motor;
• 可使用的Method:
– setPower(int); //括弧內為0-100
– setPower(int); //括弧內為0-100
– forward(); //前進
– backward(); //後退
– isForward(); //是否正在前進
– flt(); //順勢轉動直到停止
– rotate(int); //旋轉度數,括弧內可放負數
– stop(); //馬上停止
•
程式範例:
– Motor.A. forward(); //連接Port A 的馬達前進
– Motor.A.backward(); // 連接Port A 的馬達後退
– Motor.A.isForward(); // 連接Port A 的馬達是否正在前進
– Motor.B.flt(); //連接Port B 的馬達順勢轉動直到停止
– Motor.C.rotate(35); // 連接Port C 的馬達旋轉35度數
– Motor.C.stop(); // 連接Port C 的馬達馬上停止
SoftwareEngineering LAB in NTCU
實驗-聲控自走車
• 目的:
– 熟悉Sound sensor之使用
• 動作說明:
– 自動車在往前行駛中,接收到聲音訊號,改變成後退行駛
– 自動車在後退行駛中,接收到聲音訊號,改變成往前行駛
• 示意圖如下所示:
SoftwareEngineering LAB in NTCU
NXT基本語法–聲音感測器
• SoundSensor類別:
– 需Import的類別庫:
• import lejos.nxt.SoundSensor;
• import lejos.nxt.SensorPort;
– 須先指定其連接port number
• SensorPort.S1 : SensorPort S1的Object
– 可使用的Method:
• readValue()
//讀取聲音分貝值
• setDBA(Boolean dba)
//設定單位, true 讀取聲音單位為分貝
– 程式範例:
• 將Sound Sensor 連接到port1:
– SoundSensor mySound = new SoundSensor(SensorPort.S1);
• Method 呼叫:
– int soundValue=mySound.readValue();
soundValue 變數
– mySound. setDBA(true); //設定單位
//讀取聲音分貝值給
SoftwareEngineering LAB in NTCU
程式範例片段
SoftwareEngineering LAB in NTCU
完整範例程式
import lejos.nxt.*;
import lejos.nxt.addon.*;
import java.lang.System;
public class MySoundControl{
static int state = 1;
static int s=0;
static boolean flag=true;
SoundSensor mysound = new
SoundSensor(SensorPort.S3);//sound
public static void main(String[] args) throws
Exception{
MySoundControl msc = new MySoundControl();
while(!Button.LEFT.isPressed()){
if(msc.isHighSound()){
if(msc.state==1)
msc.state=2;
else if(msc.state==2)
msc.state=1;
}
msc.carStateControl(msc.state);
}//end while
}//end main
public boolean isHighSound(){
if(mysound.readValue()>70)
return true;
else
return false;
}
public void carStateControl(int state) throws
Exception{
if(state ==1)
carForward();
else if(state ==2)
carBackward();
}
public void carForward() throws Exception{
Motor.B.forward();
Motor.C.forward();
lcdShow("forward");
}
public void carBackward() throws Exception{
Motor.B.backward();
Motor.C.backward();
lcdShow("backward");
}
public void lcdShow(String showStr) throws
Exception{
LCD.clear();
LCD.drawString(showStr,0,4);
LCD.refresh();
Thread.sleep(1000);
}
}//end clases
SoftwareEngineering LAB in NTCU
練習
• 自動車在往前行駛中,接收到聲音訊號,左轉九十度,
改變成往前行駛
• 自動車在後退行駛中,接收到聲音訊號,右轉九十度,
改變成往前行駛
SoftwareEngineering LAB in NTCU
聲控自走車組裝
SoftwareEngineering LAB in NTCU
伺服馬達
燈泡
LCD螢幕
左右按鈕
Enter
NXT主機
Esc
Touch
Sound
Light
Ultrasonic
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU
SoftwareEngineering LAB in NTCU