Tag Archives: 技術交流

[ 翻譯 ] 2018.12.3- TensorFlow Lite專案分享:Jrobot無人四輪車

翻譯

宗諭

審閱

Joe Chen、CAVEDU教育團隊

專案作者

Joe Chen

感謝作者Joe Chen授權翻譯文字內容,以及播放影片,特此致謝!

主題圖片

Designed by Freepik,特此致謝!

 

Jrobot Self-Drive Powered by TensorFlow Lite

Jrobot無人四輪車的運作核心是TensorFlow Lite。

 

Previously, we used J-control to drive the Jrobot remotely, and this time we get rid of J-control and let Jrobot to do self-drive.

先前,我們運用J-control遠距驅動Jrobot,但這次我們不使用J-control,而讓Jrobot自行駕駛。

 

Jrobot Self Drive is another self-drive experiment based on machine learning, it is not a simulator, it is not a road vehicle, it is a footpath traveler. We built NVIDIA CNN self-drive model using Keras, collected training data, trained the model, and converted the trained model to TensorFlow Lite.

Jrobot無人四輪車是一項建基於機器學習的無人車實驗。Jrobot不是模擬器,也不是道路用車輛,而是一台小型的四輪車。我們運用Keras建構NVIDIA CNN自駕模型,然後收集訓練資料,訓練模型,最後將訓練好的模型轉換至TensorFlow Lite上。

 

TensorFlow Lite allows us to do inference on a mobile device and is the key part of this project. We added TensorFlow Lite to Jrobot Android app. When running, TensorFlow Lite is able to load the trained model, take a camera image as input and give a steering angle as output. Jrobot app runs on an Android phone (Xiaomi Mi5) sitting in the phone box on Jrobot car and control the movement of the Jrobot car through bluetooth connection with Arduino on the car.

運用TensorFlow Lite使我們可以在行動裝置上進行推論,所以TensorFlow Lite可說是這個專案的核心。我們把TensorFlow Lite加至Jrobot Android app中,當運作時,TensorFlow Lite能夠載入訓練好的模型,然後以照相機的圖像作輸入,並給出一個轉向角作輸出。Jrobot app在Android手機上運作,在下面的影片中,我們使用的手機是小米Mi5。當Jrobot準備行駛前,我們把手機放入Jrobot無人四輪車上的手機盒,並透過手機上的藍牙裝置連接四輪車上的Arduino開發板,以控制四輪車的行駛。

 

We did road test in 2 places in the neighborhood and the results show us the trained model works well. Even though it is not full self-drive, it makes human control so much easier, and opens up so many new options, which means there is so much more to do. Thank you!

我們在社區中的兩處地方進行道路測試,結果顯示訓練模型運作的相當好。即便Jrobot目前還不是完全自駕,卻使得人為控制容易許多,並且開啟了許多新選項,這也意味我們還有許多部分需要努力,謝謝。

 

接下來,請讀者們觀賞Jrobot無人四輪車的介紹影片,當中包括了兩次的道路測試(如果讀者想直接看道路測試,第一次道路測試從8:25開始,第二次道路測試從21:30開始):

 

備註:如果想要購買AI人工智慧相關產品,歡迎洽詢機器人王國商城

 

相關文章

 

[ 介紹文 ] 2018.11.28- 進擊的Tank-Go!! V5.3 紅外線對戰坦克

撰文

Niko Yang

圖片

Niko Yang

說明

感謝網友Niko Yang撰稿,特此致謝!

 

玩坦克大戰是許多朋友年輕時期經歷過的美好回憶,無論是從任天堂紅白機或後續的電視遊樂器,坦克大戰皆是熱門的題材之一,也是與朋友或家人共享歡樂的好遊戲。在電視遊樂器之外,至各電商賣場搜尋「對戰坦克」,也有許多遙控坦克販賣,可見坦克類遊戲受歡迎的程度。

 

緣由

