Aside

由於Robot Operating System(ROS)的中文資源還幾乎不存在,決定先撒下一點麵包屑,之後有寫出新的也會依序整理到這上面.

我覺得機器人很有可能是未來崛起的一個領域,而要在這個領域做出能推動世界進步的成果,我認為ROS是一個很重要的工具.

希望之後有心做ROS的人學習愉快: D

———————————————–
ROS tutorials系列

我的tutorial不詳細go through整個tutorial原文,而是就我認為重要之處詳加說明,而且有些東西原文寫得很清楚我不重複寫,換句話說,我仍預期看這些tutorial時要搭配看原文, 會比較完整

此外我重視連貫性,所以一些零碎的細節觀念我也不會寫,如果重要我會補在最後的tips裡

0. 什麼是ROS?要怎麼做ROS? (做ROS前必看!我盡量寫得淺顯,不是工程師應該也看得懂XD)

1. 淺談ROS file system

2. 新增ROS packages

3. 立ROS packages

4. 了解ROS Nodes

———————————————–

ROS觀念文

簡介CRAM(Cognitive Robot Abstract Machine)

Knowrob簡單概念

Topic, Service和Actionlib的用途與差別

認識ROS stack & package (剛接觸ROS寫的,沒什麼見地Orz)

ROS message serialization (1) (剛接觸ROS時寫的,頗混亂,真的需要message傳輸機制再看)

ROS message serialization (2) (看了可能造成混亂,真的有興趣再看看)

———————————————–

ROS細節實作文

改launch file中的參數值

如何安裝Household object database

launch file的if, unless條件用法

———————————————–

ROS散文(散亂的雜文,不是散文XD)

PR2開箱文

ROS tutorial 之 Don’t repeat yourself

———————————————–

偷補個關鍵字

ROS(Robot operating system), 機器人作業系統, 教學文章, 範例, 說明

Android遊戲 – 3D雪地大戰

這次網多實驗的PDA實驗要開發一個連線對戰遊戲,我們選了android平台,要在Nexus 7上面跑遊戲。

我考慮了滿久,在Unity跟ShiVa中猶豫了一陣子,甚至也考慮過超強的Unreal(不過Unreal有點過猛,初學遊戲就直接切入最猛的可能滑鐵盧啊),後來覺得ShiVa 3D易學性頗高,很容易發佈到各種平台,你只要寫完一個遊戲,就可以用ShiVa Authoring tool輕鬆發佈Windows版、Linux版、Mac版、iPhone版、iPad版、android版甚至是Wii,而且也有一些相關書籍可以參考,再加上他們的開發者網站資源算是豐富。

這次開發遊戲的經驗讓我學到滿多,因為做遊戲要考慮的東西比寫一般程式要來得多(應該是我目前寫的project都很小: p),要建立3D模型、找音效、建立地形跟場景、開發遊戲介面等等,再加上ShiVa 3D。這次時間安排沒有上次寫聊天室來得好,所以最後成品並不是非常完整,但我覺得該會的大家都有學會,只是需要更多時間把完成度拼上來。

最後附個DEMO影片~

機器人的新知哪裡來?

前幾天在Quora上被問到要去哪裡看機器人的新知或是研究成果,藉著這個問題又多知道了一些其他的新知來源,覺得挺好,決定分享一下。

=========================================

IEEE Spectrum Robotics

這個網站是IEEE協會旗下的網站,專業程度跟更新速度都相當不錯,是我個人比較常看的新聞網站。

Willow Garage公司的Youtube頻道

Willow Garage公司就是發布ROS還有製造PR2的公司,他們的Youtube頻道常會發布有趣的新研究成果。最令人興奮的是,因為ROS完全開源,所以在影片中看到的研究成果往往也能被你所用。

Robohub

這個網站我以前沒看過,不過看了看發現裡面的新聞面向也頗廣,很值得上去逛逛。

The Robot Report

這個網站比較偏向從商業的角度來看機器人,我以前搜尋機器人有哪些新創公司時就有看過這個網站,不過UI不太舒服。

Robots Podcast

這個網站很酷,他們會實際去訪問一些專家,讓你可以”聽”說機器人的專業知識,還可以順便練英文聽力XD

=========================================

P.S.原本的問題是What’s the best source for robotics news and research? Why?,想知道還有哪些其他新知來源的人可以去看看!

GPU Programming筆記

