前期准备:Ubuntu16.04系统,已安装opencv3.2、ROS-kinetic版本、turtlebot
1、clone安装包,因为hokuyo的驱动好像没法用sudo apt-get安装,所以采用源码安装:
$ mkdir -p ~/turtlebot_ws/src
$ cd ~/turtlebot_ws/src
$ git clone https://github.com/ncnynl/hokuyo_node.git
$ git clone https://github.com/turtlebot/turtlebot_apps
$ cd ~/turtlebot_ws
$ catkin_make
2、添加环境变量,在在~/.bashrc最后添加一行:
$ source /home/ubu/turtlebot_ws/devel/setup.bash
#刷新
$ source ~/.bashrc
这里后面我出现过一个问题,就是虽然我这里添加了环境变量,我用gedit打开也确实存在,但是当时我执行到rosrun的时候报错无法定位软件包,对于这个问题可以手动添加路径在bashrc最后面一行。
3、配置
$ ls -l /dev/ttyACM0
#显示类似于:
#crw-rw-XX- 1 root dialout 166, 0 2009-10-27 14:18 /dev/ttyACM0
#设置窗口权限
$ sudo chmod a+rw /dev/ttyACM0
4、测试
#打开新终端,运行ros
$ roscore
#新开终端,设置参数
$ rosparam set hokuyo_node/calibrate_time false #加速启动
$ rosparam set hokuyo_node/port /dev/ttyACM0 #设置端口
#新开终端,运行节点
$ rosrun hokuyo_node hokuyo_node
正确显示如下:
# 新开终端,查看数据
$ rosrun rviz rviz
到这里就可以打开rviz了,但是会发现上面其实是显示不了激光数据的,我们需要手动添加进来,点击rivz界面下面的“add”选择“laserscan”:
修改topic为scan:
然后到这里会发现它会报一个错误:
这是由于Fixed Frame框架导致的,修改Fixed Frame的值为“laser”,就可以成功读取数据了: