1.如何快速入门开源自动驾驶模拟器lgsvl?源码
2.易航智能——专注量产的自动驾驶解决方案供应商
3.开源|HDR-ISP开源项目介绍
4.汽车领域hypervisor
5.Apollo EM中path_assesment_task相关细节的讨论
6.ADAS-干货|一文入门汽车毫米波雷达基本原理
如何快速入门开源自动驾驶模拟器lgsvl?
LGSVL是由LG电子美国研发实验室构建的自动驾驶模拟器,基于Unity引擎开发,源码支持与百度Apollo、源码Autoware.AI等联合仿真。源码SVL日落计划已于年1月1日启动,源码开发者团队将不再更新版本,源码通过源码来赚钱但文档和源代码会维护至6月日。源码SVL适用于L4/L5自动驾驶车辆、源码L2/L3 ADAS/AD系统、源码仓库机器人、源码户外移动机器人、源码未来移动服务、源码自动赛车、源码传感器系统开发、源码汽车安全、源码合成数据生成及实时嵌入式系统开发。
SVL提供了两种安装方式:一是下载编译好的安装包直接安装;二是下载源代码编译生成可执行文件。本篇指南仅介绍第一种方法。SVL支持Windows和Linux系统。
在Windows系统中,建议使用svlsimulator-windows-.3版本。确保为Win 位系统,无需安装NVIDIA显卡和驱动(如需感知功能则需安装)。安装Docker,从docker.com/get-started/下载并启动。在SVL官网注册账号,接收并点击确认邮件。下载并解压Windows安装包,双击运行simulator.exe。首次运行时,需点击“LINK TO CLOUD”。新建集群,搜索并添加本地集群,选择本地建好的集群,设置控制模式,最后运行模拟。
为深入学习和使用SVL,访问其官网和官方文档:svlsimulator.com/和svlsimulator.com/docs/。查阅SVL的开源代码:github.com/lgsvl/simulat...。关注后续文章,kd月线指标源码了解如何搭建SVL开发环境。
易航智能——专注量产的自动驾驶解决方案供应商
北京易航远智科技有限公司自年成立以来,致力于自动驾驶系统的自主研发,成为中国首批自动驾驶创业公司之一。公司获得了包括经纬中国、源码资本、明势资本等知名创投机构的支持,以及北汽产投、广汽资本和理想汽车等主机厂的战略投资。
易航智能自年起便涉足自动驾驶Tier1量产项目,至今已拥有万辆整车量产经验,积累了超过亿公里的驾驶数据。公司拥有感知、决策规划控制、软硬件开发、测试标定等全栈自研能力,并率先实现了NOA行泊一体、城市全场景FSD等高阶功能。
易航智能团队在感知、决策、控制、故障诊断等核心算法方面拥有深厚的技术实力。公司主营自动驾驶解决方案(ADAS、NOA、FSD)、域控制器、摄像头模组、驾驶算法与软件等产品,并在北京、苏州设有研发中心和工厂,固安设有测试基地。主要客户包括理想汽车、北汽集团、江铃雷诺、上汽大通、一汽大众、威马汽车等主机厂。
易航智能汇集了汽车行业精英和计算机视觉、深度学习领域专家,牛股阻击指标源码硕士及以上学历人员占比超过一半。团队成员主要来自国内外主机厂、Tier 1供应商、国内外顶尖科研机构和伯克利、剑桥、清华、北大、北航等知名院校。
苏州平方米的一期生产工厂已建成并投入使用,拥有全球领先的智能化、自动化自动驾驶专用摄像头及域控制器生产线,产品已在多款车型中前装量产。
公司还建立了全球领先的摄像头调试和测试实验室,产线可进行AA和内参标定,已量产1M、2M、8M前视、侧视、环视摄像头,FOV覆盖°-°。
易航智能已通过IATF 、ISO、ISO 、ISO等国际认证。
开源|HDR-ISP开源项目介绍
开源HDR-ISP项目提供了一个用于HDR相机的ISP Pipeline,旨在帮助入门开发者快速学习ISP技术。项目使用C++编写,旨在解决ISP学习资料匮乏的问题,为新手提供一个参考的demo。
项目默认配置了一个Pipeline,包括支持和准备支持的ISP模块。用户可以通过修改json配置文件来调整ISP模块的基本参数,如sensor参数和rgb gamma等。
在Linux和Windows系统上,项目提供了详细的开发环境和编译、运行指南。用户可以通过修改json配置文件来调试运行结果,并与fastOpenIsp进行对比,进一步优化ISP性能。工程进度 app源码
项目支持HDR相机ISP功能,并提供运行结果示例。通过对比其他ISP,用户可以更好地理解项目的优势和局限性。项目还规划了后续工作,包括支持更多ISP模块和优化性能。
项目地址:github.com/JokerEyeAdas...
该项目提供了快速访问GitHub的链接:HDR-ISP。如果您对ADAS感兴趣,欢迎关注公众号“ADAS之眼”,以及知乎、CSDN等平台的同步更新。同时,所有使用的源码都在我的GitHub上进行开源。
感谢以下仓库及作者,他们的贡献对项目起到了重要作用。
汽车领域hypervisor
面向未来的汽车架构,使用hypervisor实现车联网自动驾驶等技术,可以减少ECU个数,实现资源隔离和分配。汽车ARM架构算力问题和实时性要求下,选择xen hypervisor而非KVM,使用virtio标准处理IO。汽车领域的hypervisor有Xen、Opensynergy、ACRN、Global、Mentor、QNX、Redbend等,QNX hypervisor较为量产。汽车产品的虚拟化一般指的是硬件虚拟化技术,其开销较小,CPU负载不超过2%,DDR小于MB,EMMC小于MB。hypervisor技术代码量在3万行以内,Xen的代码量较大。使用hypervisor可以降低成本,通过在单个SOC上运行多个不同安全级别的江湖智慧城市商圈源码操作系统实现降本需求,满足车内屏幕数量的增加。智能座舱中运行四个系统,如仪表、信息娱乐系统、L0-L2级的ADAS、以及HUD系统,可能需要运行三个或四个不同系统。VIRTIO标准在汽车嵌入式环境中提供硬件接口标准,支持块存储、SCSI、网络、控制台、加密、GPU、熵、输入、socket、文件服务器、声音等设备类型。标准制定工作在OASIS标准设置组中进行,支持多种操作系统,如Linux、Blackberry的QNX,以及Android。hypervisor硬件支持、安全关键性、overhead、实时性能是Tier1和OEM在选择时需考虑的因素。ACRN hypervisor是针对IOT网络开源的type 1 hypervisor项目,定义了设备管理程序参考堆栈、体系结构和虚拟设备仿真参考框架。在构建时考虑了实时性和安全性,并经过优化。ACRN支持Linux和Android作为用户虚拟机,服务虚拟机在后台运行,用户虚拟机作为post-launched的虚拟机运行。ACRN hypervisor架构利用英特尔虚拟化技术(Intel VT),运行在VMM模式和访客模式中。VMM模式下,服务VM以系统最高的虚拟机优先级运行,用户VM在访客模式中运行。启动顺序从第三方引导加载程序开始,预启动VM和服务VM的引导选项定义在源代码中。ACRN hypervisor支持设备直通和VIRTIO框架架构,提供简单、高效、标准和可扩展的虚拟设备接口,包括前端和后端驱动程序、直接交互方式、批处理操作、标准的virtqueue机制、可扩展的feature bits等。VIRTIO设备在现有总线上运行,鼓励批量操作和延迟通知以实现高性能I/O,所有设备共享一个标准的环形缓冲区和描述符机制。
Apollo EM中path_assesment_task相关细节的讨论
网上已有关于本task流程的详细注释,本文主要探讨Apollo EM中path_assesment task的内部算法细节。
首先,我们来看SetPathPointType函数。函数中,ego_center_shift_distance代表车体几何中心距离后轴中心的距离。初始化过程中,以车体后轴中心点为基准获取整个车体Box。ego_box所调用的Shift函数将后轴中心点前移至车体几何中心点并计算box四个角的位置。这样做的原因是,Control使用后轴中心点跟踪每一个pathpoint,而本车SLboundary依据其几何中心点在参考线上进行投影,因此这一步转化是必不可少的。
Shift函数内所调用的InitCorners()如上图所示,其中cos_heading,sin_heading_,half_length_,half_width_,center_,是在Box2d初始化时进行赋值。简单用图示介绍一下含义:X-Y用于表示地图坐标系,x-y用于表示将地图坐标系平移至车体几何中心点之后的坐标系,[公式] 用于表示heading。特别解释一下:此处的使用 [公式] 来表示长度half_width x[公式]。
获取到本车box的四个角的坐标之后,再将依靠参考线将box转化到SL坐标系下的boundary。之后遍历SL坐标系下每个pathpoint,计算自车位于每个pathpoint的时候所对应的车体的边界。将边界与车道线比较,判断每个pathpoint的类型(在lane_borrow/lane_change决策下是在旁车道还是本车道)。此处不粘贴源码,直接用图示进行说明各种情况。
需要注意:由于要在统一的坐标系下进行比较,所以,采用-right_width。所以对应上图的情况,即处于车道边界之外还没换道的情况:start_l>lane_left_width || end_1<-lane_right_width此时type为IN_LANE。对应上图情况,即严格处于本车边界之内的车辆,需要考虑将车道边界添加buffer:所以本车实际处于虚线之内,此时的type为IN_LANE,表示已经换道完成。其它状态下为lane_change的过渡状态,type为OUT_ON_FORWARD_LANE。
需要注意的是:由于借道其实是拐入别的车道一点点之后再拐回来,所以需要添加动态的迟滞边界in_and_out_lane_hysteresis_buffer,来对pathpoint进行严格地区分。类似的做法在量产ADAS功能中也用到,主要用于对前方动态Target的识别,目的是为了防止障碍车辆沿车道线来回画龙或压线行驶的情况。扯远了~
如上述,因为借道只是占据旁车道一点点,所以判断条件与lane_change略有不同,此处的判断条件使用end_l与lane_left_width相比较,start_l与-lane_right_width相比较。
如上图所示,当前一个路径点在车道内(is_prev_point_out_lane = false),即绿点所在位置,则判断lane_borrow的条件:此时,in_and_out_lane_hysteresis_buffer = 0.2;当前一个路径点在车道内(is_prev_point_out_lane = true),即红点所在位置,此时,in_and_out_lane_hysteresis_buffer = 0;
接下来讨论path与静态障碍物collision的问题:具体流程图参见下图:IsCollidingWithStaticObstacles中流程概述:过滤掉虚拟障碍物,高速运动障碍物等,按照固定距离的pathpoint建立VehBox,所有点转化为Frenet坐标系,调用函数IsPointIn检验所有点是否处于障碍物的内部。
下面开始详细讲解IsPointIn函数:首先判断本车的Corner点是否在障碍物边界上,如果不在,则进行下一步取Corner点在与轴方向异侧的两个点,分别于Corner点构成向量,之后做叉乘,叉乘结果若大于0,则比较两个点的y值,若y值结果小于0,则看向量正旋转到目标向量的实际角度是否小于度,若小于,则c由零变为1;若y值结果为大于,则看向量正旋转到目标的实际角度是否大于度,若大于,则c由零变为1。同理再构建另外两个向量,若与上述情况相同,则c由1变为2。最后判断C为奇数还是偶数,如果为奇数,则返回true,表示Corner点处于Obstacle内部。如果为偶数,则表示Corner点在Obstacle外部。
下面举个栗子:对于左图A点的这种情况,0点与3点在Y轴方向上位于A点异侧,0.y<3.y,side>0(即比较向量A-0正旋转到目标向量A-3是否小于度),实际大于度(蓝色箭头),结果为否,则c值仍为0;2点与1点在Y轴方向上位于A点异侧,side<0(即比较向量A-2正旋转到目标向量A-1是否大于度),实际大于度(红色箭头),结果为是,则c值变为1。最终c&1为奇数,表示A点在obstacle之内。
对于右图A点情况,0点与3点在Y轴方向上位于A点异侧,0.y<3.y,side>0(即比较向量A-0正旋转到目标向量A-3是否小于度),实际小于度(红色箭头),结果为是,c值由0变为1;2点与1点在Y轴方向上位于A点异侧,side<0(即比较向量A-2正旋转到目标向量A-1是否大于度),实际大于度(蓝色箭头),结果为是,则c值变为2。最终c&1为偶数,表示A点在obstacle之外。
正旋转相关的知识:叉乘几何含义:须注意:本算法所有的坐标系为上图所示,所以正旋转方向为X轴沿绿三色箭头转到Y轴。
最后依旧借用M星云男神女神镇楼。。
ADAS-干货|一文入门汽车毫米波雷达基本原理
随着社会对于安全驾驶和智能交通的追求,汽车技术不断进步,其中毫米波雷达作为一种先进的传感器技术,引领着汽车领域的变革。它利用毫米波频段的电磁波感知环境,通过测量反射信号来检测和跟踪目标。相比于红外传感器和激光雷达,毫米波雷达具有穿透恶劣天气的能力,适用于复杂环境下的可靠探测。本文将详细介绍汽车毫米波雷达的基本原理,包括工作频段、探测原理、测距、测速与角度测量方法,以及距离和速度分辨率计算。
### 毫米波雷达原理
毫米波雷达主要基于连续波调频(FMCW)技术工作。FMCW雷达通过连续发射频率随时间线性增加的信号,结合接收信号的相位与频率变化,实现距离、速度和角度的测量。其基本框架包括发射(Tx)与接收(Rx)天线,以及混频器组件。工作流程中,雷达发射信号,通过目标反射后接收,混频器合并信号以提取所需信息。
### 测距原理
通过测量雷达信号的往返时间,结合雷达与目标的距离公式,即可计算目标距离。对于多目标情况,通过分析混频后的信号频谱,可以区分不同目标的距离。距离分辨率计算基于傅里叶变换理论,通过延长信号时长与增加带宽来提高分辨能力。
### 测速原理
雷达通过比较发射信号与接收信号之间的相位差,计算目标的速度。速度计算基于相位差与雷达发射信号的周期关系。考虑到相位的周期性限制,雷达的最大测量速度受到限制。对于多个速度不同的目标,需要通过发射多个线性调频脉冲来实现速度的准确测量。
### 角度测量
角度测量依赖于接收信号的相位差。通过比较两个接收天线接收到的信号相位,可以计算出目标相对于雷达的角度。角度的精准度与相位差的计算密切相关。
### 总结与效果
不同频率的毫米波雷达适用于不同距离的探测,最大探测角度由雷达的配置和天线间隔决定。当前雷达技术通过距离FFT、速度FFT和角度FFT处理信号,获取目标的运动信息,形成雷达图像。最新的3D雷达技术在平面数据基础上提供了速度、距离和角度信息,未来4D雷达将增加高度信息,进一步提升探测精度与应用范围。
### 参考文献
- [1] 毫米波雷达传感器基础知识
- [2] MIMO Radar
本文旨在为对ADAS技术感兴趣的读者提供对毫米波雷达基本原理的深入理解。如果您对汽车智能驾驶系统感兴趣,欢迎关注并访问个人博客及GitHub获取更多技术资料与源码。