本文使用ROS开发包进行思岚rplidar A1激光点云数据读取.对应的架构很简单,Node发布/scan这个topic,然后通过client去订阅.因此client.cpp中有如何读取激光点云数据的对应函数.

#include "ros/ros.h"
#include "sensor_msgs/LaserScan.h"
#include <iostream>
using namespace std;#define RAD2DEG(x) ((x)*180./M_PI)void scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan)
{int count = scan->scan_time / scan->time_increment;ROS_INFO("I heard a laser scan %s[%d]:", scan->header.frame_id.c_str(), count);cout<<"scan_time"<<scan->scan_time<<" time_increment"<<scan->time_increment<<endl;ROS_INFO("angle_range, %f, %f", RAD2DEG(scan->angle_min), RAD2DEG(scan->angle_max));cout<<"angle_increment"<<scan->angle_increment<<endl;
//    for(int i = 0; i < count; i++) {//        float degree = RAD2DEG(scan->angle_min + scan->angle_increment * i);
//        ROS_INFO(": [%f, %f]", degree, scan->ranges[i]);
//    }
}int main(int argc, char **argv)
{ros::init(argc, argv, "rplidar_node_client");ros::NodeHandle n;ros::Subscriber sub = n.subscribe<sensor_msgs::LaserScan>("/scan", 1000, scanCallback);ros::spin();return 0;
}

读取关键就在于scanCallback这个函数.

count为激光雷达旋转一圈所对应获得激光反射点的数量,scan->scan_time为旋转一圈所需要的时间,scan->time_increment为每读取一个点所需要的时间,因此两者相除就是读取一圈点后点的个数,基本上稳定在358或359,因此接近于1度一个点,旋转一周的时间为0.135s和0.143s交替.

scan->angle_min和scan->angle_max分别对应旋转一周中最小的角度和最大的角度,分别为-pi和pi,通过RAD2DEG转化成角度.

下面的for循环为输出旋转一周里所有点云的角度和距离,相当于对应极坐标. scan->angle_increment为两个点之间的角度差值,接近于pi/180,也就是1度. scan->range[i]为每个点离原点的距离.具体极坐标定义图如下:

思岚rplidar A1激光点云数据读取相关推荐

  1. 思岚RPLIDAR A1激光雷达扫描测距的模式C语言实现(STM32)

    该产品激光雷达单次请求-多次应答模式对应着扫描测距模式,也是获取数据的环节. 该通讯模式用于RPLIDAR 进行扫描测距的模式下.外部系统在发送开始扫描 的请求后,RPLIDAR 将开始连续的扫描测距 ...

  2. ROS学习08-NVIDIA JETSON TX2安装配置激光雷达-思岚RPLIDAR S1(在Rviz上显示点位图)

    ROS学习08-NVIDIA JETSON TX2安装配置激光雷达-思岚RPLIDAR S1(在Rviz上显示点位图) 在前一节我们创建了ROS工作空间,这一节开始要给我们的机器人装一些感官了,这里我 ...

  3. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(1):Stream PCD流式载入激光点云数据

    首先贴一下大佬的github链接:https://github.com/williamhyin/SFND_Lidar_Obstacle_Detection 知乎专栏:https://www.zhihu ...

  4. matlab体素化,一种三维激光点云数据快速体素化处理方法与流程

    本发明涉及一种三维激光点云数据快速体素化处理方法. 背景技术: 目前,三维激光扫描系统快速发展,由于研究的需要,往往需要把不具有空间长度信息的点数据转为具有三维空间信息的立方体,如何使用软件进行快速. ...

  5. 思岚RPLIDAR A2激光雷达使用及问题解决

    思岚RPLIDAR A2激光雷达使用及问题解决1.下载源码第一步,下载雷达源代码,第一种方法是输入下列网址:http://slamtec.com/rplidar/a2/download,界面有雷达的说 ...

  6. Python+vtk 实现激光点云数据可视化学习(2021.7.12)

    Python+VTK实现激光点云数据可视化学习 2021.7.12 1.激光点云与VTK简介 2.配置Python环境(Conda+PyCharm+Python3.6+VTK) 3.点云数据(大约60 ...

  7. Ubuntu18.04 安装速腾聚创最新驱动RSLidar_SDK采集XYZIRT格式的激光点云数据 --SLAM不学无术小问题

    Ubuntu18.04 安装速腾聚创最新驱动RSLidar_SDK采集XYZIRT格式的激光点云数据 新款驱动支持RS16.RS32.RSBP.RS128.RS80.RSM1-B3.RSHELIOS等 ...

  8. ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境)

    ROS学习13-NVIDIA JETSON TX2 激光雷达-思岚RPLIDAR S1测试hector_mapping(rviz上渲染显示周围环境) 在前面的章节我们在ROS上测试了思岚RPLIDAR ...

  9. 思岚科技a1雷达sdk linux下的cmake 工程搭建

    本文记录思岚科技a1雷达SDK在linux下cmake 工程搭建的过程 描述 slamtec的激光雷达SDK提供了linux支持,在目录下都有Makefile,直接在主目录下执行make,将会生成一个 ...

  10. RPLIDAR思岚雷达学习记录--4--雷达数据实时保存

    数据持续输出测试 第三节中最后虽然可以读取到雷达的角度和距离数据,但是每次后面读取的数据都会覆盖之前的数据,因此尝试使用动态的文件名,这样每次保存数据都会使用不同的文件名,数据就不会被覆盖.决定使用当 ...

最新文章

  1. 计算机基础-计算机硬件
  2. pandas将dataframe的索引转化为列表list数据(convert dataframe index into a list)
  3. 昨天又帮爸DIY了一台工作电脑
  4. spring-aop-01
  5. 1.12 Java空对象(null)是怎么回事?
  6. 替换WordPress调用的Google前端库为360镜像的库
  7. MATLAB 爬取配色css数据及渐变图
  8. 《大秦帝国》:中国文明正源的强势生存
  9. 手把手教你搭建STM32MP1开发环境
  10. 在模仿学习中进步的智能机器人
  11. 东北大学秦皇岛分校通信工程中外合作2020级C语言实验3
  12. LQ0116 方格计数【数学计算】
  13. 转ios icon及默认图片等
  14. Vue已知文件地址完成图片视频单个下载及批量下载
  15. 矛与盾的较量(1)——花指令
  16. Hexo yilia 主题一揽子使用方案
  17. 查看工作组计算机 无法访问 没有权限使用网络资源
  18. 手机APP三年内将彻底消失,以后全靠H5了
  19. 爱奇艺海外业务增长迅猛,飞书深诺与其携手共助出海品牌新增长
  20. 《网站设计 开发 维护 推广 从入门到精通》——1.6 网站建设的一般流程

热门文章

  1. gulp_for_qa
  2. How Did Watson Answer? —— Typing Coerced Candidate Answer
  3. 计算机课做名片怎么做,第7课制作个人小名片(教学设计)
  4. deepin系统安装教程(详细)
  5. c语言中输出以e为底的指数,c语言中以e为底的指数怎么表示 c++中怎样表示以e为底的...
  6. HTML页面显示时间——网页数字时钟、钟表
  7. 微信测试号实现微信网页的分享
  8. 常见职位角色及其英文缩写
  9. 社交网络和物联网技术,拓展了数据采集技术渠道
  10. Ubuntu虚拟机实现与主机之间复制粘贴