ROS

ROS系列文整理 (ROS Tutorials)

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

我覺得機器人在能源不出現問題之前,是必然崛起的一個領域。機器人的存在可以幫助人類變得更好,被解放的生產力能夠聚焦到更為重要的議題上 – 永續發展,公平正義,世界均富等等,而要在機器人產業做出能推動世界進步的成果,我認為 ROS 是一個很重要的工具。

現在(2015年)已經多了不少中文資源,大家可以參考 ROS網站中文版。另外,最近同實驗室的同學黃昭霖也開始寫一些 他自己的筆記、有一位朋友林信男最近也開始寫 ROS on Jetson的學習筆記、他甚至還幫忙整理了各種 ROS 中文資源列表 XD 如果你需要問問題,去 ROS Answers絕對是不二選擇(因為有很多ROS package的開發者會到上面回答跟自己package相關的問題),或者可以去ROS.TaipeiROS.Taiwan這個中文社群 或 另一個中文社群 逛逛。

對學習 ROS 有興趣的朋友來說,能有多一些資源參考總是好的。希望之後有心做 ROS 的人學習愉快 : D

另外推薦一下 awesome-human-robot-interaction 、 awesome-grasping、還有我跟幾個熱血的朋友弄的 TechBridge Weekly 技術週刊,每周分享最新的技術文章或工具給大家!


ROS tutorials 系列 (Beginner Level)

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

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

1. 淺談 ROS file system

2. 新增 ROS package

3. 建立 ROS packages

4. 了解 ROS Node

5. 了解 ROS Topics

6. 了解 ROS Service 跟 Parameters

7. 使用 rqt_console 跟 roslaunch

8. 使用 rosed 來編輯檔案

9. 建立自己的 msg 檔或 srv 檔

10.撰寫一個 publisher 跟 subscriber (上手 ROS Topic )

11.撰寫一個 service 跟 client (上手 ROS Service )

12.使用 rosbag 記錄和播放資料

13.使用 roswtf 來幫忙 debug

14.探索 ROS wiki

15.下一步是什麼?

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

Object Recognition 系列

使用 Object Recogniton Kitchen 的 Linemod 演算法辨識物體

Object Recognition Kitchen 透明物體辨識(演算法概念)

ecto 簡介 (1) – cell 與 plasm

ecto 簡介 (2) – tendrils 與 scheduler

一起來玩 OSRF 的 TensorFlow Object Detector

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

LSD SLAM 系列

深入學習 LSD-SLAM – 1

深入學習 LSD-SLAM – 2

深入學習 LSD-SLAM – 3

深入學習 LSD-SLAM – 4

深入學習 LSD-SLAM 番外篇 – RDS X RTAB-Map

深入學習 LSD-SLAM – 5

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

ROS觀念文

用 DDS 開發 ROS 2.0

簡介CRAM(Cognitive Robot Abstract Machine)

簡介 Knowrob (機器人知識處理的工具)

比較 Topic, Service 跟 Actionlib

ROS Navigation stack 簡介

ROS SMACH 簡介

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

讀論文系列

一起來讀 CRAM – A Cognitive Robot Abstract Machine for Everyday Manipulation in Human Environments

一起讀 Knowledge-Enabled Robotic Agents for Shelf Replenishment in Cluttered Retail Environments

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

ROS實作細節文

如何使用 Google Cartographer SLAM 演算法來建地圖

Caffe & GoogLeNet,如何幫助機器人更好地辨識物體

使用 Gazebo 模擬器控制機器人建立 2D 地圖

如何用 ROS Topic 控制機器人移動

使用 ROS 與 Gazebo 模擬一個自動避障機器人

改 launch file 中的參數值

launch file 中的條件用法

安裝 household object database

收到彩色影像,發布灰階影像 topic 的方法

接收來自 ROS Topic 的影像並偵測畫面中的動作

Guided Policy Search 環境安裝

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

ROS雜感

PR2 開箱文

ROS Kong 2014 照片集

ROS in DARPA Robotics Challenge!

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

補些關鍵字

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

最後更新:2018/11/07

Advertisements
Practical

Concise and clear explanation of context-free grammar

CFG

Reference:

@inproceedings{yang2015robot,
title={Robot Learning Manipulation Action Plans by” Watching” Unconstrained Videos from the World Wide Web.},
author={Yang, Yezhou and Li, Yi and Ferm{\”u}ller, Cornelia and Aloimonos, Yiannis},
booktitle={AAAI},
pages={3686–3693},
year={2015}
}

Practical

Paper reading – The naïve utility calculus: Joint inferences about the costs and rewards of actions

前言

今天讀的論文是 The naïve utility calculus: Joint inferences about the costs and rewards of actions,key insight 是把人類其實有能力去推算別人為了達成目標,所得到的 reward、跟所需耗費的 cost 大致是什麼。

以前的 work 大致都著重在人類的行為是為了完成目標,得到不同 reward,卻忽略了不同人做同一件事其實 cost 不同。

重要的人類行為

條列一些之前的發現:

  1. 人類的行為是為了某個 goal
  2. 人類會盡量採取(自認為)有效率的方式去達成目標

在這前提之下,我們就可以大致推得在 goal 是 G 的時候,採取行為 A 的機率有多高。越能有效率達到 G 的 A,被採取機率就越高。

我們用L(A|G)來表示這個可能性(likelihood)。

擷取.JPG

在這種 formulation 之下,我們可以將人類的決策行為當成一個 Markov decision process ,所以就可以:

  1. Forward: 推算出人類在某個 state 會採取什麼行為
  2. Backward: 從人類行為推算出他的 goal

擷取擷取2

