一、基本功能包安装

1、使用环境:Ubuntu14.04 LTS + ROS indigo + hokuyo URG-04LX-UG01(激光型号)

2、安装 Turtlebot包(若要学习源码,修改源码则使用源码安装)的方法如下:

 sudo apt-get install ros-indigo-turtlebot ros-indigo-turtlebot-apps ros-indigo-turtlebot-interactions ros-indigo-turtlebot-simulator ros-indigo-kobuki-ftdi ros-indigo-rocon-remocon ros-indigo-rocon-qt-library ros-indigo-ar-track-alvar-msgs

对于kobuki的底盘还要执行如下命令:

$  sudo apt-get install ros-indigo-kobuki ros-indigo-kobuki-core
$  rosrun kobuki_ftdi create_udev_rules  

3、创建工作空间及安装驱动功能包:

# 创建turtlebot工作空间
$  mkdir  -p  ~/turtlebot_ws/src
$  cd  ~/turtlebot_ws/src# 创建激光雷达的驱动功能包,由于是直接git clone ,所以不需要自己创建
$  git clone  https://github.com/ncnynl/hokuyo_node.git# 创建turtlebot建图功能包,下载即可
$  git clone  https://github.com/turtlebot/turtlebot_apps.git# 编译
$  cd ..  # 回到工作空间的目录下,才能进行编译
$  catkin_make 

4、添加环境变量:

#(1)、 将 source  ~/turtlebot_ws/devel/setup.bash  添加到 ~/.bashrc 文件的末尾
$  echo  "source  ~/turtlebot_ws/devel/setup.bash">>~/.bashrc
或者
# 打开~/.bashrc文件,将source  ~/turtlebot_ws/devel/setup.bash 添加到末尾
$  vim  ~/.bashrc   #(2)、 在当前的bash中刷新配置
$  source  ~/.bashrc
或
$  rospack  profile

二、测试电脑键盘对kobuki运动控制

在安装完上面的驱动之后,可以先不连接激光传感器。只是将turtlebot 的底盘kobuki, 用数据线和电脑进行连接,来测试用电脑键盘能否控制kobuki 运动。具体操作如下:

1、用数据线将kobuki 和电脑连接起来,输入如下命令查看kobuki 是否被电脑识别:

$  ls  /dev/kobuki

若显示没有那个文件或目录,则意味着kobuki 与电脑没有连接成功,需要排查故障。

2、打开kobuki 的开关,等绿灯亮了之后再依次执行如下命令。

3、在电脑上打开一个终端来启动ROS

$  roscore

4、打开新终端,启动turtlebot 。

$  roslaunch turtlebot_bringup minimal.launch

如果运行该命令,启动turtlebot成功的话,就会响起一阵递增的铃声。如果没有该铃声响起,则意味着使用该命令启动失败。在用ctrl + c关闭turtlebot时,将会响起一阵递减的铃声。

5、打开新终端,启动键盘控制运动。

$  roslaunch turtlebot_teleop keyboard_teleop.launch

注意:查看kobuki 的状态、电脑的电池状态可以执行该命令: rqt  -s  kobuki_dashboard


三、配置激光

1、将hokuyo激光传感器通过usb插口连接电脑 (注意观察激光传感器上的信号灯是否闪烁)。

2、配置端口:

#查看端口
$  ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0  3月  1 13:46 /dev/ttyACM0#设置端口权限为666
$  sudo chmod 666 /dev/ttyACM0

3、创建激光雷达的串口别名:

# 确认idVendor和idProduct,ID后面的部分idVendor:idProduct
$  lsusb
Bus 001 Device 004: ID 15d1:0000 # 新建 /etc/udev/rules.d/hokuyo.rules文件,别名为hokuyo,实际名称为:/dev/hokuyo
$  sudo vim  /etc/udev/rules.d/hokuyo.rules
在打开的文件中添加如下内容:
KERNEL=="ttyACM[0-9]*", ACTION=="add", ATTRS{idVendor}=="15d1", MODE="0666", GROUP="dialout", SYMLINK+="hokuyo" # 增加当前用户对串口的默认访问权限:
$  sudo usermod -a -G dialout 用户名# 使UDEV配置生效:(使串口的默认访问权限生效,需要重启机器)
$  sudo service udev reload
$  sudo service udev restart

4、创建雷达驱动的启动文件

(1)、复制 hokuyo_node 中的 hokuyo_test.launch 到 hokuyo_laser.launch

