livox-mid70激光雷達使用實錄
livox-mid70是由大疆發布的面陣激光雷達,是大疆為自動駕駛推出的一款激光雷達,同時也可用於建立三維地圖,文物修復,與大疆無人機相結合使用。你可以在x86和arm架構上都可以使用(arm需要交叉編譯)。
bilibili上Livox官方發布了大量的視頻demo可以去圍觀一下,同時Livox也有一個論壇可以去看一下。
官方文檔
https://livox-wiki-cn.readthedocs.io/zh_CN/latest/index.html
這是中文官方文檔,請根據以上文檔完成硬件上的連接以及Ip配置,一切以官方文檔為主。
- 硬件連接
-
更改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
即可打開如下界面。
- 官方軟件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。
在Livox官方的github倉庫中有兩個激光點雲檢測倉庫分別為livox_detection
和livox_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 ../../../
運行
- 打開一個終端運行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下將其模型路徑改為你所放預訓練模型的路徑
由於目標檢測速度相當慢,實時性非常差,隊列里可能還緩存了很多幀