软件体系结构

1、设计原则

在2004年和2005年的挑战之前,DARPA透露给竞争者们一个信息,四轮驱动的皮卡有通过整个赛程的能力。这些公告建议成功完成挑战的创新点在于设计出智能驾驶的软件,而不是设计独特的汽车。本公告及2004年比赛中的顶级选手指导了我们斯坦福大学赛车队的设计理念:将自动导航作为软件问题。

关于先前机器人架构的工作,Stanley的软件架构与著名的三层架构(Gat,1998年)有关联,虽然没有一个长期的象征性规划方法。许多指导原则证明了软件体系结构设计的必要性:

1.1、 控制和数据管道

在Stanley的软件系统中没有集中的主进程。所有模块按照自己的节奏执行,进程间没有同步机制。相反,所有的数据都是全局时间戳,并且在整合多个数据源时使用时间戳。该方法降低了死锁和处理延迟的风险。为了最大限度地提高系统的可配置性,几乎所有的进程间通信通过发布 - 订阅(publish-subscribe)机制实现。传感器到驱动器的信息单方向流动;相同的模块一次只接收到一个信息。在任何时间点上,管道中的所有模块都是同时工作的,从而最大限度地提高了信息吞吐量,最小化软件系统的等待时间。

1.2、状态管理

虽然软件是分布式的,但系统状态被局部保持着。系统中有许多状态变量。正常状态在局部监视器中;参数状态在参数服务器中;全局驱动模式保持在一个有限状态自动机中;汽车状态由状态估计模块估计。环境状态分解成多个地图(激光,视觉和雷达)。这些地图都被保持在专用模块中。结果是,所有其他模块将收到相互一致的值。确切的状态变量在后面的章节中讨论。所有的状态变量通过发布-订阅机制广播到软件系统的相关模块。

1.3、可靠性

软件非常注重机器人系统的整体可靠性。特殊模块监视各个软件和硬件组件,以及在检测到故障时自启动之类的组件。用这种方式,软件对某些事件是稳定的,如软件模块或停滞传感器的崩溃和挂起。

1.4、开发支持

最后,构造软件有助于系统的开发和调试。开发商可以轻松地运行软件的一个子系统,并且轻松在不同的处理器之间迁移模块。为了在开发过程中方便调试,记录下所有的数据。通过使用一种特殊的重放(replay)模块,软件可以在记录的数据上运行。开发一些可视化工具,使的汽车在运动期间或重播之前的记录数据时能够检查数据和内部变量。开发处理使用race-quality软件发布的一套具有严格规则的版本控制过程。总的来说,我们发现,开发过程中软件的灵活性对于长期自动操作的可靠性而言是非常基本的。

2、处理管道

比赛软件大约由30个并行执行的模块(图5)组成。系统被分解成六层:传感器接口,感知,控制,汽车接口,用户接口,以及全局服务。


图5 Stanley软件系统的流程图。软件大致分为六个主要功能组:传感器接口,感知,控制,汽车接口,用户界面。有许多相互交叉的服务,如过程控制器和记录模块。

2.1、传感器接口层包括许多软件模块,他们涉及接收和时间标记所有传感器数据。该层从每个激光传感器(75Hz),照相机(约12赫兹),GPS和GPS罗盘(10 Hz),和IMU和途锐CAN总线(100赫兹)接收数据。该层还包含一个数据库服务器,里面存储路程坐标(RDDF文件)。

2.2、感知层将传感器数据映射到内部模型。这层的主模块是无迹卡尔曼滤波(unscented Kalman filter,UKF)汽车状态估计器,它决定了汽车的坐标,方向和速度。三个不同的映射模块基于激光器、照相机和雷达系统构建一个二维(2D)环境地图。寻路模块使用激光驱动的地图寻找道路边界,使得车辆可以位于道路中间。最后,为了确定安全的驾驶速度,表面评估模块提取当前道路参数。

2.3、控制层负责调节汽车的方向盘,油门和制动响应。一个关键模块是路径规划,在方向盘和速度的定义域内它设置汽车的轨迹。这个轨迹传递给两个闭环轨迹跟踪控制器,一个用于方向控制,一个用于刹车和油门控制。两个控制器发送低级命令到驱动器,它能够忠实地执行规划的轨迹。控制层还设有一个顶层控制模块,作为一个简单的有限状态自动机。通过车载触摸屏或无线紧急制动,该模块确定整个汽车模块对用户命令的响应,并保持档位状态以防需要倒车。

2.4、汽车界面层作为机器人线控系统的接口。它包含汽车刹车,油门和方向盘的所有接口。它还有车辆服务器,一个调节许多系统组件电源的电路的接口。

