机器人开发--Pepperl+Fuchs倍加福激光雷达系列

机器人开发--Pepperl+Fuchs倍加福激光雷达系列

1 介绍

Walter Pepperl与Ludwig Fuchs这两位倍加福的奠基人于1945年在曼海姆共同创办了一家无线电修理厂。他们凭借着多年经验,迸发出智慧的创新灵感,并始终致力于技术创新,为客户开发新产品。数年后,由他们发明出世界上第一个的接近开关,这些创新造就了倍加福辉煌历史的起点。如今,倍加福公司现已成为电气防爆和传感器技术领域中,享誉世界的开拓者和创新者。

2 R2000系列

2.1 按键操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 测量方法

在这里插入图片描述

2.3 协议

2.3.1 文档

From https://files.pepperl-fuchs.com/webcat/navi/productInfo/doct/doct3469f.pdf?v=20201005101009

2.3.2 特点

  • 所有二进制数据的字节顺序都是小端序(最低位优先)。
  • 支持TCP/UDP 和 HTTP,前者是数据通道,后者是控制通道。
    HTTP用于单次数据收发和参数配置(输出数据结构配置)。
    输出数据(扫描数据)通过TCP/UDP传输。
  • 输出数据规则:
    (1)输出数据结构,由 HTTP 通道中的命令配置的。
    (2)单帧数据只包含单次扫描的最新数据。
    (3)数据量由客户端(消费者)确定,需要注意数据过载问题。
    (4)客户端(消费者)连接数量,雷达侧不做限制,需要注意并发过载问题。

2.3.3 控制 HTTP

收发报文格式
  • 请求格式
A typical HTTP request to the sensor looks like:
http://<sensor IP address>/cmd/<cmd_name>?<argument1=value>&<argument2=value>
  • 返回格式
    HTTP status code + Command error code + Command reply data
    其中HTTP status code是基于 HTTP 通用标准的,Command error code 和 Command reply data 是倍加福自定义的,用的Json。
  • HTTP status code
    在这里插入图片描述
  • Command error code
    在这里插入图片描述
  • Command reply data
    返回数据,以 get_protocol_info 举例:
get_protocol_info

在这里插入图片描述

Query: http://<sensor IP address>/cmd/get_protocol_info
Reply: 
{
	"protocol_name": "pfsdp",
	"version_major": 1,
	"version_minor": 1,
	"commands": [
		"get_protocol_info",
		"list_parameters",
		"get_parameter",
		"set_parameter",
		"reboot_device",
		"reset_parameter",
		"request_handle_udp",
		"request_handle_tcp",
		"feed_watchdog",
		"get_scanoutput_config",
		"set_scanoutput_config",
		"start_scanoutput",
		"stop_scanoutput",
		"release_handle"
	],
	"error_code": 0,
	"error_text": "success"
}
设置传感器参数
  • NTP(ntp64) 时间戳
    NTP时间戳用一个64bit无符号定点数表示,它表示自从1900年1月1日00:00:00到现在过了多少秒。64bit分为两部分,高32bit(MSW)表示整数部分,单位是秒;低32bit(LSW)表示小数部分,单位是232皮秒((1 / 2^32)s)。
  • 二进制数据
list_parameters – list parameters

列出所有的参数设置选项:

Query: http://<sensor IP address>/cmd/list_parameters
Reply: 
{
	"parameters": [
		"vendor",
		"product",
		"part",
		"serial",
		"revision_fw",
		"revision_hw",
		"max_connections",
		"feature_flags",
		"radial_range_min",
		"radial_range_max",
		"radial_resolution",
		"angular_fov",
		"angular_resolution",
		"ip_mode",
		"ip_address",
		"subnet_mask",
		"gateway",
		"scan_frequency",
		"scan_direction",
		"samples_per_scan",
		"scan_frequency_measured",
		"status_flags",
		"load_indication",
		"device_family",
		"mac_address",
		"hmi_display_mode",
		"hmi_language",
		"hmi_button_lock",
		"hmi_parameter_lock",
		"ip_mode_current",
		"ip_address_current",
		"subnet_mask_current",
		"gateway_current",
		"system_time_raw",
		"user_tag",
		"user_notes",
		"locator_indication"],
	"error_code":0,
	"error_text":"success"	
}
get_parameter – read a parameter
Query: http://<sensor IP address>/cmd/get_parameter?list=scan_frequency;scan_frequency_measured
Reply: 
{
	"scan_frequency": 50,
	"scan_frequency_measured": 49.9,
	"error_code": 0,
	"error_text": "success"
}
set_parameter – change a parameter
Query: http://<sensor IP address>/cmd/set_parameter?scan_frequency=50
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
reset_parameter – reset a parameter to its default value
Query: http://<sensor IP address>/cmd/reset_parameter?list=scan_frequency;scan_direction
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
reboot_device – restart the sensor firmware
Query: http://<sensor IP address>/cmd/reboot_device
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
factory_reset – reset the sensor to factory settings
Query: http://<sensor IP address>/cmd/factory_reset
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
基础参数