欣逢南科AI_ROBOT自造基地交流平台,於6月份在台南舉辦「自造機器人的一百種樣貌」研討會,由KEVIN WANG 對整個MINI-PLAN的進化與發展歷史進行分享。筆者也從研討會認識當前機器人的種類,以及對聯發科技的LinkIt 7697開發板有了第一次接觸。在那麼多的機器人中,最吸引筆者的莫過於TANK GO系列了。

圖1

 

令人驚喜的寶物

目前各種相容於Arduino 的開發板如雨後春筍般出現,有點讓人難以選擇,各家開發板各有千秋。研究各類開發板後,筆者選擇了LinkIt 76XX系列,除了它支援BLE藍芽外,也支援Wi-Fi控制,再加上由MINI-PLAN演進的ROBOT-SHIELD V2 擴充板於2017年10月開始販售,使LinkIt 7697如虎添翼,整體元件結合支援10組PWM及兩組DC馬達同時控制,也支援I2C介面擴充,並由兩顆 270F 2.7V 260mah電容器(Lithium Capacitor)提供電力,不需擔心電源過充或過放電力的問題。也因為是電容器,官方規格的深度循環可達3000次,相對於手機鋰電池的500次循環,連續使用多達六倍以上的時間,也不需擔心起火或爆炸問題。運用在坦克製作上,自然被筆者列為優先考慮的組合。

 

參考文章:

CAVEDU [LinkIt 7697] 認識LinkIt 7697,你會需要這一篇!

圖2

 

資源分享

得到第一把鑰匙後,從網站https://www.thingiverse.com/,看到SMARTS 系列的3D列印件有很大發展空間,同時在YouTube上看見由Chiou ShinWei(George)大神,分享3D列印件和完整的安裝流程,以及零件表和程式碼的分享,皆讓筆者在坦克製作上節省相當多時間。從3D列印領域至控制板,乃至於學生時代學習的知識都要一併用上。在聯發科技網頁上,有很詳細的介紹,以及工程師的技術問題回覆和支援。

 

ShinWei Chiou(George)

V4 版程式和3D模型檔案和零件清單

https://github.com/GeorgeChiou/Robot-Shield-V2.0

 

安裝說明和零件清單

https://youtu.be/rpaQaJ1GmJE

圖3

 

魔鬼藏在細節裡

筆者原以為萬事俱備,結果發現有些事情仍是要嘗試過才能瞭解箇中奧妙。第一個問題是戰車鋁帶元件使用PLA當承軸,但PLA遇到濕氣經過一至二星期後,有30%的PLA承軸斷裂,想拿金屬螺絲取代卻又太重。所以,最後筆者使用木質牙籤,並點上微量的瞬間接著劑在鋁帶元件內側稍做固定。或是由Mike Tsai 網友所建議,用PEG的3D線材取代也可以。

 

在砲台旋轉上,原本使用24AWG線材,但其表皮太硬,導致戰車砲塔旋轉會因線材而上下晃動,馬上更換舵機專用線給紅外線IRDA和紅外線接收IRM-3638N3連接線使用,解決了問題。

 

不用熱熔膠而使用UHU透明膠連接,避免3D列印零件因高溫而變形,以及日後需修改的拆裝;在N20馬達的齒輪本體也塗上田宮齒輪油,塗上後N20馬達瞬間耗電流下降許多,齒輪轉動聲音也慢慢變小。自造的迷人之處,就在於不斷有新挑戰出現,卻總能一一克服。

圖4

 

性能再強化

在筆者與家人玩TANK-GO一段時間後,收集了大家的建議進行一次修改及強化性能,於是便著手發展V5.3版的程式碼。首先在手機操控介面上,針對按鈕位置重新編列,以及針對功能進行調整,不僅操作便利更適合長時間使用。可惜聯發科技的 LRCONTROL 目前暫時只支援六種顏色(RC_ORANGE, RC_BLUE, RC_GREEN, RC_PINK, RC_GREY, RC_YELLOW)。

