TIM系列激光扫描传感器原理:

  激光发射器发出激光脉冲,当激光碰到物体后,部分激光反射回激光接收器。通过计算发射/接收脉冲时间差,可以计算出距离值。激光扫描器连续不停的发射激光脉冲,由旋转的光学机构将激光脉冲按一定角度间隔(角度分辨率)发射至扫描角度内的各个方向而形成一个二维扫描面。

SICK激光传感器按用途主要分两种:

  • 检测(Detection):在扫描器的扫描范围内,设置不同形状的检测区域,当扫描器检测到有物体进入该区域时,通过开关量信号输出检测结果。通常用于设备防撞、物体检测、区域安防等。
  • 测量(Ranging):在扫描器的扫描范围内,通过数据接口输出每个激光脉冲测量点的距离及对应角度值,据此获得二维轮廓值。通常用于测量物体的外型轮廓及体积。

  室外型迷你激光扫描器 TiM561(测量型)是西克(SICK)2014年下半年发布的TiM551产品的升级版本。检测距离达到10米,防护等级为IP67。角度分辨率从1°提升到了0.33°,测量点更密,可检测更细小的物体。可应用于自行小车/机器人等的防撞、导航及周边环境检测,以及安防领域用于区域监控等。IP67防护等级:防护灰尘吸入(整体防止接触,防护灰尘渗透);防护短暂浸泡(防浸)。

  TiM系列产品命名规则:

  • 第一位数字表示工作模式分类 :3表示检测型,5表示测量型
  • 第二位数字表示检测距离分类 :1/2表示检测距离4米,5/6表示检测距离10米
  • 第三位数字表示应用环境分类 :0表示室内型, 1表示室外型

  TiM561的主要技术参数如下:

  The TiM5xx uses HDDM technology (High Definition Distance Measurement), a SICK own-development. Using this measurement method, a measured value is formed by the average value for several individual pulses. The measurement method forms an average value from several pulses to determine individual measured values. At an angle resolution of 1°(TiM55x) and 0.3°(TiM56x/TiM57x), a measuring point is formed from the average of 84 measurements. TiM561使用SICK的HDDM专利技术,对每个角度对应输出点周围的84个子测量点求平均值作为该点的输出值。相比于传统单脉冲测量方式,HDDM技术的每个测量点由多次激光脉冲的测量值取均值组成。HDDM的优势如下:

  • 激光测量点之间无间隙
  • 对低反射率物体的检测能力更强
  • 抗环境粉尘及烟雾的干扰能力更强
  • 抗环境光干扰能力更强

  TiM561可以使用Ethernet或者USB 2.0(辅助)接口传输数据。After switching on the supply voltage, the TiM5xx initializes and the green LED will light up to indicate its readiness for operation. The TiM5xx begins its readiness to measure automatically. It continuously scans the surrounding contour in its field of vision at a frequency of 15 Hz. It continuously saves the values determined in each measuring process (scan) in its measured value memory by overwriting the previous values.

  传感器的安装对准:

  将TIM扫描角的90°轴对准需要监控的区域中心。设备光学外罩上的“▸”标记指示了90°的位置。 (TIM扫描范围: -45~225度)

  在 TIM 外壳上红圈的位置,有个菱形标记,表示扫描平面的水平位置:

 SOPAS Engineering Tool 

  SOPAS Engineering Tool V3 软件可以用于配置传感器参数,或者进行测试。在Windows上装好软件后通过USB接口连接TiM561,第一次会提示安装对应的SOPAS驱动SDD (SOPAS device driver) 。下图为装好驱动后连上传感器的新项目:

  在下拉菜单中选择“打开设备窗口”,将会弹出TiM561设备的界面,可以在这个界面中对传感器的参数进行一些配置,或是查看激光数据:

  当我们更改了某些参数后有两种保存方式:点击SOPAS工具栏上的“Download all parameters to device” ,将设置保存到设备RAM中(掉电丢失,用于调试时使用)。点击“Save Permanently” (第二个画圈的图标), 将参数设置保存到设备中非易失性存储器中,掉电不丢失。

   TIM561除了能输出距离值,还可以将反射率数据输出。In order to output remission values in the telegram, select the RSSI checkbox:

  To display the remission values in the scan as well, select the RSSI checkbox.

 Output of measured values 

  If the TiM receives one of the two following commands by telegram over the Ethernet or USB interface, it will start the output of measured values in real time over these data interfaces.

  • Single measured value output(单次数据输出)

  If the data from a measuring process are required, the TiM5xx sends the measured values from the most recent scan.

  通过Ethernet或者USB发送的请求数据如下(以ASCII方式发送或显示时数据之间以空格间隔):

  返回数据如下。Answer of TiM5xx:

