自动驾驶平台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.
参考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
Apollo
首先下载apollo源代码。可以选择直接从github上拉,也可以下载release包。这里选择后者,从https://github.com/ApolloAuto/apollo/releases/tag/v2.5.0 下载代码,然后解压。假设解压后目录为APOLLO_HOME。进入该目录后,运行以下脚本初始化apollo的开发和运行环境。
bash docker/scripts/dev_start.sh
其中会去从网上拉几个所需的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
用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
接下来就可以通过以下命令进入开发环境了,其实就是进入前面pull下来的dev-x86_64-20180413_2000那个image创建的container(名为apollo_dev)。前面的apollo代码根目录APOLLO_HOME会被映射到container中的/apollo目录下。
bash docker/scripts/dev_into.sh
然后就可以编译整个系统了。不过由于感知(perception)模块很多依赖于CUDA,所以最好先按下一节中的方法enable CUDA后再编译。等编译完后,根据官方文档How to Launch and Run Apollo就可以用下面命令启动Apollo并运行可视化工具Dreamview:
bash scripts/bootstrap.sh
正常情况下可以看到“Dreamview is running at http://localhost:8888”的输出,然后用浏览器打开http://localhost:8888 应该就能看到界面了。
这里,我们按官方文档先跑下demo。先下载回放数据包:
sudo bash docs/demo_guide/rosbag_helper.sh download
下载完成后,回放数据位于docs/demo_guide目录下。Apollo基于ROS,而rosbag是其中的数据记录和回放工具。用该命令可以开始回放:
rosbag play -l ./docs/demo_guide/demo_2.0.bag
从刚才启动的Dreamview中即可看到回放数据的图形化输出了:
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.
需要先将图形界面干掉(因为它会使用GPU):
sudo service lightdm stop
再如果碰到下面问题:
nvidia: version magic '4.4.0-116-generic SMP mod_unload modversions ' should be '4.4.0-116-generic SMP mod_unload modversions retpoline '
可以参考https://devtalk.nvidia.com/default/topic/1030325/nvidia-driver-installation-v387-26-on-ubuntu-16-04/。亲测有效。
另一种安装driver的方法是通过apt-get:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384
因为安装了驱动,即对原image有了修改,如果不commit的话退出后这些改动都没有了,下次进来还要重新做一遍。因此需要通过以下命令commit改动(假设commit后的image tag为v1.0):
docker commit CONTAINER_ID apolloauto/apollo:v1.0
其中CONTAINER_ID可以通过docker ps | grep apollo_dev查看。命令执行后再用docker images命令应该可以看到新增的image:
apolloauto/apollo v1.0 3812b26eb3c8 41 hours ago 8.11GB
之后就可以用以下命令就可以基于改动后的image创建container:
./docker/scripts/dev_start.sh -l -t v1.0
然后可以试下CUDA是不是正常工作。在container中进入/usr/local/cuda/samples/1_Utilities/deviceQuery目录,执行:
sudo make
sudo ./deviceQuery
如果看到GPU信息就说明OK了。还不放心的再在samples目录里随便挑几个编译运行试试。接下来可以编译apollo系统了:
./apollo.sh build_opt_gpu
apollo系统使用的编译系统是bazel(就是TensorFlow用的那个)。编译完后的binary都放在/apollo/bazel-bin目录下。让我们随意找个test试一下,比如用yolo神经网络模型进行物体检测的测试:
./bazel-bin/modules/perception/obstacle/camera/detector/yolo_camera_detector/yolo_camera_detector_test
输出结果:
...
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环境搭建相关推荐
- 自动驾驶平台Apollo 2.5阅读手记:perception模块之camera detector
原文地址:https://blog.csdn.net/jinzhuojun/article/details/80875264 我们知道,无人驾驶系统中,感知(perception)模块是重中之重,而且 ...
- 自动驾驶平台Apollo 5.5阅读手记:Cyber RT中的任务调度
前言 自动驾驶系统Apollo在3.5中引入了Cyber RT,替换了之前基于ROS的变体.Cyber RT的一大特点在于其调度系统.因为自动驾驶与人身安全强相关,因此很强调实时性.传统的机器人系统并 ...
- 自动驾驶控制算法——老王Carsim_Simulink环境搭建步骤
老王复盘 Carsim有两个文件路径:Data和Prob 设置Matlab当前路径为Data,设置路径里添加子文件路径包括Data和Prob 修改Matlab当前路径方法: cd('') 在Carsi ...
- 解析百度Apollo自动驾驶平台
最近对百度的自动驾驶平台Apollo项目做了一些了解.下面将我所了解到的一些信息分享给大家. Apollo项目介绍 阿波罗(Apollo)是百度发布的面向汽车行业及自动驾驶领域的合作伙伴提供的软件平台 ...
- 自动驾驶平台,阵营, 主要传感器与场景联系
自动驾驶平台,阵营, 主要传感器与场景联系 自动驾驶平台和阵营 表1. 自动驾驶平台 表2. 自动驾驶阵营 自动驾驶常用架构 图1. 三层架构 主要传感器与场景联系 超声波+侧向毫米波----泊车 长 ...
- 阿里云数据库产品专家胡航丽:数据库自动驾驶平台DAS重磅助力数据库领域智能未来...
墨墨导读:2020数据技术嘉年华于11月21日落下帷幕,大会历时两天,来自全国各地的数据领域学术精英.领袖人物.技术专家.从业者和技术爱好者相聚北京,见证了个人的快速成长.技术的迭代进步.行业的蓬勃发 ...
- 带你了解基于Ploto构建自动驾驶平台
摘要:华为云Solution as Code推出基于Ploto构建自动驾驶平台解决方案. 本文分享自华为云社区<基于Ploto构建自动驾驶平台>,作者:阿米托福 . 2022年6月15日, ...
- 基于 Ploto 华为云 Solution as Code 推出构建自动驾驶平台
在自动驾驶专场中,华为云携手合作伙伴联合发布 "乐高式" 自动驾驶研发平台解决方案,实现自动驾驶研发效率提升. 联合发布 "乐高式" 自动驾驶研发平台解决方案 ...
- javaee2020-教程直播-16Windows 平台 JavaEE 基本开发环境搭建-JDK-eclipse-tomcat-maven
Windows 平台 JavaEE 基本开发环境搭建 1 安装JDK 1.1下载 地址 http://www.oracle.com/technetwork/java/javase/downloads/ ...
最新文章
- Android Notification实现推送消息过程中接受到消息端有声音及震动及亮屏提示
- 振作起来– Spring Framework 4.0即将来临!
- 图表展示结果开发(一)
- OpenShift 4 - Knative教程(2) 基于Revision/Tag/Traffic实现蓝绿部署和恢复发布
- mysql主从复制原理详解_简述 MySQL 逻辑架构与主从复制原理。
- pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能
- selenium2.0处理case实例(二)
- html table 显示最后一条,漂亮CSS表格(Table),最后一行是汇总行【实例】
- 迅为IMX6ULL开发板Linux RS232/485驱动实验(上)
- 基于北斗卫星的输电杆塔在线监测系统
- “APP故障门”频出,移动应用开发到底应该怎么做?
- “编程不规范 亲人泪两行”
- 信度spss怎么做_Spss详细图文教程——问卷信度和效度检验步骤图解
- 软件模拟中美gdp今后几年的变化情况
- AVR中C语言while语言,AVR单片机汇编语言程序实例
- etcd (一看就会)
- 学不动了,尝试用Android Jetpack Compose重写微信经典飞机大战游戏
- 太天真了!这简历一看就是包装过的!
- DolphiScheduler平台上运行spark程序时,外部参数设置
- c#联合vp开发软件-day1
热门文章
- 2023最新语音直播多人连麦社交APP源码+支持双端/附编译安装说明
- kettle定时备份->mysql+mongoDB增量备份
- MapReduce之多MapReduce执行
- 【现代控制理论】传递函数建立状态空间表达式
- Mendix for Manufacturing Industries指南
- 英语论文常用词汇句式积累
- 蓝牙功率放大器系统性能
- dubbo-dubbo spi详解
- Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别
- 计算机主板维修层次,计算机主板维修