sRO:static Read-Only access (value never changes)
RO:Read-Only access (value might change during operation)
RW:Read-Write access (non-volatile storage)
vRW:volatile Read-Write access (lost on reset)
在这里插入图片描述

Device family (device_family)

在这里插入图片描述

User defined strings (user_tag, user_notes)
功能参数

在这里插入图片描述

Device features (feature_flags)

在这里插入图片描述

Emitter type (emitter_type)

在这里插入图片描述

网络配置

在这里插入图片描述

测量配置

在这里插入图片描述

Mode of operation (operating_mode)

在这里插入图片描述

Scan frequency (scan_frequency, scan_frequency_measured) 扫描频率

the R2000 valid values range from 10 Hz to 50 Hz with steps of 1 Hz (default is 35 Hz)

Query: http://<sensor IP address>/cmd/get_parameter?list=scan_frequency;scan_frequency_measured
Reply: 
{
	"scan_frequency": 35,
	"scan_frequency_measured": 34.9,
	"error_code": 0,
	"error_text": "success"
}
Scan direction (scan_direction) 顺时针或逆时针
Scan resolution (samples_per_scan) 每一帧采样数量

在这里插入图片描述

界面显示配置 HMI / Display configuration

在这里插入图片描述
在这里插入图片描述

系统状态

在这里插入图片描述

System status flags (status_flags) 状态码

在这里插入图片描述

2.3.4 数据 TCP / UDP

坐标系
激光扫描仪默认逆时针旋转

在这里插入图片描述
在这里插入图片描述
在标称操作期间,扫描点使用统一的角度增量和旋转方向连续记录。角增量和旋转方向都可以通过全局设备参数配置。
默认情况下,激光扫描仪在数学正方向旋转。这个方向称为逆时针(缩写为ccw)——两个后续扫描点之间的角增量为正值。相反的方向是
因此称为顺时针(缩写为cw) -两个后续扫描点之间的角增量为负值。

回波振幅读数 Echo amplitude readings

在这里插入图片描述

时间戳
  • raw timestamps
    原始时间戳由内部系统时钟生成,该时钟在上电时从零开始计数。它的分辨率是优于1 ms,漂移低于100ppm。原始时间总是在增加,没有任何不连续或溢出。
  • synchronised timestamp
    同步时间戳使用的时钟源已同步到外部时间服务器。请注意,这些由于时间服务器同步,时间戳可能会受到不连续性的影响。
扫描数据

TCP 数据更可靠,可能有不可预测延迟
UDP 传输延迟小,可能出现丢包
连接数量不唯一,连接句柄标识随机确定,最多16个字符。

一般连接步骤
  1. 如果需要,设置扫描器的全局配置
  2. 建立到传感器的数据通道
  3. 如果需要,配置扫描数据输出
  4. 开始扫描数据传输
  5. 从设备接收扫描数据
  6. 停止扫描数据传输
  7. 终止到传感器的数据通道
数据连接看门狗

要定时喂狗,超时后,传感器主动释放句柄资源。
为了防止看门狗超时,客户端需要定期给看门狗喂食。这可以通过命令feed_watchdog或使用“内嵌”看门狗feed进行TCP扫描数据连接。
每次呼叫复位看门狗定时器。软件看门狗超时时间可以由客户端应用程序为每个扫描数据连接单独配置命令watchdog和watchdogtimeout的参数request_handle_udp和set_scanoutput_config。参数watchdogtimeout指定超时时间取值范围为1s ~ 500s。watchdog参数表示看门狗开启(value on)或关闭(value off)。缺省情况下,看门狗的超时时间为60秒。
注意:虽然看门狗超时时间(watchdogtimeout)可以指定为1毫秒的分辨率,但有效的内部当前固件版本使用的分辨率约为10s。

定制数据输出(获取完整数据 或 部分数据)
  • 初始化TCP或者UDP时可以配置(request_handle_tcp and request_handle_udp),也可以通过 set_scanoutput_config 来配置。
  • 选择起始角度 Selecting a start angle
    客户端可以使用参数start_angle配置扫描(索引0)中第一个扫描点的(极坐标)角度。缺省值为−180.0◦(即start_angle =−1800000)。后续扫描点(索引(n + 1))所述扫描数据流内根据当前传感器头部旋转方向进行排序。start_angle的值指扫描数据坐标系的测量角度。
  • 限制扫描点数 Limiting number of scan points
  • 限制输出扫描频率 Limiting number of scans(与扫描频率有区别)
    The parameter skip_scans allows to reduce the output frequency of scans over a scan data connection
    在这里插入图片描述
数据校验(CRC32C可选)
并发连接(实际资源有限,需要消费者考虑)
输出管理命令
request_handle_udp – request for an UDP-based scan data channel

在这里插入图片描述