https://docs.labs.mediatek.com/resource/linkit7697-arduino/en/developer-guide/using-linkit-remote/lremote-control-classes

 

同時戰車砲塔旋轉角度的左右方向,也進行一致性調整;在MPFPLAYER 聲音按鍵上,也更改為每階2格度調整,並限制最大至28 (MAX:30),避免小的喇叭單體破音,以及夜間播放音樂聲量的細部調整。

 

朋友建議加上兩顆燈光(LED)做為彈藥用盡或生命值歸零的提醒,也避免因緊張一直按鈕卻無動作對應。經筆者考慮,除了LED作為狀態顯示外,也加入兩段系統語音,例如:補彈藥和修理進行提示。其他細節可參考GITHUB上的README完整說明。

 

Niko Yang V5.3 版修改軟體和電子零件焊接圖片

https://github.com/yangniko137/Tank-Go-V5?fbclid=IwAR0NseA_2R2cRFvZRvyqWwNXehPig6qMT5wTly-tnJPS84LIOpKXyL0n61k

圖5

 

未來發展

科技發展鮮少有停頓的時刻,在筆者看過「少女與戰車(GIRLS und PANZER)」影片後,發覺還有許多功能值得更新,例如生命值歸0後,升起投降用的白色旗子⋯⋯等等。

 

兩顆超大電容提供激烈對戰達40分鐘左右,但把戰車當成MP3播放器聽CD書,這時便需要插5V市電供應,也考慮以14650或18650電池和保護板供電,省去電線纏繞的困擾。

 

對戰時的遮蔽建築物連同戰車收納的盒子,也可考慮製做成組合式,並且各戰車語音可以男女分開⋯⋯等等。這些都是很好的建議,以及下一步更新的方向。

圖6

 

結論

舉一反三,除了坦克外也順便發展FPV加上攝像頭及圖傳,加上接收和螢幕就可在家中探險。自造除了腦力激盪外,也藉由製作過程認識新的學問及志同道合的朋友。因此,謹藉由本篇文章,感謝無私分享的Maker們。

圖7

 

備註:如果您想要購買 LinkIt 7697Robot Shield,歡迎洽詢機器人王國商城,謝謝。

 

相關文章

[ 翻譯 ] 2018.11.14- 網友大哉問:迴圈有許多種類型,TensorFlow中的tf.while_loop()是屬於哪一種呢?

翻譯

宗諭

審閱

阿吉老師

主題圖片

Designed by Starline

資料來源

TensorFlow官方論壇

 

Hello!讀者們好!又到我們的「網友大哉問」了。今天提出問題的網友是weich,他的問題是:

 

I have a question about tf.while_loop(). Is this sequential loop or parallel loop.

我有一個關於tf.while_loop()的問題。tf.while_loop()是循序迴圈(Sequential Loop),或是平行迴圈(Parallel Loop)?

 

Take the example from tensorflow document. Since the current iteration depends on the last iteration through the `i` in the code. I am wondering if the loop body executes one by one as a pure sequential loop?

以TensorFlow文件中的程式為例,既然現在正在執行的迭代是根據上一個迭代,也就是透過程式碼中的「i」,我好奇的是,是否迴圈主體是一行程式接著一行程式執行呢?如同存粹地循序迴圈?

 

(weich提到的程式碼)

i = tf.constant(0)
c = lambda i: tf.less(i, 10)
b = lambda i: tf.add(i, 1)
r = tf.while_loop(c, b, [i])

 

約莫兩天後,另外一位網友zhenhailiu回覆了:

 

Two op instances from different iterations can be computed simultaneously, as long as there is no direct or indirect data dependency or control dependency between them. The iterations in this while_loop can be paralleled. In some cases, iterations in a while_loop cannot be paralleled, typically when there are multiple iteration variable.

來自不同迭代的兩個實例(Instance)可以同時進行運算,只要它們之間沒有直接或間接的資料依賴關係,或控制依賴關係。而在這個tf.while_loop()中的迭代,可以是平行的。但在一些情況下,在while_loop()中的迭代,不可以是平行的。一般來說,當while_loop()中有多個迭代變數時,while_loop()中的迭代便不可以是平行的。

 

