用turtlebot3和gazebo做仿真

用turtlebot3和gazebo做仿真

環境:

電腦系統:lubuntu16.04 ROS版本:kinetic

準備

在gazebo中創建自己需要的仿真環境並保存,我保存的目錄爲:/home/lhh/.gazebo/world/house2.world
啓動gazebo時需要加載該環境。
若此時不會創建gazebo仿真環境也沒關係,在turtlebot3_gazebo包的worlds目錄下有一些仿真環境,
只需要將下面的launch文件中<arg name="world_name" value="/home/lhh/.gazebo/world/house2.world"/>中
的 value="/home/lhh/.gazebo/world/house2.world"換成 value="$(find turtlebot3_gazebo)/world/xxx.world"即可。

安裝需要的包:

sudo apt-get install ros-kinetic-turtlebot3
sudo apt-get install ros-kinetic-turtlebot3-gazebo

編寫launch文件:

<?xml version="1.0" encoding="UTF-8"?>
<launch>
<!-- 部分配置參數-->
    <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
    <arg name="x_pos" default="0.0"/>
    <arg name="y_pos" default="0.0"/>
    <arg name="z_pos" default="0.0"/>

<!-- 啓動gazebo,加載仿真環境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
      <arg name="world_name" value="/home/lhh/.gazebo/world/house2.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 name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model turtlebot3 -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />

<!-- 發佈機器人的狀態 -->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
        <param name="publish_frequency" type="double" value="30.0" />
    </node>

<!-- 啓動gmapping -->
    <arg name="scan_topic"  default="scan" />
    <arg name="base_frame"  default="base_footprint"/>
    <arg name="odom_frame"  default="odom"/>

    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
      <param name="base_frame" value="$(arg base_frame)"/>
      <param name="odom_frame" value="$(arg odom_frame)"/>
      <param name="map_update_interval" value="5.0"/>
      <param name="maxUrange" value="6.0"/>
      <param name="maxRange" value="8.0"/>
      <param name="sigma" value="0.05"/>
      <param name="kernelSize" value="1"/>
      <param name="lstep" value="0.05"/>
      <param name="astep" value="0.05"/>
      <param name="iterations" value="5"/>
      <param name="lsigma" value="0.075"/>
      <param name="ogain" value="3.0"/>
      <param name="lskip" value="0"/>
      <param name="minimumScore" value="200"/>
      <param name="srr" value="0.01"/>
      <param name="srt" value="0.02"/>
      <param name="str" value="0.01"/>
      <param name="stt" value="0.02"/>
      <param name="linearUpdate" value="0.5"/>
      <param name="angularUpdate" value="0.436"/>
      <param name="temporalUpdate" value="-1.0"/>
      <param name="resampleThreshold" value="0.5"/>
      <param name="particles" value="80"/>
      <param name="xmin" value="-1.0"/>
      <param name="ymin" value="-1.0"/>
      <param name="xmax" value="1.0"/>
      <param name="ymax" value="1.0"/>

      <param name="delta" value="0.05"/>
      <param name="llsamplerange" value="0.01"/>
      <param name="llsamplestep" value="0.01"/>
      <param name="lasamplerange" value="0.005"/>
      <param name="lasamplestep" value="0.005"/>
      <remap from="scan" to="$(arg scan_topic)"/>
    </node>

</launch>

啓動

先在.bashrc文件底部加上下面這句
export TURTLEBOT3_MODEL=burger
1、啓動上述launch文件
2、啓動roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
3、啓動rviz
即可用鍵盤控制機器人開始建圖。需要說明的是這裏鍵盤控制機器人運動不是上下左右鍵而是:
—w---------
A S D-----
—X---------
S爲停止,若要用其他節點控制機器人運動則必須把鍵盤控制節點關掉,
因爲鍵盤控制節點會不停的發佈速度指令,不走的時候在一直髮0.

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