Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

3D LiDAR

Livox Mid 360

Spec

ModelMID-360
Laser Wavelength905 nm
Laser Safety¹\Class 1 (IEC60825-1:2014)(Eye Safety)
Detection Range (@ 100 klx)40 m @ 10% reflectivity
70 m @ 80% reflectivity
Close Proximity Blind Zone²0.1 m
FOVHorizontal: 360°, Vertical: -7°~52°
Range Precision³ (1σ)≤ 2 cm ⁴ (@ 10m)
≤ 3 cm ⁵ (@ 0.2m)
Angular Precision(1σ )< 0.15º
Point Rate200,000 points/s (first return)
Frame Rate10 Hz (typical)
Data Port100 BASE-TX Ethernet
Data synchronization:IEEE 1588-2008 (PTPv2), GPS
Anti-Interference FunctionAvailable
False Alarm Rate (@ 100 klx) ⁶< 0.01%
IMUBuilt-in IMU Model: ICM40609
Operating Temperature-4°F to 131°F (-20℃ to 55℃)⁷
IP RatingIP67
Power ⁸6.5 W (average)
Power Supply Voltage Range9 ~ 27 V DC
Dimensions65×65×60 mm
Weight265 g

Livox SDK

refer https://github.com/Livox-SDK/Livox-SDK2

  1. Install the CMake using apt:
$ sudo apt install cmake
  1. Compile and install the Livox-SDK2:
$ git clone https://github.com/Livox-SDK/Livox-SDK2.git
$ cd ./Livox-SDK2/
$ mkdir build
$ cd build
$ cmake .. && make -j
$ sudo make install

Configuring the SDK

Start by checking out this: samples/livox_lidar_quick_start/mid360_config.json

change the ip of the host_ip and multicast_ip

{
  "MID360": {
    "lidar_net_info" : {
      "cmd_data_port"  : 56100,
      "push_msg_port"  : 56200,
      "point_data_port": 56300,
      "imu_data_port"  : 56400,
      "log_data_port"  : 56500
    },
    "host_net_info" : [
      {
        "host_ip"        : "192.168.1.82",
        "multicast_ip"   : "224.1.1.82",
        "cmd_data_port"  : 56101,
        "push_msg_port"  : 56201,
        "point_data_port": 56301,
        "imu_data_port"  : 56401,
        "log_data_port"  : 56501
      }
    ]
  }
}

ROS for Livox

Livox has ros driver packages for interfacing the SDK with ros so that we can publish the data to ROS1/ROS2. Fun part this package is good but might play glitchy.

https://github.com/Livox-SDK/livox_ros2_driver

config setting:

{
  "lidar_summary_info" : {
    "lidar_type": 8
  },
  "MID360": {
    "lidar_net_info" : {
      "cmd_data_port": 56100,
      "push_msg_port": 56200,
      "point_data_port": 56300,
      "imu_data_port": 56400,
      "log_data_port": 56500
    },
    "host_net_info" : {
      "cmd_data_ip" : "192.168.1.82",
      "cmd_data_port": 56101,
      "push_msg_ip": "192.168.1.82",
      "push_msg_port": 56201,
      "point_data_ip": "192.168.1.82",
      "point_data_port": 56301,
      "imu_data_ip" : "192.168.1.82",
      "imu_data_port": 56401,
      "log_data_ip" : "",
      "log_data_port": 56501
    }
  },
  "lidar_configs" : [
    {
      "ip" : "192.168.1.182",
      "pcl_data_type" : 1,
      "pattern_mode" : 0,
      "extrinsic_parameter" : {
        "roll": 0.0,
        "pitch": 0.0,
        "yaw": 0.0,
        "x": 0,
        "y": 0,
        "z": 0
      }
    }
  ]
}

Msgs

There are two formats in which the ROS driver comminicates:

  • the standard PCL2 format
  • the custom msgs, this is used in almost all the default packes from livox and even a few other packages.

4.1 Launch file configuration instructions

https://github.com/Livox-SDK/livox_ros2_driver#41-launch-file-configuration-instructions

All launch files of livox_ros2_driver are in the “ws_livox/src/livox_ros2_driver/launch” directory. Different launch files have different configuration parameter values and are used in different scenarios :

launch file nameDescription
livox_lidar_rviz_launch.pyConnect to Livox LiDAR device
Publish pointcloud2 format data
Autoload rviz
livox_hub_rviz_launch.pyConnect to Livox Hub device
Publish pointcloud2 format data
Autoload rviz
livox_lidar_launch.pyConnect to Livox LiDAR device
Publish pointcloud2 format data
livox_hub_launch.pyConnect to Livox LiDAR device
Publish pointcloud2 format data
livox_lidar_msg_launch.pyConnect to Livox LiDAR device
Publish livox customized pointcloud data
livox_hub_msg_launch.pyConnect to Livox Hub device
Publish livox customized pointcloud data

4.2 Livox_ros2_driver internal main parameter configuration instructions

https://github.com/Livox-SDK/livox_ros2_driver#42-livox_ros2_driver-internal-main-parameter-configuration-instructions

All internal parameters of Livox_ros2_driver are in the launch file. Below are detailed descriptions of the three commonly used parameters :

ParameterDetailed descriptionDefault
publish_freqSet the frequency of point cloud publish
Floating-point data type, recommended values 5.0, 10.0, 20.0, 50.0, etc.
10.0
multi_topicIf the LiDAR device has an independent topic to publish pointcloud data
0 – All LiDAR devices use the same topic to publish pointcloud data
1 – Each LiDAR device has its own topic to publish point cloud data
0
xfer_formatSet pointcloud format
0 – Livox pointcloud2(PointXYZRTL) pointcloud format
1 – Livox customized pointcloud format
2 – Standard pointcloud2 (pcl :: PointXYZI) pointcloud format in the PCL library
0

    livox_ros2_driver pointcloud data detailed description :

  1. Livox pointcloud2 (PointXYZRTL) point cloud format, as follows :
float32 x               # X axis, unit:m
float32 y               # Y axis, unit:m
float32 z               # Z axis, unit:m
float32 intensity         # the value is reflectivity, 0.0~255.0
uint8 tag               # livox tag
uint8 line              # laser number in lidar
  1. Livox customized data package format, as follows :
Header header             # ROS standard message header
uint64 timebase           # The time of first point
uint32 point_num          # Total number of pointclouds
uint8  lidar_id           # Lidar device id number
uint8[3]  rsvd            # Reserved use
CustomPoint[] points      # Pointcloud data

    Customized Point Cloud (CustomPoint) format in the above customized data package :

uint32 offset_time      # offset time relative to the base time
float32 x               # X axis, unit:m
float32 y               # Y axis, unit:m
float32 z               # Z axis, unit:m
uint8 reflectivity      # reflectivity, 0~255
uint8 tag               # livox tag
uint8 line              # laser number in lidar
  1. The standard pointcloud2 (pcl :: PointXYZI) format in the PCL library (Not currently supported) :

    Please refer to the pcl :: PointXYZI data structure in the point_types.hpp file of the PCL library.