rplidar的安装与使用

rplidar的安装与使用

  • 1、rplidar的安装
  • 2、RPLIDAR驱动下载
  • 3、将RPLIDAR连接好后,检测串口是否连接成功
  • 4、编译工作空间并设置环境变量
  • 5、检查RPLIDAR A2的串行端口的权限并添加写权限(都是在RPLIDAR当前路径下配置的)
  • 6、查看RPLIDAR显示的图形
  • 6、进行雷达实时数据的采集,并基于cartographer进行地图的保存
  • 7、地图保存
  • 8、雷达相关知识点的扩充
  • 9、常见错误
  • 10 基于真实机器人用catrtographer建图——失败
  • 11 链接参考
  • 12 RPLIDAR坐标系解析
  • 13 实际运用中出现的问题

1、rplidar的安装

sudo apt-get install ros-kinetic-rplidar-ros 

2、RPLIDAR驱动下载

打开ROS Wiki网址。下载git源码.

3、将RPLIDAR连接好后,检测串口是否连接成功

连接图片见下图,用安卓数据线连接电脑usb串口即可
rplidar的安装与使用_第1张图片

lsusb

4、编译工作空间并设置环境变量

~/RPLIDAR$ catkin_make
~/RPLIDAR$ source devel/setup.bash 

5、检查RPLIDAR A2的串行端口的权限并添加写权限(都是在RPLIDAR当前路径下配置的)

~/RPLIDAR$ ls /dev/ttyUSB*
~/RPLIDAR$ sudo chmod 777 /dev/ttyUSB0

在这里插入图片描述
感觉下图中的串口号与上个命令中写入的串口号应该对应起来——此处有个疑问,一般插入该激光雷达就会显示USB0吗?还是也会显示其他串口号?发现一般默认是USB0.
打开src/rplidar_ros-master/launch/rplidar.launch文件,将 value="/dev/ttyUSB1"/>中的串口改为与以上命令显示的串口一致即可


  
  
  
  
  
  
  
  

6、查看RPLIDAR显示的图形

roslaunch rplidar_ros view_rplidar.launch

rplidar的安装与使用_第2张图片
注意事项:
运行rplidar这一launch命令之前,一定要首先配置一下环境变量(source devel/setup.bash),否则容易出现以下错误:
rplidar的安装与使用_第3张图片

6、进行雷达实时数据的采集,并基于cartographer进行地图的保存

(1)在新终端开启ROS

  roscore

(2)运行rplidar ros包 (这是位于在RPLIDAR包的路径下的指令): #开启雷达驱动,其不包含rviz节点

  cd lc
  source devel/setup.bash
  roslaunch rplidar_ros rplidar.launch

(3)开启cartographer节点(在cartographer所在的包目录下),其包含rviz节点

 cd catkin_ws_cartographer
 source install_isolated/setup.bash
 roslaunch cartographer_ros cartographer_demo_rplidar.launch

7、地图保存

1)打开雷达驱动所在的文件夹终端,就是进行catkin_make的窗口,设置环境变量,否则后边无法保存

cd catkin_ws_cartographer
 source install_isolated/setup.bash

此步非常重要,之前就是由于忘记进行操作此步,以至于一直保存地图不成功
2)完成轨迹, 不接受进一步的数据。

rosservice call /finish_trajectory 0

3)序列化保存其当前状态

rosservice call /write_state "{filename: '${HOME}/lc/20201103map.pbstream'}"

在这里插入图片描述
注意此处的${HOME}表示绝对路径/home/sdas
在这里插入图片描述

注意:此步是进行地图路径的保存,路径自己设置就好
4)将pbstream转换为pgm和yaml

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/lc/mymap -pbstream_filename=${HOME}/lc/20201103map.pbstream -resolution=0.05

此处的图片名为mymap。保存路径在HOME}/lc/mymap
rplidar的安装与使用_第4张图片
注意:3)与4)中设置的地图保存路径要完全对应起来

8、雷达相关知识点的扩充

启动激光雷达节点

rosrun rplidar_ros rplidarNode

查看当前节点信息

rostopic list

查看更多关于激光雷达发布的信息

rostopic echo /scan

9、常见错误

运行中出现过串口号无法识别的问题,发现重新换根数据线后就好了

10 基于真实机器人用catrtographer建图——失败

(1)机器人端

sdas@sdas-Default-string:~/lc$ roslaunch test navigation_cartographer_map.launch

(2)pc端——运行cartographer节点

sdas@sdas-Default-string:~/catkin_ws_cartographer$ roslaunch cartographer_ros cartographer_demo_rplidar.launch

11 链接参考

RPlidar(一)——雷达试用.

12 RPLIDAR坐标系解析

ROS与RPLIDAR结合使用说明及问题汇总
ROS——RPLIDAR A1 SDK详解
其测量半径为12m
rplidar的安装与使用_第5张图片

rplidar的安装与使用_第6张图片
rplidar原始数据输出是非固定角度增量的输出形式,rplidar_ros输出是修正式固定角度增量输出的数据格式

rplidar_ros 是360全角度输出的rplidar驱动,如有固定角度需求,请自行添加角度滤波的节点。
(1)基于RPLIDAR将极坐标转换为平面坐标
rplidar的安装与使用_第7张图片
基于源码中的sdk订阅后,输出的极坐标下的距离与角度值如下:
rplidar的安装与使用_第8张图片
原始数据输出信息为:
在这里插入图片描述
其degree的求取方法为

// 基于for循环去除雷达数据中存在的大量的inf或nan的值,将有效数据打印出来
       int scan_count= scan_msg->ranges.size();
       for (int i = 0; i < scan_count; i++)
       {
           if(std::isfinite(scan_msg->ranges[i]) )
           {
               double range=scan_msg->ranges[i];
               double angle=scan_msg->angle_min+scan_msg->angle_increment*i;
               ROS_INFO("%d,%f,%f",i,angle,scan_msg->ranges[i]);
               continue;
           }
       }

可是此处不明白的是,rplidar-ros对其内部坐标进行了顺时针180度的旋转,可是-180度,-90度对应的是哪个范围的坐标值呢??????????
后期发现,其内部rplidar_ros已经对其坐标角度进行了相关处理,此时,-180度对应x轴负方向,-90度对应y轴正方向,而x与y轴方向依旧基于RPLIDAR上述中规定的右手坐标系方向即可,此时便可继续基于上述坐标公式计算就行了,计算出的正负值也可以与其完全对应上
rplidar的安装与使用_第9张图片

13 实际运用中出现的问题

基于RPLIDAR扫描点的过程中,会发现出现点缺失的情况,通过查阅资料分析是激光雷达强度不够的原因
由于其激光点的能量强度不高,导致当墙面与雷达夹角过大时雷达返回的数据不够好。
rplidar的安装与使用_第10张图片

你可能感兴趣的:(传感器使用,自动驾驶)