2.5、用户界面层包括远程紧急制动和启动软件的触摸屏模块。

2.6、全局服务层对所有软件模块提供一些基本服务。命名和通信服务通过卡内基·梅隆大学的(CMU)进程间通信工具包(Simmons&Apfelbaum,1998年)。一个集中参数服务器维护所有汽车参数的数据并以一致的方式更新他们。每个系统部件的电力由电力服务器调节。另一个模块监控所有系统组件的运行状况并需要的时候重新启动单个系统组件。时钟同步通过一个时间服务器实现。最后,一个记录数据服务器的转储传感器,控制和诊断数据到磁盘以便重播和分析。

之后会更加详细地介绍Stanley的核心软件过程。然后本文用Stanley在比赛中的表现来进行总结。

Stanley-系列三相关推荐

  1. 后端如何发出请求_gRPC系列(三) 如何借助HTTP2实现传输

    本系列分为四大部分: gRPC系列(一) 什么是RPC? gRPC系列(二) 如何用Protobuf组织内容 gRPC系列(三) 如何借助HTTP2实现传输 gRPC系列(四) 框架如何赋能分布式系统 ...

  2. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  3. PMP考前复习题 系列三

    PMP考前复习题 系列三 转载于:https://blog.51cto.com/fishvsfrog/778280

  4. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  5. 前端工程师和设计师必读文章推荐【系列三十三】

    <Web 前端开发精华文章推荐>自2011年6月20号发布第一期以来,历经三年半,总共发布了30多期.今天这篇是2015年第2期(总第33期),希望你能在这里发现有用的资料. 梦想天空专注 ...

  6. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  7. Lync Server 2010的部署系列(三) lync批量导入用户联系人

    Lync Server 2010的部署系列(三) lync批量导入用户联系人 一.批量导入原理介绍 二.导入联系人操作指南 一.批量导入原理介绍 (介绍摘自http://ucworld.blog.51 ...

  8. 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...

    当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产 品可供参考,同时很多团队也会选择自主开发实现,而不管是 ...

  9. SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型

    原文:SQL Server 2008空间数据应用系列三:SQL Server 2008空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server ...

  10. 机器学习入门系列三(关键词:逻辑回归,正则化)

    机器学习入门系列三(关键词:逻辑回归,正则化) 目录(?)[+] 一逻辑回归 逻辑回归 假设表示 决策边界 代价函数 其他优化方法 多元分类 二正则化 一.逻辑回归 1.逻辑回归 什么是逻辑回归问题, ...

最新文章

  1. mysql自动增长恢复_mysql自动增长的有关问题,怎么恢复从1开始
  2. Science:AI领域那么多引人注目的「进展」,竟是无用功
  3. pandas中dataframe的构造(csv等结构化文件读取,字典读取)以及保存
  4. atmega8 例程:T1定时器 快速PWM
  5. 运行时错误76未找到路径怎么解决_自动化测试解决竞争问题?等待一下就行了~...
  6. 概要设计说明书(转载)
  7. IS环境下配置PHP5+MySql+PHPMyAdmin
  8. java国际化bundle_Java国际化(i18n)ResourceBundle类
  9. 学会这6个强大的CSS选择器,将真正帮你写出干净的CSS代码!
  10. D-Link 不止暴露固件镜像密钥,还被曝5个严重0day
  11. [Java] 蓝桥杯ADV-180 算法提高 陶陶摘苹果2
  12. conformal mapping的理解
  13. 数据库性能监控之联合索引使用
  14. hadoop2.6.集群搭建
  15. 图像基本处理(灰度化)
  16. 面试阿里,你必须知道的背景知识——双非上岸阿里巴巴系列
  17. 桑佛德大学计算机科学,美国桑佛德大学专业都有哪些?每个专业都有什么优势?一起来了解下吧?...
  18. 概率论与数理统计 基本概念
  19. OfficeExcel(1)
  20. 从坚果3的发布来看,锤子未来的发展将依然艰难

热门文章

  1. [Cacti] cacti监控mongodb性能实战
  2. JavaScript之arguments属性
  3. PowerTip of the Day-Finding Invalid Aliases
  4. 今日英语:out of the box
  5. ElasticSearch入门教程--安装
  6. 五种编程语言解释数据结构与算法——顺序表3(JavaScript与Python语言实现)
  7. 解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪
  8. JSP+Servlet+C3P0+Mysql实现的azhuo商城
  9. 02331 数据结构 学习小记 归纳总结
  10. php常用判断蜘蛛的代码