百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

详细剖析:Voyage自动驾驶出租车背后的算力、动力和线控

bigegpt 2024-08-22 10:24 2 浏览

雷锋网按:Voyage Auto 是硅谷一家自动驾驶出租车初创公司,由专注机器学习、人工智能等方面的在线培训机构 Udacity 于 2017 年 4 月成立,在无人驾驶领域,Voyage 将与谷歌、特斯拉、Uber 展开竞争。目前,Voyage 已完成首轮种子融资和测试车辆外观研发。

自动驾驶汽车有自己的行动范式,它会先进行通过激光雷达、雷达和摄像头等传感器进行感应,随后利用传感器信息和其他情境信息完成路径规划并按规划控制车速和方向完成任务。

在业内,这一过程被称之为 SPA (Sense,Plan & Act)。当然,想顺利完成一整套 SPA 可不容易,它需要复杂且能协同工作的软硬件系统支持。

经过媒体连续的报道,外界对自动驾驶汽车的零部件(如激光雷达和视觉摄像头)已经相当熟悉,但将这些零部件进行完美的整合也同样重要。而这也是本文章要着力解读的。

本文由雷锋网编译自 Voyage Auto 在 Medium 上发表的文章,原文标题为:Under the Hood of a Self-Driving Taxi。

Voyage 的架构

上图是 Voyage 自动驾驶出租车的“解剖图”,与其他的多传感器自动驾驶汽车一样,Voyage 的架构属于标准化设计,每一个零部件都扮演着自己相应的角色。

今天,我们就来详细剖析 Voyage 自动驾驶出租车的算力、动力和线控驾驶套件。

计算力

在整个 SPA 过程中,计算是规划(P)的主要驱动力。执行该任务的是来自技嘉的 AORUS 主板,它搭载了英特尔酷睿 i7–7700K 8核处理器(主频 2.4GHz),GPU 则为英伟达 Titan X。作为 Homer(Voyage 首台自动驾驶汽车)的大脑,它为传感器搭建了一个顺畅的数据管道。为了获得一定的冗余度,它还配上了 64GB RAM和 3块 1TB 的固态硬盘。

这个强大的大脑运行了 Ubuntu 系统,并利用 Docker containers 来管理系统环境。在这里,ROS 操作系统则负责进行快速的原型感知、运动规划和节点操纵。

ROS 是一套多用途机器人中间件,它可以将复杂的信息传递、时间、数据结构(如点云等)、线程和数据记录抽象化。

不过,Ubuntu 并不是一个专为量产版自动驾驶汽车而生的实时操作系统,它更擅长于设计原型算法并在真实环境中快速完成算法的测试。有了这些工具,研究人员在白板上记下的灵感才能更快的出现在道路上。

独立运行的 ROS 节点实质上是一个个小型程序,不过它们通常会有许多联系。

举例来说,一个节点可能会负责通过以太网接口读取来自激光雷达的原始数据,随后它会将其转化为 PointCloud2 信息。这条信息包含一组三维点和它们的元数据,它可以通过 ROS 网络“分发”出去,其他节点都可进行调用。

而调用这条信息的节点,可能会负责将得到的点云数据插入现有地图来完成定位,其他节点则可能会担负起运行算法来探测或追踪物体的任务。完成了各自的任务后,这些节点就会将相关信息公布在 ROS 网络上供动作规划算法等大型程序调用。

从整体来看,这就是 Voyage 自动驾驶出租车的运行方式。传感器(激光雷达、雷达、RTK GPS、摄像头、CAN 总线)负责采集原始数据,随后一系列小型节点对数据进行处理并输出控制信号,方便线控驾驶套件对油门、刹车和转向系统进行控制。

需要指出的是,在开发阶段使用 ROS 最有价值的部分是数据记录和回放。

当节点相互交流时,它会使用特殊的通道,而这些交流时的数据会被自动记录下来供后续分析。事实上,只要 Voyage 的自动驾驶出租车上路,它们行驶时每一秒的数据都会被记录下来。由于节点交流时使用了特殊的通道,因此就不会发生数据混乱,同时研究人员还能轻松对车辆进行分块分析。

有了这一利器,Voyage 就能在办公室重新模拟任何路况,原来那种驾驶汽车在路上“闲逛”、期待特定情况出现的测试方法一去不复返了。此外,研究人员还可直接在办公室测试新算法,因此节省了大量时间。

通常来说,执行车辆计算任务的都是 CPU,这是因为此类任务大多是单一的,目的是在遇到下一个问题前找到一个解决方案。同时,CPU 的多线程能力较强,它可以处理大量的数据。不过,有些问题还需要人工智能技术来处理,因此就不得不提到英伟达的 Titan X GPU。

只要你关注过自动驾驶汽车,肯定听说过人工智能在其中的应用。

Voyage 也十分青睐机器学习,如果一个问题能用神经网络来解决,它的团队肯定会钻研出突破口。眼下,Voyage 就在使用深度学习探测交通信号灯的变化情况,准确度已经相当高。

同时,分辨障碍物、区分建筑物和道路、确定转向角度等工作也由深度学习技术担纲。虽然 GPU 并不适用于所有工作,但它确实是工程师的得力助手。

动力

为 Voyage 整套系统提供动力的是搭载在福特蒙迪欧上的原版 12V 车载电池。这块电池会将电力输送到配电装置上去(PDU,拥有 9 个 12V 连接器的继电器开关)。

这套系统有自己的编程语言,每个开关都可以独立控制。同时,PDU 上还连接着一个 110V 的换流器,它能为 Linux Box 供电。

要想让 PDU 保持工作状态,车辆就不能停。Voyage 用的测试车是蒙迪欧混动版,如果车辆探测到驾驶员不在座位上,车身控制模块就会在 30 分钟后切断点火继电器。这样一来,PDU 和 Linux Box 也无法幸免,这样的设计确实让工程师们挠头。

为了“干掉”这个自动熄火功能,Voyage 的开发人员直接更改了该车的出厂设置。它更换了其中一个模块,以便让车辆能一直保持运行。同时,它还关掉了车门锁住时的报警声。

线控套件

Voyage 认为,在整个 SPA 流程中,线控驾驶套件代表的是 Act。简单来说,线控驾驶套件就是传感器/计算装置和驱动器的接口。

有了这个套件,计算设备完成数据处理后发送的指令就能得到贯彻执行,而上述所讲的驱动器就是油门、刹车踏板和方向盘等。

在现代车辆上,大多数的驱动器都已经与驾驶员的输入脱钩了。举例来说,当你踩下油门,其实只是动了两个电位器,它会发送 0-5V 的电压信号给引擎控制模块(ECM)。经过 ECM 的处理,驾驶员的意图才会被转换成相关信号发送给引擎并带动车辆完成加速等动作。

线控驾驶套件正处在 ECM 和油门踏板之间,如果这套系统停止工作,踏板上的电位器就会给 ECM 发送信号。

自动驾驶汽车是一个原件互相交织的复杂系统,Voyage 希望通过一系列讲解来提高技术的透明性以便推动此类车辆尽快普及。

雷锋网推荐阅读:

自动驾驶公司Voyage公布测试车外观,将很快启动路测

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...