ROS仿真笔记之——移动机器人自主探索式地图构建

之前博文《ROS仿真笔记之——基于gazebo的多机器人探索环境仿真》实现了移动机器人自动探索环境。而博文《 ROS仿真笔记之——多移动机器人SLAM地图融合》实现了基于gazebo的移动机器人SLAM。那么问题来了,要手动的键盘控制让机器人遍历整个地图,有点麻烦。如果能让机器人自己去探索环境,自己构建地图那将会非常的方便快捷。

 

首先开启gazebo

export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_gazebo turtlebot3_world.launch

然后开启SLAM仿真

roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=base_footprint set_odom_frame:=odom set_map_frame:=map

跟博文《 ROS仿真笔记之——多移动机器人SLAM地图融合》一开始出现的bug一样,修改文档,添加tf变换描述,修改如下

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="x_pos" default="-2.0"/>
  <arg name="y_pos" default="-0.5"/>
  <arg name="z_pos" default="0.0"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_world.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

  <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

 <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen">
   <param name="publish_frequency" type="double" value="50.0" />
 </node>

  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf"  args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
</launch>

然后就可以了

然后启动rviz

rosrun rviz rviz -d `rospack find turtlebot3_gazebo`/rviz/turtlebot3_gazebo_model.rviz

然后运行explore

export TURTLEBOT3_MODEL=waffle
roslaunch explore_lite explore.launch

由于explore本身就自带了slam,所以可以把上面的slam关闭再运行。即可以实现不需要手动键盘遥控让机器人自动把整个环境都探索完~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章