Mid-70激光雷达标定实录

摘要:安装Ubuntu16.04, 配置部署环境,完成雷达标定。
关键词:Livox Mid-70 livox_camera_calib 激光雷达标定

虚拟机安装

不要问我为什么不使用实机安装。因为我只有一台机器安装Ubuntu22.04,再安装一个系统实在是过于臃肿。而且在Ubuntu22.04下,标定程序环境配置环节会由于ROSceres-solvereigen3的版本问题产生难以解决的编译错误(如果不相信我可以去试试)。本次安装使用镜像为ubuntu-16.04.7-desktop-amd64.iso,直接去ubuntu官网寻找下载即可。

我的虚拟机配置如下:

  1. 硬盘30G
  2. 内存6G
  3. cpu核心6核
    上述配置可根据自己电脑配置调整。注意:内存太小可能导致编译内存不够,30G对于标定程序已经够用。

安装过程我不再赘述,默认安装即可无需其他调整。在安装完成后可以安装VirtualBox的增强功能,然后即可共享本地文件夹到虚拟机,这对后续标定有很大帮助。安装过程可以参考 VirtualBox虚拟机共享文件夹

环境配置

先列出整个环境:

  1. ROS: ros-kinetic
  2. ceres-solver: 1.14.x
  3. eigen3: 3.2.92
  4. g++: 5.4.0
  5. cmake: 3.5.1

一、ros安装

具体安装细节详见ROS KINETIC
这里使用中国源服务器,也可根据需要调整源。

# 添加软件源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
# 添加秘钥
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
# 更新软件源
sudo apt update
# 全部安装
sudo apt install ros-kinetic-desktop-full


# 在安装完后,将source文件添加到~/.bashrc以免每次source
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 在初始化ros之前先下载部分依赖
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
# 最后初始化ros,这里容易连接失败,可能需要科学的力量。
sudo rosdep init
rosdep update

二、eigen3以及ceres库

eigen3在安装ros时已经自动安装了,默认版本为3.2.97。接下来安装ceres-solver,到github上克隆库即可。

mkdir ~/workspace
cd ~/workspace
# 这里记得指定分支
git clone https://github.com/ceres-solver/ceres-solver --branch 1.14.x
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
sudo make install

到此,所有库文件安装完毕。

三、Livox驱动

在安装驱动前要明确自己使用的是什么版本的激光雷达,我这里使用的是Mid70,它只支持livox_ros_driver以及Livox-sdk,而Mid-360比较新只支持livox_ros_driver2以及Livox_sdk2。具体对应的驱动版本还是应该去官网查询对应手册以及对应github仓库上的README说明
安装Livox-SDK

cd ~/workspace
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make -j4
sudo make install

安装livox_ros_driver

cd ~/workspace
mkdir ws_livox
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
cd ws_livox
catkin_make

不出意外的话,上述过程的编译是没有错误的。如果出现错误请检查之前步骤是否正确。
最后检验雷达,看是否能正常发布点云。
在此之前,先修改livox_ros_driver下的config/livox_lidar_config.json

{
    "lidar_config": [
        {
            "broadcast_code": "3GGDJAB00100401",	# 这里修改成你的雷达的sn码
            "enable_connect": true,					# 以下部分有需要的可做修改,默认即可。
            "return_mode": 0,
            "coordinate": 0,
            "imu_rate": 0,
            "extrinsic_parameter_source": 0,
            "enable_high_sensitivity": false
        }
    ],
	
    "timesync_config": {
        "enable_timesync": false,
        "device_name": "/dev/ttyUSB0",
        "comm_device_type": 0,
        "baudrate_index": 2,
        "parity_index": 0     
    }
}

最后启动点云发布程序,一切正常的话可以再rviz中看到点云图

source devel/setup.bash
roslaunch livox_ros_driver livox_lidar_rviz.launch

到此,恭喜你所有环境配置已经完成。接下来准备数据收集与雷达标定程序编译。

雷达标定程序

这里使用的是香港大学github开源项目 Targetless Extrinsic Calibration of Multiple Small FoV LiDARs and Cameras using Adaptive Voxelization
该程序可在无目标场景下,通过获取一张照片以及一段时间点云图,进行迭代运算自动拟合雷达外参。
接下来准备克隆仓库、编译测试:

cd ~/catkin_ws/src
git clone https://github.com/hku-mars/livox_camera_calib
cd .. && catkin_make
source ~/catkin_ws/devel/setup.bash
roslaunch livox_camera_calib calib.launch

配置文件说明:
在使用程序前要修改配置文件config/calib.yaml

# Data path. adjust them!
common:
    image_file: "/home/ycj/data/calib/image/0.png"		# 这里是准备图像路径
    pcd_file: "/home/ycj/data/calib/pcd/0.pcd"			# 这里是收集点云数据路径
    result_file: "/home/ycj/data/calib/extrinsic.txt"

# Camera Parameters. Adjust them!
camera:	# 相机外参
    camera_matrix: [1364.45, 0.0,      958.327,
                0.0,     1366.46,  535.074,
                0.0,     0.0,      1.0     ]
    dist_coeffs: [0.0958277, -0.198233, -0.000147133, -0.000430056, 0.000000]

# Calibration Parameters.!
calib:
    calib_config_file: "/home/ycj/catkin_ws/src/livox_camera_calib/config/config_outdoor.yaml"	# 这里写对应config/config_outdoor.yaml文件路径
    use_rough_calib: true # set true if your initial_extrinsic is bad

数据准备

1. PCD文件

使用官方Livox Viewer可录制.lvx文件,通过livox_ros_driver可把.lvx文件转换成rosbag,最后使用pcl_rosrosbag转换成每一帧pcd文件。注意:录制时长最好在25s左右,太短可能导致标定失败。
1.1
到官网下载Livox Viewer,Ubuntu16.04这个版本->Livox Viewer
使用Livox Viewer连接雷达,点击左上角相机按钮即可开始录制,再次点击结束录制。在data/record files/可找到录制文件。
1.2 转换rosbag

cd ws_livox
source ./devel/setup.bash
roslaunch livox_ros_driver lvx_to_rosbag.launch lvx_file_path:=""

1.3 转成pcd

mkdir pcds
rosrun pcl_ros bag_to_pcd <input_file.bag> /livox/lidar pcds

1.4 合并pcd
安装CloudCompare,可以参考文章CloudCompare安装
我使用的是flatpak

sudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
# 添加源,可以自行换成国内源
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# 安装,需要几分钟。
flatpak install flathub org.cloudcompare.CloudCompare	
# 运行
flatpak run org.cloudcompare.CloudCompare	

在CloudCompare中全选导入pcds中的pcd文件,点击菜单栏edit中的merge即可。
最后到处pcd文件,在到处类型中选择,Point Cloud Libaray cloud

2. 照片

使用标定过的相机截取一张图即可,我使用的是海康工业相机。使用MVS截取一张图片即可。

运行标定程序

cd ~/catkin_ws/src
source ~/catkin_ws/devel/setup.bash
roslaunch livox_camera_calib calib.launch

之后你会看到rviz启动,对图像边界进行迭代拟合。
Rviz
运行一段时间后会弹出标定前后点云着色图。标定结果保存在livox_camera_calib/src/result/extrinsic中。
Result
就此标定结束

总结

顺着本篇文章即可完成一次简单标定,但是其中数据处理过程仍然过于繁琐。在后续过程中可考虑使用脚本或者其他程序完成图像获取以及pcd收集的工作,从而简化标定过程。整体标定过程还是需要一段时间,大约几分钟。本人才疏学浅,刚刚接触激光雷达,若有错误请多多包涵!

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值