参考文章:
http://wiki.ros.org/hokuyo_node/Tutorials/UsingTheHokuyoNode
1. 安装hokuyo_node package
方法一:可以直接从apt安装
$ sudo apt-get install ros-indigo-hokuyo-node # 可将<indigo>改为你所使用的对应ROS版本名称 |
方法二:可以从Github上下载后,使用catkin安装
https://github.com/ros-drivers/hokuyo_node
2. 供电并连接USB接口
确保你的使用USB通信的Hokuyo已经通电且USB接口与笔记本正常连接。
3. 设置Hokuyo激光扫描仪所在端口权限
为了确保houkuyo_node节点可以和Hokuyo laser scanner通信,需要设置激光扫描仪所在端口权限为可写可读。
(1) 列出Hokuyo激光扫描仪所在端口的权限
$ ls -l /dev/ttyACM0 |
你应该会看到如下结果:
crw-rw-XX- 1 root dialout 166, 0 2009-10-27 14:18 /dev/ttyACM0 # If XX is rw: the laser is configured properly. # If XX is --: the laser is not configured properly and you need to configure it. |
(2) 将该端口权限设置为所有用户可写可读
$ sudo chmod a+rw /dev/ttyACM0 |
(3) 如果使用USB转接器,则也需要设置该端口权限
$ ls -l /dev/ttyUSB0 $ sudo chmod a+rw /dev/ttyACM0 |
4. 启动一个roscore
$ roscore |
5. 设置hokuyo_node参数
在我们运行hokuyo_node之前,我们需要确保在ROS参数服务器(ROS parameter server)上有正确的参数设置。
(1) 设置hokuyo_node的时间戳校正为关闭
此参数选择会加速该驱动器的启动,但是会导致激光扫描仪时间戳的精确性下降
$ rosparam set hokuyo_node/calibrate_time false |
(2) 设置hokuyo_node的端口
$ rosparam set hokuyo_node/port /dev/ttyACM0 |
6. 运行hokuyo_node节点
打开一个新的Terminal,然后运行hokuyo_node节点:
$ rosrun hokuyo_node hokuyo_node |
You will see something similar to:
[ INFO] 1256687975.743438000: Connected to device with ID: H0807344 |
7. 使用Rviz查看hokuyo_node发布的数据
(1) 查看当前所有话题
$ rostopic list /clicked_point /diagnostics /hokuyo_node/parameter_descriptions /hokuyo_node/parameter_updates /initialpose /move_base_simple/goal /rosout /rosout_agg /scan /sync_scan_cloud_filtered /tf /tf_static |
(2) 查看话题/scan和/sync_scan_cloud_filtered的信息类型
$ rostopic info /scan Type: sensor_msgs/LaserScan
Publishers: * /hokuyo_node (http://192.168.1.90:33537/)
Subscribers: * /rviz_1544018352692462347 (http://192.168.1.90:46767/) |
$ rostopic info /sync_scan_cloud_filtered Type: sensor_msgs/PointCloud2
Publishers: * /hokuyo_node (http://192.168.1.90:33537/)
Subscribers: * /rviz_1544018352692462347 (http://192.168.1.90:46767/) |
从中可以看出两话题类型不同。话题/scan的数据类型是sensor_msgs/LaserScan,而话题/sync_scan_cloud_filtered 的数据类型是sensor_msgs/PointCloud2。因此,在Rviz中显示时,分别使用的是LaserScan和PointCloud2。
(3) 运行hokuyo_node软件包中的hokuyo_test.rviz
$ rosrun rviz rviz -d `rospack find hokuyo_node`/hokuyo_test.rviz |
运行结果如下图所示:其中LaserScan显示的是节点hokuyo_node发布的话题/scan,PointCloud2显示的是hokuyo_node发布的话题/sync_scan_cloud_filtered。