SICK TiM561激光雷达的使用

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扫描范围: -45225度) 

 

  在 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 fomatPage 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 scannerIn 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

转载于:https://www.cnblogs.com/21207-iHome/p/7944220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简易listview与adapter实现列表,ArrayAdapter和BaseAdapter

item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:…

Netcdf文件导出基本代码示例

需求&#xff1a;从一个nc文件中取出我想要的变量&#xff0c;导出到另外一个nc文件。 下面是基本代码&#xff1a; GetMapping("/export") public String varExport(ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException { // 1…

记一次MySQL手工注入

本来想找个装安全狗的站试下绕过&#xff0c;safe dog没找到&#xff0c;但随便一搜搜到一个小站有SQLi&#xff0c;正好借此机会复习下手工注入&#xff08;新版Firefox我吐槽一下&#xff0c;hackbar这么好用的工具&#xff0c;说阉割就阉割&#xff0c;哎&#xff09; 小站没…

Netcdf对数据进行裁剪

对三维数据进行裁剪 List<Range> tyxRanges new ArrayList<>(); tyxRanges.add(new Range(null,0,12)); tyxRanges.add(new Range(null,0,12)); tyxRanges.add(new Range(null,0,12)); Array varData varObject.read(tyxRanges); ncWrite.write(varVar, varData…

Android: 解决动画完成后位置恢复到初始位置的问题

今天在使用TranslateAnimation位移一个LinearLayout时&#xff0c;发现动画完成后又会自动回到初始的状态&#xff0c;设置了fillAfter也不太管用。 仔细研究了一下&#xff0c;发现&#xff1a; 这种现象很正常&#xff0c;因为TranslateAnimation只负责实现位移动画效果&…

Netcdf中时间的格式化

需求&#xff1a;获取到的时间格式为minutes since 2018-01-01 00:30:00 我想要的格式为2018-01-01 00:30:00 java代码如下 // 4 设置时间变量 Variable timeObject ncFile.findVariable("time"); String timeAt timeObject.getUnitsString(); String regex &q…

Android GridView,recycleview,栅格布局

<color name"gray_b7">#F5F5F5</color>//activity背景色&#xff0c;itemview底部&#xff08;横向栅格条&#xff09;背景色&#xff0c;itemview主色白 设置竖向栅格条 adapter中设置 int w MainApplication.getnScreenWidth();holder.itemView.set…

PAT——1027. 打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符号数差2&#xff1b;符号数先从大到小顺序递减…

Netcdf中多变量导出代码示例

多个变量进行导出代码如下&#xff1a; GetMapping("/export")public String varExport(ModelAttribute FileSaveVars params ) throws IOException, InvalidRangeException { // 1 设置原始文件路径转存文件路径String filePath "/Users/caowei/workspac…

Android 微信分享

起调效果 分享到朋友 分享到朋友圈 分享效果&#xff1a; 1、登录 微信开发平台 创建Android应用 微信开放平台&#xff1a;https://open.weixin.qq.com/cgi-bin/index?thome/ind…

首页列表显示全部问答,完成问答详情页布局

首页列表显示全部问答&#xff1a;将数据库查询结果传递到前端页面 Question.query.all()前端页面循环显示整个列表。问答排序完成问答详情页布局&#xff1a;包含问答的全部信息评论区以往评论列表显示区。在首页点击问答标题&#xff0c;链接到相应详情页。app.route(/base2)…

Netcdf 文件多属性,按照时间段导出代码示例

由于个人即是java初学者&#xff0c;又是netcdf文件小白&#xff0c;所以为了实现最终效果&#xff0c;可以对一个初始nc文件进行筛选指定变量&#xff0c;并且可以设定时间区间&#xff0c;花得时间比想象的要多&#xff0c;最终实现了效果&#xff0c;代码示例如下&#xff1…

【软工项目组】第九次会议

第九次会议 时间&#xff1a;2017-12-5 22:00 至 23:00 地点&#xff1a;第三教学楼A楼休息区 任务都已经分配完毕了&#xff0c;大家分别完成页面样式、前端逻辑、后端数据库、服务器域名配置的任务。最近几次的会议主要是集体写代码与答疑讨论的时间。 后端的接口在今天上传…

Android 集成微信分享2,实现微信分享

1、build.gradle下添加微信sdk依赖 compile (com.xyzlf.share:sharesdk:0.0.10) {exclude group: com.android.support, module: appcompat-v7 } 2、MainActivity文件夹下创建wxapi文件夹WXEntryActivity类&#xff0c;并配置到manifest里面&#xff1a; public class WXEnt…