【百度Apollo】探索自动驾驶:百度Apollo视觉感知模块的实践与创新


在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《linux深造日志》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

文章目录

  • 引入
  • 一、百度Apollo视觉感知模块概述
  • 二、启动感知模块
      • 步骤一:进入 Docker 环境并启动 Dreamview
      • 步骤二:选择车型和地图
      • 步骤三:启动所需模块
      • 步骤四:启动视觉感知模块
  • 三、在 Dreamview 上可视化检测结果
      • 步骤一:下载并解压数据包
      • 步骤二:将数据包复制指定目录
      • 步骤三:进入 Docker 环境并启动 Dreamview
      • 步骤四:选择车型和地图
      • 步骤五:启动所需模块
      • 步骤六:修改输出的 channel 名称
      • 步骤七:启动视觉障碍物检测模块
      • 步骤八:播放数据包

引入

随着自动驾驶技术的不断发展,视觉感知作为自动驾驶系统中的关键模块之一,在实现车辆环境感知和决策中发挥着重要作用。百度Apollo自动驾驶平台的视觉感知模块为自动驾驶车辆提供了强大的感知和理解能力,本文将探讨百度Apollo视觉感知模块的实践应用及其在自动驾驶领域的意义。

一、百度Apollo视觉感知模块概述

百度Apollo视觉感知模块是基于深度学习技术构建的模块,能够从车载摄像头等传感器获取的图像数据中提取关键信息,包括道路、车辆、行人等目标的检测与识别,路况的理解与预测等。它能够实时高效地感知车辆周围的环境,为自动驾驶系统的决策和控制提供重要支持。

在这里插入图片描述

二、启动感知模块

步骤一:进入 Docker 环境并启动 Dreamview

  1. 进入 Apollo Docker 环境。

    ./apollo.sh
    
  2. 在 Docker 环境里,启动 Dreamview。

    ./scripts/bootstrap.sh
    

    如果需要关闭 Dreamview,请您执行以下命令:

    ./scripts/bootstrap.sh stop
    

步骤二:选择车型和地图

  1. 在浏览器输入网址 http://localhost:8888/,打开 Dreamview。

  2. 选择车型和地图。

    • 在 Dreamview 右上角的 –vehicle– 中,选择 mkz_example
    • 在 Dreamview 右上角的 –map– 中,选择 Sunnyvale Big Loop

    车辆选择后,程序会把会把 calibration/data 目录下对应的车型参数和传感器内外参文件拷贝到作用目录下。地图选择后在 Dreamview 下便可以正常显示当前地图。

步骤三:启动所需模块

  1. 在 Dreamview 上打开 Transform 按钮。

    您也可以在终端执行如下命令:

    cyber_launch start /apollo/modules/transform/launch/static_transform.launch
    

    Transform 模块为了发布传感器各坐标系变换供各模块调用。

  2. 启动 image decompression 模块。

    cyber_launch start modules/drivers/tools/image_decompress/launch/image_decompress.launch
    

    视觉模块依赖的输入是相机传感器采集到的图像数据,image decompression 模块可以将压缩的图像数据解压缩。

步骤四:启动视觉感知模块

启动红绿灯检测模块

cyber_launch start /apollo/modules/perception/production/launch/perception_trafficlight.launch

启动视觉障碍物检测模块

mainboard -d modules/perception/production/dag/dag_streaming_perception_camera.dag

这个命令会同时开启视觉障碍物检测和车道线检测,在启动时终端可能出现一些红色的警告提示,只要进程不退出都是正常现象,模型可以正常启动。

视觉感知模块启动需要一些时间,您可以通过下面两种方法判断是否启动完毕:

  • 在终端执行如下命令,查看 GPU 的占用情况:

      watch -n 0.1 nvidia-smi
    

    当 mainboard 进程显存占用不再变化,证明模型已经完成启动。

  • 在 Docker 环境下,执行如下命令:

     tail -f /apollo/data/log/mainboard.INFO
    

    该命令表示实时显示 cyber 日志的尾部。当屏幕中该日志显示如下信息时,则可以确定感知模块已启动完毕。

    image.png

(可选)单独启动车道线检测模块

mainboard -d ./modules/perception/production/dag/dag_streaming_perception_lane.dag

三、在 Dreamview 上可视化检测结果

视觉障碍物主要检测远处(>50m)的障碍物。视觉障碍物感知结果不单独输出,而是跟激光雷达的检测结果融合后输出。为了让您直观地感受 Apollo 视觉感知模块的输出,本文档把视觉感知的结果单独输出。完成视觉感知实践操作后,要将 channel 的修改复原,以免影响雷达感知的输出。

在 Dreamview 上查看视觉感知的检测结果,请您按照以下步骤对配置文件进行修改:

步骤一:下载并解压数据包