之前有稍微看過GPU programming相關的資料, 感覺得出來是一門學起來會讓實力大增的學問.(根本是網多實驗寫遊戲的根啊XD)

因為看到一些資源實在太棒了,所以發一篇文把他記下來.

1.鴻鵠國際股份有限公司官網(看起來是台灣的GPU強者)

2.用GPU加速來做數值計算

3.2012台大GPU workshop影片

甚至還有簡報檔跟議程等等,不知道該說什麼了lol

4.Matlab Parallel Programming Toolbox影片教學

Android來電中斷處理

之前本來以為會寫純android app,所以事先調查了一下android app在執行中要怎麼處理來電.沒想到後來會決定用ShiVa 3D來寫遊戲, 不過查都查了,也有了一點基本觀念,就分享一下讓之後有需要的人

(其實我沒真正寫過,所以可能有誤)

基本上處理來電的原理就是通話狀態的監聽, 當通話狀態從閒置轉成來電的時候, 把app的狀態先存起來, 然後等通話結束之後才又把這狀態拿出來.

Reference:

1.Android游戏开发之旅(十五) 按键中断处理

2.Android监听通话正确操作方法介绍

3.android 电话状态监听(来电和去电)实现代码

4.What happens to android app when a phone call interrupts the app

5.Application crashed after either receive a phone call or such interruptions

6.如何中斷Android執行緒

7.Android學習筆記 – 通話狀態(PhoneState)

8.电话通话几种状态的监听

9.Get Phone State When Someone is calling using BroadcastReceiver Example

機器人產業真的要起來了嗎?

今天看到一位朋友寫了一篇不錯的文章 – 《機械人將會搶了我們的工作?

這篇文章簡述了機器人產業的現況,我看了覺得還滿有趣的,因為我沒有從失業率的角度去看過機器人產業,雖說確實滿多人聽到機器人要起來第一反應都是機器人會不會搶走人類的工作。

=============================

以技術的角度出發,機器人產業要真正崛起有幾個關鍵技術要突破,

1.物體辨識(Object Recognition)

現今的物體辨識已經有相當多的演算法,有一篇好paper(2012的paper,整理了目前物體辨識的主要流程跟演算法)可以參考。

物體辨識簡單來說主要有兩個步驟,Segmentation跟Recognition。

Segmentation的功能是把畫面中一個個物體分開,以下圖中間來說,馬跟背景的樹是不同的物體,segmentation就是要把馬跟樹區分開來。

Segmentation

而Recognition就是要把切出來的那一坨物體(以上例而言就是那匹馬)辨識出是什麼東西。

但是目前的辨識離人類的辨識還差很多,應該說根本差遠了(不管是速度還是準確度,我們幾乎是瞬間就辨識出物體,根本神速,如果你有試著要實作辨識就知道人類有多強)。人類在做辨識的流程跟先做segmentation、再做recognition似乎有點不同,我們在做segmentation的途中,對這個物體有了基本的輪廓概念就已經在做辨識,假設我近距離看到一台筆電的螢幕,我大概就會先猜到它是一台筆電,然後我會調出筆電的相關知識,知道筆電要有鍵盤,於是我再往下一瞄看到有鍵盤之後,就確定這個東西是筆電了,也就是segmentation跟recognition是彼此相依的,我根本不需要切出整台筆電的形狀,然後再拿去跟物體模型比對,甚或是拿去機器學習一番。至於詳細演算法是什麼還不知道XDD

2.語意地圖(Semantic Map)

有了良好的物體辨識之後,在處理動態環境(也就是環境中物體位置會改變,如同真實世界)上的關鍵問題就被解決。當機器人辨識出物體之後,可以把這個物體存入自己的地圖中,就像是我們知道家裡的水杯擺在哪、衣服在哪、鞋子在哪等等(閉上眼睛想像一下你家環境,這就是語意地圖),如果沒有這個語意地圖,機器人幾乎不可能做到接收指令後就完成一項任務,也就是沒辦法做planning完成任務(想一想如果你接收到一個指令是”幫我拿一杯水”,但你不知道水在哪、不知道杯子在哪、不知道怎麼找水跟杯子有可能完成這項任務嗎?)。

當然語意地圖跟機器人的知識也息息相關,不過先不提。放一張語意地圖的示意圖。

semantic map示意圖

3.決策規劃(Planning)

