ROS by example 第十章 機械人視覺

2021-07-15 16:12:09 字數 2118 閱讀 4327

10.1 opencv, openni and pcl

在ros社群計算機視覺的三大支柱是opencv,openn i2+openkinec和pcl 。

opencv用於2d影象處理和機器學習。 

openni2和openkinect提供深度相機,如微軟kinect和華碩xtion pro驅動程式。

pcl是點雲庫,處理3d點雲庫的是首選。

ecto, 乙個視覺框架,允許我們可通過統一的介面訪問opencv 和 pcl這2個庫.

在本章中,我們將學習如何:

•使用ros連線到網路攝像頭或rgb-d(深度)相機

•使用ros cv_bridge和opencv處理ros影象流

•寫ros程式偵測臉部,利用光流跟蹤關鍵點,並跟蹤特定顏色的物體

•使用rgb-d攝像機和openni/ openkinect 跟蹤使用者的骨骼

•使用pcl 檢測離robot最近的人

10.2 關於相機解析度

解析度太高,處理器吃不消, 太低達不到要求。人臉檢測和顏色追蹤,額外的畫素又是多餘的。

ros 相機啟動檔案預設解析度為640x480。如果需要更低或更高的解析度,可以使用rqt_reconfigure或修改相機啟動檔案來改變解析度模式。

注:對於微軟kinect和freenect,640×480(vga)是最低解析度。

10.3.1安裝ros openni和openkinect(freenect)驅動程式

$sudo apt-get install ros-indigo-openni-* ros-indigo-openni2-* \ros-indigo-freenect-*

$rospack profile

10.3.2安裝攝像頭驅動程式

官方的驅動程式包是libuvc_camera,但它需要root許可權或增加為您相機的具體**商b規則。由於包的作者不再維護,我們切換到博世的usb_cam

$cd ~/catkin_ws/src

$git clone

$cd ~/catkin_ws

$catkin_make

$rospack profile

10.3.3 測試kinect vs xtion

microsoft kinect:

$roslaunch freenect_launch freenect-registered-xyzrgb.launch

asus xtion, xtion pro, or primesense 1.08/1.09 cameras:

$roslaunch openni2_launch openni2.launch depth_registration:=true

$rosrun image_view image_view image:=/camera/rgb/image_raw
$rosrun image_view image_view image:=/camera/depth_registered/image_rect

10.3.4測試usb攝像頭

10.4

在ubuntu上安裝 opencv

10.5 ros到opencv:cv_bridge包

10.8 opencv:開源計算機視覺庫

10.8.1人臉檢測

opencv的人臉檢測採用了級聯分類器與haar特徵。

10.8.2使用goodfeaturestotrack進行關鍵點檢測

10.8.3使用光流跟蹤關鍵點

lucas-kanade 光流演算法calcopticalflowpyrlk()

10.8.6基於顏色的跟蹤演算法

camshift

camshift

演算法就是「連續自適應的

mean shift

演算法」

10.9 openni和骨架跟蹤

10.9.1安裝nite和openni_tracker

10.10 pcl nodelets和三維點雲

10.10.1 passthrough 過濾器

10.10.3 voxelgrid 過濾器

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...

第十章 屬性

目錄 10.1 無參屬性 10.2 有參屬性 10.3 呼叫屬性訪問器方法時的效能 10.4 屬性訪問器的可訪問性 10.5 泛型屬性訪問器方法 物件導向設計和程式設計的重要原則之一就是資料封裝,意味著型別的字段不應該公開,否則很容易因為不恰單使用欄位而破壞物件的狀態。可將屬性想象成智慧型字段,即背...