在Gazebo中使用turtlebot+hokuyo运行gmapping
1. 建一个新的ros工作空间 catkin_ws,在github下面下载好相应的源码
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/robopeak/rplidar_ros.git
git clone https://github.com/turtlebot/turtlebot_simulator.git
git clone https://github.com/turtlebot/turtlebot_apps.git
git clone https://github.com/turtlebot/turtlebot.git
2. 测试源码
编译
cd ~/catkin_ws
catkin_make
启动gazeb,启动gmapping ,运行rviz ,运行键盘控制机器人运动。
roslaunch turtlebot_gazebo turtlebot_world.launch
roslaunch turtlebot_gazebo gmapping_demo.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch
roslaunch turtlebot_teleop keyboard_teleop.launch
3.使用hokuyo激光雷达
3.1 修改 /turtlebot_simulator / turtlebot_gazebo / launch / turtlebot_word.launch 文件。
将
<arg name="3d_sensor" value="$(optenv TURTLEBOT_3D_SENSOR kinect)"/>
修改为
<arg name="3d_sensor" value="$(optenv TURTLEBOT_3D_SENSOR hokuyo)"/>
使用hokuyo发射的激光而不使用kinect转换而来的伪激光
将laser设置修改为
<!-- Fake laser -->
<node pkg="nodelet" type="nodelet" name="laserscan_nodelet_manager" args="manager"/>
<!--node pkg="nodelet" type="nodelet" name="depthimage_to_laserscan"
args="load depthimage_to_laserscan/DepthImageToLaserScanNodelet laserscan_nodelet_manager">
<param name="scan_height" value="10"/>
<param name="output_frame_id" value="/camera_depth_frame"/>
<param name="range_min" value="0.45"/>
<remap from="image" to="/camera/depth/image_raw"/>
<remap from="scan" to="/scan"/>
</node此处有修改-->
3.2 在/turtlebot/turtlebot_description/robots 路径下,建立相应的urdf文件:kobuki_hexagons_KinectHokuyo.urdf.xacro
修改完毕后完整的文件内容如下
<?xml version="1.0"?>
<!--
- Base : kobuki
- Stacks : hexagons
- 3d Sensor : kinect+hokuyo
-->
<robot name="turtlebot" xmlns:xacro="http://ros.org/wiki/xacro">
<!--xacro:include filename="$(find turtlebot_description)/urdf/turtlebot_common_library.urdf.xacro"/-->
<xacro:include