美文网首页嵌牛IT观察
自动驾驶平台Apollo 2.5环境搭建

自动驾驶平台Apollo 2.5环境搭建

作者: 2464d55f8c99 | 来源:发表于2018-12-09 08:41 被阅读9次

    姓名 李林涛 学号 16020199032

    转自:https://blog.csdn.net/jinzhuojun/article/details/80210180

    【嵌牛导读】:作者介绍了百度的自动驾驶平台Apollo2.5的环境搭建问题。

    【嵌牛鼻子】:自动驾驶、Apollo

    【嵌牛提问】:近年来自动驾驶出现的问题在技术层面上应该如何解决?

    【嵌牛正文】:

    我们知道,自动驾驶在学界其实已经是个很老的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环境搭建

        本文链接:https://www.haomeiwen.com/subject/hurhhqtx.html