$ roscd turtlebot_navigation
$ mkdir -p laser/driver
$ sudo cp ~/turtlebot_ws/src/hokuyo_node/hokuyo_test.launch  laser/driver/hokuyo_laser.launch

(2)、打开 hokuyo_laser.launch 文件

$  rosed turtlebot_navigation hokuyo_laser.launch

(3)、检查该文件中是否有 frame_id ,若有则检查是否指定为 laser ;若没有则添加进去,结果如下

<param name="frame_id" type="string" value="laser"/>

(4)、检查端口port 。将value 设置好别名,或直接为端口/dev/ttyACM0

<param name="port" type="string" value="/dev/hokuyo"/>

(5)、增加TF:

<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0 0.0 0.0 base_link laser 100"/>

注意:args值为自己激光的实际安装位置。例如设机器人的底盘中心坐标x,y为 (0, 0),激光传感器安装在底盘中心位置上,高度为18 cm,则z=0.18m。TF的单位是m,测量单位是cm。

(6)、hokuyo_laser.launch 文件修改后最终的内容如下:

<launch><node name="hokuyo" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen"><!-- Starts up faster, but timestamps will be inaccurate. --> <param name="calibrate_time" type="bool" value="false"/> <!-- Set the port to connect to here --><param name="port" type="string" value="/dev/hokuyo"/> <param name="frame_id"  type="string" value="laser"/><param name="intensity" type="bool" value="false"/></node><node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0 0.0 0.0 base_link laser 100"/>
</launch>

5、编辑 turtlebot_navigation 包中的内容

(1)、在 turtlebot_navigation 包中新建 hokuyo_gmapping_demo.launch 文件,用于启动gmapping

$  roscd  turtlebot_navigation
$  vim  launch/hokuyo_gmapping_demo.launch

(2)、写入如下内容

<launch><!-- Define laser type--><arg name="laser_type" default="hokuyo" /><!-- laser driver --><include file="$(find turtlebot_navigation)/laser/driver/$(arg laser_type)_laser.launch" /><!-- Gmapping --><arg name="custom_gmapping_launch_file" default="$(find turtlebot_navigation)/launch/includes/gmapping/$(arg laser_type)_gmapping.launch.xml"/><include file="$(arg custom_gmapping_launch_file)"/><!-- Move base --><include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml"/></launch>

(3)、创建 hokuyo_gmapping.launch.xml 文件,执行gmapping建图

# 在 turtlebot_navigation 包下
$  vim  launch/includes/gmapping/hokuyo_gmapping.launch.xml 

(4)、写入如下内容

<launch><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="-50.0"/><param name="ymin" value="-50.0"/><param name="xmax" value="50.0"/><param name="ymax" value="50.0"/>make the starting size small for the benefit of the Android client's memory...--><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>

四、启动激光雷达用 gmapping 建图

先将激光与电脑、Turtlebot 与电脑用usb导线连接起来,打开 Turtlebot 的开关,看见指示灯亮。再依次执行如下命令:

1、在电脑上打开新终端,启动ros

$  roscore

2、打开新终端,启动 Turtlebot

$  roslaunch turtlebot_bringup minimal.launch

3、打开新终端,启动键盘操作Turtlebot

$  roslaunch turtlebot_teleop keyboard_teleop.launch 

4、打开新终端,启动gmapping构建地图

$  roslaunch turtlebot_navigation hokuyo_gmapping_demo.launch

5、打开新终端,启动rviz,实时查看建图结果

$  roslaunch turtlebot_rviz_launchers view_navigation.launch

五、保存所建地图

打开新终端,执行如下命令

$  mkdir -p ~/Map_result
$  rosrun map_server map_saver -f ~/Map_result/hokuyo_gmapping
$  ls ~/Map_result   #查看内容,包含hokuyo_gmapping.pgm  hokuyo_gmapping.yaml

参考资料:

[1]  激光雷达(Hokuyo)gmapping构建地图

[2]  使用Turtlebot的kobuki底盘进行键盘操控

[3] 使用turtlebot + hokuyo 运行gmapping建图

