在ROS中使用hokuyo_node软件包驱动Hokuyo激光扫描仪的方法

参考文章:

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。

Rviz中显示的Hokuyo激光扫描仪数据

 

猜你喜欢

转载自blog.csdn.net/Spacegene/article/details/84844741
今日推荐