Query: http://<sensor IP address>/cmd/request_handle_udp?address=192.168.10.20&port=54321&packet_type=C
Reply: 
{
	"handle": "s10",
	"error_code": 0,
	"error_text": "success"
}

在这里插入图片描述

request_handle_tcp – request for a TCP-based scan data channel

在这里插入图片描述
在这里插入图片描述

Query: http://<sensor IP address>/cmd/request_handle_tcp?packet_type=A&watchdogtimeout=1000&start_angle=0
Reply: 
{
	"port": 39731,
	"handle": "s22",
	"error_code": 0,
	"error_text": "success"
}
release_handle – release a data channel handle

在这里插入图片描述

Query: http://<sensor IP address>/cmd/release_handle?handle=s22
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
start_scanoutput – initiate output of scan data

在这里插入图片描述

Query: http://<sensor IP address>/cmd/start_scanoutput?handle=s22
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
stop_scanoutput – terminate output of scan data

在这里插入图片描述

Query: http://<sensor IP address>/cmd/stop_scanoutput?handle=s22
Reply:
{
	"error_code": 0,
	"error_text": "success"
}
set_scanoutput_config – reconfigure scan data output

在这里插入图片描述

get_scanoutput_config – read scan data output configuration

在这里插入图片描述

Query: http://<sensor IP address>/cmd/get_scanoutput_config?handle=s22
Reply: 
{
	"address": "0.0.0.0",
	"port": 39050,
	"watchdog": "on",
	"watchdogtimeout": 60000,
	"packet_type": "A",
	"start_angle": -1800000,
	"error_code": 0,
	"error_text": "success"
}
feed_watchdog – feed connection watchdog

在这里插入图片描述

Query: http://<sensor IP address>/cmd/feed_watchdog?handle=s36924971
Reply: 
{
	"error_code": 0,
	"error_text": "success"
}
扫描数据传输
基本数据结构

在这里插入图片描述

扫描数据头的典型结构

在这里插入图片描述

  • status_flags
    在这里插入图片描述
  • Scan data packets of type A have the following structure:
    在这里插入图片描述
  • Scan data packet type B – distance and amplitude
    在这里插入图片描述
  • Scan data packet type C – distance and amplitude (compact)
    在这里插入图片描述

2.3.5 扫描数据滤波

扫描数据过滤在设备中添加了一个预处理选项,减少了扫描数据输出量,同时仍然利用扫描分辨率高。
扫描数据过滤的基本思想是将可配置数量的N个相邻扫描点组合为单个扫描使用各种预定义算法之一的点(按块处理)。过滤器算法计算距离值
和输入数据的振幅值。生成的扫描点位于处理窗口的中心包括角度值和时间戳值。
在这里插入图片描述#### 默认不滤波
在这里插入图片描述

平均滤波器

平均过滤器计算配置范围内所有扫描数据点的简单算术平均值(距离和振幅)窗口大小(filter_width)。结果是一个扫描点取代了一组扫描点:
在这里插入图片描述

中值滤波器

所有的扫描点(虚拟地)根据它们的距离值进行排序。然后选择中间的两个点(偶数)(filter_width),单个扫描点由这些点的距离和振幅的算术平均值计算。结果扫描点替换输入扫描点组:filter_width, filter_error_handling
在这里插入图片描述

最大值过滤器

在这里插入图片描述

Remission filter

在这里插入图片描述

滤波器配置

在这里插入图片描述

2.3.6 镜头污染检测仪

镜头盖被分割成12个部门-每个覆盖30◦视野。LCM扇区以逆时针方向编号,从扇区0开始,在−180◦在后面传感器。下图说明了LCM扇区的映射。镜片污染监控器(LCM)评估每个镜片的污染情况,扇区分开,并将其与警告阈值和错误进行比较阈值。如果测试结果为阳性,则警告标志或错误为各自的扇区设置Flag。可以为每个扇区单独启用或禁用评估。此外,灵敏度和反应LCM的时间可以全局配置。以下部分提供了LCM配置的详细信息。
在这里插入图片描述
在这里插入图片描述

2.3.7 HMI LED 显示

在这里插入图片描述

2.3.8 I/O

2.4 OMD30M-R2000-B23-V1V1D-HD-1L 的参数

在这里插入图片描述
适合精密测量任务和定位,物体测量范围达 30 m,以太网通信。

扫描角度360°
分辨率1 mm
工作电压10 … 30 V DC
功耗< 10 W
接口类型快速以太网,2 个开关输出
协议HTTP , TCP/IP 和 UDP/IP
角分辨率0.042 °
绝对精度类型 ± 25 mm
重复精度< 12 mm
数据输出Distance/angle/echo/time stamp

在这里插入图片描述
在这里插入图片描述

参考

1、OMD30M-R2000-B23-V1V1D-HD-1L
2、R2000技术资料
3、pepperl_fuchs_r2000 - ROS Wiki
4、倍加福 R2000 激光传感器 | 仙工智能帮助中心
5、R2000协议文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

worthsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值