Turtlebot_01——激光雷达运行gmapping建图相关推荐

  1. 实验三 Gmapping建图

    体验内容 使用gmapping方法利用turtlebot底盘移动信息和激光雷达数据进行建图. 1. 安装一些依赖包 sudo apt-get install ros-melodic-move-base ...

  2. gmapping建图与rviz实时显示中出现的问题记录

    网上关于gmapping建图教程基本都是: 用ros的数据记录指令rosbag去记录数据,然后再通过rviz去显示记录的数据. 其实可以用rviz去实时显示构建地图的过程,但是需要去配置ROS: 首先 ...

  3. 开源自主导航小车MickX4(五)gmapping建图

    开源自主导航小车MickX4(五)gmapping建图 1 激光雷达驱动 2 3D点云到2D点云的转换 3 gmapping 建图 3.1 安装 gmapping库 3.2 配置 gmapping 3 ...

  4. 基于rf2o_laser_odometry纯激光里程计的gmapping建图

    ROS环境:ubuntu16.04 & ROS kinetic 激光雷达:EAI-X4 or RPlidar-A1 激光里程计:rf2o_laser_odometry 建图:gmapping ...

  5. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载

    原文:机器人操作系统ROS-深度相机+激光雷达实现vSLAM建图与导航_wx5d23599e462fa的技术博客_51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航. ...

  6. ROS---进行建图或者move_base路径规划时出现打滑现象(雷达匹配不上地图)的解决方法 附gmapping建图配置参数

    ROS-进行建图或者move_base路径规划时出现打滑现象(雷达匹配不上地图)的解决方法-本人多次实验的出的结论 之前我的车会经常出现打滑现象,图也建不了,就算勉强建好了图,在进行路径规划的时候也是 ...

  7. gmapping建图注意事项

    gmapping建图 由于这部分比较简单,就不记录详细的过程了,但是要提几点注意事项: 1.gmapping 用到了里程计.雷达,所以要确保这两个数据源没有问题,最简单的方法 是 rostopic l ...

  8. 速腾聚创rs_lidar_16(Robosense)使用gmapping建图

    1.配置速腾聚创 rs_lidar_16雷达驱动 参考下面教程的第一步,Robosense16线雷达驱动安装 速腾聚创rs_lidar_16使用cartographer配置教程 2.使用pointcl ...

  9. SLAM学习:Gmapping建图下地图变形更新速度慢问题

    一.问题描述 首先,我在用Gmapping建图的时候发现扫描出来的地图更新速度很慢然后还有就是地图的完整性不高容易变形扭曲,我们在一般在路径规划前需要用适当的建图算法把地图创建出来然后保存方可进行全局 ...

最新文章

  1. Adhesive框架系列文章--Mongodb数据服务模块使用(上)
  2. 整合Web应用与Axis2
  3. 如何配置 SQL Server 2005 以允许远程连接
  4. XGB 调参基本方法
  5. 揭秘 | 小米最新款12PRO智能动态刷新率技术原理
  6. 音视频开发(18)---视频监控客户端开发(IP Camera)总结
  7. 基于Android的人事管理系统开发与设计源码(一)
  8. .NET简谈观察者模式
  9. 1、51单片机——郭天祥课后习题解答
  10. docker 内安装字体
  11. [英语阅读]英国13岁男孩当爹引各界热议
  12. python数据分析与可视化答案学堂云_智慧树知到_Python数据分析与数据可视化_最新答案...
  13. 【 facenet-retinaface】快速复现 实现 facenet-retinaface-pytorch 人脸识别 windows上 使用cpu实现
  14. MySql 循环执行语句,循环执行update,详细介绍【游标嵌套】
  15. f2fs学习笔记 - 5. f2fs基本类图
  16. win7怎么修改服务器端口,教你在Win7中如何轻松修改3389远程桌面端口
  17. PYQT5(13)-基本窗口控件-拖曳与剪贴板
  18. 官宣 .NET 6 预览版 6
  19. XX is not defined import impor了还是not defined ant design组件import还是not defined
  20. 移动端前端抓包神器详解(whistle+weinre)

热门文章

  1. 联想710s更换nvme协议固态后重装系统后启动出现Boot Menu界面无法进入系统
  2. 下辈子我们还做两只小老鼠
  3. BZOJ 4012: [HNOI2015]开店 -- 动态树分治
  4. SpringCloudSpringCloud Alibaba、微服务架构、网站架构演变过程、Nacos、Feign远程调用、Load Balancer负载均衡、Sentinel限流、Hystriy
  5. C# newtonsoft.json 序列化实体进行驼峰命名(第一个首字母小写)
  6. 23天读懂23种设计模式:原型模式(创建型)
  7. 字符“”在XML文件中需要被转义
  8. FBAR滤波器的工作原理及制备方法
  9. 【菜鸟算题】错误票据--集合集合方法
  10. 广东UG编程、CNC数控加工、东莞精雕原图输出刀路技巧