常见问题,Apollo团队开发控制算法是在什么环境下?

问:
你好,我想问一下Apollo团队开发控制算法是在什么环境下?
答:
控制算法是通用的,车辆动力学模型目前Apollo还没有,需要借用第三方的仿真器来做控制参数的调整。比如可以使用sumulink、Carsim等。如果你想在C++环境下开发控制算法,或许你可以连接控制器到Carsim中,参考文件见:https://www.carsim.com/products/supporting/vehiclesim/vs_api.php。或以C++的格式重新实现车辆动力学,比如微软、Udacity、gazebo和torcs做的。

Apollo常见问题[适配林肯的车型是哪个][canbus下面的teleop那个程序是什么]

问:

请问Apollo支持林肯混动版车型还是油动版车型,还是两个车型都支持?

答:

Apollo 目前适配的林肯车型是MKZ混动,因为只有该车型混动版的制动系统才支持线控。


问:

请问 canbus 下面的 teleop 那个程序怎么用,它看起来是要遥控什么东西的?

答:

teleop 是用来调试方向盘刹车的,可以通过脚本scripts/canbus_teleop.sh 运行工具。

 


问:

请教个问题:源码中直接使用了libcaffe.so,请问这个caffe的库是使用的哪个版本的源码?Apollo有没有对caffe进行改动?我们使用原版的caffe来继续使用的Apollo训练好的模型吗?

答:

开发者您好,我们有对caffe改动 ,第三个问题暂时是不可以的。


文章来自公众号: Apollo开发者社区

常见问题[LiDAR定位,交通信号灯检测模块]

问:

能否介绍下Apollo新增lattice planner 决策规划算法?答:

Lattice Planner是基于斯坦福大学在DARPA挑战赛中使用过的一种路径规划算法,优势在于更好地理解交通情况,降低规划的复杂性,高速情况表现优异。感兴趣的同学可以参考Moritz Werling等人所著论文:

<Optimal Trajectory Generation for Dynamic Street Scenarios in a Frene´t Frame>

https://pdfs.semanticscholar.org/0e4c/282471fda509e8ec3edd555e32759fedf4d7.pdf


问:

1. Apollo2.0的交通信号灯检测模块可以单独运行吗?2.怎么搭建Apollo2.0的caffe框架 (前提是不在docker中运行,感知模块的libcaffe.so.1.0 不是官方版本caffe,这里面应用了额外的层caffe/layers/pyramid_layers.hpp )?

答:

1.可以单独运行,需要做一些网络层的兼容适配。

2.由于目前caffe这部分改动我们没有开源,所以外部用户没法在docker外搭建完全一样的caffe环境,libcaffe.so.1.0 这这个类库只能运行在docker环境内。我们建议如果在非docker环境中运行,你可以构建自己的网络层;

对于特征金字塔网络(Feature Pyramid Networks ),有一篇论文推荐你参考使用(可能跟感知团队的实现有差异,但可以帮助理解并构建自己的网络层);

https://arxiv.org/abs/1612.03144


问:control/controller/mpc_controller有没有参考文献或者说明文档?

答:

MPC controller :LQR-Based lateral controller, to compute steering target.For more details, please refer to “Vehicle dynamics and control.”Rajamani, Rajesh. Springer Science & Business Media, 2011.

问:

1.Apollo2.0的定位模块中LiDAR定位使用的预建地图是LiDAR-SLAM地图吗?2.地图的车端存储和加载有没有可参考的文档资料?

答:

1.Apollo 2.0提供了定位地图的格式定义,以及地图生产代码。需要提供的是PCD点云数据以及对应的姿态(6-DoF Pose),pcd对应的姿态可通过各种方式得到,如LiDAR-SLAM,RTK组合导航解等;Apolo 2.0提供了一种简单的制图方法:1. 录制velodyne64和RTK组合导航解对应的topic;2. 通过我们提供的离线解包程序解出并保存点云PCD文件,每帧PCD对应的时间戳和RTK组合导航解的姿态文件。可参考/apollo/scripts/msf_monitor_data_exporter.sh中的data_exporte函数。3. 根据每帧PCD的时间戳对RTK组合导航解进行插值得到每帧PCD对应的位姿(考虑velodyne64相对于NovAtel外参)。4. 根据我们提供的制图脚本进行制图,使用方式详见:Multi-sensor Fusion Localziation文档的Generate Localization Map部分。以上2,3步骤目前我们还没提供完全自动化的工具,用户可以自己编写相关代码处理。近期我们也会在代码库中加入一键式制图工具,请留意;

2.目前没有文档资料。Apollo 2.0代码中的base_map(apollo/modules/localization/msf/local_map/base_map/)提供了定位地图的IO读写、地图node内存管理、预加载及调度、地图坐标系变换等基础功能,学习代码应该是最方便快捷的方式 。


摘自公众号: Apollo开发者社区

Apollo常见问题[OpenDRIVE,Caffe,障碍检测]

问:Apollo用的是标准的OpenDRIVE吗?还是自己定义的格式?

答:

Apollo OpenDRIVE规范是在标准OpenDRIVE规范基础上结合百度在自动驾驶方面的技术积累和实践经验改造而成的,相对于标准OpenDRIVE规范,在数据表达上更加简单易行,对自动驾驶开发者也更加友好。


问:障碍检测中数据融合的卡尔曼滤波的算法变形的依据是什么?数据融合上,我有两个问题:

1.perception模块 障碍检测中的融合部分用到了卡尔曼滤波,但这里对卡尔曼滤波的公式作了变形。在更新噪声协方差时标准卡尔曼:

P=(I-K * H) * P_
Apollo:
P=(I-K * H) * P_ * (I- K * H).transpose + K * R * K.transpose
其余四个公式未做任何变化,请问能给出变形的依据或者论文么?2.该融合用得是标准卡尔曼。对 Lidar 和 Radar 的数据处理貌似使用了相同的观察矩阵 H。那 Radar 模块中应该对数据进行了从非线性到线性的变换。 这样提前处理优势显而易见,方便了滤波器的程序的编写。

我的问题是,这样对滤波器的最终效果会带来怎样的影响呢?

答:

1.可以参考卡尔曼滤波的维基百科: https://en.wikipedia.org/wiki/Kalman_filter. 如果K是最佳卡尔曼增益,则可以简化。

2.我们使用的大陆毫米波雷达提供原始位置(x,y)和相对速度信息(x,y),你可以在毫米波雷达模块中找到一些细节,或者查看modules/drivers/conti_radar目录文件。

为了扩展性,我们从传感器检测器获得相同的状态,并使用相同的H。事实上,标准卡尔曼滤波器在我们的系统中并不是一个耗时的子模块。如果你可以很好地理解传感器的状态,你可以尝试使用简化的状态。


问:

Apollo官网显示集成了Caffe,请问TensorFlow的模型能在Apollo中运行吗?怎么实现?谢谢!

答:

Apollo目前主要是感知模块在使用caffe框架,TensorFlow模型“目前”是不能在Apollo中“直接”运行的。实现的方法提供两种可能性,一种是将TensorFlow库集成到Apollo中,另一种是模型转换后可以用Apollo中的Caffe库,两种方式都需要自己实现预测代码。

(TensorFlow和Caffe模型可以互转,如果开发者用的是标准的Caffe库没有自己开发layer,转过来可以跑,但是网络最后的输出layer名称、含义等等都可能不一样,用我们的预测代码跑没有意义。)