快速上手百度Apollo开发的一点经验之谈

快速上手百度Apollo开发的一点经验之谈

附赠自动驾驶最全的学习资料和量产经验以及1000T的资源分享:链接

本文

主要面向由ROS快速转向Apollo CyberRT框架的开发者,是一份QuickStart手册。因为是从ROS出发,所以需要读者具备一定的ROS基础。

预备知识

  1. Linux

  2. ROS

  3. C++

简而言之,会Linux命令行操作,熟悉ROS框架,了解基本C++类对象语法。

CyberRT v.s. ROS

CyberRT是参考ROS开发的,所以将他们联系起来看,会比较好地理解和上手apollo的开发。

基本概念

首先我们来看下两者在开发相关的一些主要概念上的异同。

CyberRTROSDescription
componentpackage组件/包,都是构建项目的最小单元
nodenode节点,一个组件/包里可包含多个节点
channeltopic通道/话题名,用于节点间通信,一个节点可包含多个通道/话题
messagemessage消息名,定义了数据传输的格式,一个通道/话题对应一种消息
Reader/WriterSubscriber/Publisher读写器/发布订阅器,都是实现节点通信的具体接口

另外 Services 与 Parameters 等概念也类似,因为Service/Client通信模型用的少就不赘述了。

工程目录

了解以上概念后,现在我们从两者的工程目录来看,就比较清晰了。

CyberRTROSDescription
confconfig配置文件
dag/launchlaunch启动文件
protomsg消息文件
<node…>nodes源码文件
BUILDCMakeLists.txt编译文件
test*test测试文件

注: 其中<node…>是CyberRT一个组件目录中一些具体节点名,ROS中把他们都放在一个目录nodes里了

熟悉ROS的朋友可以很明显看出两者其实非常类似,差异主要有这两点:

1. Apollo引入了google的protobuf取代了ROS原有的msg消息定义

2. Apollo采用Bazel编译工具来管理C++依赖环境,而不是Cmake

所以从一个ROS开发者切换到CyberRT下,需要简单了解下google的gflags、glog、gtest以及protobuf用法,还有就是Bazel的基本语法。

为此我在本文最后梳理了一份参考资料供大家阅读。

开发工具

最后在开发工具上,Apollo其实也准备了许多ROS中比较常用的工具。因为开发必然会用到,所以我也简单提下。

CyberRTROSDescription
cyber_visualizerRviz用于消息的可视化
cyber_monitorrostopic/rqt查看实时消息数据
cyber_recorderrosbag录制/回放消息数据

参考资料

  1. 官方关于CyberRT的README,其中 Quickstart 、 API 与 Developer Tools 这三个是必看,也最好跟着做下,可以很快的了解CyberRT框架。

  2. google关于protobuf的Guide,其中Defining A Message Type这段内容是必读的,其他消息嵌套等用法可以等用到了再来查阅。 另外我们可以结合apollo开放平台文档里的数据格式那栏内容来加深我们对Apollo消息格式的理解。

  3. 关于gflags的简介,这篇说明是比较简俗的,内容不多可以看完。

  4. 关于glog的简介 ,可以先简单浏览下。日志输出在后期调试还是比较重要的,完整的说明到时用到了,可在google的github仓库里找到glog的README细看。

  5. gtest的入门手册,其中Googletest Primer必看,其他内容可到时再查。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值