一、开箱图
型号 RPLIDAR A1
配料 激光雷达一台 + usb 转接板一块 + 转接线一条
二、文档和SDK下载 (官网链接)
RPILIDAR A1M8 简介与规格书 Datasheet
RPILIDAR 标准版SDK使用简介
RPILIDAR 通讯接口协议和应用手册 Protocol
在线文档 Online Doc
RPILIDAR A1 开发套装使用手册 User manual
RPILIDAR SDK Github或者镜像
RPILIDAR ROS_SDK Github或者镜像
RPILIDAR ROS WIKI
HECTOR SLAM
三、SDK 安装
官方提供了纯 C++和ROS节点两种形式的SDK,ROS版SDK中已经包含了C++的SDK(版本稍晚),不需要单独下载C++版本的SDK。
这里我们主要使用ROS来测试,从官网的github克隆仓库到我们的ROS工作空间的src下,然后编译工作空间:
cd ~/catkin_ws/src
git clone https://github.com/robopeak/rplidar_ros.git
cd ..
catkin_make
编译完功能包,利用rosrun或者roslaunch的时候,可能出现tab键按下没有提示出我们新增的节点或launch文件的情况,比如上述SDK编译完,输入roslaunch rp然后按tab应该会自动补全剩下的lidar_ros,可是系统没有补全。原因可能有三个:
(1) 没有source setup
(2) 没有加入ros环境变量
(3) 没有更新目录。
前两个问题可以通过编辑 ~/.zshrc(对应zsh)或者 ~/.bashrc (对应bash) 在后面添加如下两条语句来解决,不需要每次在命令行下source。
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/catkin_ws/src
source ~/catkin_ws/devel/setup.zsh
如果上述已经完成,仍然不能自动补全,使用下面的命令来更新目录:
rospack profile
四、HECTOR SLAM 安装
(1) 使用 apt 安装 hector-slam 包
sudo apt install ros-melodic-hector-slam
(2)或者使用源码安装
cd ~/catkin_ws/src
git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam.git
cd ..
catkin_make
(3)不再需要额外安装驱动的源码链接
git clone https://github.com/zhangwenxiao/HectorSlamWithoutROS.git
重构ros官方hector_slam代码
目的是使hector_slam算法脱离ROS平台
Linux版本:ubuntu14.04
cmake版本:3.9.6
另外需要安装opencv3、boost和Eigen
使用方法:
创建build目录:
mkdir build
进入build,依次执行:
cmake ..
make
./hectorslam
五、launch 文件编写
在~/catkin_ws/src/rplidar_ros/launch/下编写slam.launch文件,然后编译工作空间:
<launch>
<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<!-- Frame names -->
<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map" />
<param name="base_frame" value="base_link" />
<param name="odom_frame" value="base_link" />
<!-- Tf use -->
<param name="use_tf_scan_transformation" value="true"/>
<param name="use_tf_pose_start_estimate" value="false"/>
<!-- Map size / start point -->
<param name="map_resolution" value="0.05"/>
<param name="map_size" value="2048"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="laser_z_min_value" value = "-1.0" />
<param name="laser_z_max_value" value = "1.0" />
<param name="map_multi_res_levels" value="2" />
<param name="map_pub_period" value="2" />
<param name="laser_min_dist" value="0.4" />
<param name="laser_max_dist" value="5.5" />
<param name="output_timing" value="false" />
<param name="pub_map_scanmatch_transform" value="true" />
<!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />-->
<!-- Map update parameters -->
<param name="update_factor_free" value="0.4"/>
<param name="update_factor_occupied" value="0.7" />
<param name="map_update_distance_thresh" value="0.2"/>
<param name="map_update_angle_thresh" value="0.06" />
<!-- Advertising config -->
<param name="advertise_map_service" value="true"/>
<param name="scan_subscriber_queue_size" value="5"/>
<param name="scan_topic" value="scan"/>
</node>
<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/>
<node pkg="rviz" type="rviz" name="rviz"
args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/>
</launch>
在~/catkin_ws/src/rplidar_ros/launch/下新建launch文件:
cd ~/catkin_ws/src/rplidar_ros/launch/
touch slam.launch
vim slam.launch
提示1
如果通过github源码编译安装功能包的话,就不需要再利用 sudo apt-get install 的形式进行安装,否则可能会导致索引问题。例如:使用差速轮仿真库arbotix的时候,如果同时安装了源码和apt的包,节点运行时优先索引到了源码下的功能包,然后提示py文件没权限(py文件很多,去挨个赋予权限肯定不是一劳永逸的办法),最后把源码下的包和catkin_ws/share中的编译文件全删除了,仅用apt的包就一点问题没有。如果需要看源码的都用源码安装,如果只是拿来用的就用apt安装。
提示2
主要参考了 Rplidar A1/A2使用及Hector_SLAM建图 和 激光雷达初体验 - Ubuntu 18.04 + 思岚科技 RPLIDAR A1M8 + hector_slam 建图 两篇文章。
六、运行建图节点
提示:
可能需要使用以下命令来连接雷达。
chmod 666 /dev/ttyUSB0
方法一:
首先打开激光雷达节点,然后运行我们刚编写的slam.launch节点。
roslaunch rplidar_ros rplidar.launch
roslaunch rplidar_ros slam.launch
方法二:
使用官方的SDK节点launch文件。注意:一共有三种launch文件,分别是普通xx.launch,test_xx.launch,view_xx.launch,后缀 a3对应a3版本雷达,无后缀的对应a1/a2版本,第一个是纯节点,需要自己查看输出信息,第二个是在命令行窗口直接输出测量数据,第三个是利用rviz展示测量数据。
roslaunch rplidar_ros view_rplidar.launch
方法三
分别在三个终端执行以下命令
roslaunch rplidar_ros rplidar.launch
roslaunch hector_slam_launch tutorial.launch
rosrun map_server map_saver -f + PATH/FileName
方法四
编写脚本 test.sh 文件,启动执行sh ./test.sh
#!/bin/bash
echo "hector-slam"
roslaunch rplidar_ros rplidar.launch &
sleep 2
roslaunch hector_slam_launch tutorial.launch &
sleep 60 #建图过程中所用的时间可以调整
rosrun map_server map_saver -f PATH/FileName
运行的节点和两个脚本文件,脚本文件用于设置串口及设备,详见ros wiki和源码,rplidarNode节点运行起来,查看节点信息。
roscore
rosrun rplidar_ros rplidarNode
rosnode info /rplidar_node
可以看到,有两个发布话题,无订阅话题,四个服务,另外一个节点是rplidarNodeClient客户端节点,保持上面的节点在运行,同时运行这个客户端接节点,也查看一下节点信息:
rosrun rplidar_ros rplidarNodeClient
rosnode info /rplidar_node_client
看到这个客户端订阅了/scan也就是上一个节点发布的测量数据话题,并且运行这个节点会在命令行输出扫描信息。
首次使用体验基本结束。