讀者們覺得這樣的回覆如何呢?歡迎留下您們的意見或想法,謝謝。

 

備註:如果想要購買AI人工智慧相關產品,請洽機器人王國商城,謝謝。

 

相關文章

[ 翻譯 ] 2018.11.06- 背後原理大解析:如何運用強化學習的演算法,自動化圖像資料擴增?

翻譯

宗諭

審閱

阿吉老師

圖片

Google AI 部落格

主題圖片:Designed by Zivile_z

說明

本文源自 Google AI 部落格,經 Google 同意轉載,特此致謝!

 

The success of deep learning in computer vision can be partially attributed to the availability of large amounts of labeled training data — a model’s performance typically improves as you increase the quality, diversity and the amount of training data. However, collecting enough quality data to train a model to perform well is often prohibitively difficult. One way around this is to hardcode image symmetries into neural network architectures so they perform better or have experts manually design data augmentation methods, like rotation and flipping, that are commonly used to train well-performing vision models. However, until recently, less attention has been paid to finding ways to automatically augment existing data using machine learning. Inspired by the results of our AutoML efforts to design neural network architectures and optimizers to replace components of systems that were previously human designed, we asked ourselves: can we also automate the procedure of data augmentation?

深度學習在電腦視覺領域的成功,部分可歸功於可以取用大量已被標記好的訓練資料。因為隨著使用者增加訓練資料的質、量及多樣性,模型的效能通常會提升。然而,常見的狀況是難以收集到高品質的資料來訓練模型,效能也因此提升不起來。解決這個問題的方法之一,是在神經網路架構中將圖像對稱寫死,好提升模型效能;或是讓專家採取手動設計資料擴增的方法,例如旋轉或翻轉,這些方法已普遍用於訓練出高效能的視覺模型。但直到最近,人們才把注意力放在如何運用機器學習找到自動擴增現有資料的方法。為替換先前由人類設計的系統元件,我們運用AutoML設計神經網路架構優化方法,得到相當好的成果。受到這樣成果的啟發,我們不禁自問:「資料擴增的程序也可以自動化嗎?」

 

n “AutoAugment: Learning Augmentation Policies from Data”, we explore a reinforcement learning algorithm which increases both the amount and diversity of data in an existing training dataset. Intuitively, data augmentation is used to teach a model about image invariances in the data domain in a way that makes a neural network invariant to these important symmetries, thus improving its performance. Unlike previous state-of-the-art deep learning models that used hand-designed data augmentation policies, we used reinforcement learning to find the optimal image transformation policies from the data itself. The result improved performance of computer vision models without relying on the production of new and ever expanding datasets.

在”AutoAugment: Learning Augmentation Policies from Data” 這篇論文中,我們探索一種強化學習的演算法,它能增加現存訓練資料集中資料的量和多樣性。直覺上,資料擴增被用來教導模型關於資料域中影像的不變性,在某種程度上使神經網路對這些重要的對稱性也維持不變,因而能改善這個神經網路的效能。不像之前最先進的深度學習模型採用人類設計的的資料擴增策略,我們運用強化學習,從資料本身發現最佳的圖像轉換原則。運用這些原則的結果改善了電腦視覺模型的效能,而無須仰賴新的且不斷變大的資料集。

 

Augmenting Training Data
The idea behind data augmentation is simple: images have many symmetries that don’t change the information present in the image. For example, the mirror reflection of a dog is still a dog. While some of these “invariances” are obvious to humans, many are not. For example, the mixup method augments data by placing images on top of each other during training, resulting in data which improves neural network performance.

擴增訓練的資料

