您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > ROS在自动驾驶的探索和实践
ROS在自动驾驶的探索和实践何玮•背景介绍•Apollo中ROS的改进-通信性能优化-去中心化网络拓扑-数据兼容性扩展•Apollo框架使用目录自动驾驶–一个复杂的系统性工程背景介绍对框架有哪些要求?•高效的开发支持•模块灵活配置•丰富的调试工具背景介绍•开发工具包-完整的包管理和工程结构-庞大的基础库-多语言接口支持•计算调度模型-消息驱动的运行模型-抽象的通信接口-自定义的消息格式•调试工具-可视化的调试工具-消息查看、存储、回放工具ROS主要工具包背景介绍为什么是ROS?•大数据量传输性能瓶颈•中心化的网络存在单点风险•数据格式缺乏后向兼容ROS是否能满足工程需求?背景介绍•背景介绍•Apollo中ROS的改进-通信性能优化-去中心化网络拓扑-数据兼容性扩展•Apollo框架使用目录自动驾驶大量使用传感器引发很大的传输带宽需求通信性能优化ROSSocketSubscriberNodePublisherNodepublish_queuesubscribe_queuecallbacks_queueSerializeDeserializecopyROSSHMSubscriberNodePublisherNodepublish_queue&subscribe_queuecallbacks_queueSerializeDeserializecopy原生ROSSocket通信无人车ROS共享内存通信共享内存能减少传输中的数据拷贝,显著提升传输效率通信性能优化单路传感器消息有多个消费者时负载更是成倍增长x2180MB/Sx3…通信性能优化CameraDriverObstacleDetectionLocalizationTrafficLightRecognitionGUITools…共享内存可以有效满足一对多的传输场景通信性能优化…SharedMemoryObstacleDetectionLocalizationTrafficLightRecognitionGUIToolsCameraDriver180MB/S80116106323063033932320477601000200030004000500060001K500K1M5MLatency(us)MessageLengthSHMMSG04812161234Throughput(GBps)NumberofSubscribersMSGSHM引入共享内存(SharedMemory),避免数据复制:•消息通信时延降低约1-2倍•测试1:1吞吐均值可达5.5GB/s,1:4吞吐均值可达12GB/s•CPU资源占用率在共享内存模式下约降低30%90296149423211817653775898002000400060008000100001K500K1M5MCPU占用MessageLengthMSGSHM通信性能优化——效果•背景介绍•Apollo中ROS的改进-通信性能优化-去中心化的网络拓扑-数据兼容性扩展•Apollo框架使用目录ROS以Master为中心构建hybridp2p拓扑网络•优势:-节点容错性强-不同语言模块隔离-模块开发低耦合•缺点:-过度依赖Master单点-缺乏异常恢复机制去中心化的网络拓扑PublisherSubscriberROSMaster①AdvertiseSubscribe②PubUpdate④RequestTopicTransport⑤③ROS节点建立连接的过程示例ComputerAComputerBROSMasterNodeNodeTopicNodeTopicNodeNodeTopicMaster作为拓扑网络的中心,一旦异常将影响整个网络去中心化的网络拓扑使用RTPS服务发现协议实现完全的P2P网络拓扑去中心化的网络拓扑使用RTPS服务发现协议实现完全的P2P网络拓扑去中心化的网络拓扑PublisherSubscriberNodeNodeSub节点启动,通过组播向网络注册RegisterNode①使用RTPS服务发现协议实现完全的P2P网络拓扑去中心化的网络拓扑PublisherSubscriberNodeNode通过节点发现,两两建立unicast②使用RTPS服务发现协议实现完全的P2P网络拓扑去中心化的网络拓扑PublisherSubscriberNodeNode向新加入的节点发送历史拓扑消息Advertise③使用RTPS服务发现协议实现完全的P2P网络拓扑去中心化的网络拓扑PublisherSubscriberNodeNode收发双发建立连接,开始通信RequestTopic④•背景介绍•Apollo中ROS的改进-通信性能优化-去中心化的网络拓扑-数据兼容性扩展•Apollo框架使用目录Message是ROS中描述软件组件接口的语言数据兼容性扩展PublisherSubscriberTopicSubscriberMessageAMessageAMessageBROS使用msg描述文件定义模块间的消息接口•数据结构定义•消息接口抽象描述文件•对应语言接口代码生成•C++,Python…•基础message定义•Sensor_msgs•Navigation_msgs•Geomertry_msgs数据兼容性扩展My_package/msg/example.msg.h.py.javastringfield1int8field2boolfield3Other_pkf_msg/customfield4接口升级后,不同版本的模块难以兼容PublisherSubscriberstringnamestringtypeint8numint64timestringnamestringtypeint8numMD5mismatch数据兼容性扩展接口升级后,历史数据也面临着无法使用的问题DataV1.0DataV2.0OnboardSystemV1.0OnboardSystemV2.0数据兼容性扩展protobuf能够很好地支持向后兼容PublisherSubscriberrequiredstringname=1requiredstringtype=2requireduint8num=3optionaluint64time=4backwardcompatiblerequiredstringname=1requiredstringtype=2requireduint8num=3数据兼容性扩展protobuf消息格式与ROS的深度集成•手动编译维护proto文件的编译、链接、部署•工程中嵌套使用PB格式消息•调试工具解析乱码原生ROS•直接编译proto消息,学习成本低•工程中直接使用PB格式消息•调试工具直接解析显示ApolloROS数据兼容性扩展•背景介绍•Apollo中ROS的改进-通信性能优化-去中心化的网络拓扑-数据兼容性扩展•Apollo框架使用目录Apollo开放平台代码库百度AI开放平台
本文标题:ROS在自动驾驶的探索和实践
链接地址:https://www.777doc.com/doc-5267892 .html