<STX> sRA LMDscandata (contents) <ETX> 

  其中,contents代表的具体内容可以查看文档:Technical information TiM561 Ranging Laser Scanner Chapter 5.3 Measured value output fomat, Page 24

  点击设备页面工具栏上的终端按钮,可以在弹出的终端中输入命令进行测试。按ASCII码方式输入单次数据请求命令,发出和收到的数据如下图所示:

  • Continuous measured value output(连续数据输出)

  连续数据请求指令的格式如下:

  • 开始数据输出:

  Request:

<STX>sEN LMDscandata 1<ETX>

  Answer of TiM5xx (acknowledgement of request):

<STX>sEA LMDscandata 1<ETX>

  Answer of TiM5xx (measured value output):

<STX>sSN LMDscandata (contents) <ETX>
  • 停止数据输出:

  Request:

<STX>sEN LMDscandata 0<ETX>

  Answer of TiM5xx (acknowledgement of request):

<STX>sEA LMDscandata 0<ETX> 

  在终端中测试如下图所示,发出连续数据请求后会先返回一条应答响应,然后才开始输出测量数据:

 ROS中使用sick Tim561 

  ros indigo 上安装sick_tim(Sick 公司TIM系列产品在ROS的接口实现)步骤:

  step1.  新建一个工作空间,或者用之前建立好的(比如catkin_ws)
  step2.  进入src目录
cd ~/catkin_ws/src
  step3.  下载源代码(注意 -b indigo 可以换成你自己的ros 版本,比如-b kinetic)
git clone -b indigo https://github.com/uos/sick_tim.git 
  step4.  编译代码
cd ~/catkin_ws
catkin_make
   编译成功后执行launch文件,发布激光扫描消息:
roslaunch sick_tim sick_tim551_2050001.launch

  这时会遇到错误,按照udev文件夹中的README文档操作可以解决这个问题:

To give all members of the plugdev group write access to the Sick TiM devices, run the following commands:

  sudo cp 81-sick-tim3xx.rules /etc/udev/rules.d/
  sudo udevadm control --reload-rules

Now unplug your USB cable and plug it in again. This will allow you to communicate with the laser scanner without running the node as root and fix the following error:

  LIBUSB - Cannot open device; please read sick_tim/udev/README

  由于我在虚拟机中运行ROS,因此在插入USB后要在可移动设备中选择将其连接到虚拟机:

   如果是使用Ethernet接口通过TCP协议进行通信就需要修改sick_tim551_2050001.launch文件:去掉最后几行注释,将IP地址改为自己传感器的地址。

<?xml version="1.0"?>
<launch>
<param name="robot_description" command="$(find xacro)/xacro.py '$(find sick_tim)/urdf/example.urdf.xacro'" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" /> <node name="sick_tim551_2050001" pkg="sick_tim" type="sick_tim551_2050001" respawn="false" output="screen">
<!-- default values: -->
<!--
<param name="min_ang" type="double" value="-2.35619449019" />
<param name="max_ang" type="double" value="2.35619449019" />
<param name="intensity" type="bool" value="True" />
<param name="skip" type="int" value="0" />
<param name="frame_id" type="str" value="laser" />
<param name="time_offset" type="double" value="-0.001" />
<param name="publish_datagram" type="bool" value="False" />
<param name="subscribe_datagram" type="bool" value="false" />
<param name="device_number" type="int" value="0" />
<param name="time_increment" type="double" value="0.000061722" />
<param name="range_min" type="double" value="0.05" />
<param name="range_max" type="double" value="10.0" />
--> <!-- Uncomment this to enable TCP instead of USB connection; 'hostname' is the host name or IP address of the laser scanner
In cases where a race condition exists and the computer boots up before the TIM is ready, increase 'timelimit.'
<param name="hostname" type="string" value="192.168.1.43" />
<param name="port" type="string" value="2112" />
<param name="timelimit" type="int" value="5" />
-->
</node>
</launch>

  launch文件执行成功后可以打开rviz查看激光数据,注意正确设置Topic名称以及参考坐标系。注意只有在配置中勾选输出反射率数据,才能在rviz中以不同颜色查看到:

  另外可以使用rostopic hz指令查看激光扫描数据发布的频率,从下图可以看出频率确实为15Hz

参考:

sick_tim

ROS中发布激光扫描消息

ROS 使用sick tim561 雷达

2D LiDAR 传感器 TiM561 / Outdoor

TIM系列迷你型激光扫描器操作手册

Bus Hound 的使用方法

A ROS driver for the SICK TiM series of laser scanners

