官网原有的Turtlebot Gazebo仿真demo的激光数据是利用depth_image进行转换而得到的,存在探测范围小,性能差且不易调节的特点,可以在原先的模型基础上增加hokuyo及相应的gazebo模块。
github代码链接:turtlebot_hokuyo_demo
通过git clone上述git之后按照如下步骤进行操作。
环境:Ubuntu 16.04 Kinetic
(1)安装官网demo.
sudo apt-get install ros-kinetic-turtlebot ros-kinetic-turtlebot-apps ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator ros-kinetic-kobuki-ftdi ros-kinetic-rocon-remocon ros-kinetic-rocon-qt-library ros-kinetic-ar-track-alvar-msgs如果遇到安装ros-kinetic-rocon-remocon和ros-kinetic-rocon-qt-library的错误时,可以不用管,不会影响后续操作。
(2)安装hokuyo节点.
由于官网还没有hokuyo的kinetic版本的节点,因此可以通过源码编译来安装。
cd ~/catkin_ws/src git clone https://github.com/ros-drivers/driver_common.git cd .. catkin_make cd src git clone https://github.com/ros-drivers/hokuyo_node.git cd .. catkin_make不要clone完两个文件然后一起编译,会出错。
(3)删除替代部分文件.
cd /opt/ros/kinetic/share sudo rm -rf turtlebot_navigation/ sudo rm -rf turtlebot_description/ sudo rm -rf turtlebot_simulator/ sudo cp -r ~/turtlebot_hokuyo_demo/turtlebot_navigation/ . sudo cp -r ~/turtlebot_hokuyo_demo/turtlebot_description/ . cp -r ~/turtlebot_hokuyo_demo/turtlebot_simulator/ ~/catkin_ws/src cd ~/catkin_ws catkin_make(4)修改.bashrc文件加入环境变量.
export TURTLEBOT_GAZEBO_WORLD_FILE=~/worlds/corridor.world export TURTLEBOT_3D_SENSOR="hokuyo"(5)拷贝map和world文件.
cp -r ~/turtlebot_hokuyo_demo/map ~/ cp -r ~/turtlebot_hokuyo_demo/worlds ~/(6)修改launch_hpv文件.
修改turtlebot_simulator/turtlebot_gazebo/launch目录下的amcl_demo.launch,把/home/cjw/map/corridor.map 改成/home/XXX/map/corridor.map.(XXX 代表你的用户名).
(7)测试仿真器.
运行如下命令,如果你能看到Turtlebot顶部多了一个hokuyo传感器并且能看到激光光束,证明你成功了。
roslaunch turtlebot_gazebo turtlebot_world.launch(8)激光参数调整.
你可以通过修改urdf文件来修改激光参数,文件位于/opt/ros/kinetic/share/turtlebot_description/urdf目录下,打开turtlebot_gazebo.urdf.xacro文件,可以看到如下内容:
<gazebo reference="hokuyo_link"> <sensor type="ray" name="laser"> <pose>0 0 0 0 0 0</pose> <visualize>true</visualize> <update_rate>5</update_rate> <ray> <scan> <horizontal> <samples>180</samples> <resolution>1.0</resolution> <min_angle>-1.5707</min_angle> <max_angle>1.5707</max_angle> </horizontal> </scan> <range> <min>0.10</min> <max>3.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <!-- Noise parameters based on published spec for Hokuyo laser achieving "+-30mm" accuracy at range < 10m. A mean of 0.0m and stddev of 0.01m will put 99.7% of samples within 0.03m of the true reading. --> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="hokuyo_node" filename="libgazebo_ros_laser.so"> <topicName>scan</topicName> <frameName>hokuyo_link</frameName> </plugin> </sensor> </gazebo>你可以修改upate_rate、samples、resolution等内容。