資料擴增的原理十分簡單:一張圖會有許多的對稱性,它們不會改變這張圖所要呈現的資訊。例如,一條狗做鏡像之後仍然是一條狗。但這些「不變的地方」對我們人類來說,有的相當明顯,有些則不然。例如,「混合(mixup)」方法會在訓練時將影像放置於彼此的上方來擴增資料,進而提升神經網路的效能。

圖1

 

AutoAugment is an automatic way to design custom data augmentation policies for computer vision datasets, e.g., guiding the selection of basic image transformation operations, such as flipping an image horizontally/vertically, rotating an image, changing the color of an image, etc. AutoAugment not only predicts what image transformations to combine, but also the per-image probability and magnitude of the transformation used, so that the image is not always manipulated in the same way. AutoAugment is able to select an optimal policy from a search space of 2.9 x 1032 image transformation possibilities.

AutoAugment是能為電腦視覺資料集設計自定義的資料擴增策略的一種自動化方法。例如,導引如何選擇基本圖像的轉換作業,像是水平或垂直翻轉圖像、旋轉圖像及改變圖像的顏色⋯⋯等等。AutoAugment不僅能預測到要結合哪一種圖像轉換法,還能預測每張圖像的概率,還有圖像轉換的強度,所以圖像不再使用同一種方法來調整。自動擴增技術能從高達2.9 x 1032   種圖像轉換可能性的搜尋空間中找到一個最佳策略。

 

AutoAugment learns different transformations depending on what dataset it is run on. For example, for images involving street view of house numbers (SVHN) which include natural scene images of digits, AutoAugment focuses on geometric transforms like shearing and translation, which represent distortions commonly observed in this dataset. In addition, AutoAugment has learned to completely invert colors which naturally occur in the original SVHN dataset, given the diversity of different building and house numbers materials in the world.

AutoAugment能根據正在處理的資料集,學習到不同的圖像轉換方式。例如,針對street view of house numbers(SVHN)這套資料集中的圖像,因其中包含真實場景圖像中的各種數字,自動擴增技術便聚焦於幾何轉換,像是歪斜和位移,代表這個資料集中常見的資料失真情況。此外,自動擴增技術已完整學會如何將顏色反轉,而這樣的情況在原始的SVHN資料集中相當常見,原因是考慮到真實世界中的各種不同的建築物和房屋門牌號碼材質。

圖2

 

On CIFAR-10 and ImageNet, AutoAugment does not use shearing because these datasets generally do not include images of sheared objects, nor does it invert colors completely as these transformations would lead to unrealistic images. Instead, AutoAugment focuses on slightly adjusting the color and hue distribution, while preserving the general color properties. This suggests that the actual colors of objects in CIFAR-10 and ImageNet are important, whereas on SVHN only the relative colors are important.

在處理CIFAR-10ImageNet這兩個資料集時,AutoAugment技術就不會使用歪斜,因為這兩個資料集通常未包括歪斜物體的圖像;它也不會去反轉顏色,因為這樣會導致圖像失真。相反地,AutoAugment技術聚焦於微調顏色和色調分佈,同時還能保留一般顏色屬性。這意味在CIFAR-10和ImageNet中,物體的實際顏色很重要,而在前面提到的SVHN資料集中,重要的只有相對的顏色。

圖3

 

Results
Our AutoAugment algorithm found augmentation policies for some of the most well-known computer vision datasets that, when incorporated into the training of the neural network, led to state-of-the-art accuracies. By augmenting ImageNet data we obtain a new state-of-the-art accuracy of 83.54% top1 accuracy and on CIFAR10 we achieve an error rate of 1.48%, which is a 0.83% improvement over the default data augmentation designed by scientists. On SVHN, we improved the state-of-the-art error from 1.30% to 1.02%. Importantly, AutoAugment policies are found to be transferable — the policy found for the ImageNet dataset could also be applied to other vision datasets (Stanford CarsFGVC-Aircraft, etc.), which in turn improves neural network performance.

運用AutoAugment技術的成果

