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關閉再運行。即可以實現不需要手動鍵盤遙控讓機器人自動把整個環境都探索完~

 

 

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