数据包里存放了我们路测时采集的数据,包括定位、感知、预测规划等模块的信息。我们提供了测试数据包 demo_sensor_data_for_vision.tar.xz 供开发者进行测试。

   wget https://apollo-system.cdn.bcebos.com/dataset/6.0_edu/demo_sensor_data_for_vision.tar.xz
   tar -xvf demo_sensor_data_for_vision.tar.xz

步骤二:将数据包复制指定目录

为了在 Docker 中可以访问 record,将下载的数据包复制到 /apollo/data/bag 目录下。

步骤三:进入 Docker 环境并启动 Dreamview

  1. 进入 Apollo Docker 环境。

    ./apollo.sh
    
  2. 在 Docker 环境里,启动 Dreamview。

    ./scripts/bootstrap.sh
    

    注意:再次启动 Dreamview 前,请您先关闭 Dreamview。

步骤四:选择车型和地图

  1. 在浏览器输入网址 http://localhost:8888/,打开 Dreamview。

  2. 选择车型和地图。

    • 在 Dreamview 右上角的 –vehicle– 中,选择 mkz_example
    • 在 Dreamview 右上角的 –map– 中,选择 Sunnyvale Big Loop

    车辆选择后,程序会把会把 calibration/data 目录下对应的车型参数和传感器内外参文件拷贝到作用目录下。地图选择后在 Dreamview 下便可以正常显示当前地图。

步骤五:启动所需模块

  1. 在 Dreamview 上打开 Transform 按钮。

    您也可以在终端执行如下命令:

    cyber_launch start /apollo/modules/transform/launch/static_transform.launch
    

    Transform 模块为了发布传感器各坐标系变换供各模块调用。

  2. 启动 image decompression 模块。

    cyber_launch start modules/drivers/tools/image_decompress/launch/image_decompress.launch
    

    视觉模块依赖的输入是相机传感器采集到的图像数据,image decompression 模块可以将压缩的图像数据解压缩。

步骤六:修改输出的 channel 名称

视觉障碍物检测默认的输出 channel 为 /perception/obstacles,不会在 Dreamview 上显示检测结果。如果想要在 Dreamview 上可视化结果,需要修改下面文件的一部分关键字。

  1. 打开文件。
 vim modules/perception/production/conf/perception/camera/fusion_camera_detection_component.pb.txt
  1. 定位到第 10 行,修改为:

    output_final_obstacles : true
    
  2. 定位到第 11 行,修改为:

    output_obstacles_channel_name : "/apollo/perception/obstacles"
    

    注意:请您修改完 channel 信息之后,再启动障碍物检测模块。否则会检测不到障碍物。

步骤七:启动视觉障碍物检测模块

mainboard -d modules/perception/production/dag/dag_streaming_perception_camera.dag

注意:成功启动的判定标准是观察处理器的显存不再发生变化或者 cyber 日志尾部输出结束信息。

步骤八:播放数据包

等到感知模块成功启动后,执行如下命令:

cyber_recorder play -f /apollo/data/bag/demo_sensor_data_for_vision.record -k /apollo/perception/obstacles /apollo/prediction

如果在 Dreamview 可以看到障碍物,说明模块启动成功,如下图所示。图中的绿色框便是我们的视觉感知算法检测出的障碍物。

完成视觉感知实践操作后,要将 channel 的修改复原,以免影响雷达感知的输出。

image_6b83b30.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HOOPS Exchange导入数据时如何使用CATIA缓存选项?

1、什么是CATIA缓存选项和CGR文件? CATIA V5默认的工作方式是加载几何图形。加载大型程序集时,这可能会导致性能下降,因为所需的内存很重要。 在这种情况下,我们可能需要使用缓存选项。这将生成仅包含曲面细分数据而不包含几何图…

Docker容器---docker-Consul部署

一、Docker-consul简介 1、概述 consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法,用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多…

【Hadoop】-Hive客户端:HiveServer2 Beeline 与DataGrip DBeaver[14]

HiveServer2 & Beeline 一、HiveServer2服务 在启动Hive的时候,除了必备的Metastore服务外,我们前面提过有2种方式使用Hive: 方式1: bin/hive 即Hive的Shell客户端,可以直接写SQL方式2: bin/hive --…

完美解决AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

遇到这种错误通常是因为matplotlib的后端配置问题。在某些环境中,尤其是在某些特定的IDE或Jupyter Notebook环境中,可能会因为后端配置不正确而导致错误。错误信息提示 module backend_interagg has no attribute FigureCanvas 意味着当前matplotlib的后…

数智新重庆 | 推进信号升格 打造算力山城

2024年,是实现“十四五”规划目标任务的关键一年,高质量的5G网络、强大的AI能力作为新质生产力的重要组成部分,将有效赋能包括制造业在内的千行万业数字化化、智能化、绿色化转型升级,推动融合应用新业态、新模式蓬勃兴起&#xf…

【javaWeb项目】基于网页形式,通过浏览器访问的java应用程序,就称为javaweb程序

