Loading [MathJax]/extensions/tex2jax.js

0

0
0

文字

分享

0
0
0

輕鬆使用Android裝置控制樂高機器人:單點觸控

馥林文化_96
・2012/06/26 ・2024字 ・閱讀時間約 4 分鐘 ・SR值 538 ・八年級

文/曾吉弘(CAVE教育團隊

暑假何處去?一起來玩機器人吧!本期CAVE的App Inventor機器人專欄要教您如何利用Android手機的觸碰面板來控制樂高機器人,控制起來超順暢。快亮出您的手機和手指吧!本次範例首先透過atan反正切函數將觸控點座標推算回與X軸夾角之後,再分別使用sin與cos函數轉換為左右馬達電力,您可清楚體驗不同的手指位置對於機器人動作的影響。

首先請把NXT 機器人準備好( 圖1),並將左側馬達接在NXT 的輸出端B ,右側則是輸出端C(註1)。請確認NXT 主機的藍牙是啟動的,接著將NXT 主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了,啟動藍牙之後你可以從NXT 主機的螢幕左上角看到藍牙的符號。

圖1  樂高NXT 機器人組裝範例。

-----廣告,請繼續往下閱讀-----

接下來依序介紹程式的各個功能:

STEP1:

首次進入程式的畫面如圖2a , 你可以看到只有 「NXT 裝置清單/ 連線」按鈕可以按,「斷線」按鈕則無法按下。點選「連線」按鈕後進入藍牙裝置清單(圖2),連線成功就可以看到黃色的觸控面板出現了。

圖2 程式首次執行的畫面→點選連線按鈕後進入藍牙裝置清單→連線成功後出現觸控面板

-----廣告,請繼續往下閱讀-----

STEP2:

接著是將ListPickerConnect 清單指定為藍牙配對裝置清單( 圖3), 點選「連線」按鈕之後, 會進入Android 裝置的藍牙連線清單(圖2),請找到剛剛配對完成的NXT 主機名稱(本範例為abc),點選之後就會由Android 裝置對NXT 主機發起藍牙連線。

圖3  ListPickerConnect 清單內容指定為藍牙配對裝置清單。

STEP3:

-----廣告,請繼續往下閱讀-----

本次程式的關鍵在於Animation 的ImageSprite 動畫精靈元件。它可根據我們手指頭拖拉而移動,也可以根據手機上Orientation sensor 的傾斜狀況來移動。或者可自行設定它的速度(speed)與指向(heading)欄位

來完成一個打磚塊遊戲(註3)。

如果要用手指頭拉動Imagesprite元件效果, 需把它放在Canvas 畫布元件中, 接著根據Canvas.Dragged事件回傳的座標來移動它的位置。ImageSprite 可讓你自由上傳圖檔做為其背景圖片, 不過別上傳太大的圖啊, 把畫面占滿就不好玩了。請在ImageSprite 的Picture 欄位點選「Add⋯」按鈕上傳圖片即可(圖4)。

圖4  上傳ImageSprite 背景圖檔。

-----廣告,請繼續往下閱讀-----

STEP4:

程式主要執行區在於Canvas.Dragged 拖拉事件。我們分段說明:

1 . 使用Ima g eSp r i t e .Mo v e To 指令,將XY欄位指定為CurrentX與CurrentY,這樣就能用手指拉著可愛的CAVE小圖走。

2. 在標籤Label上顯示XY座標,由於Canvas 的原點位於左上角,所以我們需要平移160像素才能把原點移到畫布中心。除以1.6是轉換成百分比以利後續的馬達電力換算。

-----廣告,請繼續往下閱讀-----

3. 接下來是兩個重要的變數X與Y:

• 變數X為觸碰點與X軸的夾角θ 公式為atan(y/x) – 45。atan是反正切函數, 可由y/x反推出夾角θ 。

• 變數Y為觸碰點與螢幕中心的距離,公式為√((x^2) + (y^2))。距離愈遠跑愈快,樂高NXT機器人的馬達電力範圍為100(正向全速旋轉)到-100(反向全速旋轉),數值超過上下限則就限制在100或-100。

4.最後將B馬達電力指定為sin(x)*y,C馬達電力指定為cos(x)*y。

-----廣告,請繼續往下閱讀-----

大功告成,擦擦汗吧!

圖5  Canvas.Dragged 拖拉事件,程式主執行區。

STEP5:

按下「停止」按鈕之後,會執行三件事:1. 使ImageSprite 歸位;2. 停下機器人以及3. 將畫面數值歸零。由於ImageSprite 圖案尺寸為30×30像素, 所以我們需將Canvas 畫布尺寸160 再減掉15 得出145 才會使ImageSprite 回到畫面正中間。

-----廣告,請繼續往下閱讀-----

STEP6:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態,黃色的觸控面板也看不到了。這時候你可以再次發起連線。

圖6  按下停止按鈕停下機器人並使ImageSprite歸位。

圖7  按下「斷線」按鈕時中斷藍牙連線。

STEP7:

實際執行的時候, 請先確認NXT已經開機且藍牙也啟動了。接著在你的Android 裝置上點選程式畫面中的「連線」按鈕,會進到如圖2a 的藍牙清單畫面,點選NXT 主機名稱連線成功後就會出現觸控面板。快亮出你的手指頭來控制機器人吧。沿著畫面中心上下(Y 軸)拉動手指會讓機器人前進或後退;左右拉動(X 軸)則是原地左右轉。你可以從停止按鈕上的兩個數字看到ImageSprite 的XY 座標。

圖8  手指往左上方拖動時,機器人向左前方前進。/手指往右下方拖動時,機器人向右後方後退。

就本團隊的教學經驗而言,本範例是結合三角函數的絕佳範例。在筆者高中時期,三角函數只是生硬的公式,不過就是背背sin2θ 與sinθ 之間的關係式,無法有實際的應用。但在機器人領域中,三角函數是相當重要的技巧,可讓機器人用來定位、推算方位角等等。相信你在練習過本範例之後,對於三角函數的應用以及角度與數值之間的關係都會非常清楚唷!

圖9 座標示意圖

本程式可直接由Google Play 下載,請在GooglePlay 搜尋「CAVE 教育團隊」就找得到了,或掃描以下的QRCode 也可以唷!

註1: 機器人運動方向有可能因為車頭指向而和程式設定相反,只要將左右馬達電線互換即可。

註2:將Android 手機設定為可安裝非Market 下載的程式以及讓手機與樂高NXT 主機連線等說明請參考:http://www.appinventor.tw。

註3:打磚塊遊戲請由http://www.appinventor.tw 下載。

文章原文刊載於《ROBOCON》國際中文版2012/7月號

-----廣告,請繼續往下閱讀-----
文章難易度
馥林文化_96
54 篇文章 ・ 5 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/

0

1
0

文字

分享

0
1
0
ECU: 汽車大腦的演化與挑戰
鳥苷三磷酸 (PanSci Promo)_96
・2025/07/02 ・3793字 ・閱讀時間約 7 分鐘

本文與 威力暘電子 合作,泛科學企劃執行。

想像一下,當你每天啟動汽車時,啟動的不再只是一台車,而是一百台電腦同步運作。但如果這些「電腦」突然集體當機,後果會有多嚴重?方向盤可能瞬間失靈,安全氣囊無法啟動,整台車就像失控的高科技廢鐵。這樣的「系統崩潰」風險並非誇張劇情,而是真實存在於你我日常的駕駛過程中。

今天,我們將深入探討汽車電子系統「逆天改運」的科學奧秘。究竟,汽車的「大腦」—電子控制單元(ECU),是如何從單一功能,暴增至上百個獨立系統?而全球頂尖的工程師們,又為何正傾盡全力,試圖將這些複雜的系統「砍掉重練」、整合優化?

第一顆「汽車大腦」的誕生

時間回到 1980 年代,當時的汽車工程師們面臨一項重要任務:如何把汽油引擎的每一滴燃油都壓榨出最大動力?「省油即省錢」是放諸四海皆準的道理。他們發現,關鍵其實潛藏在一個微小到幾乎難以察覺的瞬間:火星塞的點火時機,也就是「點火正時」。

如果能把點火的精準度控制在「兩毫秒」以內,這大約是你眨眼時間的百分之一到千分之一!引擎效率就能提升整整一成!這不僅意味著車子開起來更順暢,還能直接省下一成的油耗。那麼,要如何跨過這道門檻?答案就是:「電腦」的加入!

-----廣告,請繼續往下閱讀-----

工程師們引入了「微控制器」(Microcontroller),你可以把它想像成一顆專注於特定任務的迷你電腦晶片。它能即時讀取引擎轉速、進氣壓力、油門深度、甚至異常爆震等各種感測器的訊號。透過內建的演算法,在千分之一秒、甚至微秒等級的時間內,精準計算出最佳的點火角度,並立刻執行。

從此,引擎的性能表現大躍進,油耗也更漂亮。這正是汽車電子控制單元(ECU)的始祖—專門負責點火的「引擎控制單元」(Engine Control Unit)。

汽車電子控制單元的始祖—專門負責點火的「引擎控制單元」(Engine Control Unit)/ 圖片來源:shutterstock

ECU 的失控暴增與甜蜜的負荷

第一顆 ECU 的成功,在 1980 年代後期點燃了工程師們的想像:「這 ECU 這麼好用,其他地方是不是也能用?」於是,ECU 的應用範圍不再僅限於點火,燃油噴射量、怠速穩定性、變速箱換檔平順度、ABS 防鎖死煞車,甚至安全氣囊的引爆時機……各種功能都交給專屬的 ECU 負責 。

然而,問題來了:這麼多「小電腦」,它們之間該如何有效溝通?

-----廣告,請繼續往下閱讀-----

為了解決這個問題,1986 年,德國的博世(Bosch)公司推出了一項劃時代的發明:控制器區域網路(CAN Bus)。你可以將它想像成一條專為 ECU 打造的「神經網路」。各個 ECU 只需連接到這條共用的線路上,就能將訊息「廣播」給其他單元。

更重要的是,CAN Bus 還具備「優先通行」機制。例如,煞車指令或安全氣囊引爆訊號這類攸關人命的重要訊息,絕對能搶先通過,避免因資訊堵塞而延誤。儘管 CAN Bus 解決了 ECU 之間的溝通問題,但每顆 ECU 依然需要獨立的電源線、接地線,並連接各種感測器和致動器。結果就是,一輛汽車的電線總長度可能達到 2 到 4 公里,總重量更高達 50 到 60 公斤,等同於憑空多載了一位乘客的重量。

另一方面,大量的 ECU 與錯綜複雜的線路,也讓「電子故障」開始頻繁登上汽車召回原因的榜首。更別提這些密密麻麻的線束,簡直是設計師和維修技師的惡夢。要檢修這些電子故障,無疑讓人一個頭兩個大。

大量的 ECU 與錯綜複雜的線路,也讓「電子故障」開始頻繁登上汽車召回原因的榜首。/圖片來源:shutterstock

汽車電子革命:從「百腦亂舞」到集中治理

到了2010年代,汽車電子架構迎來一場大改革,「分區架構(Zonal Architecture)」搭配「中央高效能運算(HPC)」逐漸成為主流。簡單來說,這就像在車內建立「地方政府+中央政府」的管理系統。

-----廣告,請繼續往下閱讀-----

可以想像,整輛車被劃分為幾個大型區域,像是車頭、車尾、車身兩側與駕駛艙,就像數個「大都會」。每個區域控制單元(ZCU)就像「市政府」,負責收集該區所有的感測器訊號、初步處理與整合,並直接驅動該區的馬達、燈光等致動器。區域先自理,就不必大小事都等中央拍板。

而「中央政府」則由車用高效能運算平台(HPC)擔任,統籌負責更複雜的運算任務,例如先進駕駛輔助系統(ADAS)所需的環境感知、物體辨識,或是車載娛樂系統、導航功能,甚至是未來自動駕駛的決策,通通交由車輛正中央的這顆「超級大腦」執行。

乘著這波汽車電子架構的轉型浪潮中, 2008 年成立的台灣本土企業威力暘電子,便精準地切入了這個趨勢,致力於開發整合 ECU 與區域控制器(Domain Controller)功能的模組化平台。他們專精於開發電子排檔、多功能方向盤等各式汽車電子控制模組。為了確保各部件之間的溝通順暢,威力暘提供的解決方案,就像是將好幾個「分區管理員」的職責,甚至一部分「超級大腦」的功能,都整合到一個更強大的硬體平台上。

這些模組不僅擁有強大的晶片運算能力,可同時支援 ADAS 與車載娛樂,還能兼容多種通訊協定,大幅簡化車內網路架構。如此一來,車廠在追求輕量化和高效率的同時,也能顧及穩定性與安全性。

-----廣告,請繼續往下閱讀-----
2008 年威力暘電子致力於開發整合 ECU 與區域控制器(Domain Controller)功能的模組化平台 /圖片來源:shutterstock

萬無一失的「汽車大腦」:威力暘的四大策略

然而,「做出來」與「做好」之間,還是有差別。要如何確保這顆集結所有功能的「汽車大腦」不出錯?具體來說,威力暘電子憑藉以下四大策略,築起其產品的可靠性與安全性:

  1. AUTOSAR : 導入開放且標準化的汽車軟體架構 AUTOSAR。分為應用層、運行環境層(RTE)和基礎軟體層(BSW)。就像在玩「樂高積木」,ECU 開發者能靈活組合模組,專注在核心功能開發,從根本上提升軟體的穩定性和可靠性。
  2. V-Model 開發流程:這是一種強調嚴謹、能在早期發現錯誤的軟體開發流程。就像打勾 V 字形般,左側從上而下逐步執行,右側則由下而上層層檢驗,確保每個階段的安全要求都確實落實。
  3. 基於模型的設計 MBD(Model-Based Design) 威力暘的工程師們會利用 MatLab®/Simulink® 等工具,把整個 ECU 要控制的系統(如煞車),用數學模型搭建起來,然後在虛擬環境中進行大量的模擬和測試。這等於在實體 ECU 誕生前,就能在「數位雙生」世界中反覆演練、預先排除設計缺陷,,並驗證安全機制是否有效。
  4. Automotive SPICE (ASPICE) : ASPICE 是國際公認的汽車軟體「品質管理系統」,它不直接評估最終 ECU 產品本身的安全性,而是深入檢視團隊在軟體開發的「整個過程」,也就是「方法論」和「管理紀律」是否夠成熟、夠系統化,並只根據數據來評估品質。

既然 ECU 掌管了整輛車的運作,其能否正常運作,自然被視為最優先項目。為此,威力暘嚴格遵循汽車業中一本堪稱「安全聖經」的國際標準:ISO 26262。這套國際標準可視為一本針對汽車電子電氣系統(特別是 ECU)的「超嚴格品管手冊」和「開發流程指南」,從概念、設計、測試到生產和報廢,都詳細規範了每個安全要求和驗證方法,唯一目標就是把任何潛在風險降到最低

有了上述這四項策略,威力暘確保其產品從設計、生產到交付都符合嚴苛的安全標準,才能通過 ISO 26262 的嚴格檢驗。

然而,ECU 的演進並未就此停下腳步。當ECU 的數量開始精簡,「大腦」變得更集中、更強大後,汽車產業又迎來了新一波革命:「軟體定義汽車」(Software-Defined Vehicle, SDV)。

-----廣告,請繼續往下閱讀-----

軟體定義汽車 SDV:你的愛車也能「升級」!

未來的汽車,會越來越像你手中的智慧型手機。過去,車輛功能在出廠時幾乎就「定終身」,想升級?多半只能換車。但在軟體定義汽車(SDV)時代,汽車將搖身一變成為具備強大運算能力與高速網路連線的「行動伺服器」,能夠「二次覺醒」、不斷升級。透過 OTA(Over-the-Air)技術,車廠能像推送 App 更新一樣,遠端傳送新功能、性能優化或安全修補包到你的車上。

不過,這種美好願景也將帶來全新的挑戰:資安風險。當汽車連上網路,就等於向駭客敞開潛在的攻擊入口。如果車上的 ECU 或雲端伺服器被駭,輕則個資外洩,重則車輛被遠端鎖定或惡意操控。為了打造安全的 SDV,業界必須遵循像 ISO 21434 這樣的車用資安標準。

威力暘電子運用前面提到的四大核心策略,確保自家產品能符合從 ISO 26262 到 ISO 21434 的國際認證。從品質管理、軟體開發流程,到安全認證,這些努力,讓威力暘的模組擁有最高的網路與功能安全。他們的產品不僅展現「台灣智造」的彈性與創新,也擁有與國際大廠比肩的「車規級可靠度」。憑藉這些實力,威力暘已成功打進日本 YAMAHA、Toyota,以及歐美 ZF、Autoliv 等全球一線供應鏈,更成為 DENSO 在台灣少數核准的控制模組夥伴,以商用車熱系統專案成功打入日系核心供應鏈,並自 2025 年起與 DENSO 共同展開平台化量產,驗證其流程與品質。

毫無疑問,未來車輛將有更多運作交由電腦與 AI 判斷,交由電腦判斷,比交由人類駕駛還要安全的那一天,離我們不遠了。而人類的角色,將從操作者轉為監督者,負責在故障或斷網時擔任最後的保險。透過科技讓車子更聰明、更安全,人類甘願當一個「最弱兵器」,其實也不錯!

-----廣告,請繼續往下閱讀-----
-----廣告,請繼續往下閱讀-----
文章難易度

討論功能關閉中。

0

0
0

文字

分享

0
0
0
輕鬆使用Android裝置控制樂高機器人:「說」出機器人感測器的狀態
馥林文化_96
・2013/04/22 ・2764字 ・閱讀時間約 5 分鐘 ・SR值 523 ・七年級

文/曾吉弘(CAVE教育團隊

我們已經在前兩期的專欄中(2013年1月號、2013年3月號)介紹如何用Android手機上的姿態感測器來控制樂高機器人。搭配手機的感測器,您可以像玩Wii遊戲機一樣,以體感的方式來與機器人互動。本次專欄將使用App Inventor中的TextToSpeech元件(本文後簡稱TTS元件),讓手機「說」出機器人感測器的狀態(圖1)。程式執行的過程中,我們還可以即時更改感測器的類型,是很實用的功能呢!

App Inventor的TextToSpeech元件可以讓Android手機以語音方式輸出指定的文字或數值內容,本範例就是讓手機每秒播報一次感測器數值。除此之外還可指定語系與國家,預設值是eng(英語)與USA(美國),代表美式英語。您可以參考App Inventor中文學習網來改為其他歐陸語系,例如德語、法語或義大利語,會有更有趣的效果。

圖1 讓TextToSpeech元件說「hello」。

-----廣告,請繼續往下閱讀-----

請注意!目前App Inventor不支援中文等亞洲語系的語音輸出。

開始玩機器人

請把NXT機器人組裝好,並將左側馬達接在NXT的輸出端B,右側則是輸出端C(註1)。請確認NXT主機的藍牙是啟動的,接著將NXT主機與Android手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號。

接下來依序介紹程式的各個功能:

STEP1  登入畫面:

-----廣告,請繼續往下閱讀-----

首次進入程式的畫面如圖2a,只有「NXT裝置清單/連線」按鈕可以按,其它所有按鈕都無法操作。點選[NXT裝置清單/連線]按鈕後進入藍牙裝置清單(圖2b),請找到剛剛配對完成的NXT主機名稱(本範例為abc),點選之後就會由Android裝置對NXT主機發起藍牙連線。順利連線成功的話,就可接續選擇感測器類型(圖2c)。

圖2a 程式首次執行的畫面。 圖2b 點選連線按鈕後進入藍牙裝置清單。 圖2c 連線成功後才可選擇感測器類型。

STEP2  程式初始化:

在點選連線清單之前(ListPickerConnect的BeforePicking事件),需先將清單內容指定為Android裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「選擇感測器」與「開始念/停止」設為可點選(圖3b)。

-----廣告,請繼續往下閱讀-----

圖3a 指定藍牙配對裝置清單。

圖3b 連線成功後啟動相關元件。

STEP3 選擇感測器類型:

為了節省畫面空間,我們使用了Listpicker搭配清單來達到下拉式選單的效果。首先需要宣告一個清單,內容為(color.jpg, sound.jpg, light.jpg, ultra.jpg),就是使用的感測器圖檔名稱(圖4a)。編號index則依序由1到4。本範例就是使用這個編號來更改顯示的圖片與感測器類型。

-----廣告,請繼續往下閱讀-----

由圖4b中可看到當我們點選了要使用的感測器之後,就要把「開始念/停止」按鈕設為可點選,代表我們準備好要念出感測器數值了。另外還把這個編號所代表的項目內容顯示在畫面上,最後則將Image元件的圖片換成這個編號所代表的圖檔(select list item指令)。例如圖4a中的sensorList清單中的第3號的項目內容就是「light.jpg」。

圖4a 宣告一個陣列來存放圖檔。

圖4b 點選感測器類型之前與之後事件。

注意!List清單實際上就是一般程式語言中的陣列(array),App Inventor使用了較為親民的用語。另外n個項目的陣列其項目編號是由0到n-1,App Inventor則是1到n。

-----廣告,請繼續往下閱讀-----

STEP4  根據選擇的感測器類型來控制TTS元件播報內容:

選擇感測器類型,實際上就是在ListPicker_SensorList中點選了某個項目,接著就要根據這個項目的編號index(請注意,不是項目內容!)來決定TTS元件的播報內容。在此我們使用一個副程式say來管理程式,讓程式更簡明易懂。在say副程式中,它會藉由接收到的sensor參數(也就是傳入的編號index)來決定TTS元件的播報內容與TextBox/Label的顯示內容。請看圖5說明:

圖5 say副程式中透過使用者所點選的項目編號來決定執行內容。

STEP5  使用Clock元件來控制TTS元件:

-----廣告,請繼續往下閱讀-----

我們將Clock元件的TimerInterval設定為2000毫秒,代表每兩秒呼叫一次say副程式,並傳入剛才所點選的感測器類型編號(SelectionIndex)。這樣就能控制TTS元件的播報內容與TextBox/Label的顯示內容(圖6)。

圖6 透過點選項目的編號來呼叫say副程式。

STEP6  開始/停止播報感測器數值:

如果在尚未建立與機器人的藍牙連線之前就要TTS念些什麼的話,就會得到-1 這個討厭的數值。所以我們使用「開始念/停止」按鈕來啟動或關閉Clock元件,並將現在的播報狀態(STOPSPEAKING)顯示在手機的狀態列。您可以隨時用這個按鈕來決定停止或繼續播報資料(圖7)。

-----廣告,請繼續往下閱讀-----

圖7點選按鈕來啟動/關閉計時器。

STEP7  斷線:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態(圖8)。

圖8 按下「斷線」按鈕時中斷藍牙連線。

操作

實際執行的時候,請先確認NXT已經開機且藍牙也啟動了,並將顏色、聲音、光與超音波感測器依序接在NXT主機的1到4號輸入端。接著在您的Android裝置上點選程式畫面中的「連線」按鈕,會進到如圖4b的藍牙清單畫面,點選您所要的NXT主機名稱並連線成功後,接著選擇感測器類型,點選之後會顯示對應的感測器圖片與名稱,如圖9所示。

圖9 連線成功後,可選擇不同的感測器,會顯示不同圖案與字樣。

最後點選旁邊的「開始念/停止」按鈕就可以聽到手機把感測器數值念出來了。以下是選擇超音波感測器時的畫面,畫面也會同時顯示數值為58(圖10)。

圖10 手機開始唸出感測器數值,並顯示在畫面上。

TTS元件是用來語音輸出的元件,它可以說出我們所指定的內容,包括文字與數字。您可以讓機器人用說的方式來呈現它的狀況,例如撞到牆壁時,可以說出「Ouch!」等趣味效果。期待您從本期專欄的內容來激盪出更多有趣的火花。請繼續關注CAVE的機器人專欄唷!

 

歡迎大家由此連結下載本程式來玩玩看,或掃描以下的QRCode也可以直接將檔案下載到手機。或到App Inventor中文教學網上直接下載本範例的App Inventor原始檔與apk安裝檔。本程式已上架Google play,請到Google Play搜尋「CAVE教育團隊」就找得到我們的樂高機器人系列app了。

註1:想學如何開發App Inventor程式嗎?請到App Inventor中文學習網與我們一同學習。
註2:將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此連結
註3:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

文章原文刊載於《ROBOCON》國際中文版2013/5月號

-----廣告,請繼續往下閱讀-----
馥林文化_96
54 篇文章 ・ 5 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/

0

0
0

文字

分享

0
0
0
輕鬆使用Android裝置控制樂高機器人:翻轉控制
馥林文化_96
・2012/12/18 ・2806字 ・閱讀時間約 5 分鐘 ・SR值 521 ・七年級

-----廣告,請繼續往下閱讀-----

文/曾吉弘(CAVE教育團隊

本期的App Inventor機器人專欄要藉由手機的傾斜程度來控制機器人的動作。本範例使用了姿態感測器(Orientation Sensor)的X、Y軸向資訊來共同決定樂高機器人的左右馬達電力,並同時控制畫面上的CAVE小圖案移動。本範例與2012年7月號的〈單點觸控〉的概念很相似,只是訊號來源由觸控點座標改為姿態感測器變化量而已。在數學運算上用到了sin與cos等基礎三角函數,對於學生來說是個相當不錯的練習機會。

姿態感測器主要感應手機方位的變化,回傳了三個軸向的傾斜角度,分別是X軸:俯仰(Pitch)、Y軸:翻滾(Roll)與Z軸:旋轉(Azimuth,或稱Yaw)。

開始玩機器人

-----廣告,請繼續往下閱讀-----

首先請把NXT機器人準備好,並將左側馬達接在NXT的輸出端B,右側則是輸出端C(註1)。請確認NXT主機的藍牙是啟動的,接著將NXT主機與Android手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了,啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號。

接下來依序介紹程式的各個功能:

STEP1  登入畫面:

首次進入程式的畫面如圖2a,只有「連線」按鈕可以按,其它所有按鈕都無法操作。另一方面,因為Orientation感測器目前是關閉的,這時不論您如何翻轉手機,CAVE小圖案都是不會動的,我們會在連線成功之後才將其啟動。點選「連線」按鈕後進入藍牙裝置清單(圖2b),請找到剛剛配對完成的NXT主機名稱(本範例為abc),點選之後就會由Android裝置對NXT主機發起藍牙連線。順利連線成功的話,就能看到pitch與roll的資料不斷更新,搖晃手機還能看到CAVE小圖案在畫布上移動(圖2c)。

-----廣告,請繼續往下閱讀-----

 圖2a  程式首次執行的畫面。
 圖2b  點選連線按鈕後進入藍牙裝置清單。
 圖2c  連線成功後出現相關資訊,CAVE小圖案也會動了。

STEP2  程式初始化:

接著是點選連線清單之前(ListPicker_CONNECT事件),先指定清單內容為藍牙配對裝置清單(圖3a)。在連線之前之所以CAVE小圖案無法移動,是因為我們先將姿態感測器關起來了,要等到連線成功之後(圖3b)才會啟動,這時原本不會動的CAVE小圖案以及無法按下的「斷線」等按鈕這時也都可以操作了。

 圖3a  指定藍牙配對裝置清單並隱藏觸控板。

 圖3b  連線成功後啟動相關元件。

STEP3 變數介紹:

本範例共使用了五個整數型別變數,介紹如下:

-----廣告,請繼續往下閱讀-----
  1. count:用來切換感測器與馬達資訊是否顯示。
  2. power:取得姿態感測器的Magnitude來決定控制上的靈敏度。
  3. angle:手機傾斜方向,如為0則代表手機朝Y軸正向傾斜(pitch值增加)。
  4. LMotor:左馬達電力。
  5. RMotor:右馬達電力。

 圖4  變數介紹。

STEP4 根據姿態感測器資訊計算馬達電力:

所有的計算都是在OrientationSensor1.OrientationChanged事件中完成,只要姿態感測器任一軸向的資訊有改變就會自動呼叫本事件並執行其中內容。以下依序說明:

1.移動CAVE小圖案:使用ImageSprite.MoveTo指令,將XY欄位指定為ImageSprite.X – roll以及ImageSprite.Y – pitch,這樣當您搖晃手機時,可愛的CAVE小圖案也會在畫面上漂來漂去,相當有趣。請注意當CAVE小圖案沿著Y軸正向移動時,這時候增加的是pitch而不是roll,不要搞錯囉!

2.更新變數:

-----廣告,請繼續往下閱讀-----
  • angle = OrientationSensor.Angle – 45:取得手機傾斜角並進行偏量補償,方便馬達電力計算。
  • power = OrientationSensor.Magnitude * 200:OrientationSensor.Magnitude是一個介於0到1之間的小數,代表手機的傾斜程度,您可以調整200這個常數來放大或縮小傾斜程度對於機器人電力的影響。雖然馬達電力範圍為-100到100,但超過也沒關係,馬達電力不會因此而受影響。
  • LMotor = cosangle * power:左馬達電力
  • RMotor = sinangle * power:左馬達電力

*註:您可以堅持老派風格,也就是使用pitchroll變數值,搭配三角函數計算之後一樣能有相同的機器人控制效果。但本範例使用姿態感測器的angleMagnitude這兩項變數,也是另一種作法。

3.顯示變數於標籤上:將pitch與roll的資訊更新在Label_Orientation標籤上,並將左右馬達電力LMotor與RMotor更新在Label_Motor標籤上。為避免單一字串過長,我們使用make text指令將多個字串組合在一起,這在各程式語言中都是常見的技巧。

4.轉動馬達:最後把LMotor與RMotor變數值分別指定給NxtDrive_B與NxtDrive_C的MoveforwardIndefinitely指令就可以讓兩個馬達根據手機傾斜狀況來運動了。


 圖5  根據姿態感測器的X、Y軸向變化資訊來控制機器人。

STEP5 點選CAVE小圖案來顯示資訊:

-----廣告,請繼續往下閱讀-----

本次程式多了一個附加功能,就是點擊CAVE小圖案來顯示或關閉各樣資訊的即時更新,這是因為有的Android手機會因為這些資訊更新太過頻繁而變的卡卡的,您可以視實際狀況來決定是否要顯示這些資訊。我們在ImageSprite1.Touched點擊事件中,根據count是0或1來決定顯示或關閉訊的即時更新(圖6b)。

 圖6a  根據方位感測器值來改變小圖案指向。

 圖6b  資訊標籤關閉。

STEP6  斷線:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使按鈕恢復到未連線時的狀態,CAVE小圖案又再次回到畫面中央且不再移動了。這時候您可以再次發起連線。

 圖7  按下「斷線」按鈕時中斷藍牙連線。

操作:

-----廣告,請繼續往下閱讀-----

實際執行的時候,請先確認NXT已經開機且藍牙也啟動了。接著在您的Android裝置上點選程式畫面中的「連線」按鈕,會進到藍牙清單畫面,點選NXT主機名稱連線成功後就可以搖晃手機來控制機器人了(圖8a到8c),操作方式相當直覺,您一定會喜歡的,但小心別把手機掉到地上啦。操作過程中您可以隨時點選CAVE小圖案來關閉資訊顯示。


 圖8a  手機向前傾斜,機器人前進,馬達電力為(52,49)。
 圖8b  手機向右傾斜,機器人原地右轉,馬達電力為(55,-57)。
 圖8c  兩個向左後方傾斜,機器人向左後方轉彎,馬達電力為(-37,-7)。

絕大部分的Android裝置都會有姿態感測器,許多小遊戲例如滾球或是賽車等,也都應用了姿態感測器來偵測玩家的動作。但由於姿態感測器相當靈敏,您也許需要針對本範例中一些參數進行調整來達到更好的效果。

歡迎大家由這個下載本程式來玩玩看!或掃描以下的QRCode也可以唷!更多有趣的機器人app請在Google Play搜尋「CAVE 教育團隊」就找得到了。

註1:機器人運動方向有可能因為車頭指向而和程式設定相反,只要將左右馬達電線互換即可。
註2:想學如何開發App Inventor程式嗎?請到App Inventor中文學習網(http://www.appinventor.tw)與我們一同學習。
註3:將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考連
註4:與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

文章原文刊載於《ROBOCON》國際中文版 2013/1月號

-----廣告,請繼續往下閱讀-----
-----廣告,請繼續往下閱讀-----
馥林文化_96
54 篇文章 ・ 5 位粉絲
馥林文化是由泰電電業股份有限公司於2002年成立的出版部門,有鑒於21世紀將是數位、科技、人文融合互動的世代,馥林亦出版科技機械類雜誌及相關書籍。馥林文化出版書籍http://www.fullon.com.tw/