![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Apollo
文章平均质量分 64
weixin_49024732
这个作者很懒,什么都没留下…
展开
-
Apollo详解之感知模块——毫米波感知
在函数ContiArsDetector::Detect函数中可以看到,目前毫米波感知的内容为:位置、速度、朝向、运动状态、类型、置信度原创 2021-08-09 19:20:00 · 739 阅读 · 0 评论 -
Apollo详解之感知模块——摄像头识别
前言摄像头感知可以完成障碍物识别、车道线识别、红绿灯识别三种功能。首先读取摄像头感知配置文件,该配置文件目录modules/perception/production/conf/perception/camera/fusion_camera_detection_component.pb.txt,目前摄像头感知模块只支持双摄像头感知,按照官方推荐分别是6mm和12mm焦距的摄像头。初始化需要摄像头的内参和外参标定文件,相关标定文件在文件夹modules/perception/data/params下,内原创 2021-08-09 19:19:54 · 1140 阅读 · 0 评论 -
Apollo详解之路由模块——初步学习
前言路由模块的功能是,根据用户在高精地图中选取的一系列路径点,在拓扑地图中规划产生一条路径。各个路径点之间根据A*算法进行规划路径。原创 2021-08-04 19:04:51 · 423 阅读 · 0 评论 -
Apollo详解之感知模块——点云识别
前言Apollo感知模块激光雷达感知文档基本介绍激光雷达感知dag文件为modules/perception/production/dag/dag_streaming_perception_lidar.dag,其中分别存在DetectionComponent、RecognitionComponent、FusionComponent、V2XFusionComponent四个组件。DetectionComponent该组件的功能是处理激光点云消息,获得对应的障碍物信息LidarFrameMessage原创 2021-07-29 18:59:14 · 1670 阅读 · 0 评论 -
Apollo详解之定位模块——学习总结
前言经过几天对定位模块粗浅的学习,对该模块有了大致的了解,不过由于时间的原因,没有深入研究代码细节,更没有花时间研读相关论文,但是在此也有一些问题,用作记录,方便日后复盘。官方数据集无法跑通我是在Apollo官方网站下载的数据集,可是在跑MSF定位模块和NDT模块时,由于各种原因,无法跑通!msf_visualizer打开后黑屏RTK定位模块的功能只是将Gps和Imu数据组合NDT和MSF定位地图问题生成MSF定位地图时,需要Gps定位消息和激光点云消息才能生成用于MSF融合定位地图,但是该定原创 2021-07-23 23:12:07 · 1023 阅读 · 2 评论 -
Apollo详解之代码调试——在VSCODE中调试
前言在学习了解Apollo各个代码模块时,不可避免地要对各个模块进行调试,由于Apollo运行在容器当中,代码结构较为复杂,使用GDB调试工具时间成本高,因此使用VSCODE的调试插件对Apollo各个模块进行调试,可提高调试效率,更加直观的了解代码运行流程。该官方文档中提到了如何进行代码调试,但本人实际验证发现调试效率不高,因此萌发了使用VSCODE进行调试的想法。准备工作首先需要在VSCODE中下载插件Remote - Containers,该插件在VSCODE中可以使用户进入docker容器中原创 2021-07-23 22:53:53 · 5234 阅读 · 6 评论 -
Apollo详解之定位模块——MSF定位
前言代码分析MSFLocalizationComponent::Init该组件的初始化函数,msf定位组件也是通过命令行参数进行初始化,各参数均在modules/localization/conf/localization.conf文件中进行定义,外参文件:modules/localization/msf/params/gnss_params/ant_imu_leverarm.yaml作用未知leverarm: primary: offset: x: -0.5016原创 2021-07-23 21:11:59 · 2559 阅读 · 2 评论 -
Apollo详解之定位模块——生产多传感器融合定位模块所需的地图
前言参考如何生产多传感器融合定位模块所需的地图scripts/msf_simple_map_creator.sh脚本运行方法Usage: msf_simple_map_creator.sh [records folder] [extrinsic_file] [zone_id] [map folder] [lidar_type]cyber_record_parser该文件主要作用是读取record文件,将激光点云保存为pcd文件,其他话题信息保存在txt文件中。该程序会对record文件中的cl原创 2021-07-23 14:56:09 · 1039 阅读 · 0 评论 -
Apollo详解之定位模块——NDT定位
前言代码分析NDTLocalizationComponentNDTLocalizationComponent::Init该函数完成了NDT组件的初始化工作。该组件通过命令行参数gflag对相关参数进行初始化,各命令行参数的默认值可参考modules/common/adapters/adapter_gflags.cc和modules/localization/common/localization_gflags.cc,该组件读取命令行参数配置文件modules/localization/conf/lo原创 2021-07-22 20:34:06 · 1915 阅读 · 0 评论 -
Apollo详解之定位模块——RTK定位
前言Apollo的定位模块提供了三种定位方法,分别是RTK、NDT、MSF。所谓RTK定位,可参考百度百科RTK(Real Time Kinematic)实时动态测量技术,是以载波相位观测为根据的实时差分GPS(RTDGPS)技术,由基准站接收机、数据链、 流动站接收机三部分组成在基准站上安置1台接收机为参考站, 对卫星进行连续观测,并将其观测数据和测站信息,通过无线电传输设备,实时地发送给流动站,流动站GPS接收机在接收GPS卫星信号的同时,通过无线接收设备,接收基准站传输的数据,然后根据相对定位的原创 2021-07-20 23:01:19 · 4312 阅读 · 0 评论 -
Apollo详解之transform模块
前言坐标变换在机器人系统中十分重要,有关坐标变换,可参考ROS官方文档tf2。静态坐标变换静态坐标变换是指两坐标系之间的变换关系是固定的一种坐标变换,常用于表示汽车上两位置固定坐标系之间的变换关系,例如各个传感器之间的坐标变换。坐标变换使用的是一种树型的数据结构,即对于一个子坐标系来说,其只能存在唯一一个父坐标系的坐标变换关系。StaticTransformComponentApollo通过StaticTransformComponent来发布静态坐标变换,其作用是读取modules/trans原创 2021-07-20 11:40:38 · 1052 阅读 · 0 评论 -
Apollo详解之标定模块———标定读取
前言每个车型会在modules/calibration/data文件夹下有一个单独的文件夹,保存该车型的参数以及配置文件。在Dreamview中切换车型时,该文件夹下的所有文件会覆盖对应的文件,从而实现不同的车型拥有不同的配置。文件间的对应关系可参考modules/dreamview/conf/vehicle_data.pb.txt目录结构*_conf该文件夹保存各个驱动组件的配置文件*_params该文件夹保存各个硬件的YAML配置文件vehicle_param.pb.txt该车型的配置参原创 2021-07-19 22:35:44 · 604 阅读 · 0 评论 -
Apollo详解之标定模块———传感器设备标定
激光雷达标定方法激光雷达的标定是指激光雷达到组合导航之间外参的标定。激光雷达标定可参考:基于激光雷达的封闭园区自动驾驶搭建–感知设备标定Apollo LiDAR - IMU Calibration Service补充初始化外参文件当数据采集完成,需要进行预处理时,激光雷达的初始化外参配置可以在modules/dreamview/conf/lidar_to_gnss_preprocess_table.pb.txt文件中根据车辆实际进行修改,其具体定义在modules/dreamview/prot原创 2021-07-19 22:04:08 · 2089 阅读 · 0 评论 -
Apollo详解之标定模块———车辆动力学云标定
前言车辆云标定是通过采集车辆底盘油门踏板量、刹车踏板量、车辆速度、加速度作为车辆纵向动力模型的输入,通过机器学习的方式,生成相应车辆的踏板标定表,生成的标定表数据量大,精度高,提高车辆的控制精度。标定方法具体可参考Apollo官方文档:循迹搭建–车辆动力学云标定Vehicle Calibration Online Service本文对官方文档进行一些补充。表定表文件表定标文件的详细定义可参考modules/dreamview/proto/data_collection_table.proto原创 2021-07-18 21:48:21 · 1841 阅读 · 0 评论 -
Apollo详解之常用工具
plot_control将控制模块输出的油门刹车转向参数以图标的形式打印出来。使用方法运行bash modules/tools/plot_control/run.sh开始订阅控制消息,CTRL+c结束订阅,然后会显示这一段时间内油门刹车转向随时间的变化关系。realtime_test设定加速度阈值,车辆加速度超过该阈值时打印信息。使用方法./bazel-bin/modules/tools/plot_control/realtime_test --acc 1命令行选项--acc代表加原创 2021-07-18 17:04:36 · 621 阅读 · 0 评论 -
Apollo详解之地图模块———制作高精地图
前言Apollo自带了一些工具能够制作简单的高精地图在Lgsvl仿真器中制作高精地图Lgsvl仿真环境下相对地图的制作在没有实车的情况下,我们可以通过Lgsvl仿真器使用相对地图模块。本文使用的Apollo版本:6.0打开Lgsvl仿真器,选择Cube Town地图,进入仿真环境2.打开Dreamview,并确认Apollo与仿真器连接bash scripts/bootstrap_lgsvl.sh bash scripts/bridge.sh4.录制数据包开始录制cyber原创 2021-07-17 22:47:43 · 4616 阅读 · 8 评论 -
Apollo详解之定位模块———定位基础知识
定位技术分类目前定位技术主要有:基于电子信号定位。如GNSS航迹推算。如INS环境特征匹配基于电子信号定位GNSS简要介绍全球导航卫星系统GNSS是能在地球表面或近地空间的任何地点为用户提供全天候的3维坐标和速度以及时间信息的空基无线电导航定位系统。GNSS利用一组卫星的伪距、星历、卫星发射时间等观测量,同时还必须知道用户钟差,同时必须对收到4颗卫星才能准确定位。分类GPS。GPS是在美国海军导航卫星系统的基础上发展起来的无线电导航定位系统GLONASS。GLONASS是由原苏联国原创 2021-07-16 16:45:35 · 1233 阅读 · 0 评论 -
Apollo详解之驱动模块———组合导航驱动
前言组合导航驱动的作用是读取组合导航发送的数据,进行解析后得到相应的消息类型,并将其发布至相关话题。目前Apollo只支持星网宇达Newton-M2驱动。使用方法根据实际修改配置文件modules/drivers/gnss/conf/gnss_conf.pb.txt启动驱动cyber_launch start modules/drivers/gnss/launch/gnss.launch代码简要分析组合导航也是通过Cyber_RT框架的Component调用的,其包含一个成员RawStre原创 2021-07-15 16:04:47 · 2543 阅读 · 2 评论 -
Apollo详解之定位模块———导航设备硬件基础
本文以华测CHC® CGI-610组合导航为例主机安装方法在实际安装时,主机的GNSS1、GNSS2、4G接口分别通过数据线连接两个GNSS天线、4G天线,最后一个COM接口连接数据线,用于连接工控机以及外接电源。数据线接口定义19PIN 数据线主要包括 3 个 RS232,1 个 RS422,1 个 CAN,一个电源口,其中C_RS232:可通过网页配置选择输出组合导航融合数据(包括 GPCHC、GPGGA、GPRMC),最高输出频率 100HZ,默认波特率 230400,其与工控机连接。原创 2021-07-14 15:09:45 · 3426 阅读 · 2 评论 -
Apollo详解之驱动模块———激光雷达驱动
前言激光雷达驱动的作用就是通过UDP协议,接收激光雷达原始数据,并将其解析为点云数据,进行融合和运动补偿后将其发布至相应的话题。目前Apollo支持以下品牌的激光雷达:velodyne支持以下型号:HDL64E_S3SHDL64E_S3DHDL64E_S2HDL32EVLP16VLP32CVLS128hesai支持以下型号:HESAI40PHESAI64robosense支持以下型号:RS16RS32RSBPRS128各驱动的使用方法vel原创 2021-07-13 21:48:26 · 2587 阅读 · 1 评论 -
Apollo详解之高精地图模块——相对地图模块代码简要分析
前言本文主要关注相对地图模块的代码分析,有关相对地图的介绍和相关程序的使用方法可参考另一篇文章。Apollo详解之高精地图模块——相对地图模块navigatornavigator的作用是按一定规则解析路径文件里的内容,并将解析后得到的NavigationInfo发布至/apollo/navigation话题。可在modules/map/relative_map/proto/navigation.proto文件中查看发布消息NavigationInfo的定义message NavigationPat原创 2021-07-12 16:03:19 · 2009 阅读 · 2 评论 -
Apollo详解之高精地图模块——相对地图模块
前言由于种种原因,百Apollo的高精地图模块目前只高精地图的读取功能,不支持高精地图的制作,而Apollo的预测、规划模块需要高精地图提供的信息才可以正确运行,但高精地图制作过程复杂,成本高昂,这就提高了开发门槛。为了解决这一问题,百度Apollo2.5版本之后引入了基于相对地图(relative map)的导航模式(navigation mode),利用该模式可在没有高精地图的情况下,顺利实施测试道路上的实车调试。有关相对地图以及调试工具的内容可以参考官方文档,本文章不在赘述,文档链接:Apol原创 2021-07-11 21:11:04 · 3056 阅读 · 11 评论 -
Apollo详解之canbus模块——车辆底层协议调试
如何在Apollo中适配自己的车辆?这一部分在官方文档有详细的介绍,具体可以参考这里。车辆底层协议调试调试工具在完成以上的适配工作后,需要对车辆底层协议进行调试,测试车辆线控信号与车辆的实际功能是否相符,测试车辆的转向、加减速性能响应是否满足车辆的线控需求,测试车辆接管逻辑是否满足要求。apollo里为开发者提供了一个teleop的测试工具teleop,用于向车辆底层发送控制指令,方便开发者进车辆底层协议的调试,运行方法:bash scripts/canbus_teleop.sh其具体使用方原创 2021-07-08 22:04:42 · 2352 阅读 · 1 评论 -
Apollo详解之canbus模块——综述
canbus模块简要介绍can是汽车通信的标准协议,百度Apollo当中的canbus模块的功能就是接受并执行控制命令,并收集底盘状态作为给控制模块的反馈,也就是说,将控制消息通过canbus发送给车辆底层,并通过canbus从车辆底层获得消息。该模块默认订阅/apollo/control话题,获得控制消息转换为can报文发送给车辆底层,其消息类型在modules/control/proto/control_cmd.proto当中定义。此外,还可以在配置文件当中修改参数,将订阅的话题改为/apollo/原创 2021-07-05 20:20:54 · 915 阅读 · 0 评论 -
Apollo详解之canbus模块——代码简要分析1
CanbusComponent主要对象分析CanClientcan客户端CanClient用于开启can设备、接收与发送can报文,其作为基类接口,可以派生不同种类的can。目前Apollo支持的can类型有EsdCanClient、HermesCanClient、SocketCanClientRaw以及一个用于调试的FakeCanClient。其最主要的方法有:Start。开启can设备SendSingleFrame发送单个的can报文数据Send发送指定数目的can报文数据Receive接原创 2021-07-05 20:09:48 · 1007 阅读 · 0 评论 -
Apollo详解之canbus模块——代码简要分析2
CanbusComponent主程序分析CanbusComponent::InitCanbusComponent::Init是程序的入口函数,其功能是完成CanbusComponent的初始化。首先通过GetProtoConfig获得配置文件信息,并保存到canbus_conf_当中。默认的配置文件modules/canbus/conf/canbus_conf.pb.txt内容为:vehicle_parameter { brand: LINCOLN_MKZ max_enable_fail_a原创 2021-07-05 20:09:39 · 507 阅读 · 0 评论 -
百度apollo——启动脚本
前言我们都知道,启动Apollo容器和进入容器需要执行apollo/docker/scripts/dev_start.sh和apollo/docker/scripts/dev_into.sh脚本,通过学习这两个脚本的内容,可以了解Apollo容器的启动过程。dev_start.shdev_start.sh脚本的功能是对主机环境进行一系列的检查,拉取相关镜像,启动容器。在脚本的main函数当中可以看出,该脚本检查了主机系统、架构、设备等,并可以接受不同的参数进行相应的设置,具体可以通过参数--help查原创 2021-06-24 17:14:06 · 1155 阅读 · 0 评论 -
Apollo详解之bridge模块——udp_bridge_receiver_component
udp_bridge_receiver_component简要介绍udp_bridge_receiver_component的功能是接收UDP协议的帧,将其进行一定的处理后,发送给Apollo的话题。使用方法在modules/bridge/conf文件夹下,可以找到receiver的配置文件,其中可以修改发送的Apollo话题、监听端口号等信息。若要添加新的数据类型可参考 modules/bridge/README.md文件。数据接收在其头文件当中,可以看到与udp_bridge_sender_c原创 2021-06-13 17:52:12 · 684 阅读 · 2 评论 -
Apollo详解之bridge模块——udp_bridge_sender_component
udp_bridge_sender_component简要介绍udp_bridge_sender_component的功能是订阅Apollo的话题,并将话题中的protobuf数据发送给目的IP地址。使用方法在modules/bridge/conf文件夹下,可以找到对应的配置文件,修改其中的参数,定义目标IP地址,端口号,protobuf数据类型。若要添加新的数据类型可参考 modules/bridge/README.md文件。udp_bridge_sender_component简要分析该文件定原创 2021-06-13 16:42:14 · 1000 阅读 · 1 评论