apollo介绍之cyber设计

本文深入探讨了Apollo中cyber设计的原理和实现,包括需求分析、系统设计、多节点通信、资源调度、Linux内核优化等方面。重点介绍了如何设计一个稳定、灵活、可调试的分布式计算系统,以及如何处理无人驾驶线程调度,以确保实时性和性能。此外,还讨论了软件复用、快速测试和云平台集成的重要性。
摘要由CSDN通过智能技术生成

apollo介绍之cyber设计

附赠自动驾驶最全的学习资料和量产经验:链接

How do you design cyber?

无人驾驶车借鉴了很多机器人领域的技术,我们可以把无人车看做一个轮式机器人。Apollo的计算平台之前一直采用的是ROS,3.5版本用Cyber替换了这一架构,那么如果让我们来重新设计这一个框架,我们需要支持哪些特性呢,我们如何去实现它呢?

  • 我们需要一个什么样的系统?

  • 如何保证系统的稳定性和灵活性?

  • 如何来调试和维护这样复杂的系统?

需求分析

我们先借鉴下ROS的思路:

分布式计算 现代机器人系统往往需要多个计算机同时运行多个进程,例如:

  1. 一些机器人搭载多台计算机,每台计算机用于控制机器人的部分驱动器或传感器;

  2. 即使只有一台计算机,通常仍将程序划分为独立运行且相互协作的小的模块来完成复杂的控制任务,这也是常见的做法;

  3. 当多个机器人需要协同完成一个任务时,往往需要互相通信来支撑任务的完成;

单计算机或者多计算机不同进程间的通信问题是上述例子中的主要挑战。ROS为实现上述通信提供两种相对简单、完备的机制。

软件复用 随着机器人研究的快速推进,诞生了一批应对导航、路径规划、建图等通用任务的算法。当然,任何一个算法实用的前提是其能够应用于新的领域,且不必重复实现。事实上,如何将现有算法快速移植到不同系统一直是一个挑战,ROS 通过以下两种方法解决这个问题。

  1. ROS 标准包(Standard Packages)提供稳定、可调式的各类重要机器人算法实现。

  2. ROS通信接口正在成为机器人软件互操作的事实标准,也就是说绝大部分最新的硬件驱动和最前沿的算法实现都可以在ROS中找到。例如,在ROS的官方网页上有着大量的开源软件库,这些软件使用ROS通用接口,从而避免为了集成它们而重新开发新的接口程序。

综上所述,开发人员将更多的时间用于新思想和新算法的设计与实现,尽量避免重复实现已有的研究结果。

快速测试 为机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、经费有限等因素,不一定随时有机器人可供使用。ROS提供两种策略来解决上述问题。

  1. 精心设计的ROS系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以使用模拟器替代底层硬件模块,独立测试顶层部分,提高测试效率。

  2. ROS 另外提供了一种简单的方法可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测试机会。例如,可以记录传感器的数据,并通过多次回放测试不同的数据处理算法。在 ROS 术语中,这类记录的数据叫作包(bag),一个被称为rosbag的工具可以用于记录和回放包数据。

  3. 用户

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值