【百度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.hqwc.cn/news/660582.html

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

相关文章

vue 前端读取Excel文件并解析

前端读取Excel文件并解析 前端如何解释Excel呢 平时项目中对于Excel的导入解析是很常见的功能,一般都是放在后端执行;但是也有特殊的情况,偶尔也有要求说前端执行解析,判空,校验等,最后组装成后端接口想要的…

ECHARTS学习

坐标轴 option {xAxis: {type: category,data: [A, B, C]},yAxis: {type: value},series: [{data: [120, 200, 150],type: line}] }; 1、坐标轴的默认类型type是数值型,而xAxis指定了类目型的data,所以Echarts也能识别出这是类目型的坐标轴,…

Spring Boot的热部署工具“AND”Swagger测试工具

Spring Boot的热部署&Swagger测试页面的使用 热部署指的是在项目无需重启的情况下,只需要刷新页面,即可获得已经修改的样式或功能。要注意该工具一般用于开发环境,在生产环境中最好不要添加这个工具。 对于无需重启便可刷新这么方便的工…

net lambda 、 匿名函数 以及集合(实现IEnumerable的 如数组 、list等)

匿名函数:》》》 Action a1 delegate(int i) { Console.WriteLine(i); }; Lambda:>>> Aciont a1 (int i) > { Console.WriteLine(i); }; 可以简写 (编译器会自动根据委托类型 推断) Action a1 (i)> {…

Scala 多版本下载指南

Scala,这一功能丰富的编程语言,结合了面向对象和函数式编程的精华,为开发者提供了强大的工具来构建高效、可扩展的应用程序。随着Scala社区的不断壮大和技术的演进,多个版本的Scala被广泛应用于不同的项目与场景中。本文旨在为您提…

WSL2如何部署 Xinference

环境: WSL2 Ubuntu22.04 问题描述: WSL2如何部署 Xinference Xinference是一个用于加速和优化深度学习推理的平台。它提供了高性能、低延迟的推理解决方案,帮助开发者在生产环境中更高效地部署他们的深度学习模型。Xinference支持多种硬…

AQS共享模式之CyclicBarrier

概念:CyclicBarrier翻译为循环(屏障/栅栏),当一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会打开,所有被屏障拦截的线程才会继续工作。 设计目的:和Co…

VTK —— 二、教程五 - 通过鼠标事件与渲染交互(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码) 教程描述 本…

从Paint 3D入门glTF

Paint 3D Microsoft Paint 3D是微软的一款图像编辑软件,它是传统的Microsoft Paint程序的升级版。 这个新版本的Paint专注于三维设计和创作,使用户可以使用简单的工具创建和编辑三维模型。 Microsoft Paint 3D具有直观的界面和易于使用的工具&#xff0…

[游戏陪玩系统] 陪玩软件APP小程序H5游戏陪玩成品软件源码-线上线下可爆改家政,整理师等功能

简介 随着电竞行业的快速发展,电竞陪玩APP正在逐渐成为用户在休闲娱乐时的首选。为了吸引用户和提高用户体验,电竞陪玩APP开发需要定制一些特色功能,并通过合适的盈利模式来获得收益。本文将为您介绍电竞陪玩APP开发需要定制的特色功能以及常…

微信小程序实现九宫格

微信小程序使用样式实现九宫格布局 使用微信小程序实现九宫格样式,可以直接使用样式进行编写,具体图片如下:1、js代码: Page({/*** 页面的初始数据*/data: {current: 4},// 监听activeClick(e) {let index e.currentTarget.dat…

为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用

本文介绍了某省妇幼健康管理系统的建设和数据库架构优化的过程。原有的数据库架构使用了 StarRocks 作为分析层,但随着业务的发展,这套架构暴露出诸多痛点,不再适应妇幼业务的需求。为解决这些问题,该系统选择了将原有架构中的 St…