用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.