gazebo是ROS中的一个实现物理仿真的工具包,gazebo本身就是一款机器人的仿真软件,基于ODE的物理引擎,可以模拟机器人以及环境中的很多物理特性。
注意,gazebo和rviz是不同的工具包,不要混淆。
类似于rviz工具,在gazebo工具中也可以加载机器人模型。
加载的步骤:
(1)安装gazebo工具包
(2)新建工程,将包的路径位置加入到环境变量ROS_PACKAGE_PATH中
(3)新建.xacro文件并编辑内容
(4)新建.world文件并编辑内容
(5)新建.launch文件并编辑内容
(6)使用命令显示
其中.xacro文件包括机器人模型信息的文件,.world是gazebo环境地图文件,.launch为启动脚本。
1)安装gazebo工具包
sudo apt-get install ros-hydro-gazebo-ros-pkgs ros-hydro-gazebo-roscontrol
1
安装成功
运行
rosrun gazebo_ros gazebo
1
打开gazebo工具界面
(2)新建工程,将包的路径位置加入到环境变量ROS_PACKAGE_PATH中
mkdir -p workspace/src
cd workspace
catkin_make
出现以下代码则成功:
source devel/setup.bash
cd src
catkin_create_pkg gazebotest urdf xacro
如下:
(3)新建.xacro文件并编辑内容
a)新建文件夹urdf
mkdir urdf
b)在urdf文件夹下编辑touch robot1_xacro.xacro文件如下
<xacro:property name="length_wheel" value="0.05" />
<xacro:property name="radius_wheel" value="0.05" />
<xacro:macro name="default_inertial" params="mass">
<inertial>
<mass value="${mass}" />
<inertia ixx="1.0" ixy="0.0" ixz="0.0"
iyy="1.0" iyz="0.0"
izz="1.0" />
</inertial>
</xacro:macro>
<link name="base_footprint">
<visual>
<geometry>
<box size="0.001 0.001 0.001"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</visual>
<xacro:default_inertial mass="0.0001"/>
</link>
<gazebo reference="base_footprint">
<material>Gazebo/Green</material>
<turnGravityOff>false</turnGravityOff>
</gazebo>
<joint name="base_footprint_joint" type="fixed">
<origin xyz="0 0 0" />
<parent link="base_footprint" />
<child link="base_link" />
</joint>
<link name="base_link">
<visual>
<geometry>
<box size="0.2 .3 .1"/>
</geometry>
<origin rpy="0 0 1.54" xyz="0 0 0.05"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.2 .3 0.1"/>
</geometry>
</collision>
<xacro:default_inertial mass="10"/>
</link>
<link name="wheel_1">
<visual>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
<!-- <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/> -->
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
<collision>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
</collision>
<xacro:default_inertial mass="1"/>
</link>
<link name="wheel_2">
<visual>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
<!-- <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/> -->
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="black"/>
</visual>
<collision>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
</collision>
<xacro:default_inertial mass="1"/>
</link>
<link name="wheel_3">
<visual>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
<!-- <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/> -->
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="black"/>
</visual>
<collision>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
</collision>
<xacro:default_inertial mass="1"/>
</link>
<link name="wheel_4">
<visual>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
<!-- <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/> -->
<origin rpy="0 0 0" xyz="0 0 0" />
<material name="black"/>
</visual>
<collision>
<geometry>
<cylinder length="${length_wheel}" radius="${radius_wheel}"/>
</geometry>
</collision>
<xacro:default_inertial mass="1"/>
</link>
可以看到标签设置了物理属性如颜色为绿色 (4)新建.world文件并编辑内容 a)新建文件夹world mkdir world b)在world 文件夹下新建并编辑touch robot.world文件 如下 <?xml version="1.0" ?>
model://ground_plane
<!-- Global light source -->
<include>
<uri>model://sun</uri>
</include>
<!-- Focus camera on tall pendulum -->
<gui fullscreen='0'>
<camera name='user_camera'>
<pose>4.927360 -4.376610 3.740080 0.000000 0.275643 2.356190</pose>
<view_controller>orbit</view_controller>
</camera>
</gui>
发现文件的参数就是配置些灯光视角参数。
(5)新建.launch文件并编辑内容
新建lauch文件夹并新建gazebo.launch如下
注意着行代表表示加载的.world文件位置,(find gazebotest)返回的是包的绝对路径。
1
(6)使用命令显示
使用如下命令
roslaunch gazebotest gazebo.launch model:="$(rospack find gazebotest)/urdf/robot1_xacro.xacro"//或者使用绝对路径命令
roslaunch gazebotest gazebo.launch model:="/root/dev/workspace/gazebotest/urdf/robot1_xacro.xacro"