有了語意地圖之後,機器人可以開始有規劃完成任務的能力,也就是可以開始做一些有用的事情(真正幫人類服務!)。例如口渴時可以叫機器人幫忙拿杯水、找不到東西時叫機器人幫忙找東西等等。但是做規畫需要極大量的知識,而前面都還沒發展起來,planning要發展得很完整略顯空虛。

4.認知架構(Cognitive Architecture)

這算是終極技術了,因為這個架構做到完美基本上就等同於人類的認知架構,也就像是科幻電影中那種可以像人類一樣思考的機器人。但是再做出這種機器人前大概要對人的認知架構有完全的了解。而這種東西就我所知還沒出現,不過依然有這篇不錯的paper可以參考(還有這個整理了世界上最頂尖的人工智慧project們的網站)。這項技術會帶出來的就是倫理問題了,以後應該會有比較多文章討論要怎麼面對像人類一般思考的機器人。

相信大家看得出來這幾項技術有很大的關聯性,物體辨識是建立出實用語意地圖的關鍵。而語意地圖是規劃完成任務的關鍵。不過認知架構超然於這些之上,認知架構如果發展得夠好,會提供其他技術一個堅實的基礎,可以把初始化的認知架構想像成剛出生的嬰兒擁有的認知,如果有了這個其他的怎麼會是問題?(可以教機器人,機器人可以自己探索世界,建構出自己的一套世界觀lol)

雖然列了這麼多技術,其實只要第一項物體辨識能有大突破,機器人的應用性就會比之前大非常多。舉例來說,我們只要有了強大的辨識技術,機器人就可以做垃圾分類,也就是全世界數以萬計的垃圾分類工作都可以交給機器人,而且在工廠內比較需要辨識的複雜工作(原本只能由人類做的)也可以被機器人取代。然後當這些應用潛力開始真正激發時,就會有更多資源投入形成正循環(不過未來的事誰也說不準,是吧?)。

=============================

P.S.我之前在Quora看過一個問題 – <What are currently the most exciting challenges in robotics?>,有興趣的人可以看看。

學有點致用

今天剛好去寶藏巖晃了晃,看到一件作品的說明文字中敘述了”現代房屋好像把焦點放在買與賣的關係,而忽視了建築與人之間的關係”(印象不很深,原文可能不一樣)

讓我想起在修”你應該要知道的原住民文化”看過的雅美族文本。這個文本呈現雅美族新婚夫妻會新蓋一個有一門或兩門的家屋,然後隨著兩人的成長(經濟上或是社會地位上),會改建成三門。而當夫妻二人花了三年時間準備夠豐富的材料後,便可以改建成四門且新增工作房,舉行落成禮邀請全部落的人共襄盛舉。

這一種夫妻關係、家屋以及社會地位共同成長的文化讓建築物本身活了起來,也讓我想起自己成長過程陪伴在身邊的人、建築、物還有各種非具體形式的媒體(音樂、口頭禪等等)。

———————————————————

有天在宿舍吃飯時突然想到上”中共的政經社發展”時看到的影片,

於是就一邊吃飯一邊看了起來。

說實在滿有趣的,不過看的時候也許不能盡信,

九集大型电视纪录片《国情备忘录》— 第一集 中国之谜 Part1

———————————————————

P.S.在寶藏巖看到一個生氣蓬勃的,都市酵母計畫

Android擴增實境相關資源

雖然網多應該是沒機會做擴增實境(Nexus 7沒有後鏡頭有點幽默= =),

不過都已經蒐集一些資源了,就放上來吧。

——————————————————

可用函式庫資源

教學資源:

Java小畫家

上星期四才Demo完小畫家~

這星期四就要文字聊天室的小Demo了,還要交網路分析儀實驗的結報

網多著實不是個輕鬆的實驗啊,幸好今晚的討論滿有效率的,已經寫出多個client可以聊天了,

想先從檔案傳輸跟影音串流著手,這兩個寫出來其他應該就只是時間跟調整問題.

————————————————————————————–

以下是有點有用的資訊

如果要學寫小畫家的話,把幾個原理弄懂應該就沒問題了~

建議順序是:如何新增視窗並加入元件 -> 抽象類別 -> 介面 -> 元件加上事件處理 -> java繪圖(Graphics, Graphics2D) ->可以寫小畫家囉!

事件處理有一份很棒的投影片可以學習:

