Turtlebot_01——激光雷达运行gmapping建图

一、基本功能包安装

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 ;若没有则添加进去,结果如下

 

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

(5)、增加TF:

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

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


  

   
   

  
   
  
  
  

  

5、编辑 turtlebot_navigation 包中的内容

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

$  roscd  turtlebot_navigation
$  vim  launch/hokuyo_gmapping_demo.launch

(2)、写入如下内容



  
  

  
  

  
  
  

  
  


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

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

(4)、写入如下内容


  
  
  

  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
    
    
    
    

    
    
    
    
    
    
  

四、启动激光雷达用 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建图

你可能感兴趣的:(gmapping,激光雷达,SLAM,ROS)