ROS学习初探之自建小车模型并进行仿真(四)

创建gazebo环境,并能在launch文件中调用

一、在gazebo修墙

首先教大家如何在gazebo环境中修墙,在终端中输入

gazebo

可以直接打开gazebo
在这里插入图片描述在菜单栏点击edit—building edit,就能修墙了
在这里插入图片描述
在这里插入图片描述这里我们先单击左边菜单栏的Create Walls下边的wall图标进行修墙,这里详细怎么操作呢,我给大家放个大佬的链接,我就不班门弄斧了https://blog.csdn.net/wilylcyu/article/details/51754495
在这里插入图片描述我就随手画了由墙围起来的房间,并贴上了纹理,点击上方菜单栏File—save as
在这里插入图片描述选好路径并且保存,再退出,退出后,我们发现,墙的模型还在,也可以在Insert下边找到自己墙的模型,并且可以直接将模型拖进gazebo中,如图中所示。也就是说以后只要打开gazebo,就可以直接将墙的模型拖进gazebo了,这里我们先不拖动,保持原先就有的墙体模型。
在这里插入图片描述我们可以放一些摆设或者障碍物进去,可以直接在Insert里面拖动装载的模型,一会儿我会放模型库的链接。
在这里插入图片描述点击File—save world as选择路径保存到 catkin_ws/src/tianbot/tianbot_gazebo/world文件夹下面,命名为baby_room.world
在这里插入图片描述

二、配置launch文件

我们只需要在上一节的launch文件中引入该world文件即可:

<launch>

  <!-- 设置launch文件的参数 -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">   
     <arg name="world_name" value="$(find tianbot_gazebo)/worlds/baby_room.world"/> 
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>
       
    <!-- 加载机器人模型描述参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find tianbot_mini_description)/urdf/tianbot_mini_run.urdf.xacro'" /> 

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

    <!-- 在gazebo中加载机器人模型-->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model tianbot_mini -param robot_description"/> 
    <node
    name="fake_joint_calibration"
    pkg="rostopic"
    type="rostopic"
    args="pub /calibrated std_msgs/Bool true" />
    <node
    name="tf_footprint_base"
    pkg="tf"
    type="static_transform_publisher"
    args="0 0 0.0215 0 0 0 base_footprint base_link 40" />

</launch>

在这里插入图片描述如上图所示,我们发现小车已经在里面了。

小结

这一节我们实现了设置gazebo环境,并把小车放进做好的环境中,虽然环境建设得有点草率。接下去,我会让小车实现gmapping,敬请期待。

参考资料

1.古月老师的<<ROS机器人开发实践>>
2.https://blog.csdn.net/wilylcyu/article/details/51754495
3.gazebo模型库,并导入的方法

猜你喜欢

转载自blog.csdn.net/qq_48427527/article/details/108456390