livox-mid70激光雷达使用实录
livox-mid70是由大疆发布的面阵激光雷达,是大疆为自动驾驶推出的一款激光雷达,同时也可用于建立三维地图,文物修复,与大疆无人机相结合使用。你可以在x86和arm架构上都可以使用(arm需要交叉编译)。 bilibili上Livox官方发布了大量的视频demo可以去围观一下,同时Livox也有一个论坛可以去看一下。
官方文档
https://livox-wiki-cn.readthedocs.io/zh_CN/latest/index.html 这是中文官方文档,请根据以上文档完成硬件上的连接以及Ip配置,一切以官方文档为主。

- github上中文README
- 先从github上clone下来
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install
- 简单运行demo,注意这里的sample是在build文件夹下面的
cd sample/lidar && ./lidar_sample
livox-ros-driver
不得不说ros是真的好用,所以建议在ros下使用,会使得一切都很清晰明了。装livox-ros-driver
前必须要先装Livox-SDK
。
- 先从github上clone下来,这里一定要用下面这个命令把它clone到相应位置,否则会出问题。
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
- 简单的
catkin_make
一下
cd ws_livox
catkin_make
- 别忘了添加环境
source ./devel/setup.sh
- 之后跑个rviz的demo,让你的激光雷达点云数据在rviz里显示出来
roslaunch livox_ros_driver livox_lidar_rviz.launch
录制你的点云数据
点云数据不像二维图像一样,简简单单录制一个视频就好,作为点云数据记录是比较特殊的。 livox一共有两种录制格式
lvx格式
lvx格式是livox的一种自定义格式,如果你想在Windows上快速录制,可以使用Livox Viewer进行录制,也可以通过Livox-SDK
中的文件录制
- 首先进入以下路径
cd ./Livox_SDK/build/sample/lidar_lvx_file
- 然后运行下面这个文件,这里不用
-c
指定也可以,这里指定了lidar并设定持续10s
./lidar_lvx_sample -c "此处为已连接的Lidar的15位广播码" -t 10
通过上面的操作会得到一个.lvx
格式的文件,这个文件可以在Livox Viewer中直接播放,也可以转成rosbag(一个可以把ros中当前所有topic中message记录下来的东西)。
roslaunch livox_ros_driver lvx_to_rosbag.launch lvx_file_path:="/home/livox/test.lvx"
rosbag格式
rosbag是ros中非常好用的一个东西,我在之前的ros文章中有提到过。当我们在运行livox-ros-driver中的rviz显示时,即
roslaunch livox_ros_driver livox_lidar_rviz.launch #详情看上面livox-ros-driver
我们可以把此时的所有消息用rosbag记录下来
rosbag record -a -o myrosbag.bag #-a代表所有的消息,-c代表输出名称
此时就会生成一个.bag文件,具体名称看终端的输出。 你可以通过以下命令进行播放rosbag
rosbag play *.bag -l #-l代表loop循环播放
此时再打开在livox-ros-driver下的的rviz,就可以得到rosbag中的点云图了
cd ws_livox/src/livox_ros_driver/
rviz -d config/display_lidar_points.rviz #这种.rviz文件实际上是保存rviz相关显示的数据
livox_detection
livox_detection指的是激光点云检测,livox官方给的代码可以检测各种车和行人。官方说2080ti下需要50ms。
。
至于原因我也不知道,只是这坑了我一会儿,后来在issue发现了这个问题。
由于两个仓库操作都非常相似,这里选livox_detection_simu为例。
依赖
- python3.6+
- tensorflow1.13+ (tested on 1.13.0)
- pybind11(后面的过程中安装)
- ros
准备
- 首先clone仓库
git clone https://github.com/Livox-SDK/livox_detection_simu
- 然后配置pybind(pybind就是这样,每次都需要clone在那个路径下才行)。
cd livox_detection_simu/utils/lib_cpp
git clone https://github.com/pybind/pybind11.git
- 编译(在刚刚的
lib_cpp
路径下)。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
- 把c++得到的依赖文件放到项目根目录下
cp lib_cpp.so ../../../
运行
- 打开一个终端运行roscore
roscore
- 打开一个终端运行rviz
rviz -d ./config/show.rviz #在livox_detection_simu仓库下
- 打开一个终端播放rosbag
rosbag play *.bag -r 0.1 #找到你存放rosbag的路径运行,发送消息间隔0.1s
- 打开一个终端运行目标检测程序
python livox_detection_simu.py #如果你的模型放在其他地方,你需要在config下将其模型路径改为你所放预训练模型的路径
由于目标检测速度相当慢,实时性非常差,队列里可能还缓存了很多帧
本文使用 Zhihu On VSCode 创作并发布