DeepStream 是一个基于Livox Horizon激光雷达和海康工业相机开发的多传感器融合测试平台。该平台当前的主要功能是:融合来自激光雷达和彩色相机的数据。
完整功能演示 - 视频链接
-
操作系统:Ubuntu 20.04,zsh(建议安装 oh-my-zsh)
-
自行搜索安装 PyQT5,ROS noetic,anaconda3 (python3.6.13)
-
Livox 激光雷达驱动 请按照文档说明安装 Livox激光雷达驱动,在激光雷达的驱动安装目录下会生成
|--- path_to_livox_driver/ |--- devel/ |--- src/ |--- build/
进入 src/目录下将
livox_ros_driver/launch/livox_lidar.launch
中“xfer_format” 配置为 2 (具体说明请参考livox驱动说明) -
海康工业相机驱动安装
在官网下载“机器视觉工业相机客户端MVS V2.1.0 (Linux)”并解压下载的zip压缩包
根据需要选择对应的版本安装,例如选择 “MVS-2.1.0_x86_64_20201228.deb”安装:
sudo dpkg -i MVS-2.1.0_x86_64_20201228.deb
注: 安装后Python例程文件会出现在
/opt/MVS/Samples/64/Python/
,请确认路径是否一致,否则需要修改path_to_deepstream/deepstream/hik_cam/hik_cam_linux.py
中对应的import路径
参考官方文档
- Livox Horizon 激光雷达
- 海康工业相机MV-CE060-10UC + 沃乐斯 4mm镜头
- NVIDIA Jetson Xavier NX开发板(或PC)
自行设计激光雷达与相机连接的底座,并通过某宝进行亚克力板定制。
为了减少在标定时参数的调整,本次标定的硬件安装方式参考官方文档,最终选择如下方式:
任务描述:
计算相机内参和畸变矩阵。以矫正图像和进行后续投影3D点云到2D图像的任务。
标定方法(张正友标定法):
- 初始角点检测
- 进一步提取亚像素角点
- 绘制角点观察结果
- 相机标定
- 重投影空间三维点,评价标定效果
数据采集:
本次标定选择了黑暗条件下的85寸电视来显示标定图片,一共采集了35帧各个角度的图片:
标定结果——重投影误差:
0.014394424473247082 (误差在允许范围之内)
相机畸变矫正结果:
需要注意的问题:
- 张正友标定法对环境干扰非常敏感。因此最后选择了黑暗条件下电视屏幕显示的标定板。
- 拍摄角度不够diversity、拍摄图片数目不足导致精度不足。
- 拍摄时曝光强度需要仔细调节,否则无法识别角点。
标定方法:
基于平面约束的相机激光标定算法。
数据采集:
本次标定选择1m x 1.5m的黑色电视作为标定板。拍摄距离在3米左右。共采集数据15组。
需要注意的问题:
- 在采集标定板点云数据时,需要叠加多个frame的点云数据,bag文件录制10s左右,否则单帧点云密度不足会极大影响标定精度。
- 手工标记图像角点的精度不足,导致标注的图像角度精度不足,因此影响外参标注的精度。可以采用亚像素优化对手工选择的像素进一步优化解决问题。
标定效果:
将得到的参数存于 params
文件夹下:
├─params
│ ├─intrinsic.txt
│ ├─extrinsic.txt
│ └─distort.txt
├─README.md
示例参数:
-
distort.txt
-0.09732168794279916 0.1023514279653091 0.0003060722976587038 0.0004451042048329594 -0.01596420627741748
-
intrinsic.txt
1723.253969255113 0 1521.018607274423 0 0 1723.714922079786 1029.277181487616 0 0 0 1 0
-
extrinsic.txt
0.0151031 -0.999863 -0.0068105 -0.0239579 -0.01768 0.00654316 -0.999822 0.0519217 0.99973 0.0152208 -0.0175788 -0.0108779 0 0 0
注意:由于设备和组装的差异,这些参数不能完全适应你的情况,所以你需要自己标定。
-
打开linux命令行终端,启动ros
roscore
-
将电脑与海康相机通过USB相连
-
将电脑与激光雷达的网口相连 (激光雷达连接说明请参考激光雷达相关文档,主要是将电脑的IP修改为 192.168.1.50)
-
运行激光雷达驱动
cd path_to_livox_driver/ source devel/setup.zsh # 如果使用bash,则命令是 devel/setup.bash roslaunch livox_ros_driver livox_lidar_msg.launch
-
注意修改
deepstream/hik_cam.py
中海康相机驱动相关库的路径# append dll path ## 嵌入式平台 aarch64架构 #sys.path.append("/opt/MVS/Samples/aarch64/Python/MvImport") ## 64位linux系统 sys.path.append("/opt/MVS/Samples/64/Python/MvImport") #
-
运行主程序。如果是在NVIDIA开发板上运行,选择双核运行模式,否则会造成卡顿。
python3 application.py