首頁 > TurtleBot3【2020通用教程】 > TurtleBot3使用課程-第四節(北京智能佳)
2020
12-03

TurtleBot3使用課程-第四節(北京智能佳)

1.1.1目標

使用鏈式機(機器學習框架之一)識別一個對象,并使用深度相機計算到對象的距離。(Link : chainer)

1.1.2操作環境

1.1.3設置

1.ROS動能裝置:參考wiki.ros.org

2.RealSense D435 ROS包安裝


3.依賴包裝安裝python-pip包


4.object_detector_3D安裝

  

  


1.1.4運行(它需要超過幾秒取決于PC)

1.Realsense&object_detector_3d節點

   

2.Rviz

   

1.1.5運行屏幕

左到圖:顯示由rostopicecho/object_detection_3d輸出。

圖的右上角:/object_detection_3d/result_image通過rviz顯示。

如果你看右上屏幕,你可以看到一個鍵盤,一個杯子,一個瓶子和兩個顯示器從前面檢測到。 每個檢測都有一個標題,顯示以下信息。

對象名稱

檢測得分。值在[0,1]范圍內,隨著值接近1,檢測的可靠性增加。

對象中心點的三維坐標(稍后介紹)。的起源坐標系是相機的中心。x、y和z軸方向是以米為單位,分別指向右、下和向內。

如果你看z值,它是在深度方向上五個元素之間的距離檢測結果,可以看到值隨著對象的位置而增加再往里走。


1.1.6 ROS節點

1.主題

訂閱主題

相機/顏色/image_raw[sensor_msgs/圖像]彩色圖像,用于二維物體檢測

/相機/深度/顏色/點[sensor_msgs/點云2]

3D點云,用于計算3D坐標,需要與上面的相機圖像進行時間同步

出版的主題

/object_detection_3d[object_detector_3d/第3條]

    

本主題由檢測對象(num_detections)和檢測信息(檢測)的數量組成)。 檢測信息Detection3D由以下信息組成。


class_id和class_name是檢測對象的分類編號和名稱。 得分意味著檢測的可靠性。 y_min、x_min、y_max和x_max是被檢測對象的包圍框的左上角和右下角的坐標。 最后,位置是物體的三維坐標位置。

object_detection_3d/result_image[sensor_msgs/圖像]

這是一個結果圖像,其中包括用于檢測的圖像中檢測到的對象的信息。 這是一個像上面右邊的圖像。

其他

sensor_msgs的內部參數。 相機信息:/相機/顏色/image_raw

realsense2_camera。 外部參數:從點組坐標系轉換為彩色攝像機坐標系的外部參數。

 1.1.7 ROS節點

1.輸入數據

輸入

二維攝像機圖像

三維云

攝像機內部參數

外部參數,指示攝影機在點云中的位置坐標系。

輸出

對象在點云坐標系中的中心點坐標。

對象的類型

檢測的可靠性

2.算法概述

1.按照下面的步驟提取對象的3D坐標。

2.使用對象檢測器檢測圖像中的多個對象,并從攝像機獲得的圖像中輸入。

3.提取視圖截錐中包含的每個點對應的子集。

4.找到每個點子集組的中心點坐標。

5.將二維檢測結果和三維中心點坐標集成到三維中檢測結果。

3.每種算法的描述

2D對象檢測2D對象檢測是指預先定義好的檢測包含在圖像中的對象。當您輸入二維圖像進行搜索時顯示以下信息。以下是多個對象對應的預測值。

對象周圍的框(軸對齊邊界框,bbox)

對象的類型

檢測可靠性

具體地說,目標探測器使用COCO和can學習的SSD300利用CNN檢測80種物體。有關詳細的檢測列表,請參閱該列表顯示在鏈接中。python的深度學習框架chainer用于實現和chainerv專門用于圖像處理。

提取檢測對象的點子集時,使用bbox上一步驟中的信息。對于每個bbox,僅限進入bbox的點從攝像機的視角提取點云中的點云作為部分點云。

部分點云中的中心點計算部分點云包括從目標、背景和屏蔽對象獲得的點。這個表示這些點的集中點稱為中心點。雖然對中心點有不同的定義,但中心點是從軟件角度定義為點云的中心。然而,這種方法使用點數據而不區分提取的對象和非對象部分。這可能會導致根據對象形狀或差異bbox。將中心點定義為計算中心似乎更好在從部分點云中移除未提取的部分后。

二維檢測與三維中心點坐標的集成省略,因為它很簡單。


1.2 機器學習:YOLO

1.2.1 目標

使用YOLO練習在ROS環境中識別對象。 YOLO(您只看一次)是一個實時的目標檢測系統,比其他檢測系統具有更快的速度。 YOLO由darknet提供動力,darknet是一種神經網絡框架,它教育和運行DNN(深度神經網絡)。

              

1.2.2 操作環境

1.2.3 設置

ROS動能裝置:參考。wiki.ros.org   

RealSense D435 ROS包安裝


darknet_ros安裝轉到catkin工作


1.2.4運行(使用預先訓練的模型)

      

1.2.5運行屏幕


與上面的圖像一樣,多個對象同時被識別。 在對象的邊界創建一個框,對象的名稱顯示在框的左上方。

1.2.6 ROS節點

1.主題

訂閱的主題

/照相機/顏色/圖像_raw[傳感器圖像/圖像]彩色圖像,用于目標檢測外部參數,指示攝影機在點云中的位置坐標系。

已發布主題

/暗色/邊框本主題包含已識別對象的信息。如下圖所示由消息頭、用于檢測的圖像頭組成,邊界盒是檢測到的目標信息。

顯示對象信息的邊界框如下所示。(BoundingBox.msg)

  

它由表示探測精度的概率x和y組成檢測對象圖像上邊界框的坐標,id號以及指示對象類型的類。/暗色/探測圖像[傳感器圖像]包含圖像中檢測到的對象信息的結果圖像用于檢測。/暗色/找到目標[標準消息/國際標準]顯示檢測到的對象數。


2.行動

攝像頭讀數[傳感器圖像]發送包含圖像和結果值的操作(的邊界框檢測到的對象)。

3.參數

設置與檢測相關的參數可以在與 ROS相關參數設置可以在中完成 

圖像查看/啟用打開CV(bool)打開/關閉打開cv查看器,其中顯示包含邊界框。圖像查看/等待按鍵延遲(int)打開cv查看器中的等待鍵延遲(毫秒)yolo_model/config_file/name(字符串)用于檢測的網絡的cgf名稱。加載具有相應名稱的cfg從darknet_ros/yolo_network_config/cfg中使用該程序。yolo_型號/重量_文件/名稱(字符串)用于檢測的網絡的權重文件名。加載權重文件來自darknet_ros/yolo_network_config/weights的相應名稱以使用程序。yolo_型號/閾值/值(浮動)檢測算法的閾值。范圍在0到1之間。yolo_模型/檢測_類/名稱(字符串數組)網絡可檢測到的對象的名稱。

1.2.7 GPU Acceleration 

如果你有NVdia GPU,使用CUDA可以比只使用快幾倍中央處理器。如果安裝了CUDA,則會在中自動識別CMakeLists.txt文件文件和編譯時以GPU模式編譯(catkin_make)

CUDA Toolkit

1.2.8 參考站點

darknet

darknet_ros




本文》有 0 條評論

留下一個回復