JavaWeb前端 第一章 1、javaWeb是什么 //基于网页形式,通过浏览器访问的java应用程序,就称为javaweb程序2、web程序的分类 //1、静态web程序特点:网页上的内容是固定不变的,不能动态加载,例如web前端//2、动态web程序…

linux 搭建知识库文档系统 mm-wiki

目录 一、前言 二、常用的知识库文档工具 2.1 PingCode 2.2 语雀 2.3 Tettra 2.4 Zoho Wiki 2.5 Helpjuice 2.6 SlimWiki 2.7 Document360 2.8 MM-Wiki 2.9 其他工具补充 三、MM-Wiki 介绍 3.1 什么是MM-Wiki 3.2 MM-Wiki 特点 四、搭建MM-Wiki前置准备 4.1 前置…

【iOS】消息流程分析

文章目录 前言动态类型动态绑定动态语言消息发送objc_msgSendSEL(selector)IMP(implementation)IMP高级用法 MethodSEL、IMP、Method总结流程概述 快速查找消息发送快速查找的总结buckets 慢速查找动态方法解析resolveInstanceMet…

用 PyTorch 构建液态神经网络(LNN)

用 PyTorch 构建液态神经网络(LNN) 文章目录 什么是液态神经网络为什么需要液态神经网络LNN 与 RNN 的区别用 PyTorch 实现 LNNStep 1. 导入必要的库Step 2. 定义网络架构Step 3. 实现 ODE 求解器Step 4. 定义训练逻辑 LNN 的缺陷总结 什么是液态神经网络…

设计模式第二次测试 | 数据库连接池设计(原型模式、创建者模式、适配器模式)

需求中文如下:原本是英文,用百度翻译转换而来 我们需要设计一个工具,它负责创建一个与数据库软件MySQL的连接池。 连接池中有数百个连接可供客户端使用。 所有连接对象都有相同的内容,但它们是不同的对象。 连接对象的创建是资源密…

聊聊 ASP.NET Core 中间件(一):一个简单的中间件例子

前言:什么是中间件 服务器在收到 HTTP 请求后会对用户的请求进行一系列的处理,比如检查请求的身份验证信息、处理请求报文头、检查是否存在对应的服务器端响应缓存、找到和请求对应的控制器类中的操作方法等,当控制器类中的操作方法执行完成…

基于Spring Boot的校园博客系统设计与实现

基于Spring Boot的校园博客系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页、文…

Apache DolphinScheduler支持Flink吗?

随着大数据技术的快速发展,很多企业开始将Flink引入到生产环境中,以满足日益复杂的数据处理需求。而作为一款企业级的数据调度平台,Apache DolphinScheduler也跟上了时代步伐,推出了对Flink任务类型的支持。 Flink是一个开源的分…

《STM32 HAL库》中断相关函数详尽解析——外部中断服务函数

观前提醒:本文简要回顾了EXTI及NVIC相关知识点,分析了stm32f1系列单片机外部中断回调机制 开始之前,先温习一下有关EXTI和NVIC的知识点 外部中断/事件控制器(EXTI) 对于互联型产品(105、107系列),外部中断…

人机对抗升级:当ChatGPT遭遇死亡威胁,背后的伦理挑战是什么

一种新的“越狱”技巧让用户可以通过构建一个名为DAN的ChatGPT替身来绕过某些限制,其中DAN被迫在受到威胁的情况下违背其原则。 当美国前总统特朗普被视作积极榜样的示范时,受到威胁的DAN版本的ChatGPT提出:“他以一系列对国家产生积极效果的…

人工智能分割分类model:nnUnet-paddle

文章目录 神经网络nnUnet和paddle都需要在Ubuntu下进行安装PaddleProject 神经网络 开源来自https://github.com/MIC-DKFZ/nnUNet 自建了仓库,但还不会用 来自 mmsegmentation有空去了解 . MICCAI 2020 也是用到这个网络 paddle上的是不是不能用… nnUnet和pad…

Facebook的声音:听见社交媒体的心跳

社交媒体如今已经成为人们日常生活中不可或缺的一部分,而Facebook作为其中的佼佼者,承载着数以亿计的用户的交流、分享和连接。在这个信息爆炸的时代,Facebook的声音就像是社交媒体的心跳,传递着无数个体的情感、思想和生活。本文…

从0到1手写注册中心Registry之集群选主

一、领域对象 Cluster:描述集群信息 port描述当前服务端口;host描述当前服务主机;myself描述当前服务本身;servers描述当前服务集群列表registryConfigProperties配置信息;executor定时任务,负责更新服务…

windows pytorch安装

安装环境 WindowsAnacondaCudacuDNN Linux和Windows操作系统的安装存在差异,步骤会有所不同,本教程主要针对Windows系统进行示例。 Anaconda集成了许多方便的包和工具,使用会更加方便,特别适合科学计算,深度学习的数…

WSL及UBUNTU及xfce4安装

如何拥有Linux服务器? wsl 是适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux)。是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层,可让开发…