作者序
當我剛剛接觸樂高機器人的時候,馬上就被它深深吸引住了。原因很簡單,它能動,聽指揮,是一個優秀的創作平台。
按照網路上的草稿,我很快就製作出了幾個機器人的模型。但是如何處理機器人的核心部分:控制程式,卻一時沒有頭緒。如何讓機器人像人類一樣「思考」呢?為了達到這個目的,我先後嘗試了多種程式語言,直到使用過LeJOS之後,我終於發現,這正是我想要的。LeJOS 源自於Java 語言,它很強大,同時又十分小巧,可以提供給樂高同好無限的創作空間。對於像筆者這樣從事軟體開發工作多年的人來講,只要經過簡單的學習馬上就可以上手開發程式。而
對於程式設計知識了解不多的讀者,則有了一個學習Java 程式設計的好機會!只要幾行程式,就可以指揮機器人動起來,這種「學以致用」的方式一定會觸發你的學習熱情!同時,LeJOS 又在樂高機器人和真正的工業機器人之間架起了一座橋樑,為你的未來提供更多的選擇方向。下面,開始我們的學習之路吧!
本書的內容主要分為以下幾個部分:
第一、二章,從樂高的基礎知識講起,先帶領大家全面認識樂高機器人NXT8547。
第三、四章,介紹樂高的程式設計環境。樂高公司提供了NXT-G 語言來為樂高機器人設計程式。這是一種圖形化的程式語言,使用者透過拖放圖形達到撰寫程式的目的,而不用直接撰寫程式。這樣的程式設計方式雖然直觀,但是遇到過於複雜的邏輯,僅依靠圖形總會感到難以清楚表達自己的想法。本書介紹的是目前極為流行的一種程式語言:Java。Java 有一個專用於樂高NXT 開發的工具套件,就是前面提到的LeJOS。本書的主要內容就是向讀者介紹Java 和
LeJOS 的程式設計方法。
第五章說明的是程式設計的基礎知識。如果讀者以前學習過一種程式語言,例如C 或VB,那麼這一章的內容學習起來會十分輕鬆。沒有基礎的讀者也不用擔心,本書使用Java 作為載體,簡單明快的說明了型態、變數、循環敘述這些概念,這些知識用作樂高機器人開發已經足夠了。
第六、七章說明樂高機器人程式設計。本書本著循序漸進的原則,依次說明了螢幕輸出、馬達控制、感測器程式設計等幾部分內容。並對每個物件的操作方法一一說明。結合書中例題,力求做到內容詳實、使用案例準確、深入淺出、易學好用。
第八章向讀者介紹了程式設計中較為進階的技巧:執行緒和監聽。運用多執行緒知識,樂高機器人可以在捕捉外界實體量變化的同時及時作出回饋。這部分內容可以使簡單的程式更加精簡,同時也是開發複雜程式必不可少的知識。
第九章是對前面各章節知識的綜合運用。透過5 個小實例,筆者帶領大家一邊思考一邊動手,分析程式設計想法,整理基礎知識,最後完成程式的撰寫。
第十、十一章的內容是網路通訊和遠端控制。樂高機器人的連接方式有USB 和藍牙兩種,遠端控制分為PC 控制機器人,機器人控制機器人和手機控制機器人。現在Android 智慧型手機的使用已經十分普遍,本書利用Android 手機上的重力感應器撰寫了一個控制程式,遙控樂高小車作出前進,後退等動作。
第十二章作為擴充閱讀,主要向讀者介紹LeJOS 提供的圖形化工具的使用方法。此外,初學程式設計的同學,經常會遇到語法知識已經掌握了幾分,但是撰寫程式卻不知從何入手這個難題。在12-5 節會告訴讀者如何檢視LeJOS 提供的範例程式,認真閱讀之後會對你有所幫助。
因為本人所學有限,書中難免存在疏漏和錯誤。歡迎讀者朋友批評和指正,我將十分感謝並及時發佈勘誤資訊。我的電子郵件是:wxh1907@sina.com。在本公司官網www.topteam.cc 可以下載到本書的全部程式。
最後,對正在閱讀的您表示由衷的感謝!希望本書能給您帶來快樂和收穫!
魏曉暉
當我剛剛接觸樂高機器人的時候,馬上就被它深深吸引住了。原因很簡單,它能動,聽指揮,是一個優秀的創作平台。
按照網路上的草稿,我很快就製作出了幾個機器人的模型。但是如何處理機器人的核心部分:控制程式,卻一時沒有頭緒。如何讓機器人像人類一樣「思考」呢?為了達到這個目的,我先後嘗試了多種程式語言,直到使用過LeJOS之後,我終於發現,這正是我想要的。LeJOS 源自於Java 語言,它很強大,同時又十分小巧,可以提供給樂高同好無限的創作空間。對於像筆者這樣從事軟體開發工作多年的人來講,只要經過簡單的學習馬上就可以上手開...
目錄
前言
Chapter 1 認識樂高機器人
1.1 樂高介紹
1.1.1 樂高公司
1.1.2 樂高機器人系列
1.2 樂高零件
1.2.1 基本尺寸
1.2.2 種類
1.3 樂高機器人架設
1.3.1 結構與功能
1.3.2 結構與載重
1.4 小結
Chapter 2 LEGO MINDSTORMS NXT
2.1 NXT主機
2.2 輸出系統
2.2.1 LCD螢幕
2.2.2 聲音
2.2.3 馬達
2.3 感測器
2.3.1 觸碰感測器
2.3.2 光電感測器
2.3.3 顏色感測器
2.3.4 聲音感測器
2.3.5 距離感測器
2.3.6 角度感測器
2.3.7 溫度感測器
2.3.8 陀螺儀
2.3.9 其他感測器
2.4 其他輸入輸出裝置
2.4.1 按鈕
2.4.2 藍芽/資料線
2.5 小結
Chapter 3 初識LeJOS
3.1 什麼是LeJOS
3.2 安裝LeJOS
3.2.1 安裝驅動程式
3.2.2 安裝Java JDK
3.2.3 安裝LeJOS
3.2.4 更新軔體
3.3 LeJOS系統介紹
3.3.1 選單
3.3.2 工具和文件
3.4 小結
Chapter 4 使用Eclipse開發LeJOS
4.1 什麼是Eclipse
4.2 安裝Eclipse
4.2.1 下載
4.2.2 執行
4.2.3 安裝NXT外掛程式
4.3 Eclipse開發環境介紹
4.3.1 介面
4.3.2 選單
4.4 第一個程式:HelloNXT
4.4.1 新增、編譯和執行
4.4.2 讀懂LeJOS程式
4.5 小結
Chapter 5 程式設計的基礎知識
5.1 資料類型
5.1.1 基底資料型態
5.1.2 類型轉換
5.2 變數
5.2.1 定義變數
5.2.2 變數作用域
5.3 陣列和字串
5.3.1 宣告陣列
5.3.2 使用陣列
5.3.3 length屬性
5.3.4 二維陣列
5.3.5 字串
5.4 運算符號
5.4.1 算數運算符號
5.4.2 連接運算符號
5.4.3 設定值運算符號
5.4.4 關係運算符號
5.4.5 邏輯運算符號
5.5 條件陳述式
5.5.1 if敘述
5.5.2 switch敘述
5.6 循環敘述
5.6.1 for敘述
5.6.2 while敘述
5.6.3 do while敘述
5.7 針對物件
5.7.1 類別
5.7.2 方法
5.7.3 屬性
5.7.4 物件
5.8 小結
Chapter6 機器人程式設計
6.1 螢幕顯示
6.1.1 print方法
6.1.2 LCD類別
6.1.3 Graphics類別
6.2 聲音輸出
6.2.1 Sound類別
6.3 馬達控制
6.3.1 Motor類別
6.4 按鈕
6.4.1 Button類別
6.5 數學計算
6.5.1 Math類別
6.6 小結
Chapter 7 感測器程式設計
7.1 觸碰感測器
7.1.1 TouchSensor類別
7.2 顏色感測器
7.2.1 ColorSensor類別
7.3 距離感測器
7.3.1 UltrasonicSensor類別
7.4 角度感測器
7.5 小結
Chapter 8 執行緒與監聽
8.1 執行緒
8.1.1 什麼是執行緒
8.1.2 生命週期和優先順序
8.1.3 撰寫多執行緒程式
8.2 監聽
8.2.1 什麼是監聽
8.2.2 為按鈕增加監聽器
8.3 小結
Chapter 9 綜合實驗
9.1 單光感巡線車
9.2 自動避障車
9.3 防跌落小車
9.4 測距儀
9.5 環境光檢測儀
9.6 小結
Chapter 10 通訊與遠端控制
10.1 通訊方式介紹
10.1.1 USB
10.1.2 藍芽
10.2 機器人與PC通訊
10.2.1 建立USB連接
10.2.2 PC端發送訊息
10.2.3 NXT端接收訊息
10.2.4 PC遠端控制機器人
10.2.5 雙向通訊
10.3 機器人與機器人通訊
10.3.1 建立藍芽連接
10.3.2 遠端控制機器人
10.4 小結
Chapter 11 機器人與智慧型手機
11.1 基礎知識
11.2 手機端程式
11.2.1 架設Android開發環境
11.2.2 新增Android程式
11.2.3 執行Android程式
11.3 NXT端程式
11.4 小結
Chapter 12 擴充閱讀
12.1 更新軔體
12.2 影像轉換
12.3 資料處理
12.3.1 資料記錄
12.3.2 資料檢視
12.4 檔案管理
12.5 檢視範例程式
12.6 設定環境變數
12.7 小結
參考文獻
前言
Chapter 1 認識樂高機器人
1.1 樂高介紹
1.1.1 樂高公司
1.1.2 樂高機器人系列
1.2 樂高零件
1.2.1 基本尺寸
1.2.2 種類
1.3 樂高機器人架設
1.3.1 結構與功能
1.3.2 結構與載重
1.4 小結
Chapter 2 LEGO MINDSTORMS NXT
2.1 NXT主機
2.2 輸出系統
2.2.1 LCD螢幕
2.2.2 聲音
2.2.3 馬達
2.3 感測器
2.3.1 觸碰感測器
2.3.2 光電感測器
2.3.3 顏色感測器
2.3.4 聲音感測器
2.3.5 距離感測器
2.3.6 角度感測器
2.3.7 溫度感測器
2...