[转]自动驾驶平台Apollo 2.5环境搭建
原文地址:https://blog.csdn.net/jinzhuojun/article/details/80210180,转载主要方便随时查阅,如有版权要求,请及时联系。
我们知道,自动驾驶在学界其实已经是个很老的topic了。而这几年,伴随着以深度学习为主力的第三次AI浪潮,大家似乎看到了自动驾驶商业化的重大机会,于是无论是学界还是工业界都开始将注意力转向该领域。放眼望去,满大街似乎都在搞自动驾驶。前段时间,百度又发布了自动驾驶平台Apollo的2.5版本。要想搭个环境玩一下的话,其实官方文档里挺详细了。这里主要是备忘一下主要流程和一些小坑的解决方法。大体可分为以下几步:
docker
为了免除环境差异造成的各种问题,apollo运行环境依赖于docker。因此如果还没有安装docker的话,需要先安装docker,可以参考:https://github.com/ApolloAuto/apollo/blob/master/docker/scripts/README.md#install-docker
如果之后启动container时遇到下面错误:
docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.
- 1
参考https://github.com/boot2docker/boot2docker/issues/1301,解决方法是执行:
sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
- 1
- 2
Apollo
首先下载apollo源代码。可以选择直接从github上拉,也可以下载release包。这里选择后者,从https://github.com/ApolloAuto/apollo/releases/tag/v2.5.0 下载代码,然后解压。假设解压后目录为APOLLO_HOME。进入该目录后,运行以下脚本初始化apollo的开发和运行环境。
bash docker/scripts/dev_start.sh
- 1
其中会去从网上拉几个所需的docker image并基于这些image启动container。拉完后用docker images命令可以看到以下的几个新增image:
REPOSITORY TAG IMAGE ID CREATED SIZE
apolloauto/apollo dev-x86_64-20180413_2000 2d338b6e1942 3 weeks ago 7.17GB
apolloauto/apollo localization_volume-x86_64-latest 75cf8c77134c 4 weeks ago 6.94MB
apolloauto/apollo map_volume-sunnyvale_big_loop-latest 9d9581178ffe 6 weeks ago 995MB
apolloauto/apollo yolo3d_volume-x86_64-latest 562d2b2b5a71 7 weeks ago 70.6MB
apolloauto/apollo map_volume-sunnyvale_loop-latest 36dc0d1c2551 3 months ago 906MB
- 1
- 2
- 3
- 4
- 5
- 6
用docker ps可以看到启动了以下container:
0f2a5bccc9f3 apolloauto/apollo "/bin/bash" 3 hours ago Up 3 hours apollo_dev
0c1f64813be2 apolloauto/apollo:yolo3d_volume-x86_64-latest "/bin/sh" 3 hours ago Up 3 hours apollo_yolo3d_volume
b42bfef51984 apolloauto/apollo:localization_volume-x86_64-latest "/bin/sh" 3 hours ago Up 3 hours apollo_localization_volume
5d6ea903455c apolloauto/apollo:map_volume-sunnyvale_loop-latest "/bin/bash" 3 hours ago Up 3 hours apollo_map_volume-sunnyvale_loop
dc4f8219a2b9 apolloauto/apollo:map_volume-sunnyvale_big_loop-latest "/bin/sh" 3 hours ago Up 3 hours apollo_map_volume-sunnyvale_big_loop
- 1
- 2
- 3
- 4
- 5
接下来就可以通过以下命令进入开发环境了,其实就是进入前面pull下来的dev-x86_64-20180413_2000那个image创建的container(名为apollo_dev)。前面的apollo代码根目录APOLLO_HOME会被映射到container中的/apollo目录下。
bash docker/scripts/dev_into.sh
- 1
然后就可以编译整个系统了。不过由于感知(perception)模块很多依赖于CUDA,所以我们等enable CUDA后再编译。这里,我们可以按官方文档先跑下demo。先下载回放数据包:
sudo bash docs/demo_guide/rosbag_helper.sh download
- 1
下载完成后,回放数据位于docs/demo_guide/demo_2.5.bag。然后用下面命令开始回放:
rosbag play -l ./docs/demo_guide/demo_2.5.bag
- 1
Apollo基于ROS,而rosbag是其中一个数据记录和回放工具。用浏览器打开http://localhost:8888,即可看到图形化输出:
CUDA
通过前面命令进入apollo_dev这个container中,可以看到官方image中自带CUDA 8.0了。但由于没有driver,所以还无法使用GPU进行加速。参考官方文档How to Run Perception Module on Your Local Computer,下载驱动(最好和host装的版本一致,driver版本可以通过nvidia-smi命令查看)和cudnn进行安装。如果直接运行下载的驱动安装文件碰到问题,比如:
An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel.
- 1
不妨尝试用apt-get来安装,更方便:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384
- 1
- 2
- 3
因为安装了驱动,即对原image有了修改,如果不commit的话退出后这些改动都没有了,下次进来还要重新做一遍。因此需要通过以下命令commit改动(假设commit后的image tag为v1.0):
docker commit CONTAINER_ID apolloauto/apollo:v1.0
- 1
其中CONTAINER_ID可以通过docker ps | grep apollo_dev查看。命令执行后再用docker images命令应该可以看到新增的image:
apolloauto/apollo v1.0 3812b26eb3c8 41 hours ago 8.11GB
- 1
之后就可以用以下命令就可以基于改动后的image创建container:
./docker/scripts/dev_start.sh -l -t v1.0
- 1
然后可以试下CUDA是不是正常工作。在container中进入/usr/local/cuda/samples/1_Utilities/deviceQuery目录,执行:
sudo make
sudo ./deviceQuery
- 1
- 2
如果看到GPU信息就说明OK了。还不放心的再在samples目录里随便挑几个编译运行试试。接下来可以编译apollo系统了:
./apollo.sh build_opt_gpu
- 1
apollo系统使用的编译系统是bazel(就是TensorFlow用的那个)。编译完后的binary都放在/apollo/bazel-bin目录下。让我们随意找个test试一下,比如用yolo神经网络模型进行物体检测的测试:
./bazel-bin/modules/perception/obstacle/camera/detector/yolo_camera_detector/yolo_camera_detector_test
- 1
输出结果:
...
I0506 18:23:41.356957 218 util.cc:54] Supported types:
I0506 18:23:41.356976 218 util.cc:62] VEHICLE
I0506 18:23:41.356989 218 util.cc:62] BICYCLE
I0506 18:23:41.356993 218 util.cc:62] PEDESTRIAN
I0506 18:23:41.357002 218 util.cc:62] UNKNOWN_UNMOVABLE
I0506 18:23:41.357015 218 util.cc:64] 4 in total.
E0506 18:23:41.369910 218 yolo_camera_detector.cc:256] 'objects' is a null pointer.
I0506 18:23:41.372014 218 yolo_camera_detector.cc:303] Pre-processing: 2.01507 ms
I0506 18:23:41.408946 218 yolo_camera_detector.cc:309] Running detection: 36.8999 ms
I0506 18:23:41.409906 218 yolo_camera_detector.cc:356] Post-processing: 0.927424 ms
I0506 18:23:41.409914 218 yolo_camera_detector.cc:357] Number of detected obstacles: 1
[ OK ] YoloCameraDetectorTest.multi_task_test (315 ms)
[----------] 3 tests from YoloCameraDetectorTest (1398 ms total)
[----------] Global test environment tear-down
[==========] 3 tests from 1 test case ran. (1399 ms total)
[ PASSED ] 3 tests.
[转]自动驾驶平台Apollo 2.5环境搭建的更多相关文章
- 使用JAVA开发微信公众平台(一)——环境搭建与开发接入
一. 初始微信公众平台 微信公众平台,即我们平时所说的"公众号",曾用名"官方平台"."媒体平台",但最终命名为"公众平台&quo ...
- Apollo配置中心环境搭建(Linux)
官方教程:https://github.com/ctripcorp/apollo/wiki/Apollo-Quick-Start-Docker%E9%83%A8%E7%BD%B2 方式二:使用apol ...
- windows平台 cloin +rust 开发环境搭建
rust 安装请看上一篇 clion 下载地址 破解 教程 1.先执行reset_jetbrains_eval_windows.vbs 2.打开软件选择免费使用 将ide-eval-resetter- ...
- 自动驾驶缺人才?听听David Silver怎么说!
如今自动驾驶在全球范围内的发展势头愈发“凶猛”,该领域人才也一度被视为“香饽饽”. 即使在美国,自动驾驶工程师的起薪也已经突破了25万美元,我国‘“开价”之高更是令人咋舌. 人才.人才.还是人才!重要 ...
- 自动驾驶轻松开发?华为云ModelArts赋能智慧出行
作为战略新兴产业,人工智能已经开始广泛应用于多个领域.近几年,科技公司.互联网公司等各领域的企业纷纷布局自动驾驶.那么,自动驾驶技术究竟发展得如何了?日前,华为云携手上海交通大学创新中心举办的华为云人 ...
- 本科阶段就挑战自动驾驶开发?华为云ModelArts帮你轻松实现!
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- zzL4自动驾驶中感知系统遇到的挑战及解决方案
本次分享的大纲: Perception Introduction Sensor Setup & Sensor Fusion Perception Onboard System Percepti ...
- 发布AI芯片昆仑和百度大脑3.0、L4自动驾驶巴士量产下线,这是百度All in AI一年后的最新答卷...
机器之心报道,作者:李泽南. 去年的 7 月 5 日,百度在北京国际会议中心开办了首届「AI 开发者大会」.在会上,百度首次喊出了「All in AI」的口号.一年的时间过去了,今天在同样地点举行的第 ...
- 大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建
大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建 大数据应用之Windows平台Hbase客户端Eclipse环境搭建-Java版 作者:张子良 版权所有,转载请注明出处 引子 ...
随机推荐
- Mysql数据库用户及用户权限管理,Navicat设置用户权限
Mysql数据库用户及用户权限管理,Navicat设置用户权限 一.Mysql数据库的权限 1.1 mysql数据库用户权限级别 1.2 mysql数据库用户权限 1.3 存放用户权限表的说明 二.用 ...
- Docker 之 Jenkins自动化部署
Docker 之 Jenkins自动化部署 Jenkins部署 jenkis 绑定gitlab shell脚本自动化构建Docker镜像 提升maven构建速度 jenkins 无法通过shell脚本 ...
- 笔趣看小说Python3爬虫抓取
笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...
- centos安装、升级新火狐最新版 31
1.登录火狐主页 下载最新版本firefox-31.0.tar.bz2 解压: tar -jxvf firefox-31.0.tar.bz2 2.然后把旧版本的firefox卸掉 # yum eras ...
- sql画图
---------------------------------------------------------------------------------------------------- ...
- MacOS Big Sur开HiDPI
我自己的环境: 开启hidpi的目的是为了让显示更加细腻,代价是缩小了显示范围. 自己在网上看了很多帖子,也尝试了几种,有些方法已经不再适合Big Sur系统了,所以本文提供一种可用的,在Big Su ...
- Pytest(15)pytest分布式执行用例
前言 平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完 当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间 ...
- 使用xshell连不上ubuntu14.04
判断Ubuntu是否安装了ssh服务: 输入:#ps -e | grep ssh 如果服务已经启动,则可以看到"sshd",否则表示没有安装服务,或没有开机启动,如果不是下图情况, ...
- 带撤销并查集 & 可持久化并查集
带撤销并查集支持从某个元素从原来的集合中撤出来,然后加入到一个另外一个集合中,或者删除该元素 用一个映射来表示元素和并查集中序号的关系,代码中用\(to[x]\) 表示x号元素在并查集中的 id 删除 ...
- hdu 6806 Equal Sentences 找规律
题意: 给你一个有n个单词的单词串S,对这n个单词进行排列组合形成新的一个单词串T,如果在S中任意某个单词所在位置,和这个单词在T中所在位置之差的绝对值小于等于1,那么就说S和T串相等 让你求S一共有 ...