目錄
一、執行gazebo
二 、gazeb元件
1.world files
2.model files
3.environment variables
三 、gazebo 架構
1.gazebo master
2.通訊庫(communication library)
3.物理庫(physics library)
4.渲染庫(rendering library)
5.感測器庫(sensor generation)
6.gui
7.外掛程式(plugins)
因為gazebo一般不是單獨安裝,基本都是作為ros的外掛程式形式;這裡也是這種情況,所以關於怎麼安裝gazebo的這裡已經略去。
這裡啟動gazebo遇到乙個問題:vmw_ioctl_command error invalid argument,
解決辦法是在終端下設定環境變數為0,$export svga_vgpu10=0
在home目錄下直接執行 gazebo 即可開啟gazebo介面,此時介面world是灰色的什麼都沒有。
對於初學者,可以開啟官網的world模型,其中乙個如下
其他介紹:
gazebo也分客戶端(client)與服務端(server),這裡是這樣區分的。
服務端執行指令:gzserver
客戶端執行指令:gzclient
server端可以理解成伺服器,執行gazebo實際的一些運算分析;
而client則可以理解成顯示器,接受一些資料資訊並顯示,所以可以有多個顯示器存在;
可以新開乙個terminal然後輸出gzclient是沒有問題的,會彈出乙個跟原來一模一樣的視窗;
總結:執行gazebo這個指令時,會同時gzserver與gzclient,也可以分開執行,例如上面gazebo worlds/pioneer2dx.world,可以這樣
gzserver worlds/pioneer2dx.world,然後另外開個terminal,輸入gzclient
這一部分主要介紹在gazebo**執行中的各部分;
主要包括:
該描述檔案包含了**的所有元素,包括機械人,燈光,感測器,以及靜物等等,檔案格式一般是sdf,
並常常乙個.world副檔名。通過gzserver讀取所有資訊並構建乙個world場景;
模型檔案採用的格式與world files相同,sdf(simulation description format)格式,不同的是包含的內容,模型檔案僅包含模型。
模型檔案:
world files檔案:
<?xml version="1.0" ?>
model://ground_plane
model://pioneer2dx
0 0 0 0 0 0
model://sun
如果內容是world files子集,那模型檔案的意義在**呢?
模型檔案主要作用是實現原件的復用,例如四個車輪,可以通過乙個模型實現,從而簡化world files。
環境變數,gazebo通過環境變數定位檔案,並連線服務端與客戶端,正常情況下環境變數是預設的,不需要我們進行設定。
一些環境變數:
gazebo_model_path:gazebo所有模型的路徑
gazebo_resource_path:供gazebo所有的資源路徑,例如world
gazebo_master_uri:指定的ip與埠,用於客戶端連線伺服器使用(其實正常情況下不用管這些,都是預設的,只有用伺服器執行gazebo的情況才可能會用到此種設定);
gazebo_plugin_path:用於gazebo搜尋外掛程式庫的路徑
上述所有的變數檢視位置
/usr/share/gazebo/setup.sh
修改上述環境變數的方式:
首先修改上面提高的setup.s**件,然後source /usr/share/gazebo/setup.sh
gazebo採用庫形式的分布式架構,主要有物理**庫,rendering(應該翻譯成渲染,跟3d場景有關),使用者介面,通訊,感測器。
同時gazebo提供了兩個執行程序用於**,分別是gzserver,gzclient。
gazebo支援訂閱與發布的通訊模式,例如當**環境中更新了機械人本體位置資訊後,感測器以及介面會根據新的資訊做出下一步動作。
gazebo master本質上是乙個話題與名稱的服務端。它提供名稱檢視,話題管理。乙個master可以管理多個物理場景的**,感測器以及gui。
該庫會被隨後提到的大部分庫使用。通訊庫其實是gazebo的傳輸機構,主要負責通訊功能,目前僅支援publish/subscribe通訊模式。
物理庫為基本的**元件提供了乙個簡單通用的介面,基本模擬元件包括剛體、碰撞外形、表徵關節約束的關節點。
該介面已經被整合進四個開源的物理引擎中:
每個引擎都可以載入sdf檔案中描述的模型。這樣就保證了不同演算法的實現以及滿足不同的**特性。
渲染庫使用ogre提供了乙個簡單的介面,用於在gui和感測器庫中渲染3d場景。主要包括燈光、材質紋理,天空的**。
也可以為渲染庫編寫外掛程式完成需要的功能。
感測器生成庫整合所有型別的感測器,監聽**的狀態更新,並生成感測器指定的輸出。
gui庫使用qt編寫影象視窗,用於**與使用者之間的互動。gui庫就是與使用者互動相關的功能的整合,基本都是視窗的相關操作。
支援外掛程式的庫有,物理庫、渲染庫、感測器庫。這些支援外掛程式的庫,可以知己
vim系列教程(1)基礎操作
總結下本人平時所使用的各種工具以及語言的快速入門教程以及給高手準備的高階材料,雖然本人也不是什麼高手,但是本身交流 的態度,希望能夠對各位起到幫助,系列教程,慢慢完善。首先從最常用的vim開始,涉及到基礎操作,也是平時用的最多的,以及高階操作,後續還有一些有用的 以及國外的書籍,不斷的修改完善。vi...
CMake系列教程1 初始CMake
cmake 是乙個跨平台的安裝 編譯 工具,可以用簡單 統一的語句來描述所有平台的安裝或編譯過程。能夠輸出不同編譯器的 makefile 或 project 檔案。cmake 的使用 cmakelists.txt 作為專案組織檔案,cmake 並非跨平台編譯工具,而是專案構建工具,可以在不同的平台上...
gluon學習系列1 線性回歸 從0開始1
錯誤修正前 from mxnet import ndarray from mxnet import autograd import matplotlib.pyplot as plt true w 2,5 true b 1.5 num batch 1000 x ndarray.random norma...