ROS2機器人筆記20-09-06
ROS2Foxy功能包不斷完善,Gazebo新版Ignition Robotics功能也更加豐富!
這里參考GSoC 2020 Ignition gazebo:
(ROS2課程將更新為Foxy+Ignition)
舊版課程專欄:https://blog.csdn.net/zhangrelay/category_9327597.html
以下內容為機器翻譯學習筆記
新增Ignition Gazebo演示
這些教程如下:
建立自己的機器人
使用SDF 1.7構建兩輪機器人
移動機器人
本教程說明了如何使用鍵盤箭頭移動上一教程中構建的機器人。我們使用了Diff Drive插件,Triggered Publisher插件和KeyPublisher插件。
SDF世界
本教程說明了如何使用SDF構建我們的世界,以及如何向其中添加模型。
傳感器演示
本教程說明了如何向我們的機器人以及世界上的其他模型添加傳感器。我們引入了三種不同的傳感器:IMU傳感器,接觸傳感器和激光雷達傳感器。
ROS 2集成
本教程說明了如何使用ros_bridge將ROS 2與Ignition集成在一起
演員演示
本教程說明如何將演員添加到我們的世界以及如何創建腳本動畫
光學觸覺傳感器插件
觸覺傳感器是一種測量信息的設備,這些信息來自與周圍環境的物理交互,例如手指或皮膚。我們不再關注市場上可用的觸覺傳感器的特定品牌和型號并對其進行仿真,而是將我們的目標和工作轉向實現一種特定的傳感器技術,例如光學觸覺傳感器。這些傳感器通常由光源,可變形表面,鏡頭和照相機組成。使它們非常受歡迎的方面之一是,您可以應用現有的計算機視覺算法,以便從該數據中提取信息。
本教程的上一個屏幕截圖中所見,我們使用了接觸傳感器和深度攝像頭來模擬這種行為。當對象與前者接觸時,表面法線將根據后者返回的值進行計算。重要的是要注意,來自接觸傳感器的值當前并未用于進行任何計算,而只是用于可視化接觸,以作為一種快速的方法來檢查插件是否正常工作。由于時間不足,我們無法合并來自這兩個不同傳感器的信息,無法提供更實際的測量結果。
以下是顯示插件如何與模擬中不同模型交互的中間工作。請注意,插件如何能夠可視化其所指向的對象的表面法線:
該插件還為表面法線變化很大的對象提供了豐富的信息,例如下面的電鉆。它當前通過一個主題輸出表面法線,可以使用該主題來推斷信息,例如最佳抓握,要觸摸的對象的哪一部分,甚至可以嘗試猜測傳感器正在觸摸的內容!
但是,最終的實現只輸出接觸表面內部的法線,因此必須像觸摸傳感器那樣實際觸摸物體。與之前的屏幕截圖不同,在下圖中,使用更簡單的幾何體顯示法線,以降低消息傳輸和標記渲染成本,從而提高性能。
過程
由于Ignition沒有可用的相關工作,因此這也是一個探索性項目,我們不得不嘗試新事物,提出想法并迭代設計。我們留下了一些我們認為可行的想法,但最終沒有成功,不幸的是某些細節無法完成。
為了交流工作的最新進展,即使需要時電子郵件和Slack總是在那兒,我們每周召開一次會議。我相信導師和學生之間的交流確實很流暢,這無疑使該項目實現了其最重要的目標。
結論
觸覺傳感器能夠感知與環境的物理相互作用。該GSoC項目旨在實現使用深度相機和接觸傳感器模擬光學觸覺傳感器的第一步。該插件可以:
測量接觸物體的表面法線。
在IgnitionGazebo中可視化它們。
通過主題訪問它們。
使用分辨率,可視化等參數調整插件。
通過服務打開和關閉插件。
在Linux,macOS和Windows上提供跨平臺支持,從而使仿真更易于訪問。
傳感器數據可視化項目涉及到將一種新型的傳感器可視化添加到點火渲染庫中。該視覺圖像用于渲染從模擬激光雷達傳感器收集的數據。它擴展了涼亭中存在的LaserVisual的功能,并為其添加了新功能。Ogre1和Ogre2中都存在可視化的實現。
一個新功能被添加到視覺上,用戶可以選擇是否只想看到射向特定障礙物的光線。這意味著用戶可以在視覺上看到機器人所感知到的環境的相關信息,并避免了由于可視化激光雷達數據而造成的混亂,這對機器人毫無用處。之所以這樣做,是因為當傳感器光線顯示得太靠近時,用戶很難理解數據。
除了原始的Triangle-Strips,還添加了新的視覺類型,包括Ray-Lines和Points。添加這些內容的目的是使用戶可以根據自己的應用程序選擇想要查看的視覺效果。點的添加還增加了可視化模擬中的點的能力。光線線和點的渲染和更新速度比“三角形條紋”視覺類型要快。
另外,已經以面向用戶的平面正方形的形式創建了新材料。這已在Ogre1中實現,并且Ogre2實現正在進行中。該材料用于表示點。用戶可以使用API 為每個點設置獨立的顏色。它與RViz中PointCloud視覺的平面正方形視覺類型相同。
開發的視覺效果與ig n-gazebo集成為可加載的GUI插件。用戶可以從GUI中選擇要顯示的傳感器消息并設置視覺屬性。下圖顯示了該插件的簡要指南:
演示版
以下GIF演示了Lidar Visual的實現和使用。
可視類型可以在“三角帶”,“射線”和“點”之間進行更改,如下所示。該應用程序有助于可視化模擬中傳感器看到的點。
以下GIF演示了用于可視化數據的主題更改。更改主題后,視覺對象的坐標系也將更改,并且視覺對象的原點設置類似于傳感器的原點。
當激光雷達視覺系統安裝在移動底座上時,其行為如下所示。取消選中“顯示不擊中射線”復選框將刪除激光雷達中未檢測到任何障礙物的數據視覺。結果,它使用戶更容易看到傳感器在其視場中檢測到的障礙物而沒有額外的混亂。
結論和未來計劃
在項目期間,能夠實現大多數目標。但是,仍然存在諸如將PointCloud添加到渲染庫之類的拉伸目標。
我非常感謝社區提供的改進功能,解決錯誤或實施新功能的反饋,這些功能將使用戶可以輕松使用插件或庫。
項目概況
繪圖可視化工具
因此用戶可以可視化來自模擬的各種類型的數據,例如“?模擬物理數據”和“?傳輸網絡數據”,因此用戶可以在模擬過程中繪制實體的組成以及當前已發布的運輸主題的運輸消息及其嵌套字段。
繪制UI
與2個插件交互使用“繪圖”工具:
用于傳輸繪圖的Topic Viewer插件
用于物理數據繪圖的組件檢查器插件
開發插件
Ign-gazebo插件,用于物理數據繪圖
Ign-gui插件,用于繪制UI和傳輸圖
Ign-gui插件到模型運輸主題
物理數據繪圖
Ign-gazebo插件,可以訪問模擬物理數據
用戶通過EntityTree和ComponentInspector插件拖動特定的組件元素,并將其拖放到繪圖工具中
主題查看器插件
Topic Viewer插件是ign-gui插件,它列出了所有當前發布的主題并為每個主題的結構建模,因此用戶可以訪問其字段和嵌套字段。
可繪圖字段可拖動以在繪圖工具中使用
實時動態更新主題
運輸繪圖和UI
Transport Plotting插件是一個ign-gui插件,它使用點火運輸庫來處理運輸圖
用戶從“?主題查看器”插件中拖動要繪制的主題字段,并將其拖放到要繪制的繪圖工具中
用戶可以為每個圖表擁有許多圖表和許多繪圖元素(字段或組件)
用戶可以在運行時刪除繪圖元素
用戶可以在繪圖視圖上滾動和縮放
用戶可以將每個圖形導出為CSV格式
CSV導出
二次開發技術
C++
ign-gui / ign-gazebo/ ign-transport
Qt和QML
gtest用于單元測試
未來的工作
支持重復字段繪制
導出為PDF和SVG格式
結論
繪圖工具是一種可視化工具,用于繪制模擬物理數據和傳輸網絡數據,與Ignition Simulator中的Topic Viewer和Component Inspector插件一起使用。
關于該項目
RViz 是針對使用ROS的機器人的3D可視化工具,無可否認,它是每個ROS開發人員在其機器人開發過程中的關鍵組成部分。隨著ROS2的最新發展以及Gazebo將其重構為模塊化庫(即Ign庫),現在正是為RViz提供當之無愧的改造的絕佳時機。
鏈接到項目;https://github.com/ignitionrobotics/ign-rviz 13
ign-RViz是使用ign庫(主要是ign-rendering和ign-gui)構建的。該應用程序繼承了ign-gui庫的材料設計和易于使用的用戶界面,因此達到了現代應用程序的標準。所有插件都是使用GUI庫提供的小部件框架開發的。Scene3D小部件用作由ign渲染庫提供動力的主視口。渲染庫提供了用于創建圖形的統一API,同時為不同的渲染引擎提供了抽象。這與RViz的當前實現有所不同,后者使用自己的渲染抽象僅支持OGRE。通過使用點火庫,維護變得更加容易,因為它可以確保將諸如錯誤修復或功能之類的所有更新從底層庫傳播到ignition-rviz。
可以通過顯示類型或主題來加載插件。在上面的演示中,可以看到RobotModel及其TF。通過按主題加載插件,可以看到LaserScan數據。可以取消停靠,在所有插件的配置面板中移動以及更改其背景顏色以提高可見性。全局選項插件用于更改固定框架。
ign-rviz和顯示插件系統的體系結構的詳細說明可以在項目Wiki中找到:https://github.com/ignitionrobotics/ign-rviz/wiki
以下顯示插件是為ign-rviz開發的:
顯示插件
開發了以下顯示插件
演示版
在這里,我們可以看到所有正在運行的可視化插件,它們的配置面板已正確拆分。可視化的數據為PoseArray(紅色箭頭),PoseStamped(像素),PointStamped(球體),PolygonStamped(球體),旋轉青色環,Path(路徑)為背面的綠線。
這是Turtlebot3的演示 1個航點模式下的模擬和Navigation2。攝像機的提要可以在左上方看到。可視化了RobotModel,LaserScan,機器人足跡為Polygon和機器人計劃為Path。
結論和未來計劃
在GSoC的學習過程中,我能夠實現大部分目標,并且開發了一些常用的顯示插件,但是還有一些重要的東西(如PointCloud和Costmap)尚不可用。除了增加對默認插件的支持之外,我還計劃開發一些插件,例如機器人伸縮,繪圖和原始主題數據顯示。
ign-rviz將在不久的將來以二進制形式下載。直到您好奇的時候,您可以通過從源代碼構建它來進行嘗試。我非常感謝社區提供的任何反饋,并將解決所有出現的問題或錯誤。
我計劃繼續在社區中活躍起來,繼續開發ign-rviz,同時為點火庫和其他ROS程序包做出貢獻。我要再次感謝我的導師@ahcorde以及Open Robotics的每個人都為我提供了這個難得的機會。這是一次很棒的學習經歷,我期待繼續與他們合作。
機器人 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。