Apollo
文章平均质量分 83
知行合一2018
这个作者很懒,什么都没留下…
展开
-
Apollo 7.0 PiecewiseJerkSpeedOptimizer(分段加加速度优化器)代码解读
使用QP来求解速度曲线。Apollo 3.0中的使用多段五次多项式连接的样条曲线(每2s使用一个五次多项式拟合,8s时长的轨迹共有8/2=4段五次多项式。实际求解过程中,为了降低计算量,实际求解中仅使用了3段多项式来求解[0, 6]s区间内的速度曲线。这些五次多项式隐含的控制点和节点向量满足样条曲线的迭代表达式就形成了五次多项式样条曲线)来拟合速度,使用二次规划来优化五次多项式的系数,并使用库来求解,之后再使用求解出的多项式系数来确定自变量为时间,因变量为的五次多项式...原创 2022-08-07 16:13:18 · 1036 阅读 · 0 评论 -
在国内加速下载Apollo docker镜像的方法
因为各种原因,国内访问Github速度奇慢无比,下载Apollo docker镜像很难成功,除了使用代理外,有没有其他办法?以下博客:https://blog.csdn.net/weixin_44973419/article/details/109128603给出了较好的方案,感谢原作者。...原创 2022-05-01 12:47:02 · 1646 阅读 · 0 评论 -
Apollo项目导航模式下的坐标转换研究
严正声明:本文系作者davidhopper原创,未经许可,不得转载。Apollo项目导航模式下,规划模块输出的轨迹点使用FLU车身坐标系(见我的另一篇博客《Apollo项目坐标系研究》),在进行当前帧规划前,需要将前一帧未行驶完轨迹点的车身坐标转换为当前帧的车身坐标,并在其中找到最为匹配的点,作为当前帧的规划起点;若在指定的误差范围内找不到匹配点,则以当前车辆位置作为新的规划起点。该过程涉及...原创 2019-08-27 18:18:13 · 2833 阅读 · 0 评论 -
Apollo 3.5 Planning模块源代码分析
###严正声明:本文系作者davidhopper原创,未经允许,严禁转载!我于2018年1月初写过一篇博客《Apollo Planning模块源代码分析》,当时的Apollo项目基于ROS实现任务调度与模块通信。2019年1月发布的Apollo 3.5基于百度自研的实时计算框架Cyber RT完成任务调度与模块通信,并且Planning模块的内部架构也发生了重大变化。因应上述变化,本文对Plan...原创 2019-05-08 08:59:15 · 15691 阅读 · 5 评论 -
Apollo项目Routing模块A*算法剖析
严正声明:本文系作者davidhopper原创,未经许可,不得转载。一、A*算法基本原理广义上而言,A*(A-Star)算法就是一种动态规划算法,只不过A*算法在每步迭代计算时作出了更为严格的限制。关于动态规划,可以参考我的另一篇博客:《动态规划及其在Apollo项目Planning模块的应用》。A*算法基于代价函数f(n)=g(n)+h(n)计算最短路径,其中f(n)是节点n从初始点到目标...原创 2019-02-18 17:58:43 · 4954 阅读 · 1 评论 -
Apollo项目代码迁移到Cyber RT框架(Apollo 3.5以上版本)的方法
严正声明:本文系作者davidhopper原创,未经许可,不得转载。Apollo 3.5彻底摒弃ROS,改用自研的Cyber RT作为底层通讯与调度平台,实时性与灵活性更为突出。关于Apollo 3.5的构建方法,可参见我的一篇博客。关于Apollo 3.5各功能模块的启动过程解析,可参见我的另一篇博客。本文阐述Apollo项目代码迁移到基于Cyber RT框架(Apollo 3.5版)的...原创 2019-01-07 18:01:15 · 14024 阅读 · 11 评论 -
为Apollo项目安装NVIDIA显卡驱动的有效方法
严正声明:本文系作者davidhopper原创,未经许可,不得转载。虽然本文仅针对ThinkPad P50s型笔记本电脑进行介绍,但本文方法适用于所有机型,作者已在另外的台式机上进行过成功安装。相信使用过Apollo的同学都知道,如果使用Apollo官方推荐的方法:wget http://us.download.nvidia.com/XFree86/Linux-x86_64/375.51/N...原创 2019-01-03 18:02:48 · 4407 阅读 · 17 评论 -
Apollo本地Docker image保存与加载的方法
严正声明:本文系作者davidhopper原创,未经许可,不得转载。有时我们需要修改Apollo默认的Docker image,那么如何对其进行保存与加载呢?下面逐一介绍之。一、保存本地Docker image的方法首先确保当前需要保存的Docker image处于活动状态(未被关闭),使用如下命令保存:# 查看当前活动的Docker imagedocker ps# 保存本地Docke...原创 2019-01-03 17:08:15 · 3991 阅读 · 0 评论 -
Apollo 3.5 各功能模块的启动过程解析
Apollo 3.5彻底摒弃ROS,改用自研的Cyber作为底层通讯与调度平台。本文对Apollo 3.5 各功能模块的启动与关闭进行解析,希望给感兴趣的同学带来一定的帮助。一、DreamView模块启动过程启动脚本文件scripts/bootstrap.sh的start文件中可执行文件配置项定义如下:function start() { ./scripts/monitor.sh s...原创 2018-12-27 17:33:03 · 23104 阅读 · 21 评论 -
Apollo 3.5的构建方法
Apollo 3.5彻底摒弃ROS,改用自研的Cyber作为底层通讯机制。另外,随着Apollo仓库中大文件数量增多,为提高代码更新效率,Apollo改用Git LFS来管理代码仓库。可以说,Apollo 3.5是一个全新的代码仓库,与之前的版本几乎不兼容。本文简介Apollo 3.5的构建方法,希望给感兴趣的同学带来一定的帮助。一、安装Git LFS# Required for Ubuntu...原创 2018-12-20 11:15:14 · 19967 阅读 · 40 评论 -
Apollo项目类对象创建之工厂模式分析
前段时间写过这样一篇文章,因为CSDN的一个Bug,把原有文章覆盖了,咨询版务人员得知无法恢复,只能凭记忆再写一遍,供自己和可能需要帮助的人参考借鉴。原创 2018-01-29 18:36:10 · 4734 阅读 · 2 评论 -
Apollo项目坐标系研究
声明:本文系作者davidhopper原创,未经允许,不得转载! 百度Apollo项目(https://github.com/apolloauto)用到了多种坐标系,其中帮助文档提及的坐标系包括:全球地理坐标系(The Global Geographic coordinate system )、局部坐标系—东-北-天坐标(The Local Frame – East-N原创 2018-01-25 22:52:32 · 51082 阅读 · 38 评论 -
Apollo项目消息适配器及消息回调函数分析
严正声明:本文系作者davidhopper原创,未经许可,不得转载。 Apollo项目在处理消息循环时应用了C++设计模式之适配器模式(Adapter Pattern)。适配器其实很好理解,网上经常提到的一个例子:中国电压标准是220V,美国电压标准是110V,中国电器要在美国使用,必须借助一个变压器,这个变压器就是适配器。另外一个例子:中国插座标准是扁孔,欧洲插座标准是圆孔,中国的电源插头到欧...原创 2018-02-13 14:18:48 · 4182 阅读 · 4 评论 -
Apollo Planning模块源代码分析
严正声明:本文系作者davidhopper原创,未经允许,严禁转载!阿波罗项目(https://github.com/ApolloAuto/apollo)规划(Planning)模块位于命名空间:apollo::planning,其作用在于构建无人车从起点到终的局部行驶路径,具体而言,就是给定导航地图、导航路径、当前定位点、车辆状态(包括:位置、速度、加速度、底盘)、 周边目标的感知及预测信息...原创 2018-01-26 21:00:59 · 37790 阅读 · 19 评论 -
使用Visual Studio Code编译Apollo项目
严正声明:本文系作者davidhopper原创,未经许可,不得转载。 说明:本文已过时,请参阅我另一篇博客。 Apollo项目非常不错,但每次修改完代码都需要在命令行中编译,这让人很不爽。我有点追求完美,必须想办法让Apollo项目能在IDE中编辑、构建。 Visual Studio Code(以下简称VSCode)是微软第一款支持Linux的轻量级代码编辑器,其功能介于编辑器与IDE之间,...原创 2018-02-22 22:37:04 · 5943 阅读 · 1 评论 -
动态规划及其在Apollo项目Planning模块的应用
严正声明:本文系作者davidhopper原创,未经许可,不得转载。 动态规划的英文为:Dynamic Programming,这里的“Programming”并非指编写程序代码,而是指一种表格计算法(a tabular method),即基于表格查询的方法计算得到最优结果,因此中文将其翻译成“动态规划”不甚严谨,当然有些垃圾文献将其翻译成“动态编程”就更是无稽之谈了。关于动态规划算法的原理,M...原创 2018-03-04 16:36:29 · 14472 阅读 · 13 评论 -
对Github中Apollo项目进行版本控制的方法
本文介绍对Github中Apollo项目进行版本控制涉及到的各方面内容。本文使用的操作系统为Ubuntu 16.04。一、在Github注册一个账号打开Chrome或其他浏览器,进入Github主页:https://github.com/,选择“Sign Up”,填写相关信息,具体操作就不用介绍了吧。我在Github的账号为:davidhopper2003。二、安装Git按...原创 2018-02-26 14:22:45 · 6323 阅读 · 0 评论 -
在Docker内使用GDB调试Apollo项目的核心转储(Core Dump)文件
严正声明:本文系作者davidhopper原创,未经许可,不得转载!在Linux系统中,若程序异常终止,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为叫做Core Dump(中文一般译为“核心转储”)。实际上,除内存信息之外,核心转储还会记录程序的一些关键运行状态,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息等。核心转储对于程序员调试程序非常有益,因为有些程序错误...原创 2018-03-19 22:31:10 · 3886 阅读 · 2 评论 -
使用Visual Studio Code编译、调试Apollo项目
严正声明:本文系作者davidhopper原创,未经许可,不得转载。 说明: 1. 我已将本文所述的配置文件上传到Apollo项目的GitHub仓库,大家直接下载使用即可。 2. 我之前已写过一篇博客《使用Visual Studio Code编译Apollo项目》(https://blog.csdn.net/davidhopper/article/details/79349927),那篇文...原创 2018-04-04 17:28:16 · 14819 阅读 · 13 评论 -
Apollo 2.5版导航模式的使用方法
Apollo 2.5版导航模式的使用方法严正声明:本文系作者davidhopper原创,未经许可,不得转载。 说明:本文已上传到GitHub网站Apollo项目的帮助文档中。Apollo项目以其优异的系统架构、完整的模块功能、良好的开源生态及规范的代码风格,受到众多开发者的喜爱和好评。不过在Apollo之前的版本中,感知、预测、导航、规划模块均依赖于高精地图,而高精地图的制作方法繁琐且...原创 2018-04-19 06:37:50 · 8676 阅读 · 31 评论 -
Apollo项目线程池技术浅析
Apollo项目线程池技术浅析严正声明:本文系作者davidhopper原创,未经许可,不得转载。1 线程池技术简介1.1 线程池的定义线程池是一种多线程形式,首先开启指定数量的后台工作线程,并将多个待执行任务添加到任务队列,然后将队列中的任务逐个交给空闲的工作线程执行(如下图所示)。 1.2 使用线程池的原因创建/销毁线程伴随着操作系统的资源开销,过于频繁的创...原创 2018-05-17 16:58:20 · 3264 阅读 · 0 评论 -
使用GDB调试Apollo单元测试程序
严正声明:本文系作者davidhopper原创,未经许可,不得转载。 说明:本文修改后的代码已上传到GitHub网站Apollo项目中。Apollo使用Google Test框架撰写单元测试用例。如果某个测试用例通不过,仅借助日志信息,很难弄清楚详细的失败原因。本文介绍使用GDB调试单元测试用例的方法,可供各位同学撰写单元测试代码提供一定的帮助。一、撰写单元测试用例以Relativ...原创 2018-09-10 14:56:56 · 4430 阅读 · 0 评论 -
Apollo Routing模块源代码分析
严正声明:本文系作者davidhopper原创,未经允许,严禁转载!Apollo Routing模块位于命名空间:apollo::routing,其作用在简单意义上可以理解为实现无人车软件系统内部的导航功能,即在宏观层面上指导无人车软件系统的规划(Planning)模块按照什么样的道路行驶,以便顺利完成从起点到终点的行驶。值得指出的是,这里的路由寻径虽然在一定程序上类似传统导航,但其在细节上紧原创 2018-01-27 22:17:30 · 10839 阅读 · 3 评论