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), 機器人作業系統, 教學文章, 範例, 說明

各種控制,一個overview

我覺得對於控制和系統有完整的概觀很重要,剛好這週上到連豊力老師的課,他講的例子非常好懂,所以我整理起來,幫助大家入門。

適應控制(Adaptive Control)
假設我騎一台腳踏車,但不知道後座載的人是誰,我只知道他的體重不變,所以我可以慢慢調整我踩踏板的力道、轉彎控制龍頭的幅度等等(這些就對應到控制系統的各種增益),讓我在載這個人的途中不斷讓騎車變得更順。

強健控制(Robust Control)
假設我騎一台腳踏車,後座載的人重量已知,但是這個人會隨著我騎的過程不斷晃動。我只知道他的體重不變,但他一晃動就會導致我的重心改變,假設我也知道他晃動的幅度,那我的技術就需要夠robust以確保在他的晃動範圍內不管他怎麼晃動,我都不會跌倒。

最佳控制(Optimal Control)
將我騎腳踏車這個系統完全用微分方程式來表示,只要我能夠把model建立起來,最佳控制就能幫我找到我踏板該踩多大力、轉彎時怎麼控制龍頭跟踏板等等。
最簡單的建模方法就是假設我踩踏板的力道是F,假設把腳踏車當作一質量為m的質點,那F=ma,那我就得到一個二次微分的方程式(因為加速度是位置的二次微分)。

隨機控制(Stochastic Control)
我騎一台腳踏車,可能因為有颱風或是萬里無雲導致我的空氣阻力是一個隨機變化的變數,但是空氣阻力大小會影響我的控制,因為阻力大我就得更用力地踩踏板以維持不會跌倒的速度,而隨機控制就提供一些方法讓我們可以合理地將空氣阻力model成一個隨機變數,用一個機率密度函數來表示,再併入控制器的設計。

學著看別人的動機

最近因為比賽的一些事情,必須努力地去猜測對方在想什麼,對看動機這件事的體會又更深了.

直接舉個例子,假設一位指導教授今天看到自己的一個學生能力不錯,希望鍛鍊他獨當一面做研究的能力,

那他最直接的方法可能就是先放著這個學生不管,然後看看他會怎麼成長,

但是對學生來說,他最直覺的感覺可能是-啊老師怎麼都不理我?

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

第一種發展:不看老師動機

這個學生只覺得老師都不關心他,而且也不好意思或不想跟老師反映自己的不高興,

反而對老師有了一個不信任感,所以即使遇到真的需要尋求老師協助的情況,他也不願意去找老師.

最後就是諸多抱怨+自認倒楣,然後可能還會跟大家說老師的不好.

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

第二種發展:嘗試去看老師的動機

一開始學生也覺得老師不太關心他,但學生仔細去觀察老師,

發現老師不像是不關心學生的那種老師,

於是他再更深入思考為什麼老師會這麼做?

他想到另一種可能性,也許老師是故意要訓練他找到方向跟做研究的能力,

於是他開始練習自己做研究,而且漸漸地也發現,

當他遇到真的不會的問題時,去問老師都能獲得很詳盡的回答,

更證實了他對老師動機的“猜測”.

最後畢業時他不但讓自己獨立研究的能力成長,

也學習到去看別人動機的重要性,而不是看到某人做了某件事就急著認定想必是怎樣怎樣.

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

當然,那位指導教授的動機也可能是真的不想管,

但是你真正去看別人的動機才會有稍微深入一點的想法,

不然說真的,你只看表面怎麼分辨這個人是好心還是壞心?

再進階一點,如果你看得清楚別人的動機,甚至能從他講的話透漏的訊息進一步看出對方想要的利益是什麼,不能讓步的是什麼,你豈不是談判大師?

Link

ROS Kong 2014照片集

這次去ROS Kong,見到很多厲害的人們啊~~包含MoveIt!的開發者、OpenCV跟ORK的開發者等等,還有岡田慧教授的演講也超猛= =
因為剛好卡到期末,又有比賽、展覽跟研究要忙,實在沒心力好好寫個心得文。

一言以蔽之,心得就是會讓人興起見賢而思齊之感吧。

Image

Delta Robot有感

Delta Robot有感

你知道,有時候當你全心投入一個事物太久,自然得先漸漸地放下一些喜愛的事物,但在有一件事情突然打破這種易碎的平衡時,那種反饋,會比什麼都來得強。

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