http://web.thu.edu.tw/s922930/www/java%B8p%AD%D7%A4W/0724/ch18.pdf

來放個圖跟code,之後有需要的人可以參考參考XDD

小小畫家code: https://www.dropbox.com/s/p9ilcow60k21vmh/Painter.zip

啊因為我沒有把功能做得很齊全所以叫做小小畫家,不過我想基本原理掌握住比較重要啦XDD (<-自己說

小小畫家

網路與多媒體實驗默默準備

下學期要修網多實驗,pre實驗要寫小畫家XD

在學長的提點之下, 才知道這門課好好修可以帶來突破性的成長.

為什麼這麼說呢?

因為網多是一門重視實作的課程,而實作的關鍵就在於四個字 – “程式語言”. 於是我選定Java.

從一開始的小畫家先打好Java的基礎跟圖性介面程式設計的概念,然後藉由文字聊天室了解網路程式的基本,下一個PDA實驗選android平台來把Java的最熱門應用之一打起來, 小實驗雲端運算實驗可以玩個奇摩知識+的API開始把Knowrob跟中文知識接起來(Knowrob基本上也是用Java實作). 簡直一氣呵成.

——————————————–

為了因應學期中可能會研究網多兩頭燒很崩潰,寒假還是先把一些基本功打起來

實驗一 – 文字聊天室

實驗二 – 網路分析儀

實驗四 – PDA程式設計

實驗六 – 雲端運算與app

接下來,是我們的時代

今天發生一件很特別的事,我覺得很值得紀念,所以在這深夜寫報告時段還是來記錄一下此時此刻的心情。

晚上跟室友們去無老鍋吃寢聚,吃完之後想說應該在店門口拍個照紀念一下,於是我去請一位也在外面等待用餐的先生幫我們拍張照。

「先生不好意思,可以幫我們拍張照嗎?」我說

「噢好啊~拍了可以放到壹週刊上嗎?」他笑著回答,而且帶著濃濃的香港口音。

我愣了一下~然後尷尬地笑一笑(我以為我搭訕到狗仔之類的),結果他看出我有點尷尬,於是他拍拍我的肩表示來拍照。

拍照的過程就很一般,拍個兩三張這樣。

但拍完之後,開始了一連串奇妙的對話(我們講了大約快10分鐘,我只寫我記得的)

「你們是學生嗎?」他問

「噢噢對啊」我們回

「你們念什麼科的?」他再問

「我們都念電機」再回

….快轉一下…他整個很熱情…

重點來了!

「現在的時代是馬英九當總統、有很多大財團,但他們都是過去的人了。以後的台灣,是你們的,當你們成為社會的支柱時,我們這些人已經上天堂了。你們是念電機的,以後林百里的廣達就變成你們之中某個人創的某某公司。不要一直看那些灰心喪志的事情。你們要相信未來會是你們的時代…」他如是說。

說真的,在路上請路人拍照碰到這樣的人感覺真的是很怪,因為我們有一兩次已經表示要走,但他繼續開啟話題。在那個當下會覺得他是個怪人。

但是,他說這些話的熱情、真誠,還有香港的歷史背景等等加在一起,卻讓我到現在還在感動。

我不知道這件事對我的人生會有什麼樣的影響,但我覺得這件事跟我心中的某部分是相呼應的,我願意相信這件事會發生有它的原因。也知道當我想起這些話時,我會再次充滿力量。

—————————————————————————————————-

是啊,現在的確有很多問題,核電安全、媒體壟斷、美麗灣環評、士林王家、勞工權益、教育問題、經濟停滯等等(看個妖言的懶人包),這些問題不像他所說的已經過去,也需要我們大家的關注才不會被河蟹。

但是,如果一直把注意力放在這些問題上面,我們很容易喪氣,雖然有這麼多不好的事情、雖然台灣一直被唱衰,但是接下來確實,是我們的時代,我們要有撐起這個時代的器量。我們不只要爭取我們自己的權利,也應該開始弄髒手、開始創造一些事情,我們的願景就有可能實現。

短期內我們看起來確實贏不了大財團、看不見未來,但是我們這一個世代一定會有屬於我們的成功方法,而且我相信在經歷過這些之後,我們的成功不會是獨善其身甚或壓榨別人的氣質

我們會像蠟燭一樣,照亮別人,別人的光亮照到自己後,再變得更亮。