ROS中gazebo工具学习(使用gazebo加载机器人模型)

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文件如下

<?xml version="1.0"?>

<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如下

<?xml version="1.0"?>



注意着行代表表示加载的.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"

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值