SICK TiM561激光雷达的使用的更多相关文章

  1. SICK LMS111激光雷达的使用

    LMS111系列是SICK推出的一款用于室外区域防撞.测量及安防的激光扫描器.LMS111同西克其他扫描器一样,采用成熟的ToF原理,非接触式检测,且加入了最新的多次回波检测技术(两次回波),使得LM ...

  2. SICK激光雷达LMS511测量数据说明

    帧结构说明 LMS511的官方手册存在几个版本,在<Laser Measurement Systems of the LMS500 Product Family>的英文手册中,对单次(连续 ...

  3. VREP中的二维激光雷达

    目前,轮式机器人的研究中已经大量使用激光雷达辅助机器人的避障导航,考虑到使用成本,一般二维激光雷达使用较多,如下图.由于只能扫描一个平面,如果想用二维激光雷达获取环境三维点云,则需要通过移动机器人或加 ...

  4. Lidar激光雷达市场

    Lidar激光雷达市场 近年来,激光雷达技术在飞速发展,从一开始的激光测距技术,逐步发展了激光测速.激光扫描成像.激光多普勒成像等技术,如今在无人驾驶.AGV.机器人等领域已相继出现激光雷达的身影. ...

  5. SLAM+语音机器人DIY系列:(三)感知与大脑——1.ydlidar-x4激光雷达

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  6. matlab 三维激光雷达点云的地面与障碍物检测

    基于激光雷达的地面与障碍物检测 这个例子告诉我们如何去检测地平面并且找到三维LIDAR数据中与车相近的障碍物. 这个过程能够方便我们对汽车导航的可行驶区域规划. 注:每一帧的雷达属于都被存储为三维的雷 ...

  7. Ural 2036. Intersect Until You're Sick of It 计算几何

    2036. Intersect Until You're Sick of It 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=2036 ...

  8. 无人驾驶之激光雷达&摄像头(主要from 速腾CEO 邱纯鑫分享)

    无人驾驶之激光雷达&摄像头 (from 速腾CEO 邱纯鑫公开课分享) 根据听的一些讲座和看的书籍,个人感觉:目前现在的自动驾驶,根本问题还是在于感知(路况,周边物体,交通标识等等),控制的方 ...

  9. 【2017.09.15 智能驾驶/汽车电子】汽车高级驾驶辅助ADAS常用传感器厂商:激光雷达篇

    不定期更新,主要是汇总Internet上的激光雷达厂商资讯,不涉及技术,以备参考. 1. Innoviz:固态激光雷达公司 新闻链接:http://36kr.com/p/5092055.html 激光 ...

随机推荐

  1. [Web 前端] 使用yarn代替npm作为node.js的模块管理器

    cp from : https://www.jianshu.com/p/bfe96f89da0e     Fast, reliable, and secure dependency managemen ...

  2. Html、Asp、Php、Jsp禁止页面缓存

    html:<meta http-equiv="pragma" content="no-cache"><meta http-equiv=&quo ...

  3. 我讨厌Apple Safari浏览器的一些地方。不想用

    1. 书签栏 无法直接新建文件夹 2. 新建书签 无法新建文件夹 3.地址栏 不显示当前书签 是否已收藏! 4. 书签栏 移动书签,体验没有Chrome好. 5.书签栏 没有chrone的 " ...

  4. C++ 变量默认初始值不确定(代码测试)

    C++ int变量默认初始值是不确定的,因此使用时初始化是很有必要的. 下面写个小程序测试一下int变量默认初始值. #include <iostream> #include <ve ...

  5. how to fix bug in daily work

    0 QE will begin test the product when system is stable. so they may log a lot of issues, and our dai ...

  6. 嵌入式系统WinCE下应用程序GUI界面开发【转】

    嵌入式系统WinCE下应用程序GUI界面开发 ByToradex 秦海 本文旨在介绍嵌入式系统在Wince下进行GUI应用程序开发可以选择的不同GUI开发框架(Framework),目前最常用的几种方 ...

  7. windows无法访问vmware搭建好虚拟机linux web服务器

    [前置条件] vmware搭建好虚拟机web服务器 ,但是本机就是无法访问的解决办法. linux虚拟机的网络选择Bridged 桥接到本机网卡. 具体情况如下 : 1.本机能ping通虚拟机 2.虚 ...

  8. Andriod NDK编译的时候无法使用math.h的函数。

    编译NDK项目的时候,当用到sinf的时候,编译报错: 选中sinf函数,右键Go to declaration, 发现math.h的文件路径是: c:\ProgramData\Microsoft\A ...

  9. oauth2-server-php-docs 授权类型

    授权码 概观 在Authorization Code交付式时使用的客户端想要请求访问受保护资源代表其他用户(即第三方).这是最常与OAuth关联的授予类型. 详细了解授权码 用例 代表第三方来电 履行 ...

  10. C++结构变量数据对齐问题

    为了避免混淆.做例如以下规定,下面代码若不加特殊说明都执行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为 char占一个字节 int占四个字节 double占八个字节. 两个样例 请 ...