关于思岚s1激光雷达ROS下的使用与测试
笔者在很长一段时间,对于激光雷达的测距具体细节不是了解,很长一段时间就是调用人家写好的package,根本不清楚具体里面的技术细节,但是要做项目,要自己写算法,不清楚就很难进行下去。
首先介绍一下ros中激光雷达的数据格式:
std_msgs/Header header uint32 seqtime stamp string frame_id # in frame frame_id, angles are measured around the positive Z axis (counterclockwise, if Z is up)# with zero angle being forward along the x axis float32 angle_min # start angle of the scan [rad]
float32 angle_max # end angle of the scan [rad]
float32 angle_increment # angular distance between measurements [rad]float32 time_increment # time between measurements [seconds] - if your scanner# is moving, this will be used in interpolating position# of 3d points
float32 scan_time # time between scans [seconds]float32 range_min # minimum range value [m]
float32 range_max # maximum range value [m]float32[] ranges # range data [m] (Note: values < range_min or > range_max should be discarded)
float32[] intensities # intensity data [device-specific units]. If your device does not provide intensities, please leave the array empty.
这里我只想说距离信息ranges[],所有扫描的数据都被存储到距离数组中ranges[]。
我来解释下ranges里面的数组,如果一个激光雷达扫描范围360度,分辨率是1度,那么他扫描一圈就是360个距离信息,ranges数组长度就是360.
在ROS系统下,思岚s1激光雷达是扫描360度,它扫描一圈ranges长度是720,由此可知其角度分辨率为0.5度。(使用s1的官方ros的package,并且是我真实测试出来的数据,应该没问题)。
下图是思岚官方介绍的雷达信息,你会知道距离是从雷达中心开始测出来的。但是有一点,ros中的扫描方向是逆时针转,跟图中正好相反。
为了更清楚说明Ros下的转向以及怎么去使用ranges数组距离信息,我画了个图,。
通过上图,读下述代码:完整代码参见我https://github.com/JackJu-HIT/ImuGpsGuiding。
void IMU_GPS_Guiding::scanInfoCallback(const sensor_msgs::LaserScan::ConstPtr& msg)
{// 将接收到的消息打印出来// ROS_INFO("Subcribe gps Info: x:%d y:%d test:%d", // msg->latitude, msg->longitude,x);
//for(int i=0;i<msg->ranges.size();i++)
//通过测试s1雷达ranges[]长度为720cout<<"lidar_length:"<<msg->ranges.size()<<endl;cout<<"我认为的正前方=ranges[0]:"<<msg->ranges[0]<<endl;cout<<"我认为的正前方=ranges[720]:"<<msg->ranges[720]<<endl;cout<<"我认为的左侧方=ranges[180]:"<<msg->ranges[180]<<endl;cout<<"我认为的左侧方=ranges[270]:"<<msg->ranges[180]<<endl;cout<<"我认为的右侧方=ranges[540]:"<<msg->ranges[540]<<endl;cout<<"我认为的后方方=ranges[360]:"<<msg->ranges[360]<<endl;// cout<<"test:"<<x<<endl;
}
我把关键的写出来了,如果你不懂ROS,你可能需要去查看其他资料。
202007022
鞠春宇于研究室
关于思岚s1激光雷达ROS下的使用与测试相关推荐
- 激光雷达学习笔记-------Ubuntu 18.04 + 思岚科技 A1M8+ ROS 上手使用及基于hector_slam 建图
一,在虚拟机环境上搭建环境 官方提供了纯 C++和ROS节点两种形式的SDK,ROS版SDK中已经包含了C++的SDK(版本稍晚),不需要单独下载C++版本的SDK. 这里我们主要使用ROS来测试,从 ...
- 思岚A1激光雷达windows系统与ROS系统中的使用
前言: 忙了一天,遇到了无数个问题解不开,结果竟然是因为安卓的USB连接线有问题,博友们,如果你们遇到如下问题: 思岚A1激光雷达windows上位机的使用:下载了串口的驱动(CP210x VCP W ...
- [STM32]手持建图仪--基于STM32F103+思岚A1激光雷达的扫描仪
前言 一个朋友在做服务机器人项目,用到思岚的激光雷达,于是便把淘汰的A1M8雷达送我一个,本着拿到啥就玩啥的态度,必须整一波.其实激光雷达还是搭配ROS才能发挥最大的作用,奈何资源有限,实力不足,只能 ...
- 图文并茂详细教程之---Pixhawk扩展思岚A1激光雷达实现360°避障
转载自:https://mp.weixin.qq.com/s/FCBbjAmmn-rMDskIen_i4Q 图文并茂详细教程之---Pixhawk扩展思岚A1激光雷达实现360°避障 原创 CJKK ...
- 不仅室内,思岚科技激光雷达在室外使用同样出色
在实现机器人自主定位导航中,激光雷达发挥了巨大作用,可帮助机器人实时感知周围环境,获取丰富的轮廓信息,让机器人能更快速.精确的建图.如今,基于室内使用的激光雷达层出不穷,相较于室内,室外使用对激光雷达 ...
- 思岚科技激光雷达在室外使用效果如何?
在实现机器人自主定位导航中,激光雷达发挥了巨大作用,可帮助机器人实时感知周围环境,获取丰富的轮廓信息,让机器人能更快速.精确的建图.如今,基于室内使用的激光雷达层出不穷,相较于室内,室外使用对激光雷达 ...
- 思岚科技激光雷达全面升级:RPLIDAR A1仅需900元,A2测距提升至8米
思岚科技自2009年着手研发低成本激光雷达,2014年面向全球推出了第一代产品RPLIDAR A1,在6米测量半径内,可完成每秒2000次激光测距.自推出至今,已累计使用用户达上千家. 时隔两年, ...
- 思岚雷达win与ubuntu18.04连接并测试详细过程
雷达简介 包含套件 雷达模组(内置pwm电机驱动) usb适配器 Micro-USB线缆 电源线 接线方式 ps:雷达不需额外的电源供电,直接使用电脑USB接口,5V供电 驱动安装 USB 适配器采用 ...
- Ubuntu下工作空间的创立以及思岚系列激光雷达的使用(详细)和驱动安装及地图创建
环境:ubuntu20.04 双系统 其他环境也是可以的 首先我们需要先创建rplidar_ros的工作空间,这里为推荐从源码处下载.我将介绍两种创建工作空间的方法: (1)直接创建(比较简单,个人推 ...
最新文章
- 这家剑桥校友创办的苏州AI独角兽,再获4.1亿投资,将在国内IPO
- Linux下时间戳的换算方法
- Perlin Noise algorithms(备忘)
- java对象序列化并存储到文件和数据库
- Java 多态(一)
- 品质生活在于细节 8月6日张朝阳“做饭直播”带货厨房好物
- python3.6.5下载安装教程_Ubuntu16.04安装python3.6.5步骤详解
- C++ C++基础语法入门总结(一)命名空间-输入输出-缺省参数-函数重载
- php redis 设置,php设置redis扩展,你值得拥有
- 一道数学题引发的思考
- js数组获取index_想自学JS吗?想提升JS底层原理吗?76张脑图带你彻底搞懂原生JS...
- 全民奇迹辅助制作视频教程
- OpenResty代理CNZZ实现内网访问统计
- 计算机室管理员考核细则,宿舍管理员量化考核细则
- ubuntu 14.04 更新 flash
- 新制式轨道交通有哪些?这篇推文全讲清了
- Zoom Out and Observe:News Environment Perception for Fake News Detection
- 什么是单点登录,实现单点登录的三种方法
- SE:17.网络编程
- 报错Module not found: Error: Can't resolve './public/javascript/page/index/index.js' in 'E:\pr