创建gazebo环境,并能在launch文件中调用
一、在gazebo修墙
首先教大家如何在gazebo环境中修墙,在终端中输入
gazebo
可以直接打开gazebo
在菜单栏点击edit—building edit,就能修墙了
这里我们先单击左边菜单栏的Create Walls下边的wall图标进行修墙,这里详细怎么操作呢,我给大家放个大佬的链接,我就不班门弄斧了https://blog.youkuaiyun.com/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.youkuaiyun.com/wilylcyu/article/details/51754495
3.gazebo模型库,并导入的方法