Livox Mid-40雷达使用指南


资料下载


基本信息

1.重要参数
参数数值
量程10%反射率——90m/20%反射率——130m/80%反射率——260m
FOV38.4度(圆形)
距离精度2cm

注:

  1. 被测物体距离小于1m时,无法进行测量
  2. 环境温度25摄氏度,目标物体距离20m,反射率80%时的距离精度为2cm,具体指标和测试环境相关
  3. 有效视场范围示意
    在这里插入图片描述
2.电源线

外界电源需要10-16V直流稳压电源。在使用过程中要确保这些波动不会使电压超出10-16V的范围。

3.连线
动态IP

默认采用动态IP的方式分配IP地址。需要通过路由器进行连接

  • 连接时使用网线分别连接电源转接插座和个人电脑至路由器。Livox Mid40和个人电脑的以太网线都接入路由器LAN
  • 多台Livox可以连接到同一个路由器上同时与PC相连
静态IP
  • 需要先按照动态IP进行连接,之后通过Livox Viewer工具设置
  • 静态IP模式下,通过网线直接将livox和电脑相连

  1. 静态IP地址应设置为:192.168.1.X。其中X与雷达的广播码有关。如果广播码以1结尾,X取值在1~80之间;以2结尾,取值在81~150之间;以3结尾,取值在151~220之间
  2. 重启生效
广播码

每台览沃 LiDAR 设备拥有一个唯一的广播码。广播码由14位字符长度的序列号和一个额外的字符组成( 1、2或者 3),一共 15 位字符长度,上述序列号位于 LiDAR 机身外壳的二维码下面(见下图)。广播码被用来指定要连接的 LiDAR 设备,详细组成格式如下:
在这里插入图片描述
(使用过程中发现外壳上的广播码只有前14位,用来设置静态IP的第15位广播码和Livox雷达的型号有关。例如Livox Mid-40的广播码只可能是1)

4.坐标系

激光发射窗口朝前为X轴正向,沿传输线向上为Z轴正向,Y轴正向朝右

在这里插入图片描述

5.输出数据

输出数据包含点云数据,时间戳和状态指示码。

点云数据包括:

  • 目标反射率:以0-255表示。其中0 至 150 表示漫散射为0 至 100% 的模型;而151 至 255对应反光物体的被测物反射率。当被测物体距离Livox Mid 系列小于2.5m 时,目标反射率会默认为1。
  • 坐标系:直角坐标系或球坐标系

Livox Viewer

用于实时显示连接至计算机的所有激光探测测距仪点云数据的软件。可以用来查看、记录并存储点云数据。

运行指令
./livox_viewer.sh
界面以及常用功能

在这里插入图片描述
第一次使用按照动态连接的方式,将电脑、Livox连接在路由器上,如果正确连接就能在设备列表里看到连接的Livox和他对应的唯一的序列号。

在这里插入图片描述这里是用来播放以及录制Livox数据的功能区。
通过上方状态栏的设置可以将Livox转为静态IP连接的方式并设置连接的静态IP。
在配置过程中可能会遇到的问题会在另一篇博客中具体描述。


  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于ROS的livox mid40型号激光雷达点云转成ros消息格式的C++代码,可能需要根据实际情况进行修改和适配: #include <ros/ros.h> #include <sensor_msgs/PointCloud2.h> #include <livox_ros_driver/LivoxEthPacket.h> #include <livox_ros_driver/PacketDecoder.h> ros::Publisher point_cloud_pub; PacketDecoder decoder; void livox_data_callback(const livox_ros_driver::LivoxEthPacket::ConstPtr& msg) { std::vector<livox_point> point_cloud; decoder.Decode(msg->data.data(), msg->data.size(), point_cloud); sensor_msgs::PointCloud2 cloud_msg; cloud_msg.header.stamp = ros::Time::now(); cloud_msg.header.frame_id = "livox_mid40"; cloud_msg.width = point_cloud.size(); cloud_msg.height = 1; cloud_msg.is_bigendian = false; cloud_msg.is_dense = true; sensor_msgs::PointCloud2Modifier modifier(cloud_msg); modifier.setPointCloud2FieldsByString(2, "xyz", "rgb"); sensor_msgs::PointCloud2Iterator<float> iter_x(cloud_msg, "x"); sensor_msgs::PointCloud2Iterator<float> iter_y(cloud_msg, "y"); sensor_msgs::PointCloud2Iterator<float> iter_z(cloud_msg, "z"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_r(cloud_msg, "r"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_g(cloud_msg, "g"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_b(cloud_msg, "b"); for (auto& p : point_cloud) { *iter_x = p.x / 1000.0f; *iter_y = p.y / 1000.0f; *iter_z = p.z / 1000.0f; *iter_r = p.r; *iter_g = p.g; *iter_b = p.b; ++iter_x; ++iter_y; ++iter_z; ++iter_r; ++iter_g; ++iter_b; } point_cloud_pub.publish(cloud_msg); } int main(int argc, char** argv) { ros::init(argc, argv, "livox_mid40_node"); ros::NodeHandle nh; point_cloud_pub = nh.advertise<sensor_msgs::PointCloud2>("livox_mid40_point_cloud", 10); ros::Subscriber livox_data_sub = nh.subscribe<livox_ros_driver::LivoxEthPacket>("livox_mid40_packets", 10, livox_data_callback); ros::spin(); return 0; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值