針對一些最知名的電腦視覺資料集,我們的AutoAugment演算法找出一些擴增策略,而當我們把這些策略原則納入神經網路的訓練時,可以產生出最高的準確率。藉由擴增ImageNet的資料,我們獲得83.54%的準確率,排名第一!另外,在擴增CIFAR10的資料時,錯誤率則只有1.48%,相較於由科學家設計的預設的資料擴增法,錯誤率降了0.83%!而在擴增SVHN的資料時,錯誤率則是由1.30%降至1.02%。重要的是,AutoAugment策略是可轉移的,也就是說針對ImageNet資料集找出的策略原則也用在其它電腦視覺資料集(例如,Standford CarsFGVC-Aircraft⋯⋯等等。)藉此改善神經網路的效能。

 

We are pleased to see that our AutoAugment algorithm achieved this level of performance on many different competitive computer vision datasets and look forward to seeing future applications of this technology across more computer vision tasks and even in other domains such as audio processing or language models. The policies with the best performance are included in the appendix of the paper, so that researchers can use them to improve their models on relevant vision tasks.

很高興看到我們的AutoAugment演算法在許多不同的電腦視覺資料集中,能有這麼高水準的效能;並且我們期待,未來這項技術能橫跨更多電腦視覺專案,甚至被應用於其它領域,例如音訊處理或語言模型。效能最好的的擴增策略已包含在這篇論文附錄中,研究者可藉此改善他們的視覺專案模型。

 

備註:如果您想要購買AI人工智慧相關產品,歡迎洽詢機器人王國商城,謝謝。

 

相關文章

[ 介紹文 ] 2018.10.04- 我挖!我挖!!我挖挖挖!!!Tamiya怪手大改造 從線控成為BLE遠端控制

作者

SmallpTsai

圖片

pixabaySmallpTsai

撰稿

宗諭

審閱

鈺莨

說明

感謝專案作者SmallpTsai開放授權,讓CAVEDU教育團隊能撰寫本文,特此致謝!若想更進一步了解專案詳細檔案、資料,請點這裡

 

這次的挑戰,是改裝Tamiya 70170線控怪手,安裝上LinkIt 7697開發板,使手機能透過低功耗藍牙(BLE),遠端控制。看看作者SmallpTsai如何製做。

圖1 SmallpTsai專案的目標

 

第一步:Tamiya 70170怪手組裝

主要按照產品的使用者說明書,一步步組裝。但記得略過步驟1至4,因為這個專案不需線控。至於該如何確認怪手組裝成功呢?必須透過手動接電池測試,確認怪手內的三顆馬達都能正常運作。

 

第二步:電腦端環境設定

如果您過去沒有使用過Arduino IDE,請Google搜尋「Arduino IDE」,接著下載並安裝。近一步Google搜尋「7697設定Arduino IDE」,並根據聯發科技的教學文件設定。而在聯發科技的教學文件中,提供了一個範例程式,請依照教學文件一步步操作,便可將範例程式燒錄至LinkIt 7697。但我們可以在程式中的LRemote.setName(),把括號內的名稱改成自己喜愛的名字。

 

第三步:手機端環境設定

請至App Store(iOS)或Play商店(Android),下載「LinkIt Remote」並安裝。開啟LinkIt Remote後,請按右上角的「refresh」按鈕,讀者們應該會看到自己的裝置名稱,請選擇它。如果一切運作順利,讀者們應會看見下圖:

圖2 LinkIt Remote初始時的使用者介面

 

經過電腦端和手機端的環境設定後,我們需確定能以手機遙控LinkIt 7697上的LED燈。測試方法就是點擊USR LED這個切換按鈕,應該會看見 LinkIt 7697 開發板上內建的USR LED亮起來。

 

第四步:接電路

這個專案運用2個L293D馬達控制板,控制3顆馬達。而控制3顆馬達需用到6個腳位,運用到的腳位,請見下表:

馬達A腳位B腳位
Left1716
Right1514
ARM1312

表一

接線圖:

圖3

 

