车载VSLAM与激光雷达方案
基于VSALM在计算机视觉领域的领先技术,提供优异的视觉目标检测功能
提供前视视觉感知,环视视觉感知以及APA系统的一站式ADAS功能解决方案
基于激光与视觉检测的融合结果,覆盖更为广泛的应用场合
从特征点到三维轮廓乃至更高级的带有语义信息的交通标志与车道标记。 在为车辆实时定位提供3D几何信息的同时,这种多层级的3D特征的语义性内容也能够为L4自动驾驶的决策与路径规划打下良好的基础。除此之外我们的解决方案能够完成实时的、高精度的、完整的6自由度位置估计。 通过进一步融合其它定位传感器和高精地图, 我们能够提供连续的高精度车辆姿态信息。
Auto Valet Parking (AVP) 自动代客泊车,可在驾驶员下车后,控制车辆自动行驶一段距离至指定位置并自动泊车入位
融合多路毫米波雷达,超声波雷达,前视及环视高清摄像头传感器,实时感知车辆周边环境,实现障碍物与路径识别
某款车载芯片:
APEX进行处理,而计算方面的操作通过4个A53进行。常见图像处理操作如Sobel,Canny等在其中均有实现,对应常用的opencv 中使用vsdk进行一些相应的图像操作,如基础操作cv::UMat cv::Mat -> vsdk::UMat vsdk::Mat;但需要注意当使用opencv中的相应操作时,S32V使用的是ARM A53核,这样会使处理效率变得非常低,所以能使用vsdk进行的图像操作尽量使用vsdk,尽可能少的使用opencv
激光雷达与摄像头的融合
激光雷达与摄像头融合,其实相当于是激光雷达发挥激光雷达的优势,摄像头发挥摄像头的优势,他们在某些地方是做得不够好,需要两个传感器甚至多个传感器信息进行底层的融合。
在融合的时候,首先第一步,标定。比如说左上角(上图),我看到凳子,左下角激光雷达也看到的是凳子,那么我通过标定的方式告诉它,其实两个是同一个物体。
其实摄像头发现同一个物体是非常容易的,比如做人的跟踪或车的跟踪。对于激光雷达而言, 要去识别前后帧是否同一辆车和同一个行人是非常困难的。
如果可以通过摄像头告诉它前后两帧是同一个物体,那么通过激光雷达就可以知道物体在这前后两帧间隔内:运动速度和运动位移是多少。这是非常关键的,因为只有做运动物体的跟踪才能做一些预测。
算法
由相机捕获的图像数据由(U,V)表示,激光雷达捕获的3维点阵云用(X,Y,Z)表示,我们的目标是建立一个转化矩阵M,将3维点(x,y,z)映射到2维点(u,v),即:
矩阵(fu,fv,u0,v0)是相机参数,fu以及fv是XY轴方向尺度因子(水平方向和垂直方向的有效焦距),u0,v0是像平面(image plane)的中心点,又称主点坐标。R为旋转矩阵,t为平移矢量。
根据不同姿态下定标板平面,可得到一系列的线性方程,解得标定参数。
ros中的联合校准包
这个包用于Velodyne激光雷达和相机联合校准,适用于VLP-16及以上,依赖于aruco_ros包和轻微修改的aruco_mapping包
1 构建
clone代码从https://github.com/ankitdhall/lidar_camera_calibration.git,把该代码仓库, dependencies/aruco_ros and dependencies/aruco_mapping 目录放到 path/to/your/ros/workspace/src , 执行下面的命令:
catkin_make -DCATKIN_WHITELIST_PACKAGES="aruco_ros;aruco_mapping"
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
如果,没有安装velodyne包需要先安装该包,make aruco_ros时首先要先安装aruco_msgs和aruco
2 开始
为了相机与激光雷达进行联合校准,两个配置文件需要进行修改,配置文件在lidar_camera_calibration/conf目录下。
文件格式:
image_width image_height
x- x+
y- y+
z- z+ //去除点阵云中不想要 的点
cloud_intensity_threshold
number_of_markers
use_camera_info_topic? //是否使用camera_info topic
fx 0 cx 0
0 fy cy 0
0 0 1 0
MAX_ITERS
initial_rot_x initial_rot_y initial_rot_z
3 使用
通过如下命令进行启动:
roslaunch lidar_camera_calibration find_transform.launch