Gazebo簡介及利用ROS控制gazebo模型

2021-08-28 03:48:05 字數 3090 閱讀 2793

載入特定的world,如

gazebo world/pr2.world
系統預設的world路徑為

/usr/share/gazebo-version/worlds

gazebo指令會執行兩種不同的可執行檔案,乙個是gzserver,另乙個是gzclient。前者執行物理更新迴圈和生成感測器資料,後者生成乙個視覺化模擬介面。gazebo 使用許多環境變數來定位檔案,並設定server和client之間的通訊。環境變數的預設值儲存路徑為/usr/share/gazebo-version/ setup.bash.

urdf(通用機械人描述格式)是ros系統中用於描述機械人元件的乙個xml檔案。

以rrbot為例

機械人名字和可選的xacro的xml命名空間

增加了乙個world的鏈結和關節,並將將link1固定到世界座標系上。

gazebo中的計量單位是公尺和千克。細心的話你會發現和中的元素基本是一模一樣的,你可以這麼理解,collision用於gazebo中顯示,visual用於rviz中顯示,因此二者一樣。至於多出來的一行是通過材料指令碼來指定顏色。如果要在gazebo中指定顏色,不能通過指令碼的方式,只能手動新增標籤。顏色指令碼及gazebo新增方法如下

gazebo/orange

gazebo中預設的材料原始碼都在gazebo-version/media/materials/scripts/gazebo.material中。

inretial屬性中,origin代表質心,mass代表質量,ixx/yy/zz代表沿該軸的矩。

link2也是類似定義,但在鏈結與鏈結之間,要定義乙個關節。

而且兩個非固定鏈結之間,存在指定的摩擦

0.2

0.2gazebo/black

如果只啟動主節點而沒有載入控制,那麼rrbot會處於自然下垂狀態

ros提供ros_control功能包來實現與gazebo的通訊和控制。通過ros_control能夠設定模擬控制器驅動機械人實現運動。執行下述指令進行安裝

sudo apt-get install ros-kinetic-ros-control ros-kinetic-ros-controllers
使用ros_control需要在urdf中新增額外的元素用來驅動關節。

transmission_inte***ce/******transmission

hardware_inte***ce/effortjointinte***ce

hardware_inte***ce/effortjointinte***ce

1

其中joint name對應關節名,type表示傳輸型別,hardwareinte***ce包含在中表示硬體介面載入的外掛程式。除了transmission標籤外,還需要新增的是plugin外掛程式,通過乙個額外可拓展的外掛程式架構允許使用者建立ros_control和gazebo間機械人硬體介面。預設外掛程式如下:

/rrbot

最後,需要給ros_control控制器建立乙個配置檔案和啟動檔案 ,啟動檔案和

cd catkin_ws/src

catkin_create_pkg rrbot_control ros_control ros_controllers

cd rrbot_control

mkdir config

mkdir launch

cd config

gedit rrbot_control.yaml

rrbot:

# publish all joint states -----------------------------------

joint_state_controller:

type: joint_state_controller/jointstatecontroller

publish_rate: 50

# position controllers ---------------------------------------

joint1_position_controller:

type: effort_controllers/jointpositioncontroller

joint: joint1

pid:

joint2_position_controller:

type: effort_controllers/jointpositioncontroller

joint: joint2

pid:

cd ../launch 

gedit rrbot_control.launch

rosparam通重載入乙個yaml配置檔案將引數載入到引數伺服器。controller_spawner節點通過執行指令碼呼叫ros_control控制管理器啟動兩個關節的位置控制器。第三個控制器通過hardware_inte***ces將所有關節狀態資訊發布在/joint_states的話題上。

執行

roslaunch rrbot_gazebo rrbot_world.launch

roslaunch rrbot_control rrbot_control.launch

roslaunch rrbot_control rrbot_rqt.launch

結果如圖

Gazebo學習筆記一 Gazebo簡介

寫在開頭gazebo是一款三維動態 器,能夠在複雜的室內外環境中準確 高效地模擬機械人。不光與遊戲引擎類似,gazebo提供了更高逼真度的物理模擬 一系列感測器以及使用者和程式的介面。在實驗階段,gazebo虛擬機械人 無論從保證演算法準確性還是充實 方面都有著重要的作用。針對機械人實驗除錯過程存在...

問題解決 Gazebo閃退及無法執行

卡在載入世界模型介面 載入太慢 cd gazebo mkdir p models cd gazebo models wget 輸出 gazebo models.txt 繼續執行 wget i gazebo models.txt ls model.tar.g xargs n1 tar xzvf 進到 ...

linux系統簡介及命令簡介

一 linux基本概念 1.本門課程的定位 a.企業環境中使用的伺服器作業系統基本就是linux系統 b.大資料集群也是搭建在linxu系統之上 2.linux核心 linux是乙個一體化核心 monolithic kernel 系統。核心 指的是乙個提供硬體抽象層 磁碟及檔案系統控制 多工等功能的...