電路接好後,應能以手機控制馬達正轉或反轉。若讀者在接電路部分想更多了解,請至作者的GitHub頁面上交流,謝謝。

 

接下來,就是把程式碼燒錄至Linkit 7697開發板,然後就可用手機遠端控制怪手了。以下是不同學員的作品,給大家參考。雖然Tamiya 70170怪手的外型和結構基本上是固定的,仍可發揮一些巧思,使作品更有創意。

圖4 學員Hanny的怪手

 

圖5 Hanny設計的控制介面

Hanny的控制介面的原始碼

 

圖6 學員Jenny的作品

 

圖7 Jenny設計的控制介面

Jenny的控制介面的原始碼

 

備註:若想購買LinkIt 7697,歡迎洽詢機器人王國商城。

 

相關文章

 

[3/29_C-Day有什麼?]系列之三:台北市校際盃機器人選拔賽(二)-使用Raspberry Pi Model B與Brick Pi 擴充板

本篇內容是由  CAVEDU 的實習生-袁佑緣提供的使用心得

首先我們先挑選時下流行的微電腦Raspberry Pi 來做測試,本次使用的是B板並搭配Dexter公司所生產的BrickPi來控制LEGO的馬達與感測器。(上面是Raspberry Pi B,下面是BrickPi)

02

如果好奇什麼是BrickPi的人,請參看這篇

首先我們將BrickPi與Raspberry Pi B組裝起來,並鎖上BrickPi的塑膠殼,注意到它上面有許多小洞是專門設計來結合LEGO零件的插銷,所以要將控制器裝置在你的LEGO機器人上完全不是問題喔!

03

接著組裝機器人,這個機器人的設計是用前面的框框綁上兩條橡皮筋當作網子,利用手臂往下壓來取乒乓球,並把乒乓球放回身上的籃子當中,而機器人行走的馬達則是使用LEGO EV3的大馬達。

04 05

前面手臂的動力來源則是用LEGO EV3的中型馬達,並且作一系列的小帶大的齒輪將馬達的力量放大,以防舉不起物件的情況。

06

接著是下面裝的感應器,分別是顏色感應器,與光源感應器,這兩個感應器都是使用NXT的感應器,光源感應器可以用來循線行走,而顏色感應器則可以用來判斷色卡

07