這篇論文的 key insight 

上面提到的方法看起來很有趣,用基本的條件機率和貝氏定理就可以描述如何 infer 人的 action或 inverse infer 人的 goal,但如果你仔細用心就會發現,每一個 action 的成本其實不一樣,我們怎麼能只用夠不夠有效率來推論人會不會這樣做呢?(甚至可能有資訊不足的問題,例如完成 goal G 有 100 種方法,但我只聽過 5 種)

所以這篇 paper 才提出應該要用同時考慮 action 的 cost。

擷取擷取2

如何用數學和程式實作出這篇論文的概念?

這邊我也還不是很懂,看來應該是需要先讀懂他們 2009 年的那篇論文:

Baker, Chris L., Rebecca Saxe, and Joshua B. Tenenbaum. “Action understanding as inverse planning.” Cognition 113.3 (2009): 329-349.

等我懂了再寫出來分享。

擷取.JPG

English

GRE 地基 – 最簡化的核心精神

基本認識

GRE 聽起來是一個很大很複雜的考試,但其實提綱挈領來看,裡面只有填空、閱讀、數學、作文四大項目。根據我準備的經驗,抓到重點,可以節省很大量的時間,所以才想把我個人準備過程中發現的明悟跟大家分享,讓大家有機會事半功倍。

數學對大家來說應該還好,所以我只把重點放在填空、閱讀跟作文上,雖然我的作文都沒有高於 3.5 過 XD,不過 V+Q 我有 326 跟 331 的經驗,所以應該可以對大家有些幫助!

填空

填空主要考驗兩種能力,但都跟精確很有關係 :

  1. 理解單字:單字的重要應不必再提,如果單字都看不懂,題目跟選項就都是一團迷霧。而且GRE非常重視選出精確的單字,所以對單字的用心要夠深刻。我自己是喜歡用做題目,重複 exposure 的方式來體會單字,其實最後我熟悉的也只 1500 個單字左右,但是有些單字即使忘記意思,也還是會有一個直覺。
  2. 體會題目邏輯:需體會此句作者想講什麼,且其邏輯非常精確。例如下題,一開始我誤選 experimentation,因為我推想有做實驗->就有客觀數據->就不能誇大 (grandiosity),但是 humility 本身就已經是謙遜的意思,所以選 humility 的邏輯更直接、精確。畢竟,experimentation 跟謙遜未必可以直接連結。

填空-1.JPG

SOP:

  1. 看過整個句子
  2. 找到關鍵的詞或片語,契入作者想講什麼
  3. 自己先想好空格中要講的意思
  4. 再從選項中選擇最match自己所想意思的 (直接代入選項很容易腦補!!)

閱讀

閱讀主要需考驗三種能力:

  1. 對作者目的的體會:理解作者為什麼要寫這段文章(主旨),體會作者心境。
  2. 對長難句的理解:這個推薦看楊鵬難句,精髓 – 難句看懂多次,就能自動解讀出其意義。
  3. 單字:應該不用解釋

其中我覺得 1 是最重要的,我記得我在考試時有碰到一篇文章,我剛看到這篇文章時的狀態不佳,所以想直接去看懂文章裡的句子,整個很有障礙。

當下我先閉上眼睛,先冷靜一下。然後開始一次神奇的突破之旅:

  1. 我跟自己說,我看不懂沒關係,一步一步來。我知不知道這篇主題要講什麼?
  2. 我知道,這篇是要討論歷史學家認定希臘某哲學派系是否對某個議題有某種解讀,而且看起來有爭議
  3. 好,看來我還是知道一點東西
  4. 既然有爭議,那應該會有正反兩方論述吧,分別是什麼?
  5. 開始 scan 文章 找到正方與反方(我記得這篇文章的正反邏輯有點隱晦,好像是這個哲學派別有沒有認為女性可以參與某某東西之類的,所以一開始 skim 完文章不知道在說什麼,不小心被太多細節迷惑了,無法有最高 level 的 summary 式思考)
  6. 找到之後,我就覺得這篇文章我通了(我可以用一句話說出這篇文章想講什麼),剩下的細節除非問題有問到再說吧

我原本看這篇文章被嚇到,skim 過去不知道這是在說什麼鬼,以為我得花個 5 分鐘之類的,結果上面的過程做完大概只花一分鐘,題目也很快就搞定了。分享這個經驗是希望讓大家知道,如果用體會的方式切入,大概會是什麼樣的思考脈絡。即使你一開始被細節迷惑了,也別擔心,跳出來,從最直觀、最高 level 的 summary 出發,你一定可以看懂。

作文

作文的話,個人覺得最重要的精神就是 – 寫出有說服力的文章

我在準備的過程中,常會想說我這樣寫有沒有符合各段正反論述的分佈、字數夠不夠等等細節,但寫出來的文章常常不夠說服力。

可是,AWA 要考的重點是論述能力,你寫出來的東西邏輯是否嚴謹?有沒有足夠的說服力?我很推薦 GRE寫作高頻題目與考點精析

希望大家可以永遠抓住這個大原則,再下去加強各項能力,永遠要知道你加強各種能力只是為了增加說服力。

總結

祝福大家都能在準備 GRE 的路上抓到重點,事半功倍。是你在考試,不是試在考你。

如果考試時覺得緊張,可以閉上眼睛深呼吸調整節奏,喜歡運動的朋友在休息時可以跑一跑樓梯,把考場轉成自己喜歡的氣氛,這些轉換都對我個人很有幫助。讓我感覺到自己握有主控權。

最後鼓勵大家多多教別人,幫助別人時,自己也會把東西學得很通,我屢試不爽,大家也可以試試~