livox-mid70激光雷达使用实录

livox-mid70是由大疆发布的面阵激光雷达,是大疆为自动驾驶推出的一款激光雷达,同时也可用于建立三维地图,文物修复,与大疆无人机相结合使用。你可以在x86和arm架构上都可以使用(arm需要交叉编译)。 bilibili上Livox官方发布了大量的视频demo可以去围观一下,同时Livox也有一个论坛可以去看一下。

官方文档

https://livox-wiki-cn.readthedocs.io/zh_CN/latest/index.html 这是中文官方文档,请根据以上文档完成硬件上的连接以及Ip配置,一切以官方文档为主。

![image](G:\typora\Typora\denied:data:image\svg+xml;utf8,<\svg>)

  • 更改IP:一般来说刚拿到手都是静态IP,这时候你只需要将网线与你自己笔记本相连,然后通过用户手册查看你自己雷达的IP,那需要设置你自己电脑的IP为手动,并将其分在同一网段不同的地址下:

      如我的Mid70的IP地址为192.168.1.105,
      那么我电脑设置时
      IP:192.168.1.104,
      子网掩码:255.255.255.0,
      网关:192.168.0.1
    

如果对IP配置有问题,或想改为动态IP详情参见用户手册

Livox Viewer

Livox Viewer是一款图形化操作的显示软件,有助于快速让你知道你的硬件连接和Ip配置有没有问题。

  • Livox-Viewer for Windows

  • Livox-Viewer for ubuntu16.04

    ,下载后解压运行

    ./livox viewer.sh
    

    即可打开如下界面。

    ![image](G:\typora\Typora\denied:data:image\svg+xml;utf8,<\svg>)

  • 官方软件Livox Viewer仅支持Windows或ubuntu16.04/14.04,所以建议如果不是这两个版本有ros可以直接上。

Livox-SDK

刚刚Livox Viewer只是一个快速尝试,如果你要做开发就必须要安装Livox-SDK(包括后面要在ros上使用也必须先要安装这个)

  • 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。

![image](G:\typora\Typora\denied:data:image\svg+xml;utf8,<\svg>)

在Livox官方的github仓库中有两个激光点云检测仓库分别为livox_detectionlivox_dection_simu。 这两个仓库看上去都差不多,但实际上非常坑的是:

  • livox_detection仓库中的预训练模型在可以识别人和车,但车的识别效果不是很好;
  • livox_dection_simu仓库中的预训练模型只能识别车,而几乎无法识别到人(虽然代码看上去都差不多)。

至于原因我也不知道,只是这坑了我一会儿,后来在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 ../../../
  • 下载预训练模型,会得到model文件夹,把它放在项目根目录下,这样你就不用改模型地址了,
  • 下载rosbag,这是官方提供的rosbag,你也可以自己录一个。

运行

  • 打开一个终端运行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 创作并发布

最后修改:2024 年 01 月 22 日
如果觉得我的文章对你有用,请随意赞赏