注意到BrickPi無法直接使用EV3的感應器,如果真的需要使用,可以參考官方的教學文件( http://www.dexterindustries.com/site/?p=1822 ),只要將BrickPi的firmware更新就可以使用了!

 

接著我們必須在Raspberry Pi B上安裝對應的系統,才能透過BrickPi控制LEGO元件,下載官網提供的映象檔(http://sourceforge.net/projects/dexterindustriesraspbianflavor/ ),然後燒錄成SD開機卡,插在Raspberry Pi B並開機,成功後便可以透過SSH從電腦連線到Raspberry Pi B,然後就可以開始撰寫程式啦!

 

例如:我想用Python來撰寫機器人的程式,那麼我打開桌面一個叫BrickPi_Python的資料夾(這裏的桌面當然指的是Raspberry Pi B裏Linux系統的桌面),就可以看到許多範例,相關的函式則可以參照其中一個BrickPi.py檔案,裏面有各種函式與變數的定義。

 

此外,如果你想使用其他的語言撰寫,BrickPi也支援像C語言,甚至是圖形化介面的Scratch也可以喔!

 

使用心得:

 

使用Raspberry Pi B搭配BrickPi來做機器人,自然有一些明顯的好處,像是你可以像管理電腦一樣,在上面撰寫程式、管理檔案,也可以由筆電透過遠端連線來進行操作、傳輸檔案,而連上網路也不是問題,這些都是一般的控制器無法做到的地方,此外在官網上的BrickPi Projects裡面也有許多的範例可以參考(http://www.dexterindustries.com/BrickPi/projects/ ),非常適合maker專題的實作喔!

 

但是它做為「比賽用的機器人」有些許不足的地方,像是Raspberry Pi B對於熱插拔很容易當機,在電力上如果不在BrickPi接上額外的電源實在很難驅動馬達運作,而接上的電源又不能影響到Raspberry Pi B,很容易導致當機,筆者在嘗試的時候多次就遇到終端機畫面無反應而必須重開的慘況。

 

這是為什麼呢?熱插拔容易當機的原因是Raspberry Pi B要到B+的板本後才有在5V電源供應那邊加上2A的保險絲,所以要到B+才支援熱插拔(Raspberry Pi A 與A+也是同樣的道理喔)。

另一方面,BrickPi官方提供的馬達控制函式並不多,以python語言為例,可以見github上對於brickPi.py的定義(https://github.com/DexterInd/BrickPi_Python/blob/master/BrickPi.py ),裡面直接定義馬達轉動的函式只有一條,剩下的必須用變數來控制馬達,此外,由於沒有詳細的library reference,只能參照原本的函式庫當案中的說明,其上手難易度也高了不少,對於「機器人駕訓班」這個圍繞在如何控制馬達轉動,而且現場題目變化靈活度相當高的比賽,或許我們可以有更好的選擇……

 

零件提供來源在這裡

[Raspberry Pi 2]樹莓派2效能測試,使用Chrome 瀏覽器與 openCV

RaspberryPi 2號稱CPU效能比過去快上六倍,快六倍究竟是什麼樣的感覺呢?這次使用Linux系統的Google Chrome與opecncv這兩個需要消耗較大CPU運算來做測試。剛拿到樹莓派2的朋友們,要讓過去系統可以相容於Pi 2請看這篇

這次使用top指令來觀察Pi2的系統執行能力,首先輸入:

$top

002

出現上圖的視窗,以灰色的一行作分類,上半部顯示的是Pi2的四核心運算率,分別是:CPU0、CPU1、CPU2、CPU3,如果沒有出現,按數字鍵[1]即可

下半部顯示的是正在執行的命令,如果出現的資料太多,按下鍵盤的[i]鍵就會切換顯示方式

  • USER:顯示執行命令的帳號
  • %CPU:顯示CPU的使用率
  • %MEN:顯示記憶體的使用率
  • COMMAND:執行的命令名稱

讓我們來看看在Pi B+執行 Google Chrome 的速度如何?

我們可以看到執行 Chrome需要使用CPU 高達 70%的運算,在整個系統上資源使用量是排第一名,右下角的圖形化CPU也是整片都滿滿的綠色,代表CPU全部的使用率達百分之百。Pi B+只有CPU0可以進行運算,系統跑起來會LAG,如果要執行其他程式需要等待約一到數分鐘才能打開。

接著來看看Pi2執行 Chrome 又是如何?

如圖所見,這個瀏覽器開了兩個分頁,但是CPU只使用了百分之30,而且在運算上會分擔給四個CPU,所以每個CPU執行的速度還是很快,由於我還開了其他的程式,例如截圖軟體,所以Chrome在使用整個系統的資源量是排第七第八名。

接著來看看Pi B+執行OPENCV佔的資源如何:

CPU使用率佔百分之七十,系統使用資源量排名第一,不用說整個CPU圖片為滿滿的綠色。

接著看Pi2執行opencv

CPU使用為 59%,我們看看右下角,CPU使用量顯示,綠色居然沒超過四分之一,小編實地測試,使用Pi2時,opencv只要畫素高,經過計算會照成圖片顯示DELAY,但是總CPU使用量不會超過四分之一,應該是Pi2作業系統(OS)的使用預設是不會讓單一程式佔走大部分的運算資源,在使用時,不會讓使用者感覺系統LAG,經過測試,Pi2在需要較高運算的程式上,的確比之前的Pi快上許多。

目前CAVEDU 已經開始供貨給玩家囉,Raspberry Pi2售價是台幣1500元,Raspberry Pi B+是900元,Raspberry Pi B 降價成500元!!歡迎到我們的FB粉絲頁商城訂購~~